slitheen.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef _SLITHEEN_H_
  2. #define _SLITHEEN_H_
  3. #include <stdlib.h>
  4. #include <netinet/in.h>
  5. #define macaddr "08:00:27:e8:9d:d4"
  6. /* Ethernet addresses are 6 bytes */
  7. #define ETHER_ADDR_LEN 6
  8. #define ETHER_HEADER_LEN 2*ETHER_ADDR_LEN + 2
  9. /* Definitions for parsing packet data */
  10. struct ip_header {
  11. u_char versionihl; /* Version >> 4 | IHL & 0x0f */
  12. u_char dscpecn; /* DSCP >> 2 | ECN & 0x03 */
  13. u_short len; /* Total Length */
  14. u_short id; /* Identification */
  15. u_short flagsoff; /* Flags >> 13 | Fragment Offset & 0x1fff */
  16. #define RF 0x8000 /* Reserved; must be zero */
  17. #define DF 0x4000 /* Dont Fragment */
  18. #define MF 0x2000 /* More Fragments */
  19. u_char ttl; /* Time To Live */
  20. u_char proto; /* Protocol */
  21. u_short chksum; /* Header Checksum */
  22. struct in_addr src, dst; /* Source and Destination addresses */
  23. };
  24. #define IP_HEADER_LEN(ip) (((ip)->versionihl) & 0x0f)*4
  25. struct tcp_header {
  26. u_short src_port; /* source port */
  27. u_short dst_port; /* destination port */
  28. u_int sequence_num; /* sequence number */
  29. u_int ack_num; /* acknowledgement number */
  30. u_char offset_res_ns; /*Data offset >> 4 | res >> 1 | NS 0x01 */
  31. u_char flags; /* Flags */
  32. #define FIN 0x01
  33. #define RST 0x04
  34. u_short win_size; /* Window size*/
  35. u_short chksum; /* Checksum */
  36. u_short urg; /* Urgent pointer */
  37. };
  38. #define TCP_HEADER_LEN(tcp) (((tcp)->offset_res_ns) >> 4)*4
  39. struct tls_header {
  40. u_char type; /* Content Type */
  41. #define CCS 0x14
  42. #define ALERT 0x15
  43. #define HS 0x16
  44. #define APP 0x17
  45. #define HB 0x18
  46. u_short version; /* Version */
  47. u_short len; /* Length */
  48. u_char msg; /* Message Type */
  49. #define CLIENT_HELLO 0x01
  50. #define FINISHED 0x14
  51. };
  52. #define RECORD_HEADER_LEN 5
  53. #define CLIENT_HELLO_HEADER_LEN 6
  54. struct __attribute__((__packed__)) record_header {
  55. u_char type;
  56. #define HS 0x16
  57. u_short version;
  58. u_short len;
  59. };
  60. #define RECORD_LEN(rec) (htons(rec->len))
  61. struct __attribute__((__packed__)) handshake_header {
  62. u_char type; /*Handshake message type */
  63. u_char len1;
  64. u_char len2;
  65. u_char len3;
  66. };
  67. #define HANDSHAKE_MESSAGE_LEN(hs) (((hs)->len1) << 16)+(((hs)->len2) << 8)+ ((hs)->len3)
  68. #define HANDSHAKE_HEADER_LEN 4
  69. struct sniff_args {
  70. char *readdev;
  71. char *writedev;
  72. char *filter;
  73. };
  74. #endif /* _SLITHEEN_H_ */