X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=hdw-sniff.c;h=816e778bf1fc1e4f7538bc8b9cb8f70e928e1b62;hb=d77d3212b85b3a67ccf11abab94aa8ddc389cf04;hp=3aa657b608972ef18066c128753e16bdea28b41e;hpb=7a55b727f19281d64c03359e79ff900d5e154d81;p=my-code%2Fhdw-sniff.git diff --git a/hdw-sniff.c b/hdw-sniff.c index 3aa657b..816e778 100644 --- a/hdw-sniff.c +++ b/hdw-sniff.c @@ -137,12 +137,15 @@ void pcap_process(u_char *info,const struct pcap_pkthdr *pcap_header, e_o=sizeof(struct ethhdr); i_o=sizeof(struct iphdr); + /* new package */ printf("\n"); printf("---> package %d ---- %s",my_info_struct->count, ctime((const time_t*)&(pcap_header->ts.tv_sec))); - printf("pcap header:\n"); - printf("capture_length: %d (dec.)\t",pcap_header->caplen); - printf("length(off wire): %d (dec.)\n",pcap_header->len); + + /* pcap header */ + printf("pcap header: "); + printf("capture_length(dec): %d\t",pcap_header->caplen); + printf("off_wire_length(dec): %d\n",pcap_header->len); /* wireless stuff */ /* prism wlan ng headers */ @@ -163,13 +166,38 @@ void pcap_process(u_char *info,const struct pcap_pkthdr *pcap_header, (((w_hdr->frame_ctl) & (1<0?1:0), (i==15?"|\n":"|")); printf(" | v | t | s-t |t|f|m|r|p|m|w|o|\n"); - printf("debug: %d\n",(w_hdr->frame_ctl)<<15); - if((w_hdr->frame_ctl & IEEE802_11_STYPE_BEACON)>0) strcpy(tmp_buf,"beacon"); - else strcpy(tmp_buf,"unknown"); - + /* frame type */ + /* management */ + if(!(w_hdr->frame_ctl & 0x0c)) { + if((w_hdr->frame_ctl & IEEE802_11_STYPE_ASSOC_REQ)>0) + strcpy(tmp_buf,"association request"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_ASSOC_RESP)>0) + strcpy(tmp_buf,"association response"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_REASSOC_REQ)>0) + strcpy(tmp_buf,"reassociation request"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_REASSOC_RESP)>0) + strcpy(tmp_buf,"reassociation response"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_PROBE_REQ)>0) + strcpy(tmp_buf,"probe request"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_PROBE_RESP)>0) + strcpy(tmp_buf,"probe response"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_BEACON)>0) + strcpy(tmp_buf,"beacon"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_ATIM)>0) + strcpy(tmp_buf,"announcement traffic indication message"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_DISASSOC)>0) + strcpy(tmp_buf,"disassociation"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_AUTH)>0) + strcpy(tmp_buf,"authentification"); + else if((w_hdr->frame_ctl & IEEE802_11_STYPE_DEAUTH)>0) + strcpy(tmp_buf,"deauthentification"); + else strcpy(tmp_buf,"impossible situation \%) - go mail the author."); + } + else strcpy(tmp_buf,"control & monitor frame types not supported yet"); + /* print out frame type */ printf("=> %s\n",tmp_buf); - printf("duration/id: %x\n",w_hdr->duration_id); + printf("duration/id: 0x%x\n",w_hdr->duration_id); printf("version check ... %s\n", ((w_hdr->frame_ctl & IEEE802_11_FCTL_VERS)==0x00)? "ok":"unknown");