]> git.somenet.org - pub/jan/netsec2.git/blob - exercise2/task2/decode_ipid.py
exercise2.tex
[pub/jan/netsec2.git] / exercise2 / task2 / decode_ipid.py
1 #!/usr/bin/env python
2
3 # disable IPv6 error message
4 import logging
5 logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
6 from scapy.all import *
7 logging.getLogger("scapy.runtime").setLevel(logging.WARN)
8 from pprint import pprint
9 import os
10 import sys
11
12 # disable payload parsing (saves two seconds runtime^^)
13 IP.payload_guess = []
14
15 bytes = bytearray()
16
17 #for p in PcapReader('large_flow.pcap'):
18 for p in PcapReader(sys.argv[1]):
19     if IP in p:
20         src = p[IP].src
21         dst = p[IP].dst
22         id = p[IP].id
23
24         bin = "{0:016b}".format(id)
25         upper = int(bin[0:8], 2)
26         lower = int(bin[8:16], 2)
27 #        print ("Upper: %s (%d), Lower: %s (%d)" % (bin[0:8], upper, bin[8:16], lower))
28 #        print ("Full: %s" % (bin))
29         bytes.append(upper)
30         bytes.append(lower)
31
32 try:
33     os.unlink('stream_encrypted')
34 except Exception as e:
35     # ignore if file is missing
36     pass
37 with open('stream_encrypted', 'a+') as encfile:
38     encfile.write(bytes)
39
40 try:
41     os.unlink('stream_decrypted')
42 except Exception as e:
43     # ignore if file is missing
44     pass
45 os.system('openssl enc -d -rc4 -nosalt -k nSa123 -in stream_encrypted -out stream_decrypted')