作用:

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. P1600 [NOIP2016 提高组] 天天爱跑步 (树上差分)

    对于一条路径,s-t,位于该路径上的观察员能观察到运动员当且仅当以下两种情况成立:(d[ ]表示节点深度) 1.观察员x在s-lca(s,t)上时,满足d[s]=d[x]+w[x]就能观察到,所以我们 ...

  2. ASP.NET Core :容器注入(二):生命周期作用域与对象释放

    //瞬时生命周期 ServiceCollection services = new ServiceCollection(); services.AddTransient<TestServiceI ...

  3. Filter 筛选器(一)之 ActionFilter-- IAsyncActionFilter 和 ActionFilterAttribute

    微软官网例子:Filter筛选器 使用场景(执行顺序): IAsyncActionFilter 使用异步actionFilter 只需要实现 他的 :OnActionExecutionAsync 方法 ...

  4. Docker | 数据持久化与数据共享

    数据持久化(安装MySQL) 参考另一篇Docker安装mysql: https://www.cnblogs.com/all-smile/p/16778376.html MySQL的数据持久化问题 # ...

  5. Lombok好用是好用,就是容易踩坑,这份避坑指南请查收

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,我们平常在开发过程中,总是希望能够尽量少敲代码.这一方面,当然是为了偷懒,另一方面,当然也是为了代码看起来更加简洁一点,不断往编程规范上靠.然后其 ...

  6. web share api 分享

    概述 Navigator.share()  方法通过调用本机的共享机制作为 Web Share API 的一部分.如果不支持 Web Share API,则此方法为 undefined. 此项功能仅在 ...

  7. 齐博x1会员中心菜单权限显示

    会员中心的菜单可以通过后台设置用户组权限进行显示或者是隐藏.比如商城里的菜单如下: 菜单文件是:\application\shop\member_menu.php return array( 'cms ...

  8. JavaScript函数式编程之函子

    函子(Functor) 函子是一个特殊的容器,通过一个普通对象来实现,该对象具有map方法,map方法可以运行一个函数对值进行处理(变形关系),容器包含值和值变形关系(这个变形关系就是函数).函数式编 ...

  9. 【React】学习笔记(二)——组件的生命周期、React脚手架使用

    原教程视频:ttps://www.bilibili.com/video/BV1wy4y1D7JT?p=2&spm_id_from=pageDriver 目录 一.组件的生命周期 1.1.生命周 ...

  10. 为什么 softmax 计算时要先减去最大值

    根据 softmax 最基本的定义,计算公式如下所示: $$S_i=\frac{e^{x_i}}{\sum_j e^{x_j}}$$ 原理也很简单,将原向量变为分布的形式(和为1). 看似很美好,但是 ...