龙空技术网

「python」抓取来源于某一端口的流量和去往某一端口的流量

代码碎片 367

前言:

现在同学们对“python抓取app数据”都比较重视,兄弟们都想要学习一些“python抓取app数据”的相关文章。那么小编也在网摘上网罗了一些有关“python抓取app数据””的相关资讯,希望我们能喜欢,姐妹们一起来学习一下吧!

【说明】

由于使用抓包工具抓取的数据太多太杂,不利于分析。若想抓取某个ip的某个端口的数据包并实时打印出来(来源数据和去往数据分开打印),可使用python+scapy.all模块抓取:抓取来源于某一端口的流量:src port 端口号,抓取去往某一端口的流量:src port 端口号,也可以同时来抓取来源和去往某个端口的流量:port 端口号

【代码:来源端口】

from scapy.all import *import timedef packet_callback(pkt):    now_time = time.strftime('%Y-%m-%d_%H:%M:%S',time.localtime())    print ("抓取来源某一端口数据+++++++++++++++++++++++++%s++++++++++++++++++++++++"%now_time)    try:                print("时间:%s"%pkt.time)        print('TTL:%s'%pkt[IP].ttl)        #打印源IP:端口----->目的IP:端口                print("来源:%s:%s---->去往:%s:%s"%(pkt[IP].src, pkt.sport, pkt[IP].dst, pkt.dport))                    except Exception as e:        print ('异常',e)            print ("数据包(发):")        print (pkt.show())    try:        print ("Raw数据:",pkt['Raw'].load)        print ("Raw数据编码:",pkt['Raw'].load.decode('utf-8',errors='ignore'))            except Exception as e:                print ("无Raw数据:",e)if __name__=='__main__':    print("显示网卡信息:\n",show_interfaces())        network_card = "ASIX AX88179 USB 3.0 to Gigabit Ethernet Adapter #3"    port = "8090"    print ("开始抓取数据")    sniff(iface=network_card,prn=packet_callback,filter="src port %s"%port, count=0)

【代码:去往端口】

from scapy.all import *import timedef packet_callback(pkt):    now_time = time.strftime('%Y-%m-%d_%H:%M:%S',time.localtime())    print ("抓取去往某一端口数据+++++++++++++++++++++++++%s++++++++++++++++++++++++"%now_time)    try:                print("时间:%s"%pkt.time)        print('TTL:%s'%pkt[IP].ttl)        #打印源IP:端口----->目的IP:端口                print("来源:%s:%s---->去往:%s:%s"%(pkt[IP].src, pkt.sport, pkt[IP].dst, pkt.dport))                    except Exception as e:        print ('异常',e)            print ("数据包(收):")        print (pkt.show())    try:        print ("Raw数据:",pkt['Raw'].load)        print ("Raw数据编码:",pkt['Raw'].load.decode('utf-8',errors='ignore'))            except Exception as e:                print ("无Raw数据:",e)if __name__=='__main__':    print("显示网卡信息:\n",show_interfaces())        network_card = "ASIX AX88179 USB 3.0 to Gigabit Ethernet Adapter #3"    port = "8090"    print ("开始抓取数据")    sniff(iface=network_card,prn=packet_callback,filter="dst port %s"%port, count=0)

【执行】

【测试结果】

标签: #python抓取app数据