find_encode6bit.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """Decrypt candidate util files to locate Encode6BitBuf's real implementation."""
  2. import sys
  3. from pathlib import Path
  4. sys.path.insert(0, str(Path(__file__).parent))
  5. from decrypt_client_lua import decrypt_file, STAB, OUT
  6. targets = [
  7. "util/util.lua",
  8. "init/initUtil.lua",
  9. "network/networkUtil.lua",
  10. "GUI/GUINetworkUtil.lua",
  11. ]
  12. for t in targets:
  13. src = STAB / t
  14. if not src.exists():
  15. print(f"missing: {t}")
  16. continue
  17. dst = OUT / t
  18. ok = decrypt_file(src, dst)
  19. size = dst.stat().st_size if dst.exists() else 0
  20. print(f"{'OK ' if ok else 'FAIL'}: {t} -> {size}B")
  21. # Now grep the decrypted outputs for Encode6BitBuf
  22. print()
  23. print("=== grep Encode6BitBuf in decrypted files ===")
  24. for f in OUT.rglob("*.lua"):
  25. txt = f.read_text(encoding="utf-8", errors="replace")
  26. if "Encode6BitBuf" in txt and "function" in txt:
  27. idx = txt.find("Encode6BitBuf")
  28. while idx >= 0:
  29. start = max(0, idx - 150)
  30. snippet = txt[idx : idx + 400]
  31. if "function" in snippet[:200] or "= function" in txt[max(0, idx - 100) : idx]:
  32. print(f"--- {f.relative_to(OUT)} @ char {idx} ---")
  33. print(txt[max(0, idx - 100) : idx + 500])
  34. print()
  35. break
  36. idx = txt.find("Encode6BitBuf", idx + 1)