前言
openwrt做为一款基于linux的路由器系统,本身可以安装很多linux平台的工具,今天我们就来玩玩如何将通过路由器的网络数据都抓下来。
首先请您在路由器安装好tcpdump,安装的方法,最好是通过包管理器,毕竟如果依赖包很多的话,手动安装比较繁琐。
思路一
我们可以先在路由器上通过tcpdump等抓包工具将接口的数据先抓下来并保存为标准的抓包文件,然后导回到本机进行后续的分析,这种方式临时使用是可以的,但操作比较麻烦。
思路二
我们通过ssh链接到openwrt的路由,然后通过执行tcpdump的抓包命令,将数据包通过ssh传回到我们的PC机,在PC机上通过wireshark进行分析。
#命令格式
ssh -p ssh端口 -o StrictHostKeyChecking=no ssh用户名@ssh地址 'tcpdump -s 0 -U -n -w - -i br-lan not port ssh端口' | wireshark -k -i -
#对应我的环境的命令
ssh -p 2222 -o StrictHostKeyChecking=no root@192.168.2.1 'tcpdump -s 0 -U -n -w - -i br-lan not port 2222' | wireshark -k -i -
简单的说明
根据openwrt文档,所有的局域网的数据最后都是通过br-lan虚拟网卡来做转发,所以对此网卡进行监控即可
此命令本质是远程在路由器上执行网络监控命令,输入文本到本机的wireshark里面
使用wireshark作为可视化工具来查看
前面讲述了基本的原理和操作手段,但是缺点是每次都需要输入长串命令行和密码,可以利用linux的一些小操作技巧,简化此过程,做成一个命令工具,方便随时调用。
基本原理:
使用 sshpass 工具来做密码输入
使用 alias 别名来做成命令语句
自动登录语句实现:
sshpass -p 'admin' ssh -p 2222 -o StrictHostKeyChecking=no root@192.168.2.1 'tcpdump -s 0 -U -n -w - -i br-lan not port 2222' | wireshark -k -i -
编辑~/.bash_alias文件,自定义命令行的别名:
alias zshark="sshpass -p 'admin' ssh -p 2222 -o StrictHostKeyChecking=no root@192.168.2.1 'tcpdump -s 0 -U -n -w - -i br-lan not port 2222' | wireshark -k -i -"
后面只需要在shell里面输入zshark就可以完成命令的启动了。
思路三
思路三其实和思路二差不多,不过是通过命名管道来导回数据,在有些情况下比较方便。所以单独记录下来。
mkfifo /tmp/fifo
sshpass -p 'admin' ssh -p 2222 -o StrictHostKeyChecking=no root@192.168.2.1 'tcpdump -s 0 -U -n -w - -i br-lan not port 2222' > /tmp/fifo &
wireshark -k -i /tmp/fifo
参考
- tshark + wireshark+sshssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -
- tcpdump + wireshark + sshssh root@server.com 'tshark -f "port !22" -w -' | wireshark -k -i -
- fifo方式mkfifo /tmp/fifo; ssh-keygen; ssh-copyid root@remotehostaddress; sudo ssh root@remotehost "tshark -i eth1 -f 'not tcp port 22' -w -" > /tmp/fifo &; sudo wireshark -k -i /tmp/fifo;
原文地址:http://www.commandlinefu.com/commands/view/4373/analyze-traffic-remotely-over-ssh-w-wireshark
直接远程抓包分析
网友评论