123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef _SLITHEEN_H_
- #define _SLITHEEN_H_
- #include <stdlib.h>
- #include <netinet/in.h>
- #include <pcap.h>
- #define macaddr "08:00:27:0e:89:ea"
- #define ETHER_ADDR_LEN 6
- #define ETHER_HEADER_LEN 2*ETHER_ADDR_LEN + 2
- struct ip_header {
- u_char versionihl;
- u_char dscpecn;
- u_short len;
- u_short id;
- u_short flagsoff;
- #define RF 0x8000
- #define DF 0x4000
- #define MF 0x2000
- u_char ttl;
- u_char proto;
- u_short chksum;
- struct in_addr src, dst;
- };
- #define IP_HEADER_LEN(ip) (((ip)->versionihl) & 0x0f)*4
- struct tcp_header {
- u_short src_port;
- u_short dst_port;
- u_int sequence_num;
- u_int ack_num;
- u_char offset_res_ns;
- u_char flags;
- #define FIN 0x01
- #define RST 0x04
- u_short win_size;
- u_short chksum;
- u_short urg;
- };
- #define TCP_HEADER_LEN(tcp) (((tcp)->offset_res_ns) >> 4)*4
- struct tls_header {
- u_char type;
- #define CCS 0x14
- #define ALERT 0x15
- #define HS 0x16
- #define APP 0x17
- #define HB 0x18
- u_short version;
- u_short len;
- u_char msg;
- #define CLIENT_HELLO 0x01
- #define FINISHED 0x14
- };
- #define RECORD_HEADER_LEN 5
- #define CLIENT_HELLO_HEADER_LEN 6
- struct packet_info {
- const struct ip_header *ip_hdr;
- struct tcp_header *tcp_hdr;
- const struct tls_header *record_hdr;
- uint32_t size_tcp_hdr;
- uint32_t size_ip_hdr;
- uint8_t *app_data;
- uint32_t app_data_len;
- };
- struct __attribute__((__packed__)) slitheen_header {
- u_char stream_id;
- u_short len;
- u_short garbage;
- };
- #define SLITHEEN_HEADER_LEN 5
- struct __attribute__((__packed__)) record_header {
- u_char type;
- #define HS 0x16
- u_short version;
- u_short len;
- };
- #define RECORD_LEN(rec) (htons(rec->len))
- struct __attribute__((__packed__)) handshake_header {
- u_char type;
- u_char len1;
- u_char len2;
- u_char len3;
- };
- #define HANDSHAKE_MESSAGE_LEN(hs) (((hs)->len1) << 16)+(((hs)->len2) << 8)+ ((hs)->len3)
- #define HANDSHAKE_HEADER_LEN 4
- struct sniff_args {
- char *readdev;
- char *writedev;
- char *filter;
- };
- void got_packet(uint8_t *args, const struct pcap_pkthdr *header, const uint8_t *packet);
- void *sniff_packets(void *);
- void process_packet(struct packet_info *info);
- void extract_packet_headers(uint8_t *packet, struct packet_info *info);
- #endif
|