
python -m xdis.bin.pydisasm exfil_tool.pyc
from pathlib import Path
from PIL import Image
def arnold_inv(img, n=7):
w = img.width
cur = img.copy()
for _ in range(n):
old = cur.copy()
ps = old.load()
pd = cur.load()
for x in range(w):
for y in range(w):
pd[(2 * x - y) % w, (-x + y) % w] = ps[x, y]
return cur
def extract_lsb(img):
px = img.load()
w, h = img.size
bits = []
for y in range(h):
for x in range(w):
r, g, b = px[x, y][:3]
bits += [r & 1, g & 1, b & 1]
if len(bits) >= 32:
size = 0
for bit in bits[:32]:
size = (size << 1) | bit
need = (size + 4) * 8
if len(bits) >= need:
raw = bytearray()
for i in range(0, need, 8):
v = 0
for bit in bits[i:i + 8]:
v = (v << 1) | bit
raw.append(v)
return size, bytes(raw[4:])
img = Image.open(\"poster.png\").convert(\"RGB\")
size, payload = extract_lsb(arnold_inv(img, 7))
Path(\"1.png\").write_bytes(payload)
print(\"payload size:\", size)
print(\"payload head:\", payload[:8].hex())
print(\"saved: 1.png\")










评论