]> git.somenet.org - pub/jan/netsec2.git/blob - exercise2/task2/decode_ipid.py
update decode_ipid.py
[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
11 # disable payload parsing (saves two seconds runtime^^)
12 IP.payload_guess = []
13
14 bytes = bytearray()
15
16 for p in PcapReader('large_flow.pcap'):
17     if IP in p:
18         src = p[IP].src
19         dst = p[IP].dst
20         id = p[IP].id
21
22         bin = "{0:016b}".format(id)
23         upper = int(bin[0:8], 2)
24         lower = int(bin[8:16], 2)
25         print ("Upper: %s (%d), Lower: %s (%d)" % (bin[0:8], upper, bin[8:16], lower))
26         print ("Full: %s" % (bin))
27         bytes.append(upper)
28         bytes.append(lower)
29
30 try:
31     os.unlink('stream_encrypted')
32 except Exception as e:
33     # ignore if file is missing
34     pass
35 with open('stream_encrypted', 'a+') as encfile:
36     encfile.write(bytes)
37
38 try:
39     os.unlink('stream_decrypted')
40 except Exception as e:
41     # ignore if file is missing
42     pass
43 os.system('openssl enc -d -rc4 -nosalt -k nSa123 -in stream_encrypted -out stream_decrypted')