如題 pc-play.games.dmm.co.jp/play/luminaprognosis_x/
我用charle 取得的資源: ttps://drive.google.com/drive/folders/1ltSytA3E60qemg2jtRGj-OzhqjAEGEZ0?usp=drive_link
自己有在 5ch 看到別人討論 是 XOR 加密 ? 但是實力不足無法確認
(只會用 xortool 最簡單功能測試猜測… 但是沒測出來.)
希望有高手能幫忙看看 謝謝 (主要目的還是收集自己抽的角色的圖片 自己也有課金一點 不過覺得官方經營的挺隨便的 感覺課不下去了 … -----遊戲活動兌換物一下就換光了 遊戲下半也不新增新兌換物…)
from pathlib import Path
from typing import Union, Tuple
from numpy import uint8, frombuffer as npbuff, tile as npfill
def Decrypt(fp: Path, klen: int = 32):
with open(fp, 'rb') as f:
if f.read(4).startswith((b'\xFF\xD8\xFF', b'\x89PNG')): return
f.seek(0)
darr = npbuff(f.read(), dtype=uint8)
dlen = len(darr)
basekey = f'{dlen}2fjaykPFd6bAJn59beX5TWDQzsEW'.encode('utf-8')
keylen = len(basekey)
key = bytearray(klen)
o, t = 0, 0
for i in range(klen):
o = key[i] = basekey[t] ^ o
t = (t + 1) % keylen
karr = npbuff(key, dtype=uint8)
data = (darr ^ npfill(karr, (dlen // klen) + 1)[:dlen]).tobytes()
if not data[:4].startswith((b'\xFF\xD8\xFF', b'\x89PNG')):
print(f'解密错误 --- {fp.as_posix()}')
return
with open(fp, 'wb') as f:
f.write(data)
def batch(img_path: str = '', ext: Union[str, Tuple[str, ...]] = ('.png', '.jpg'), subfolder: bool = False):
path = Path(img_path) if img_path else Path.cwd()
need = [i for i in (path.rglob('*') if subfolder else path.glob('*')) if i.suffix.endswith(ext)]
for i in need:
Decrypt(i)
if __name__ == '__main__':
path = r'D:\测试' # 指定图片所在文件夹
ext = ('.png', '.jpg') # 指定要解密的文件类型后缀
subfolder = True # 是否查找子文件夹内的文件
batch(path, ext, subfolder)
代码就这样, 如果有解密错误的文件, 你可以上传到谷歌云盘, 我有空会检查下
用大佬的程序解密后发现文件不全,cg图片是一组的循环重复,推测可能是游戏自身对抓包进行了某些限制?