X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fhdw-sniff.git;a=blobdiff_plain;f=parse.h;h=384e65c36e99273151f406732a8c83b032a0e0eb;hp=228a67ed82a57c2cc58f7a9f6a6368e373aaf8cf;hb=c189dbc1ce419a70c8a91ba275dbdf57c4de2ec6;hpb=4496e49cea69d40228b53c6a66a8a4b22bbcb1b7 diff --git a/parse.h b/parse.h index 228a67e..384e65c 100644 --- a/parse.h +++ b/parse.h @@ -1,8 +1,155 @@ -/* function prototypes */ +/* parse.h */ #ifndef PARSE_H #define PARSE_H -// void parse_package(unsigned char *ptr,const struct pcap_pkthdr *pcap_header,const unsigned char *package); +/* ieee802.11 stuff */ + + +typedef unsigned long long int u64; +typedef unsigned int u32; +typedef unsigned short int u16; +typedef unsigned char u8; + +#define ADDR_LEN 6 + +typedef struct s_frame4_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ADDR_LEN]; /* receiver */ + u8 addr2[ADDR_LEN]; /* transmitter */ + u8 addr3[ADDR_LEN]; /* destination */ + u16 seq_ctrl; + u8 addr4[ADDR_LEN]; /* source */ +} __attribute__ ((packed)) t_frame4_hdr; + +typedef struct s_frame3_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ADDR_LEN]; /* destination / bssid */ + u8 addr2[ADDR_LEN]; /* source /bssid */ + u8 addr3[ADDR_LEN]; /* bssid / source / destination */ + u16 seq_ctrl; +} __attribute__ ((packed)) t_frame3_hdr; + +typedef struct s_frame2_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ADDR_LEN]; /* receiver / bssid / receiver */ + u8 addr2[ADDR_LEN]; /* transmitter / transmitter / bssid */ + u16 seq_ctrl; +} __attribute__ ((packed)) t_frame2_hdr; + +typedef struct s_frame1_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ADDR_LEN]; /* receiver */ + u16 seq_ctrl; +} __attribute__ ((packed)) t_frame1_hdr; + +typedef struct s_prism_val { + u32 did; + u16 status; + u16 len; + u32 data; +} __attribute__ ((packed)) t_prism_val; + +typedef struct s_prism_hdr { + u32 msg_code; + u32 msg_len; + char device[16]; + t_prism_val hosttime; + t_prism_val mactime; + t_prism_val channel; + t_prism_val rssi; + t_prism_val sq; + t_prism_val signal; + t_prism_val noise; + t_prism_val rate; + t_prism_val istx; + t_prism_val frame_len; +} __attribute__ ((packed)) t_prism_hdr; + +#define FCTL_VER(X) ((X&0x0003)) +#define FCTL_TYPE(X) ((X&0x000c)>>2) +#define FCTL_STYPE(X) ((X&0x00f0)>>4) +#define FCTL_TODS(X) ((X&0x0100)>>8) +#define FCTL_FROMDS(X) ((X&0x0200)>>9) +#define FCTL_MOREFRAG(X) ((X&0x0400)>>10) +#define FCTL_RETRY(X) ((X&0x0800)>>11) +#define FCTL_PWRMGT(X) ((X&1000)>>12) +#define FCTL_MOREDATA(X) ((X&0x2000)>>13) +#define FCTL_WEP(X) ((X&0x4000)>>14) +#define FCTL_ORDER(X) ((X&0x800)>>15) + +#define FCTL_TYPE_MGMT 0 +#define FCTL_TYPE_CTRL 2 +#define FCTL_TYPE_DATA 1 + +#define FCTL_STYPE_ASSOC_REQ 0x0 +#define FCTL_STYPE_ASSOC_RESP 0x1 +#define FCTL_STYPE_REASSOC_REQ 0x2 +#define FCTL_STYPE_REASSOC_RESP 0x3 +#define FCTL_STYPE_PROBE_REQ 0x4 +#define FCTL_STYPE_PROBE_RESP 0x5 +#define FCTL_STYPE_BEACON 0x8 +#define FCTL_STYPE_ATIM 0x9 +#define FCTL_STYPE_DISASSOC 0xa +#define FCTL_STYPE_AUTH 0xb +#define FCTL_STYPE_DEAUTH 0xc + +#define FCTL_STYPE_PSPOLL 0xa +#define FCTL_STYPE_RTS 0xb +#define FCTL_STYPE_CTS 0xc +#define FCTL_STYPE_ACK 0xd +#define FCTL_STYPE_CFEND 0xe +#define FCTL_STYPE_CFENDACK 0xf + +#define FCTL_STYPE_DATA 0x0 +#define FCTL_STYPE_DATA_CFACK 0x1 +#define FCTL_STYPE_DATA_CFPOLL 0x2 +#define FCTL_STYPE_DATA_CFACKPOLL 0x3 +#define FCTL_STYPE_NULLFUNC 0x4 +#define FCTL_STYPE_CFACK 0x5 +#define FCTL_STYPE_CFPOLL 0x6 +#define FCTL_STYPE_CFACKPOLL 0x7 + +typedef struct s_beacon_fb { + u64 timestamp; + u16 beacon_int; + u16 cap_info; + u8 ssid_element_id; + u8 ssid_length; + u8 ssid[32]; + u8 srates_element_id; + u8 srates_element_length; + u8 rest; /* go on here ... */ +} __attribute__ ((packed)) t_beacon_fb; + +#define CAP_INFO_ESS(X) ((X&0x0001)) +#define CAP_INFO_IBSS(X) ((X&0x0002)>>1) +#define CAP_INFO_PRIVACY(X) ((X&0x0010)>>4) + +/* hdw-sniff stuff */ + +#define MAX_SSID_LEN 32 +#define AP 1 +#define WEP 1 +#define WEP_MAX_DIGITS 13 + +typedef struct s_sta { + u8 addr[ADDR_LEN]; + char ssid[MAX_SSID_LEN]; + u8 ap; + u8 wep; + int count_mgmt; + int count_ctrl; + int count_data; + char active; + char key[WEP_MAX_DIGITS]; + int sq; +} t_sta; + +/* function prototypes */ #endif