t_info *info;
int i;
t_sta new_sta;
+ t_sta *cmp_sta;
t_sta *sta;
unsigned char *package=NULL;
t_frame4_hdr *f4hdr;
new=0;
foo=0;
- if(info->dump_fd!=0) {
- ret=write(info->dump_fd,pcap_header,sizeof(struct pcap_pkthdr));
- if(ret!=sizeof(struct pcap_pkthdr))
- display_console(info,"warning, pcap header write failed!");
- ret=write(info->dump_fd,package,pcap_header->caplen);
- if(ret!=pcap_header->caplen)
- display_console(info,"warning, package write failed!");
- }
-
/* prism or ieee802.11 header ? */
if(info->mode&MODE_IEEE80211) {
package=(unsigned char *)pkg;
memcpy(new_sta.bssid,f3hdr->addr3,ADDR_LEN);
}
}
+
ret=list_search_data(&(info->sniffed_sta),&new_sta,ADDR_LEN);
if((ret==L_EMPTY_LIST)|(ret==L_NO_SUCH_ELEMENT)) {
list_add_element(&(info->sniffed_sta),&new_sta,sizeof(t_sta));
new=1;
}
else sta=(t_sta *)info->sniffed_sta.current->data;
+ if(!(sta->ap)) {
+ ret=list_count(&(info->sniffed_sta));
+ list_reset(&(info->sniffed_sta));
+ for(i=0;i<ret;i++) {
+ cmp_sta=(t_sta *)info->sniffed_sta.current->data;
+ if(!memcmp(cmp_sta->bssid,sta->bssid,ADDR_LEN)) {
+ if(FCTL_FROMDS(package[0]))
+ snprintf(sta->ssid,MAX_SSID_LEN,"<- %s",cmp_sta->ssid);
+ else if(FCTL_TODS(package[0]))
+ snprintf(sta->ssid,MAX_SSID_LEN,"-> %s",cmp_sta->ssid);
+ else
+ snprintf(sta->ssid,MAX_SSID_LEN,"<> %s",cmp_sta->ssid);
+ break;
+ }
+ list_next(&(info->sniffed_sta));
+ }
+ }
// fill in stuff ...
sta->count_data++;
switch_active_state(&(sta->active));
if(new) {
strcpy(sc,"flite 'station found by data package'");
system(sc);
- }
- if(foo) {
- sta->wds=1;
- strcpy(sc,"flite 'wds package'");
- system(sc);
- }
- memcpy(sta->snap,data,10);
- if((data[0]==0xaa)&(data[1]==0xaa)&(data[2]==0x03)&
- (data[3]==0x00)&(data[4]==0x00)&(data[5]==0x00)) {
- sta->wep=0;
- strcpy(sc,"flite 'not crypted'");
- system(sc);
- }
- else {
- sta->wep=WEP;
- strcpy(sc,"flite ' crypted'");
- system(sc);
+ if(foo) {
+ sta->wds=1;
+ strcpy(sc,"flite 'wds package'");
+ system(sc);
+ }
+ memcpy(sta->snap,data,10);
+ if((data[0]==0xaa)&(data[1]==0xaa)&(data[2]==0x03)&
+ (data[3]==0x00)&(data[4]==0x00)&(data[5]==0x00)) {
+ sta->wep=0;
+ strcpy(sc,"flite 'not crypted'");
+ system(sc);
+ }
+ else {
+ sta->wep=WEP;
+ strcpy(sc,"flite ' crypted'");
+ system(sc);
+ }
}
//}
display_console(info,"last: got data frame");
}
+ if(info->dump_handle!=NULL) pcap_dump((unsigned char *)(info->dump_handle),pcap_header,pkg);
}