据我所知pyshark是tshark的Python包装器,tshark是Wireshark的命令行版本。由于Wireshark和tshark允许检测TCP重传,因此我想知道如何使用pyshark实现该功能。我找不到任何好的文档,所以不确定是否可以这样做,还是无法找到正确的方法。谢谢!
无论如何使用pyshark来获取TCP数据包的有效负载?
我试图比较跨多个TCP流的不同数据包的数据部分,但我找不到一种方法来获取数据包的数据.pkt['tcp'].data
似乎不存在.
这是我的代码:
import pyshark
capture = pyshark.LiveCapture(interface='en0')
capture.sniff()
Run Code Online (Sandbox Code Playgroud)
现在这里是错误:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
capture.sniff()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pyshark/capture/capture.py", line 109, in load_packets
self.apply_on_packets(keep_packet, timeout=timeout)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pyshark/capture/capture.py", line 201, in apply_on_packets
return self.eventloop.run_until_complete(coro)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/trollius/base_events.py", line 350, in run_until_complete
return future.result()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/trollius/futures.py", line 286, in result
raise self._exception
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/trollius/tasks.py", line 250, in _step
result = coro.throw(exc)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pyshark/capture/capture.py", line 212, in packets_from_tshark
tshark_process = yield From(self._get_tshark_process(packet_count=packet_count))
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/trollius/tasks.py", line 252, in _step
result = coro.send(value) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Pyshark 读取 .pcap 文件中所有数据包的有效负载。我能够打开并读取文件,访问数据包及其其他信息,但我无法找到用于访问数据包有效负载的正确属性/方法。有什么建议 ?有没有其他方法可以使用 Windows 10 的 python 读取 .pcap 文件中的数据包有效负载?
(我尝试使用 Scapy 而不是 Pyshark,但显然在 Windows 上运行 Scapy 存在一些问题,它在我的系统上也不起作用)
我在 Internet 和 StackOverflow 上的 pyshark 项目的不同代码片段中找到了这些行。我尝试过,但没有一个起作用:
import pyshark
cap = pyshark.FileCapture('file.pcap')
pkt = cap[1]
#for other information
print(pkt.tcp.flags_ack) #this works
print(pkt.tcp.flags_syn) #this works
print(pkt.tcp.flags_fin) #this works
#for payload
print(pkt.tcp.data) #does not work, AttributeError
print(pkt.tcp.payload) #does not work, AttributeError
print(pkt.data.data) #does not work, AttributeError
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些代码来使用 pyshark 使用 python 执行一些数据包嗅探。我有以下一段代码:
import pyshark
print('Pyshark demo')
capture = pyshark.LiveCapture(interface='enp0s8')
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行此脚本时,我得到以下堆栈跟踪:
Pyshark demo
Exception ignored in: <bound method BaseEventLoop.__del__ of <_UnixSelectorEventLoop running=False closed=True debug=False>>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/base_events.py", line 431, in __del__
File "/usr/lib/python3.5/asyncio/unix_events.py", line 58, in close
File "/usr/lib/python3.5/asyncio/unix_events.py", line 139, in remove_signal_handler
File "/usr/lib/python3.5/signal.py", line 47, in signal
TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object
Run Code Online (Sandbox Code Playgroud)
我已经安装了pyshark。你知道是什么导致了这个问题吗?
我在 ubuntu 服务器 16.04 上运行它
我正在使用Pyshark来解析pcap文件中的数据包.
我有解析包的对象.另外,在将raw_mode属性更改为True之后,我可以获得每个字段的hex_value.
>>> packet = pyshark.FileCapture("ip_packet.pcap")
>>> packet_1 = packet[0]
>>> packet_1.layers()
[<ETH Layer>, <IP Layer>, <DATA Layer>]
>>> packet_1.ip.addr
'192.168.1.5'
>>> packet_1.ip.raw_mode = True
>>> packet_1.ip.addr
'c0a80105'
Run Code Online (Sandbox Code Playgroud)
如何获得完整数据包的hexdump?
我想用pyshark捕获数据包.但我无法在Windows 7上捕获数据包.
import pyshark
def NetCap():
print 'capturing...'
livecapture = pyshark.LiveCapture(interface="eth0", output_file='./test.pcapng')
livecapture.sniff(packet_count=10)
print 'end of capture.'
print livecapture
if __name__ == "__main__":
NetCap()
Run Code Online (Sandbox Code Playgroud)
capturing...
end of capture.
<LiveCapture (0 packets)>
Run Code Online (Sandbox Code Playgroud)
Livecapture是0包.我不知道是怎么回事.请帮我.
在此代码中使用pyshark
import pyshark
cap = pyshark.FileCapture(filename)
i = 0
for idx, packet in enumerate(cap):
i += 1
print i
print len(cap._packets)
Run Code Online (Sandbox Code Playgroud)
i
并len(cap._packets)
给出两个不同的结果。这是为什么?
python wireshark packet-sniffers wireshark-dissector pyshark
在 Wireshark 中手动执行此操作时,我右键单击数据包 -> 跟踪 -> TCP 流,将打开一个包含相关信息的新窗口。有没有办法通过使用 pyshark 模块和 python 2.7 来执行完全相同的操作并获取此信息?注意:我通过发送无效的 HTTP 方法来进行请求测试,因此寻找 HTTP 层在这里不起作用。
import pyshark
pkts = pyshark.FileCapture("test.pcap")
for p in pkts:
print
Run Code Online (Sandbox Code Playgroud)
我试图打印PCAP文件中的所有目标端口和源端口.我怎么能这样做?
在 Wireshark GUI 中,我们可以将 UPD 数据包解码为 RTP,并且可以在 tshark 中使用以下命令完成相同的操作 d <layer type>==<selector>,<decode-as protocol>
我怎样才能在 PyShark 中做同样的事情?我尝试执行以下操作
import pyshark
cap = pyshark.FileCapture("Test.pcap", display filter='udp', decode_as='rtp')
for pkt in cap:
print(pkt)
Run Code Online (Sandbox Code Playgroud)
但它显示以下错误
AttributeError: 'str' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 pyshark 从远程计算机上本地托管的网站(测试目的)获取数据包。
这是我的代码:
import pyshark
def print_live_dns():
capture = pyshark.LiveCapture("wlan0")
for packet in capture:
# print(packet)
with open('packets.txt', 'a') as f:
f.write(str(packet))
if "DNS" in packet and not packet.dns.flags_response.int_value:
print(packet.dns.qry_name)
if __name__ == "__main__":
print_live_dns()
Run Code Online (Sandbox Code Playgroud)
使用此代码,我只能从 Internet 获取数据包。这不是我需要的。我如何实现这一目标?使用pyshark, scapy, nmap
等
pyshark ×12
python ×9
python-3.x ×4
wireshark ×3
networking ×2
python-2.7 ×2
tshark ×2
capture ×1
import ×1
packets ×1
scapy ×1
tcp ×1
windows ×1