简体   繁体   中英

Wants to print only udp packets using pyshark and argparse python modules

I have been trying to print the udp packets only when the command -I eth0 -u is run. but I am getting all thee packets. pls give some suggestion

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)

Try it like this:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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