Scapy Sniffer的用法

Scapy Sniffer的用法Sniff 方法定义 sniff filter iface any prn function count N filter 的规则使用 BerkeleyPack BPF 语法 具体参考 http blog csdn net qwertyupoiuy article details iface 用来指定要在哪个网络接口上进行抓包



Sniff方法定义:

sniff(filter=””,iface=”any”, prn=function, count=N)

filter的规则使用 Berkeley Packet Filter (BPF)语法,具体参考http://blog.csdn.net/qwertyupoiuytr/article/details/

iface用来指定要在哪个网络接口上进行抓包(通常不指定即所有网络接口)

prn指定回调函数,每当一个符合filter的报文被探测到时,就会执行回调函数,通常使用lambda表达式来写回调函数

count指定最多嗅探多少个报文(是指符合filter条件的报文,而非所有报文)

 

filter写法举例:

抓取源地址为172.31.100.222的端口为80tcp报文:

>>> sniff(filter=”ip src 172.31.100.222 and tcp and tcp port 80″, prn=lambda x:x.summary())

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57386 PA / Raw

Ether / IP / TCP 172.31.100.222:http > 172.31.100.149:59163 RA

Ether / IP / TCP 172.31.100.222:http > 172.31.100.149:59163 RA

Ether / IP / TCP 172.31.100.222:http > 172.31.100.149:59163 RA

Ether / IP / TCP 172.31.100.222:http > 172.31.100.149:59164 RA

Ether / IP / TCP 172.31.100.222:http > 172.31.100.149:59164 RA

抓取目的地址网段为139.219.0.0/24的报文:

>>> sniff(filter=”dst net 139.219″, prn=lambda x:x.summary())

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57386 PA / Raw

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https PA / Raw

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https PA / Raw

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https PA / Raw

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https A / Padding

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https PA / Raw

Ether / IP / TCP 172.31.100.149:58879 > 139.219.224.155:https PA / Raw

抓取非ICMP的报文:

>>> sniff(filter=”not icmp”, prn=lambda x:x.summary())

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57386 PA / Raw

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57386 PA / Raw

Ether / IP / TCP 172.31.100.149:57386 > 172.31.100.222:ssh A / Padding

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57386 PA / Raw

 

prn函数举例:

将抓取到的报文的summary打印出来:

>>> sniff(filter=”icmp”, prn=lambda x:x.summary(), count=10)

Ether / IP / TCP 172.31.100.222:ssh > 172.31.100.149:57212 PA / Raw

Ether / IP / ICMP 172.31.100.149 > 172.31.100.222 echo-request 0 / Raw

Ether / IP / ICMP 172.31.100.222 > 172.31.100.149 echo-reply 0 / Raw

Ether / IP / ICMP 172.31.100.149 > 172.31.100.222 echo-request 0 / Raw

Ether / IP / ICMP 172.31.100.222 > 172.31.100.149 echo-reply 0 / Raw

Ether / IP / ICMP 172.31.100.149 > 172.31.100.222 echo-request 0 / Raw

Ether / IP / ICMP 172.31.100.222 > 172.31.100.149 echo-reply 0 / Raw

Ether / IP / ICMP 172.31.100.149 > 172.31.100.222 echo-request 0 / Raw

Ether / IP / ICMP 172.31.100.222 > 172.31.100.149 echo-reply 0 / Raw

Ether / IP / ICMP 172.31.100.149 > 172.31.100.222 echo-request 0 / Raw

 

将所有IP报文的源地址打印出来:

>>> sniff(filter=”icmp”, prn=lambda x:x[IP].src, count=10)

172.31.100.222

172.31.100.149

172.31.100.222

172.31.100.149

172.31.100.222

172.31.100.149

172.31.100.222

172.31.100.149

172.31.100.222

172.31.100.149

 

或者定义一个回调函数:

def packet_callback(packet):

    print packet.show()

 

sniff(prn=packet_callback, count=10)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206438.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:42
下一篇 2026年3月19日 下午3:42


相关推荐

  • Dubbo负载均衡策略之最小活跃策略

    Dubbo负载均衡策略之最小活跃策略今天我来学习一下Dubbo负载均衡之一的最小活跃策略-LeastActiveLoadBalance首先,让我们对负载均衡做一个简单的介绍。所谓集负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。负载均衡、集群容错、服务降级这三个概念在微服务中非常重要。从调用顺序来看,一次完整的RPC调用首先是负载均衡、其次是集群容错、最后是服务降级:负载均衡解决了选哪一个的问题、集群容错解决了换哪一个的问题、而服务降级则是解决了全错了怎么办的问题今天我们要学习的策略是最小活跃策略-Le

    2022年7月11日
    21
  • Java高并发秒杀API(四)之高并发优化

    Java高并发秒杀API(四)之高并发优化Java高并发秒杀API(四)之高并发优化1.高并发优化分析关于并发并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才能拿到写锁,QPS(QueryPerSecond每秒查询率)和事务执行的时间有密切关系,事务执行时间越短,并发性越高,这也是要将费时的I/O操作移出事务的原因。在本项目中高并发发生在哪?在

    2022年5月12日
    38
  • Python,Anaconda,Pycharm的区别及详细安装步骤

    Python,Anaconda,Pycharm的区别及详细安装步骤写在前面:千万不要下载Python,直接下载Anaconda+Pycharm就够了!!!详情往下看:一、Python,Anaconda,Pycharm的区别:1.Python是个解释器(基本编译环境)。2.Anaconda是一个python的发行版,包括了python和很多常见的软件库,和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易。…

    2022年5月4日
    78
  • 卡巴斯基的离线更新以及病毒库备份[通俗易懂]

    卡巴斯基的离线更新以及病毒库备份[通俗易懂]卡巴斯基的离线更新以及病毒库备份 1、如果你用的是卡巴斯基5.0…..(….为版本号),病毒库在X:\DocumentsandSettings\AllUsers\ApplicationData\KasperskyAnti-VirusPersonal\5.0\base(其中X为安装时操作系统盘符,下同。专业版为X:\DocumentsandSettings\AllUsers…

    2022年8月20日
    5
  • java jute_ZooKeeper源码阅读(六):JUTE | 学步园

    java jute_ZooKeeper源码阅读(六):JUTE | 学步园JUTE 是跨语言序列化 反序列化工具 类似 Thrift 用于产生 java c 版本的消息类比如 zkDataBase addCommitted QuorumPacket newQuorumPac Leader PROPOSAL request zxid baos toByteArray null Proposalp newProposal p pac

    2026年3月17日
    2
  • 选修环节针对有智能体搭建基础的朋友,我们特地准备了选修环节,讲透定制化需求背后的底层逻辑,助力你打造属于自己的定制Bot

    选修环节针对有智能体搭建基础的朋友,我们特地准备了选修环节,讲透定制化需求背后的底层逻辑,助力你打造属于自己的定制Bot

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号