2

我一直在使用 pyshark 处理数据包捕获数据,并且在打印出 DNS 请求和响应时,出现以下错误:

' File "/home/nilufa/anaconda3/lib/python3.7/site-packages/pyshark/packet/packet.py", line 50, in __getitem__
    raise KeyError('Layer does not exist in packet')
KeyError: 'Layer does not exist in packet'

下面是我写的代码:

>>> import pyshark
>>> cap=pyshark.LiveCapture(interface='wlp2s0',bpf_filter='udp port 53')
>>> cap.sniff(packet_count=10)
>>> def print_packet_info(pkt):
        if pkt.dns.qry_name:
            print('Detected')
            print('DNS Request/Response from',pkt['ip'].src,pkt.dns.qry_name)
... 
>>> cap.apply_on_packets(print_packet_info)

我得到的输出是:

Detected
DNS Request/Response from 192.168.43.90 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.1 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.90 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.1 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.90 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.1 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.90 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.1 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.90 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.1 connectivity-check.ubuntu.com
Detected
DNS Request/Response from 192.168.43.90 www.googleapis.com
Detected
DNS Request/Response from 192.168.43.90 www.googleapis.com
Detected
DNS Request/Response from 192.168.43.1 www.googleapis.com
Detected
DNS Request/Response from 192.168.43.1 www.googleapis.com
Detected
DNS Request/Response from 192.168.43.90 apidata.googleusercontent.com
Detected
DNS Request/Response from 192.168.43.90 apidata.googleusercontent.com
Detected
DNS Request/Response from 192.168.43.1 apidata.googleusercontent.com
Detected
DNS Request/Response from 192.168.43.1 apidata.googleusercontent.com
Detected
DNS Request/Response from 192.168.43.90 safebrowsing.googleapis.com
Detected
DNS Request/Response from 192.168.43.90 safebrowsing.googleapis.com
Detected
DNS Request/Response from 192.168.43.1 safebrowsing.googleapis.com
Detected
DNS Request/Response from 192.168.43.1 safebrowsing.googleapis.com
Detected
DNS Request/Response from 192.168.43.90 mozilla.org
Detected
DNS Request/Response from 192.168.43.90 mozilla.org
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 mozilla.org
Detected
DNS Request/Response from 192.168.43.90 mozilla.org
Detected
DNS Request/Response from 192.168.43.1 mozilla.org
Detected
DNS Request/Response from 192.168.43.90 mozilla.org
Detected
DNS Request/Response from 192.168.43.1 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 mozilla.org
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 mozilla.org
Detected
DNS Request/Response from 192.168.43.1 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.90 detectportal.firefox.com
Detected
DNS Request/Response from 192.168.43.1 detectportal.firefox.com
Detected
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/nilufa/anaconda3/lib/python3.7/site-packages/pyshark/capture/capture.py", line 277, in apply_on_packets
return self.eventloop.run_until_complete(coro)
File "/home/nilufa/anaconda3/lib/python3.7/asyncio/base_events.py", line 583, in run_until_complete
return future.result()
File "/home/nilufa/anaconda3/lib/python3.7/site-packages/pyshark/capture/capture.py", line 288, in packets_from_tshark
await self._go_through_packets_from_fd(tshark_process.stdout, packet_callback,   packet_count=packet_count)
File "/home/nilufa/anaconda3/lib/python3.7/site-packages/pyshark/capture/capture.py", line 314, in _go_through_packets_from_fd
packet_callback(packet)
File "<stdin>", line 4, in print_packet_info
File "/home/nilufa/anaconda3/lib/python3.7/site-packages/pyshark/packet/packet.py", line 50,  in __getitem__
raise KeyError('Layer does not exist in packet')
KeyError: 'Layer does not exist in packet'
4

0 回答 0