""" Python 2.7 pseudocode Present by FORE """ from struct import pack, unpack from ctypes import *
class ELIF(Structure): _fields_ = [ ('Signature',c_uint), ('ullStructSize',c_ulonglong), ('dwEncryptKey',c_uint), ('wFileName',c_ushort), ('FileName',c_wchar_p) ]
def get_encrypt_key(key): key ^= 0x1548E29C key ^= ((key>>0x18)^(key>>0x10)^(key>>0x08)) return key and key&0x000000FF or 0xD7
def decode(buf,key): key = get_encrypt_key(key) length = len(buf) buf = list(unpack('B'*length,buf)) for i in range(length): buf[i] ^= key buf = pack('B'*length,*buf) return buf
def main(): elif = ELIF() # ... read something buf = decode(buf,eilf.dwEncryptKey)
|
최근들어 이런 암호화 루틴이 많이 쓰는듯 . . .
( 그 외에도 테이블 생성해서 별짓 다하는 색히들도 존재함 -_- . . . 최근 발매한 발○ 스위치라던가 . . . )
get_encrypt_key 함수에 첫줄의 xor 값이 변경될 수 있으므로 모든 엔진에 적용된다고 보장할 수 없지만
적절히 바이너리 서치하면 아마 위와 같은 암호화 쓰는 거의 모든 엔진에서 먹히지 않을까 하는게 결론.
참고로 data 어카이브 경우 오프닝 엔딩 동영상이 400mb 넘어가므로 한번에 언팩하면 상당한 렉을 유발하니
분할시켜서 처리하거나, 근성을 갖고 그냥 풀어버리는 수 밖에 없을듯함.
근데, 왜 한국어는 없는거죠 . . .
미연시계의 횡포. 2***AME (0) | 2015.05.08 |
---|---|
엔스크립트에 대해서 잠깐 분석해봄. (0) | 2015.05.01 |
[Python] pf2 (8) | 2014.12.16 |
[C/C++] 한글 판별 코드. (2) | 2014.12.16 |
[Python] 파이썬 2.7 유니코드 관계 (6) | 2014.12.13 |
|
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |