RPCAPD配合Wireshark可视化远程抓包
前言
我们知道使用Wireshark进行网络抓包分析是十分方便的,但是嵌入式系统或者服务器远程终端等没有界面或者内存很小的地方是无法直接只用Wireshark的,网络抓包一般使用tcpdum,但是又需要把生成的抓包下载的本地,次数多了很是麻烦,还不能实时过滤。于是找到了这RPCAPD,可以配合Wireshark进行远程抓包。
Windows电脑环境准备
安装Wireshark的过程网上有很多,这里就不再介绍了。之后去WinPcap 官网下载WinPcap,点击安装包后,即可按照正常流程进行进行安装。
首先 同时按键 win + r
打开运行窗口;
然后输入 services.msc"
打开” 服务“ 窗口;
找到 Remote Packet Capture Protocol v.0 (experimental)
开启该服务。
在Ubuntu或者Centos等LinuxPC机的使用
首先克隆源码:
git clone https://github.com/rpcapd-linux/rpcapd-linux.git
安装编译环境:
- Ubuntu:
sudo apt-get build-dep libpcap
- Centos/Fedora/Redhat:
yum install -y byacc glibc-static libgcrypt-devel
编译:
cd rpcapd/libpcap
./configure && make
cd ../
make
此时即编译出主程序,然后参考下方使用。
嵌入式Linux交叉编译
在板子上开发功能时,有时需要抓取板内的通讯情况,用这个方法是再直观不过了,下面介绍如何交叉编译,下面以MIPS为例,ARM或其它的环境相似。
导入环境变量:
export PATH=$PATH:toolchain/8196/rsdk-4.6.4-4181-EB-3.10-u0.9.33-m32-150324/bin
export STAGING_DIR=toolchain/8196/rsdk-4.6.4-4181-EB-3.10-u0.9.33-m32-150324
export CC=mips-linux-gcc
export CXX=mips-linux-g++
export AR=mips-linux-ar
export RANLIB=mips-linux-ranlib
export ac_cv_linux_vers=3.10.90
配置conifg:
./configure --build=x86_64-unknown-linux-gnu --host=mipsel-linux --with-pcap=linux
make
返回外层,修改makefile字段:
cd ../
vim Makefile
#修改CC
CC = mips-linux-gcc
再执行make。
如果出现以下错误,可以进行如下操作:
/mips-linux-uclibc/include/string.h:397:15: error: expected declaration specifiers or '...' before '(' token
是编译工具链中的strlcpy
,可以先临时注释掉。因为使用的是uclibc,可能会出现这样的问题,还好rpcapd对strlcpy
进行了兼容。
打开rpcapd-linux/libpcap
中的config.h
,注释掉 HAVE_STRLCPY
可以看到进行了兼容,strlcpy
比strncpy
更加安全。
这时候就可以编译成功了,file rpcapd
来进行确认
使用
使用FTP或者其它方式将可执行文件放入目标机内。
首先在板内运行rpcapd,端口号自定义。rpcapd的其它命令参考 https://github.com/rpcapd-linux/rpcapd-linux 内说明
sudo ./rpcapd -4 -n -p <chosen_port>
打开windos上的Wireshark,点击捕获 ->选项 -> Manage Interfaces -> 远程接口
,输入目标IP和端口,点击Ok
连接成功会有打印提示
捕获列表就可以看到板子内所有的接口了,后续就可以愉快的可视化抓包了