A number of people have asked how to get Kismet remote capture running on OpenWrt - until the final release of the new Kismet is done, or if you’d like to play with the git version going forward, here’s a quick tutorial.
Please remember git versions of Kismet are unstable and under development - not everything may work, or things may change rapidly. Generally the git versions are usable but every so often you’ll get a bad version.
These instruction are meant to be a quick guide to getting the Kismet specifics compiled, so I recommend checking out some OpenWrt build guides if you’re completely new to the whole process.
If you don’t have them already, you’ll need build-essentials
and git
.
You’ll want the Kismet source code to get the openwrt package definition.
$ git clone https://www.kismetwireless.net/kismet.git
This will take a little while to download, and due to how Git handles https servers, may look like it’s hung - just give it time.
$ git clone https://git.openwrt.org/openwrt/openwrt.git
You will need to select the basic options for OpenWrt and enable the external feed for additional libraries Kismet needs. When running make menuconfig
you may see warnings about needing additional packages - install any that OpenWrt says you are missing.
# Go into the directory you just cloned
$ cd openwrt
# Start the configuration tool
$ make menuconfig
Inside the OpenWRT configuration you will want to:
Target System (Atheros AR7xxx/AR9xxx)
and
` Subtarget (Generic)`
Because we are only trying to build packages and not a complete system, we don’t need to configure the image formats; default is fine.Image Configuration
.Separate Feed Repositories
.Enable feed packages
.We need to tell OpenWrt to pull the feeds into the build system. Still in the openwrt directory you checked out, run:
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
This will download all the third-party package definitions.
We want to copy the Kismet package over, because we’ll potentially be making some modifications.
$ cp -R kismet/packaging/openwrt/kismet-remote-2018 openwrt/package/network
Where, of course, you want to copy from your checked-out Kismet code to the checked-out OpenWrt code; your directories might be different.
In a perfect world the libprotoc-c package in OpenWRT would install the proper host binary for protoc-c, but it does not. Fortunately, there is only one version of libproto-c (the C-only version), so the package for your host distribution should be sufficient.
$ sudo apt-install protobuf-c-compiler
will suffice on Ubuntu-style distributions; your distribution may vary. Note: This is for the protobuf-c version, not the normal protobuf (which is C++, and which has a working openwrt package with proper host tools).
Now we need to enable the Kismet package. Still in your OpenWrt directory:
make menuconfig
.Now we need to start the build process: It will take a while.
$ make
Depending on how many processors your system has, you can speed this up with
$ make -j4
or similar.
If you still get an error regarding protoc-c not found, you may have to link you local version where the OpenWrt version is supposed to be, like:
ln -s /usr/bin/protoc-c staging_dir/target-<arch foo>_musl-1.1.16/host/bin/protoc-c
If everything went well, you now have two packages to copy to your OpenWrt:
$ cd bin/packages/<architecture>/
$ scp packages/libprotobuf-c<arch foo>.ipk base/kismet-remote<arch foo>.ipk root@openwrt-machine:/tmp
SSH into the OpenWrt and install the packages:
$ ssh root@openwrt-machine
...
# cd /tmp
# opkg install *.ipk
Fire up Kismet remote capture and see how it goes. While SSHed into the OpenWrt as root:
# kismet_cap_linux_wifi --connect [host]:[port] --source=wlan0
or alike. Use --help
for more information.