Bbb sniffer

From GIMX
Jump to: navigation, search

This page explains how to setup a USB sniffer on the BeagleBone Black.
This is possible thanks to the USBProxy project.

Requirements

  • a BeagleBone Black
  • a micro SD card

SD card setup

This section explains how to setup the SD card on a Linux desktop.

mkdir ~/bbb
cd ~/bbb
wget http://debian.beagleboard.org/images/bone-debian-7.5-2014-05-14-2gb.img.xz
md5sum bone-debian-7.5-2014-05-14-2gb.img.xz

(result should be 35877ce21e8ed0eb1bdc6819ad71c317)

xz --stdout -d bone-debian-7.5-2014-05-14-2gb.img.xz | sudo dd of=/dev/sdX bs=4096
sync

Where /dev/sdX is the sdcard device. Don't try anything if you don't know what 'X' should be (you could wipe your hard drive).

Remove the sdcard.

wget https://github.com/RobertCNelson/linux-dev/archive/3.8.13-bone50.tar.gz
tar xzvf 3.8.13-bone50.tar.gz 
cd linux-dev-3.8.13-bone50/

If needed, modify tools/host_det.sh so that it detects your Linux distribution.

./build_kernel.sh

This script will eventually tell you to run commands to install missing packages, e.g.:

sudo apt-get update
sudo apt-get install device-tree-compiler lzma
./build_kernel.sh

Patch and rebuild USB gadget modules:

cd KERNEL/drivers/usb/gadget/
wget https://raw.githubusercontent.com/dominicgs/USBProxy/master/doc/inode.c.patch
patch < inode.c.patch
cd ~/bbb/linux-dev-3.8.13-bone50
./tools/rebuild.sh

Insert and mount the sdcard (e.g. to /mnt/rootfs).

cp ~/bbb/linux-dev-3.8.13-bone50/KERNEL/drivers/usb/gadget/*.ko /mnt/rootfs/lib/modules/3.8.13-bone50/kernel/drivers/usb/gadget/

Modify the /mnt/rootfs/opt/scripts/boot/am335x_evm.sh file so that the usb0 related lines are commented out.

Unmount the sdcard, plug it in the BBB, and power it on.

USBProxy installation

This section explains how to install USBProxy on the BeagleBone Black.

depmod -a
apt-get install libudev-dev
mkdir sniffer
cd sniffer
wget https://github.com/libusb/libusb/archive/v1.0.19.tar.gz
tar xzvf v1.0.19.tar.gz
cd libusb-1.0.19/
./bootstrap.sh
./configure
make
make install
mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/aa_libc.conf
ldconfig

Install USBProxy as explained in the README.

Install tcpdump:

apt-get install tcpdump

Sniff

The pcap logger included in USBProxy has many issues.
I recommend using usbmon and tcpdump instead.

Start tcpdump:

modprobe usbmon
tcpdump -i usbmon1 -w capture.pcap

Start USBProxy:

usb-mitm

The capture.pcap file can be opened with wireshark.