dd-wrt і tcpdump

Розділи: 

Якось знадобилося мені посніфити трафик на роутері з dd-wrt, на якому немає ані tcpdump ані USB для встановлення доп. пакетів.
Але не все так погано як здається на перший погляд.
Вставляємо цей скрипт у Administration-->Commands-->Startup script
В першій частині я замінюю дефолтний /etc/profile на свій, а в другій встановлюю libpcap та tcpdump у /tmp тобто у RAM

cat > /tmp/new_profile << 'EOF'
#!/bin/sh
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tmp/usr/bin:/tmp/usr/sbin
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/lib:/tmp/lib:/tmp/usr/lib
export PS1='\[email protected]\h:\w\$ '
reboot() {
for f in /opt/etc/init.d/K* ; do
[ -x "$f" ] && "$f" stop
done
echo "#!/bin/sh" > /tmp/.rc_shutdown
echo "$(nvram get rc_shutdown)" >> /tmp/.rc_shutdown
if [ -f /tmp/.rc_shutdown ]; then
chmod +x /tmp/.rc_shutdown
/tmp/.rc_shutdown
fi
/sbin/reboot
}
EOF
mount --bind /tmp/new_profile /etc/profile
sleep 20
repository=http://downloads.openwrt.org/attitude_adjustment/12.09-rc1/lantiq/ar9/packages
mkdir /tmp/inst
for package in \
libpcap_1.1.1-2_lantiq.ipk \
tcpdump_4.2.1-2_lantiq.ipk
do
cd /tmp/inst
wget $repository/$package
tar -zxvf $package
tar -zxvf control.tar.gz
cd ..
tar -zxvf /tmp/inst/data.tar.gz
done
rm -rf inst
chmod 777 /tmp

Увага: repository openwrt треба підбирати залежно від того яка модель роутера та яка версія dd-wrt

Тепер можна локально запустити tcpdump із записом результату в файл на іншому сервері по ssh

На сервері виконуємо:

tcpdump -A -s 0 'not port 22' -ibr0 -w - | ssh [email protected] "cat - | gzip > /tmp/br0.pcap.gz"

Або запустити tcpdump на віддаленому роутері а вихлоп дивитися за допомогою wireshark

На своєму ПК виконуємо:

ssh [email protected] LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/usr/lib /tmp/usr/sbin/tcpdump -A -s 0 'not port 22' -ibr0 -w - | wireshark-gtk -k -i -