Difference between revisions of "Bbb sniffer"

From GIMX
Jump to: navigation, search
(On a Linux desktop)
Line 1: Line 1:
 +
This page explains how to setup a USB sniffer on the BeagleBone Black.<br />
 +
This is possible thanks to the [https://github.com/dominicgs/USBProxy USBProxy] project.
 +
 +
=Requirements=
 +
 +
* a BeagleBone Black
 +
* a micro SD card
 +
 
=On a Linux desktop=
 
=On a Linux desktop=
  
Line 46: Line 54:
 
  depmod -a
 
  depmod -a
  
  sudo apt-get install libudev-dev
+
  apt-get install libudev-dev
  
 
  mkdir sniffer
 
  mkdir sniffer
Line 61: Line 69:
 
  ldconfig
 
  ldconfig
  
And install/run USBProxy as explained in the README.md.
+
Install USBProxy as explained in the [https://github.com/dominicgs/USBProxy/blob/master/README.md README].
 +
 
 +
Install tcpdump:
 +
apt-get install tcpdump
 +
 
 +
=Sniff=
 +
 
 +
The pcap logger included in USBProxy has many issues.<br />
 +
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.

Revision as of 15:55, 14 January 2015

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

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

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.

On the BBB

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.