wireshark抓取本地回环数据包
一 The NPF driver isn’t running
这个错误是因为没有开启NPF服务造成的。
NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap的核心部分,它是Winpcap完成困难工作的组件。它处理网络上传输的数据包,并且对用户级提供可捕获(capture)、发送(injection)和分析性能(analysis capabilities)。
它不仅提供了基本的特性(例如抓包),还有更高级的特性(例如可编程的过滤器系统)。前者可以被用来约束一个抓包会话只针对网络通信中的一个子集,后者提供了一个强大而简单的统计网络通信量的机制。
解决办法如下:
(1)确保自己安装了WinPcap(这个在安装Wireshark时会提示你安装的)也可以从官网下载:地址:http://www.winpcap.org/
(2)在命令提示符下输入:net start npf 会提示打开驱动服务成功。如下图所示:
如果想关闭服务就输入:net stop npf 即可。
二 抓取本地回环数据
步骤一
windows下,在命令行中输入以下语句:
// 增加一条路由表项
// 192.168.1.106是本机ip, 192.168.1.1是路由网关
route add 192.168.1.106 mask 255.255.255.255 192.168.1.1 metric 1
// 抓包完成后,删除该表项
route delete 192.168.1.106
步骤二
修改源代码,其中建立连接的代码需要使用本机192.168.1.106 的 IP,不能使用127.0.0.1或localhost,如:
// 例子1
// java版本代码
// 设置服务器端的IP地址为192.168.1.106,不能写localhost或127.0.0.1
InetSocketAddress peer = new InetSocketAddress("192.168.1.106", DEFAULT_PORT);
// 例子2
// 其他版本的代码:
socket.Connect("192.168.1.106", 4530);
注:win10环境下测试,仍无法抓取本地包,可以使用RawCap抓回环数据包
三 lookback capture support platforms
可查看 https://wiki.wireshark.org/CaptureSetup/Loopback Supported Platforms标题。
四 网络协议中环回接口
网络接口的命名
在linux下网络接口:
eth0: ethernet的简写,一般用于以太网接口
wifi0: wifi是无线局域网,因此wifi0一般只无线网络接口
ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口
lo:local的简写,一般指本地环回接口。它是一个虚拟网络接口,虚拟网络接口并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。
下面是环回接口处理IP数据报的简单过程:
图中需要指出的关键点是:
传给环回地址(127.0.0.1)的任何数据均作为IP输入.
传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上.这是因为广播传送和多播传送的定义包含主机本身.
任何传给该主机IP地址的数据均送到环回接口.(环回:IP输入队列)
开启Windows系统的环回接口
Windows XP
控制面板-添加硬件-从列表中选择网络适配器-选择微软制造商-选择微软环回适配器。
Windows Vista/Windows 7
1 在cmd命令行中输入:hdwwiz
2 添加微软环回适配器
Windows下使用RawCap抓取回环数据包
使用方法
1 命令行方式
// 启动方式
RawCap.exe 127.0.0.1 localhost_capture.pcap
// 停止方式
使用Ctrl+C即可
2 交互式方式
// 启动方式
双击RawCap.exe执行,即可进入交互式方式
// 停止方式
使用Ctrl+C即可
查看*.pcap包
使用wireshark即可打开*.pacap包查看即可
注:Linux下wireshark直接抓取lo接口数据即可。