作用:

sniff()函数主要是用来捕获经过本机网卡的数据包

格式:

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

参数详解:

filter

filter参数主要是用来对数据包进行过滤,为了满足过滤符合某种特殊的目的,这里使用了伯克利过滤(Berkeley Packet Filter,BPF),它采用了一种与自然语言很接近的语法,利用这种语法构成的字符串可以确定保留哪些数据包以及忽略哪些数据包(精准过滤)。

语法如下:空字符串,表示的就是匹配所有数据包。如果字符串不为空,使字符串为“真”的数据包会被保留(过滤出想要的,而不是过滤掉)。这种字符串通常由一个或者多个原语所组成,每个原语又由一个标识符组成,后面跟着一个或者多个限定符。

而限定符有如下3种:

Type:表示指代的对象,例如IP地址,子网或者端口等。常见的有host(用来表示主机名和IP地址),net(子网),port(端口),缺省值为host

Dir:表示数据包传输的方向,常见有src(源地址)和dst(目的地址),缺省值为包含两者,但两者为或关系。例如192.168.1.1表示匹配源地址或者目标地址为192.168.1.1的数据包

Proto:表示与数据包匹配的协议类型,常见的有Ether,IP,TCP,ARP这些协议

iface

用来指定要使用的网卡,默认为第一块网卡。

prn

表示对捕获到的数据包进行处理的函数,可以使用Lambda表达式。

例如将获取到的数据包输出:sniff(filter="icmp",prn=lambda x:x.summary())

对于比较复杂的处理函数,可以定义成回调函数,举个例子:

def packet_callback(pkt):
return pkt.summary
sniff(prn=packet_callback)
count

用来指定监听到数据包的数量,达到指定的数量就会停止监听

实例:

设计一个监听器,它会在网卡eth0上监听源地址或者目标地址为192.168.1.1的ICMP数据包并输出,当收到了3个这样的数据包之后,停止监听。

sniff(filter='icmp and host 192.168.1.1',prn=lambda x:x.summary(),count=3)

sniff()函数的总结的更多相关文章

  1. 关于sniff函数的一个小坑

    最近在用scapy模块写一个关于WiFi的脚本时用到sniff函数,其中遇到了一个小坑,记录如下: sniff函数是在指定网卡上每次嗅探到一个数据包后然后将它传给prn指定的函数.

  2. Python黑帽编程 3.2 ARP监控

    Python黑帽编程 3.2 ARP监控 在第3.1节<ARP欺骗>中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具.在上一节的基础上,我们来实现一个ARP监 ...

  3. Python黑客编程ARP欺骗

    Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...

  4. Python黑客编程基础3网络数据监听和过滤

    网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及 ...

  5. arp中间人

    0x00 摘要 在本章第二层攻击当中,我们将进入网络hacking的奇幻之旅.让我们回顾一下,第二层是负责在以太网中,使用MAC地址来发送数据包.除了ARP攻击,我们将探讨交换机是如何应对DOS攻击的 ...

  6. DRM in Android

    我们Tieto公司的MM专家在<程序员>第8期上发表了一篇关于DRM的文章,请大家指教. DRM in Android DRM,英文全称为Digital Rights Management ...

  7. [注意事项&amp;车轮]java源代码 产生局部javadoc api档

    随着Eclipse书写java码时间,有时候,因为我们不知道java函数返回.通过鼠标移动到java该功能,假设它javadoc相关内容将被显示. 但是,并非所有java代码javadoc:连装jav ...

  8. scapy流量嗅探简单使用

    官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html 参考链接:http://blog.csdn.net/Jeanphorn/ar ...

  9. scapy安装及SCTP包分析

    关于Scapy scapy是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等.它可以很容易地处理一些典型操作,比如端口 ...

  10. python scapy的用法之ARP主机扫描和ARP欺骗

    python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...

随机推荐

  1. 关于AWS-IAM-certificate-证书的说明

    AWS提供了证书管理的服务,可以使用IAM和ACM(位于Security & Identity IAM下的Certificate Manager)进行管理 在CloudFront和ALB中都可 ...

  2. 图解 | 聊聊 MyBatis 缓存

    首发公众号-悟空聊架构:图解 | 聊聊 MyBatis 缓存 你好,我是悟空. 本文主要内容如下: 一.MyBatis 缓存中的常用概念 MyBatis 缓存:它用来优化 SQL 数据库查询的,但是可 ...

  3. API接口笔记

    1.基类   定义返回信息 protected $user; //用户表 protected $token; //用户token protected $isSuccess = FALSE; //状态是 ...

  4. pta第二次博客

    目录 pta第二次博客 1.前言 2.设计与分析 第四次作业第一题 第四次作业第一题 第四次作业第一题 第四次作业第一题 pta第二次博客 1.前言 2.设计与分析 第四次作业第一题 1.题目: &q ...

  5. 十四、资源控制器之RS

    RC (ReplicationController )主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数 .即如果有容器异常退出,会自动创建新的 Pod 来替代:而如果异常多出来的容器也 ...

  6. Mysql InnoDB Buffer Pool

    参考书籍<mysql是怎样运行的> 系列文章目录和关于我 一丶为什么需要Buffer Pool 对于InnoDB存储引擎的表来说,无论是用于存储用户数据的索引,还是各种系统数据,都是以页的 ...

  7. 测试开发mysql性能调优总结(一)

    测试开发mysql性能调优总结 mysql在创建表的时候,对每个字段选择合适的数据类型很重要! 根据个人的经验总结: 整数类型选择 INT小数类型选择 DECIMAL字符串类型选择 TEXT日期时间选 ...

  8. 文盘Rust -- 把程序作为守护进程启动

    当我们写完一个服务端程序,需要上线部署的时候,或多或少都会和操作系统的守护进程打交道,毕竟谁也不希望shell关闭既停服.今天我们就来聊聊这个事儿. 最早大家部署应用的通常操作是 "nohu ...

  9. 如何在 Inno Setup 中关联多种文件格式

    问题描述 Inno Setup 是一款十分强大的 Windows 安装程序制作软件,可以通过编写并编译 iss 脚本来创建安装包.之前都是直接将 Pyinstaller 生成的文件夹压缩为 zip 格 ...

  10. CB利用链及无依赖打Shiro

    前言 前面已经学习了CC1到CC7的利用链,其中在CC2中认识了java.util.PriorityQueue ,它在Java中是一个优先队列,队列中每一个元素有自己的优先级.在反序列化这个对象时,为 ...