Якось знадобилося мені посніфити трафик на роутері з 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='\u@\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://archive.openwrt.org/snapshots/trunk/ar71xx/generic/packages/base
mkdir /tmp/inst
for package in \
libpcap_1.7.4-1_ar71xx.ipk \
tcpdump-mini_4.9.2-1_ar71xx.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 user@remotehost "cat - | gzip > /tmp/br0.pcap.gz"
Або запустити tcpdump на віддаленому роутері а вихлоп дивитися за допомогою wireshark
На своєму ПК виконуємо:
ssh root@dd-wrt LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/usr/lib /tmp/usr/sbin/tcpdump -A -s 0 'not port 22' -ibr0 -w - | sudo wireshark -k -i -