繁体   English   中英

想使用 pyshark 和 argparse python 模块仅打印 udp 数据包

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM