1234567891011121314151617181920212223 |
- import struct
- def tcp_unpack(data):
- s_port, d_port, seq_no, ack_no, offset_reserved, flags, window, checksum, urg_pointer = struct.unpack('! H H L L B B H H H', data[:20])
- offset = offset_reserved >> 4
- reserved = offset & 15
- cwr = (flags >> 7) & 1
- ece = (flags >> 6) & 1
- urg = (flags >> 5) & 1
- ack = (flags >> 4) & 1
- psh = (flags >> 3) & 1
- rst = (flags >> 2) & 1
- syn = (flags >> 1) & 1
- fin = flags & 1
- return s_port, d_port, seq_no, ack_no, cwr, ece, urg, ack, psh, rst, syn, fin , window, checksum, urg_pointer, data[offset:]
- def udp_unpack(data):
- s_port, d_port, length, checksum = struct.unpack('! H H H H', data[:8])
- return s_port, d_port, length, checksum, data[8:]
|