import struct, sys, base64
data = open(sys.argv[1],'rb').read()
if data[:4] not in (b'\xd4\xc3\xb2\xa1', b'\xa1\xb2\xc3\xd4'):
    sys.exit('not a pcap: %r' % data[:4])
le = data[:4] == b'\xd4\xc3\xb2\xa1'
fmt = '<IIII' if le else '>IIII'
off = 24
out = []
while off + 16 <= len(data):
    _, _, incl, _ = struct.unpack(fmt, data[off:off+16]); off += 16
    pkt = data[off:off+incl]; off += incl
    if len(pkt) < 42 or pkt[12:14] != b'\x08\x00': continue
    if pkt[23] != 17: continue
    ihl = (pkt[14] & 0x0f) * 4
    payload = pkt[14+ihl+8:]
    s = payload.decode('ascii', 'ignore').strip()
    if len(s) < 8: continue
    try:
        dec = base64.b64decode(s, validate=False)
    except Exception:
        continue
    if dec.startswith(b'H2D|'):
        out.append(dec[4:].decode('utf-8','replace'))
for line in out:
    print(line)
