前段时间需要对路由器上的网络数据进行抓包,一番摸索之后发现了可以通过wireshark来对路由器进行抓包,当然前提路由器系统是Openwrt,这个方法同时也适合是Linux系统的主机或服务器,觉得挺有用的,于是记录下来,具体的方法如下文;
这里我们以运行openwrt系统的路由器为实验平台,我们通过搭建环境之后然后抓取路由器上的网络数据包为实验目的;
1、抓包环境搭建
抓包环境分为两部分:
第一部分: 是目标平台环境搭建,也就是这里的openwrt系统的路由器;
第二部分: 是window平台环境搭建;
这两部分的逻辑是通过在目标平台上运行tcpdump抓包命令,然后利用plink.exe工具通过实时通道传输到windows平台上再用wireshark工具进行展示分析;
1.1、目标平台openwrt路由器环境搭建
在openwrt系统下我们主要是要安装tcpdump工具;
- ssh登录到openwrt系统;
- 检察是否有tcpdump工具,如果没有则自行安装;简单两步,环境搭建完成,接下来就是windows平台环境搭建;
1.2、windows系统环境搭建
在windows系统里,我们主要要用到plink.exe和wireshark两个工具,请自行安装这两个工具,其中plink通过安装putty获得,在安装目录下;
- plink.exe: 负责把tcpdump抓到的数据通过ssh传输到本地;
- wireshark: 负责把plink传递过来的数据进行分析展示,请自行安装此工具;
2、启动抓包方法
- 在CMD命令行下执行以下命令即可进行远程
plink.exe-batch-ssh-pw123456root@192.168.8.1"tcpdump-nibr-lan-s0-w-notport22"|"C:\ProgramFiles\Wireshark\Wireshark.exe"-k-i-
- 运行效果【路由器的网络数据实时显示在wireshark上】
- 抓包命令解释
- 执行 plink.exe 程序,通过 SSH 协议进行远程登录到 IP 地址为 192.168.8.1 的 Linux 服务器。
- 在服务器上使用 tcpdump 命令监听名为 br-lan 的网络接口上除 SSH(端口号为 22)外的所有数据包。由于 -s 0 选项指定了数据包的大小为 0,因此将抓取到的数据包写入标准输出,而不是显示在终端中。
- 使用管道符 | 将服务器上的标准输出(数据包)传输至 Windows 系统。
- 在 Windows 系统上执行 C:\Program Files\Wireshark\Wireshark.exe 程序,将传输过来的数据包作为输入。其中 -k 选项指定 Wireshark 自动选择第一个接口(这里是命令传输过来的数据流),-i - 选项指定 Wireshark从标准输入中读取输入数据。
碰到的问题
命令行第一次执行提示错误:
Theserver'shostkeyisnotcachedintheregistry.
Youhavenoguaranteethattheserveristhecomputeryouthinkitis.
Theserver'sssh-ed25519keyfingerprintis:ssh-ed25519255801143c4fc695a5e:dbConnectionabandoned.
1559.770CaptureWarnCannotstoreinterfaceC:\ProgramFiles\Wireshark\extcap\nrf_sniffer_ble.bat,alreadyloadedaspersonalplugin
1504.049MainWarnQObject::~QObject:Timerscannotbestoppedfromanotherthread
解决方法:
第一次接入服务器时,由于不信任,需要去掉-batch 参数后命令会进入交互模式,在提示的地方输入密码,之后就不用重复输入了,可以再加上-batch参数;
最后
至此,我们已经成功抓取通过路由器上所有的网络数据包,同时提醒下这个方法也是同样适合抓取Linux主机上的网络数据哦。
-
服务器
+关注
关注
12文章
8732浏览量
84630 -
网络
+关注
关注
14文章
7401浏览量
88256 -
路由器
+关注
关注
22文章
3653浏览量
112882
发布评论请先 登录
相关推荐
评论