2025年3月30日 星期日 甲辰(龙)年 月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python3下基于Scapy库完成网卡抓包解析

时间:10-30来源:作者:点击数:68

Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具。

Python 代码中可以通过 sniff 函数调用抓包分析,并对抓到的包进行回调操作。

Sniff 方法定义:

  • sniff(count=0,
  • store=1,
  • offline=None,
  • prn=None,
  • filter=None,
  • L2socket=None,
  • timeout=None,
  • opened_socket=None,
  • stop_filter=None,
  • iface=None)
  • count:抓取报的数量,设置为0时则一直捕获
  • store:保存抓取的数据包或者丢弃,1保存,0丢弃
  • offline:从pcap文件中读取数据包,而不进行嗅探,默认为None
  • prn:为每个数据包定义一个回调函数,通常使用lambda表达式来写回调函数
  • filter:过滤规则,可以在里面定义winreshark里面的过滤语法,使用 Berkeley Packet Filter (BPF)语法,具体参考:[http://blog.csdn.net/qwertyupoiuytr/article/details/54670477]
  • L2socket:使用给定的L2socket
  • timeout:在给定的事件后停止嗅探,默认为None
  • opened_socket:对指定的对象使用.recv进行读取
  • stop_filter:定义一个函数,决定在抓到指定的数据之后停止
  • iface:指定抓包的网卡,不指定则代表所有网卡

filter语法

  • type(定义了类型)
  • 可选值:host, net, port, portrange
  • 例如:
  • host hostnameA
  • net 172.31 //相当于172.31.0.0/16,又例如:192.168.1相当于192.168.1.0/24
  • port 80
  • portrange 6000-6010
  • dir(direction,定义了传输方向)
  • 可选值:src, dst, src or dst, src and dst
  • 例如:
  • src net 172.31
  • src or dst port 21
  • proto(protocol定义了网络协议)
  • 可选值:ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp, icmp
  • (fddi, tr, wlan是ether的别名, 包结构很类似)
  • 例如:
  • ether src hostnameA
  • arp net 172.31
  • udp portrange 7000-8000
  • 连接词:and, or, not
  • 例如:
  • tcp or udp
  • not icmp

示例代码

  • #!/usr/bin/python3
  • # -*- coding: UTF-8 -*-
  • from scapy.all import *
  • def pack_callback(packet):
  • print ( packet.show() )
  • if packet['Ether'].payload:
  • print (packet['Ether'].src)
  • print (packet['Ether'].dst)
  • print (packet['Ether'].type)
  • if packet['ARP'].payload:
  • print (packet['ARP'].psrc)
  • print (packet['ARP'].pdst)
  • print (packet['ARP'].hwsrc)
  • print (packet['ARP'].hwdst)
  • time.sleep(2)
  • filterstr="arp"
  • sniff(filter=filterstr,prn=pack_callback, iface='eth0', count=0)
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门