[英]Python raw socket listening for UDP packets; only half of the packets received
[英]Wants to print only udp packets using pyshark and argparse python modules
我一直在尝试仅在运行命令 -I eth0 -u 时打印 udp 数据包。 但我收到了所有的数据包。 请给一些建议
import argparse
import pyshark
import time
#import psutil
parser = argparse.ArgumentParser()
parser.add_argument('-u','--udp',required=False, action='store_true', help='to cpature only udp packet')
parser.add_argument('-v', '--verbose', help='be more specific', default=False, action='store_true')
parser.add_argument('-i', '--interface',metavar="", type=str, required=True, help='network interface' )
args = parser.parse_args()
capture = pyshark.LiveCapture(interface=args.interface)
for packet in capture.sniff_continuously():
localtime = time.asctime(time.localtime(time.time()))
protocol = packet.transport_layer
src_addr = packet.ip.src
src_port = packet[protocol].srcport
dst_addr = packet.ip.dst
dst_port = packet[protocol].dstport
print (localtime,"\t",protocol,"\t", src_addr,"\t", src_port,"\t", dst_addr, "\t", dst_port)
# comment
if args.verbose:
print (packet.show())
if args.udp:
packet = pyshark.LiveCapture(interface=args.interface, bpf_filter='udp port 53')
packet.sniff(packet_count=10)
print ("------------------------UDP Packets only -----------------------------")
print (packet)
像这样尝试:
import argparse
import pyshark
import time
#import psutil
parser = argparse.ArgumentParser()
parser.add_argument('-u','--udp',required=False, action='store_true', help='to cpature only udp packet')
parser.add_argument('-v', '--verbose', help='be more specific', default=False, action='store_true')
parser.add_argument('-i', '--interface',metavar="", type=str, required=True, help='network interface' )
args = parser.parse_args()
if args.udp:
print ("------------------------UDP Packets only -----------------------------")
capture = pyshark.LiveCapture(interface=args.interface, bpf_filter='udp port 53')
else:
capture = pyshark.LiveCapture(interface=args.interface)
for packet in capture.sniff_continuously():
localtime = time.asctime(time.localtime(time.time()))
protocol = packet.transport_layer
src_addr = packet.ip.src
src_port = packet[protocol].srcport
dst_addr = packet.ip.dst
dst_port = packet[protocol].dstport
print(localtime,"\t",protocol,"\t", src_addr,"\t", src_port,"\t", dst_addr, "\t", dst_port)
if args.verbose:
print (packet.show())
print(packet)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.