使用pyshark捕获和解析远程服务器数据包
我们可以用pyshark模块在远程服务器上捕获和解析数据包吗?我发现它在本地接口上可以正常工作:
>>> import pyshark
>>> capture = pyshark.LiveCapture(interface='eth2')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (4 packets)>
>>>
>>> capture[3]
<CDP Packet>
>>>
>>> print capture[3]
Packet (Length: 272)
Layer ETH:
Destination: CDP/VTP/DTP/PAgP/UDLD (01:00:0c:cc:cc:cc)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Length: 258
Address: Cisco_36:59:eb (6c:9c:ed:36:59:eb)
现在我想在远程服务器上做同样的事情(需要提供IP地址和一些其他的过滤条件)。
1 个回答
1
你可以通过在远程电脑上运行rpcapd服务来实现这个功能(这个服务是WinPcap自带的,注意你必须使用-n这个标志来进行空身份验证)。然后,你可以用远程服务的完整网址来运行pyshark:
pyshark.LiveCapture(interface='rpcapd://[1.2.3.4]:2002/eth2')
你可以通过pyshark.LiveCapture(bpf_filter='tcp')
来随时添加过滤器。
补充说明:我增加了一个pyshark.RemoteCapture类,这个类其实就是上面提到的功能的快捷方式。你可以在GitHub仓库中查看它。