transport.py 790 B

1234567891011121314151617181920212223
  1. import struct
  2. def tcp_unpack(data):
  3. 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])
  4. offset = offset_reserved >> 4
  5. reserved = offset & 15
  6. cwr = (flags >> 7) & 1
  7. ece = (flags >> 6) & 1
  8. urg = (flags >> 5) & 1
  9. ack = (flags >> 4) & 1
  10. psh = (flags >> 3) & 1
  11. rst = (flags >> 2) & 1
  12. syn = (flags >> 1) & 1
  13. fin = flags & 1
  14. return s_port, d_port, seq_no, ack_no, cwr, ece, urg, ack, psh, rst, syn, fin , window, checksum, urg_pointer, data[offset:]
  15. def udp_unpack(data):
  16. s_port, d_port, length, checksum = struct.unpack('! H H H H', data[:8])
  17. return s_port, d_port, length, checksum, data[8:]