defines_tcpip.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. layout = [
  2. ('ETH', [
  3. ('DST', 6),
  4. ('SRC', 6),
  5. ('TYPE', 2),
  6. [
  7. ('IP', [
  8. ('VHLTOS', 2),
  9. ('LENGTH', 2),
  10. ('IPID', 2),
  11. ('IPOFFSET', 2),
  12. ('TTLPROTO', 2),
  13. ('CHKSUM', 2),
  14. ('SRCIP', 4),
  15. ('DSTIP', 4),
  16. [
  17. ('ICMP', [
  18. ('TYPECODE', 2),
  19. ('CHKSUM', 2),
  20. ('IDENTIFIER', 2),
  21. ('SEQUENCE', 2) ]),
  22. ('TCP', [
  23. ('SOURCEPORT', 2),
  24. ('DESTPORT', 2),
  25. ('SEQNUM', 4),
  26. ('ACK', 4),
  27. ('FLAGS', 2),
  28. ('WINDOW', 2),
  29. ('CHECKSUM', 2),
  30. ('URGENT', 2) ]),
  31. ('UDP', [
  32. ('SOURCEPORT', 2),
  33. ('DESTPORT', 2),
  34. ('LENGTH', 2),
  35. ('CHECKSUM', 2),
  36. [
  37. ('DHCP', [
  38. ('OP', 1),
  39. ('HTYPE', 1),
  40. ('HLEN', 1),
  41. ('HOPS', 1),
  42. ('XID', 4),
  43. ('SECS', 2),
  44. ('FLAGS', 2),
  45. ('CIADDR', 4),
  46. ('YIADDR', 4),
  47. ('SIADDR', 4),
  48. ('GIADDR', 4),
  49. ('CHADDR', 16),
  50. ('SNAME', 64),
  51. ('FILE', 128),
  52. ('OPTIONS', 312)
  53. ]),
  54. ('DNS', [
  55. ('IDENTIFICATION', 2),
  56. ('FLAGS', 2),
  57. ('NOQ', 2),
  58. ('NOA', 2),
  59. ('NORR', 2),
  60. ('NOARR', 2),
  61. ('QUERY', 1)
  62. ]),
  63. ('JUICE', [
  64. ('HASH', 20),
  65. ('MAGIC', 4),
  66. ('SEQ', 2),
  67. ('COMMAND', 2),
  68. ('PAYLOAD', 2)
  69. ])
  70. ]
  71. ])
  72. ]
  73. ])
  74. ]])
  75. ]
  76. offsets = {}
  77. def descend(offset, prefix, node):
  78. (name, members) = node
  79. offsets[prefix + name] = offset
  80. start = offset
  81. for m in members:
  82. if isinstance(m, tuple):
  83. (field, size) = m
  84. # print prefix, name, field, offset
  85. offsets["%s%s_%s" % (prefix, name, field)] = offset
  86. offset += size
  87. else:
  88. for n in m:
  89. descend(offset, prefix, n)
  90. # print prefix, name, "SIZE", offset - start
  91. offsets["%s%s_SIZE" % (prefix, name)] = offset - start
  92. descend(0, 'OFFSET_', layout[0])