import struct

def parse_pcap(filename):
    with open(filename, 'rb') as f:
        f.read(24)
        packets = []
        while True:
            packet_header = f.read(16)
            if len(packet_header) < 16:
                break
            _, _, incl_len, _ = struct.unpack('IIII', packet_header)
            packet_data = f.read(incl_len)
            if len(packet_data) < incl_len:
                break
            packets.append(packet_data)
        return packets

packets = parse_pcap('sniffed.pcap')

print("=" * 80)
print("TESTING DIFFERENT INTERPRETATION PATTERNS")
print("=" * 80)

# Get all printable last bytes with their packet numbers
printables = [(i+1, chr(p[-1])) for i, p in enumerate(packets) if 32 <= p[-1] <= 126]

print("\nAll printable last bytes:")
for num, char in printables:
    print(f"Packet {num:3d}: '{char}'")

print("\n" + "=" * 80)
print("DIFFERENT FLAG INTERPRETATIONS")
print("=" * 80)

# 1. Everything
full = ''.join([c for _, c in printables])
print(f"\n1. Full extraction:\n   {full}")
print(f"   HTB{{{full}}}")

# 2. Stop at first }
if '}' in full:
    stop_brace = full[:full.index('}')+1]
    print(f"\n2. Stop at first '}}' (packets 9-41):\n   {stop_brace}")
    print(f"   HTB{{{stop_brace[:-1]}}}  <- removes last }}")
    print(f"   HTB{{{stop_brace}}}")

# 3. Only packets with pattern (skip sparse packets)
print(f"\n3. Packets 9-41 only (dense region):")
dense = ''.join([c for n, c in printables if 9 <= n <= 41])
print(f"   {dense}")
print(f"   HTB{{{dense}}}")

# 4. Check if there's a pattern in the gaps
print(f"\n4. Gap analysis:")
gaps = [printables[i+1][0] - printables[i][0] for i in range(len(printables)-1)]
print(f"   Gaps between printable packets: {gaps[:20]}")

# 5. XOR consecutive characters
print(f"\n5. XOR method (consecutive chars):")
xor_result = []
for i in range(len(full)-1):
    xored = ord(full[i]) ^ ord(full[i+1])
    if 32 <= xored <= 126:
        xor_result.append(chr(xored))
print(f"   {''.join(xor_result)[:50]}")

# 6. Every Nth character
for n in [2, 3]:
    print(f"\n6.{n}. Every {n}rd character:")
    every_n = full[::n]
    print(f"   {every_n}")
