Kismet Wireless

Kismet Forums

 

Posted by:Anton
Subject:mac80211
Date:18:36:59 02/06/2011

> > > >
> > > > You need to configure kismet to use libnl. Then compile with libnl. Only then kismet will use libnl. Use OpenWrt trunk and cross compiler. See chapter OpenWrt Build.
> > >
> > > Thanks - i've been looking into this and as far as I can tell, libnl is installed and referenced from the kismet Makefile. Once the openwrt is booted, apt-get list_installed shows that both libnl and libnl-tiny are installed too.
> > >
> > > Not sure where else to go from here, the primary issue is "broken" SSID's, which seems to be FCS validation failures all showing through:
> > >
> > > <ssid>NETG\305\011R</ssid>
> > > <ssid>NETGEAR</ssid>
> > > <ssid>wirelEas</ssid>
> > > <ssid>wireless</ssid>
> > > <ssid>belkin54g</ssid>
> > > <ssid>\367!reless</ssid>
> > > <ssid>&amp;\347$kin54g</ssid>
> > > <ssid>BTOpenzone</ssid>
> > > <ssid>belk\351&amp;54g</ssid>
> > > <ssid>rOOpenzone</ssid>
> > > <ssid>BTOpenzo\366h</ssid>
> >
> > Option 1. Use checks FCS implemented in kismet
> >
> > kismet.conf
> > ...
> > ncsource=wlan0:name=source0,type=mac80211,validatefcs=true
> >
> > and for openwrt necessarily need to make changes in packetsource_pcap.cc:
> >
> > int PacketSource_Pcap::Eight2KisPack(kis_packet *packet, kis_datachunk *linkchunk) {
> > kis_datachunk *eight11chunk = NULL;
> >
> > eight11chunk = new kis_datachunk;
> >
> > eight11chunk->length = kismin((linkchunk->length - fcsbytes),
> > (uint32_t) MAX_PACKET_LEN);
> >
> > eight11chunk->data = new uint8_t[eight11chunk->length];
> > memcpy(eight11chunk->data, linkchunk->data, eight11chunk->length);
> >
> > kis_fcs_bytes *fcschunk = NULL;
> > if (fcsbytes && linkchunk->length > 4) {
> > fcschunk = new kis_fcs_bytes;
> > memcpy(fcschunk->fcs, &(linkchunk->data[linkchunk->length - 4]), 4);
> > // Valid until proven otherwise
> > fcschunk->fcsvalid = 1;
> >
> > packet->insert(_PCM(PACK_COMP_FCSBYTES), fcschunk);
> > }
> >
> > // If we're validating the FCS
> > if (validate_fcs && fcschunk != NULL) {
> > // Compare it and flag the packet
> > uint32_t calc_crc =
> > __le32_to_cpu(crc32_le_80211(globalreg->crc32_table, eight11chunk->data,
> > eight11chunk->length));
> >
> > ... and validate FCS in kismet&openwrt is work.
> >
> > Option 2. Need to fix driver ath9k. Look in the code of the driver "ATH9K_RXERR_CRC" and you will understand why you get corrupted packets.
> >
> > Good luck!
>
>
> Hi there, thanks for your reply.
>
> I tried option 1 and I get no networks detected when validatefcs=true. This is a AR9220 wireless chip on a AR71xx openwrt, built today.

Should be replaced in the source code packetsource_pcap.cc all lines with crc32_le_80211(...); on __le32_to_cpu(crc32_le_80211(...));
I have everything working on ar71xx and openwrt.


Reply to this message