scapy流量嗅探简单使用

时间:2022-04-25 23:07:14

1. 简介

scapy是一个可用于网络嗅探的非常强大的第三方库。在网络流量嗅探方面,常用的一些第三方库:

 pylibpcap
 pycapy
 pypcap
 impacket
 scapy

scapy在这些库中功能最强大使用也最灵活。具有以下几个特点:

 交互模式,用作第三方库。
 可以用来做packet嗅探和伪造packet。
 已经在内部实现了大量的网络协议。(DNS,ARP,IP,TCP,UDP等等)
 可以用它来编写非常灵活实用的工具。

  它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。
  它可以很容易地处理一些典型操作,比如端口扫描,tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)
  它还有很多更优秀的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN)等,这也是其他工具无法处理完成的。
  常用功能

 sniff 嗅探
 dissect 解剖
 forge 伪造
 fingerprinting 指纹识别  

2. 使用scapy

2.1 scapy安装

  scapy是第三方库,系统上默认是没有安装的。

  在Ubuntu下,我们可以直接使用以下命令进行安装: sudo apt-get install scapy

  安装完成以后,只需要在终端下执行sudo scapy就可以进入scapy的命令行模式

我们可以输入:help()进入帮助模式,quit 命令退出。

scapy流量嗅探简单使用

在帮助模式下,我们可以查看类的一些方法,如:

scapy流量嗅探简单使用

scapy流量嗅探简单使用

2.2 下面介绍一些在全局模式中常用的方法

ls()         列出scapy中已实现的网络协议
ls(协议类型)     查看某个协议头部字段格式
lsc()        列出scapy中可以使用的命令或函数
IP().show()    显示包的IP信息
test[i].show()   显示包test的详细内容
a.summary()    查看捕获到数据包的信息摘要 

(1)查看实现的协议:

scapy流量嗅探简单使用

(2)查看某个协议头部字段格式

scapy流量嗅探简单使用

(3)列出scapy中可以使用的命令或函数。比如嗅探时,我们经常会用到sniff()函数

scapy流量嗅探简单使用

2.3 scapy嗅探示例
在scapy命令模式下,异常输入以下代码进行试验。
1)、嗅探流量包

scapy流量嗅探简单使用

2)查看下我们截取的报文摘要

scapy流量嗅探简单使用

3)wlan0[i].show()    详细查看packet中各协议字段的具体值

scapy流量嗅探简单使用

4)保存和读取数据包

wrpcap("wlan0sniff.pcap",wlan0)     将嗅探到的packet内容写到pcap文件

(这里的'wlan0'不是网卡名,为了避免误解,我复制wlan0的包为wlan0test)

scapy流量嗅探简单使用

wlan0read = rdpcap("wlan0snif2f.pcap")  读取pcap文件

scapy流量嗅探简单使用

还有一些其他常用函数,不再一一举例。

wlan0[i].show()    详细查看packet中各协议字段的具体值
wrpcap("testsniff.pcap",test) 将嗅探到的packet内容写到pcap文件
read_pkts = rdpcap("testsniff.pcap") 和读取pcap文件 为sniffer函数添加过滤条件
pkts = sniff(iface = "eth0",filter = "udp",count = )

设置嗅探包的数量为30,然后过滤ICMP协议类型的包。等待显示结果。另起一个终端,然后ping一个网址,观察嗅探的结果。
pkts = sniff(iface = "eth0",filter = "icmp",count = 30, prn = lambda x: x.summary())
帧与字符串的互相转换 
icmp_str = str(pkts[])
icmp_str
recombine = Ether(icmp_str)
recombine 导入导出base64编码格式的数据
export_object(str(pkts[]))
newPkt = import_object() #将上一步导出的字符串填入,回车,"ctrl_+d"结束。
newPkt
Ether(newPkt)

“/”符号表示两个链路层的组合,可以参考:http://www.cnblogs.com/ssooking/p/6114949.html

a=Ether()/IP(dst="www.baidu.com")/TCP()/"GET /index.html HTTP/1.0 \n\n"
hexdump(a)

scapy流量嗅探简单使用

主要功能函数sniff

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

filter

  允许我们对Scapy嗅探的数据包指定一个BPF(Wireshark类型)的过滤器,如:udp,icmp也可以留空以嗅探所有的数据包。

  例如:嗅探所有的HTTP数据包,tcp port 80 的BPF过滤

iface

  设置嗅探器所要嗅探的网卡,留空则对所有网卡进行嗅探。例如:wlan0

prn

  指定嗅探到符合过滤器条件的数据包时所调用的回调函数,这个回调函数以接受到的数据包对象作为唯一的参数。

  例如:

  def pack_callback(packet):
  print packet.show()
  sniff(prn=pack_callback,iface="wlan0",count=1)

如:一个嗅探ftp登录密码的函数例子

def ftpsniff(pkt):
dest = pkt.getlayer(IP).dst
raw = pkt.sprintf('%Raw.load%')
user = re.findall('(?i)USER (.*)', raw)
pswd = re.findall('(?i)PASS (.*)', raw)
if user:
print '[*] Detected FTP Login to ' + str(dest)
print '[+] Username: ' + str(user[0])
elif pswd:
print '[+] Password: ' + str(pswd[0])

完整代码请参考另一篇博客: http://www.cnblogs.com/ssooking/p/6095714.html

sprintf()输出某一层某个参数的取值,如果不存在就输出”??”,具体的format格式是:%[[fmt][r],][layer[:nb].]field%

%[[fmt][r],][layer[:nb].]field%

layer: 协议层的名字,如Ether、IP、Dot11、TCP等。

filed: 需要显示的参数。

nb: 当有两个协议层有相同的参数名时,nb用于到达你想要的协议层。

r:  一个标志。当使用r标志时,意味着显示的是参数的原始值。

例如,TCP标志中使用人类可阅读的字符串’SA’表示SYN和ACK标志,而其原始值是18.

例子:pkt.sprintf("Etherent source: %Ether.src%   IP src: %IP.src%")

scapy流量嗅探简单使用

scapy流量嗅探简单使用

官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

参考链接:http://blog.csdn.net/Jeanphorn/article/details/45700551

scapy流量嗅探简单使用的更多相关文章

  1. Scapy安装以及简单使用

    Scapy安装以及简单使用 参考文档 scapy官方文档 前言 scapy是一个可以模拟发送报文的python程序,使用了它从此发包不愁. 安装 1.首先得安装Python2.7 ​ 在linux系统 ...

  2. 《Python黑帽子:黑客与渗透测试编程之道》 网络:原始套接字和流量嗅探

    Windows和Linux上的包嗅探: #!/usr/bin/python import socket import os #监听的主机 host = "10.10.10.160" ...

  3. scapy基础之一 ----简单命令

    前言 scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中.下面介绍简单命令. ls() List all availab ...

  4. Python中Scapy网络嗅探模块的使用

    目录 Scapy scapy的安装和使用 发包 发包和收包 抓包 将抓取到的数据包保存 查看抓取到的数据包 格式化输出 过滤抓包 Scapy scapy是python中一个可用于网络嗅探的非常强大的第 ...

  5. scapy 安装及简单测试

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

  6. 2017-2018-2 20179204 PYTHON黑帽子 黑客与渗透测试编程之道

    python代码见码云:20179204_gege 参考博客Python黑帽子--黑客与渗透测试编程之道.关于<Python黑帽子:黑客与渗透测试编程之道>的学习笔记 第2章 网络基础 t ...

  7. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

  8. Scapy实现SYN泛洪攻击

    一.实验说明 1.实验介绍 本次实验将使用python3版本的Scapy--Scapy3k来实现一个简单的DDos,本次实验分为两节,本节将学习如何使用Scapy3k来实现SYN泛洪攻击. 2.知识点 ...

  9. 《Python绝技:运用Python成为*黑客》 用Python分析网络流量

    1.IP流量将何去何从?——用Python回答: 使用PyGeoIP关联IP地址和物理地址: 需要下载安装pygeoip,可以pip install pygeoip 或者到Github上下载安装htt ...

随机推荐

  1. Excel 使用宏批量修改单元格内指定文字为红字

    -> step 1:新建宏,进入编辑,使用如下代码: Sub Ss()Dim c As RangeFor Each c In ActiveSheet.UsedRange i = 1 While ...

  2. ios网络学习------6 json格式数据的请求处理

    ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...

  3. 2016 - 1 - 23 json转模型 常用的第三方框架

    一: 三个常用的框架 1. Mantle - 所有模型必须继承MTModel 2. JSONModel - 所有模型必须继承JSONModel 3.MJExtension - 不需要继承任何东西. - ...

  4. js 获得每周周日到周一日期

    //得到每周的第一天(周日)function getFirstDateOfWeek(theDate){ var firstDateOfWeek; theDate.setDate(theDate.get ...

  5. &num;ifndef&num;define&num;endif的用法

    在网上看到了感觉作者总结得很好,作者辛苦了! #ifndef#define#endif的用法 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都 ...

  6. JavaScript基础3——关于运算符

    算数运算符 算数运算符有+.-.*./.%.++.--.=.类似+=的运算符,其使用方式与编程语言(Java.C++.C#等)基本一样.给定 y=5,下面的表格解释了这些算术运算符: 运算符 描述 例 ...

  7. JS学习笔记Day13

    一.cookie (一)什么是cookie: 1.就是会话跟踪技术,存放在客户端浏览器中的一段文本信息 2.会话:从浏览网站开始到结束的这个过程称为一次会话,浏览器关闭,表示会话结束 3.会话跟踪技术 ...

  8. Qt自定义控件大全&plus;designer源码

    抽空将自定义控件的主界面全部重写了一遍,采用左侧树状节点导航,看起来更精美高大上一点,后期准备单独做个工具专用每个控件的属性设计,其实qt自带的designer就具备这些功能,于是从qt4的源码中抽取 ...

  9. Python中根据提供的日期,返回是一年中的第几天

    # coding = utf-8 import datetime dd = raw_input("Please enter date , format is YYYYMMDD:") ...

  10. C&num; 6&period;0 新特性 &lpar;一&rpar;

    概述 尽管 C# 6.0 尚未完成,但现在这些功能正处于接近完成的关键时刻.自 2014 年 5 月发布文章“C# 6.0 语言预览版”(msdn.microsoft.com/magazine/dn6 ...