用wireshark+tcpdump+ssh远程抓包并实时显示

  • Post author:
  • Post category:其他




用wireshark+tcpdump+ssh远程抓包并实时显示

我们平时用的抓包工具一般就是wireshark或tcpdump,前者有图形界面,当我们要远程登录到Linux主机抓包时,一般就只能选择tcpdump,并保存为文件,再拉到本地用wireshark打开。

很多时候这样就够了,但是如果希望实时显示远程主机上抓到的包,用tcpdump -X看起来会很痛苦,而想在远程主机上用X跑wireshark的图形界面是件让人抓狂的事情。

有没办法让tcpdump远程抓包,再将数据实时传送到本地,再用wireshark图形化界面实时打开?

有办法!用ssh当通道来干这事儿。



准备工作

  • 本地PC机上得有命令行版的ssh,图形化的SecureCRT应该不行
  • 本地PC机上有wireshark
  • 远程主机上有tcpdump
  • 你有远程主机的root权限(否则你也抓不了包啊)
  • 找到本地PC机上ssh和wireshark的路径(或者加入PATH,用于执行命令)



工作思路

基本的想法就是用ssh登录到远程主机上,发起tcpdump抓包,并将tcpdump抓到的结果输出到stdout,再传回本地PC机,而本地PC机上的wireshark以stdin为输入,两者以管道连接传输。



命令示例

ssh root@some.host 'tcpdump -i eth0 port 80 -s 0 -l -w -' | wireshark -k -i -

命令执行后会弹出wireshark界面,这时需要切回刚刚的命令行,因为需要输入密码以登录远程主机(已经配置免密另说),连接成功后即开始抓包,并在本地PC的wireshark上实时显示抓包结果。



参数解释

tcpdump中 ‘-l ’ (这里是小写的字母L)是指line-buffer,即不使用缓存,直接输出,否则就会一段段的输出。’-w -‘是指写文件,目标文件为标准输出。至于tcpdump另外的参数,想抓什么端口,这个请搜下度娘,一搜一大把。

wireshark中 ‘-k’ 是指马上开始捕获数据,’-i -’ 是指从指定接口获取,源为标准输入。



版权声明:本文为koalazoo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。