数据包工具--Scapy基础篇

  • 零、前言
  • 一、Scapy是什么?
  • 二、Scapy基础
    • 1 利用pip安装库
    • 2 基本使用
      • 2.1 conf变量
      • 2.2 lsc()方法
      • 2.3 ls()方法
    • 3 发送数据
      • 3.1 创建数据
      • 3.2 发送数据
      • 3.3 fuzz()方法
      • 3.4 发送与接收数据
  • 三、结尾

零、前言

学习过程中用到Scapy这个工具,用了一些小功能之后发现效果挺好的,自由度高,比其他的很多工具的可自定义程度要高太多了,所以写一篇Scapy基础篇分享给各位,希望能对各位有用。


一、Scapy是什么?

咱们看看官方文档怎么介绍Scapy工具的:

Scapy is a Python program that enables the user to send, sniff and dissect and forge network packets. This capability allows construction of tools that can probe, scan or attack networks.

Scapy 是一个 Python 程序,它使用户能够发送、嗅探、剖析和伪造网络数据包。此功能允许构建可以探测、扫描或攻击网络的工具。

In other words, Scapy is a powerful interactive packet manipulation program. It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more. Scapy can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery. It can replace hping, arpspoof, arp-sk, arping, p0f and even some parts of Nmap, tcpdump, and tshark.

换句话说,Scapy 是一个强大的交互式数据包操作程序。它能够伪造或解码多种协议的数据包,通过网络发送它们,捕获它们,匹配请求和回复等等。Scapy 可以轻松处理大多数经典任务,例如扫描、跟踪路由、探测、单元测试、攻击或网络发现。它可以替代 hping、arpspoof、arp-sk、arping、p0f 甚至 Nmap、tcpdump 和 tshark 的某些部分。

Scapy also performs very well on a lot of other specific tasks that most other tools can’t handle, like sending invalid frames, injecting your own 802.11 frames, combining techniques (VLAN hopping+ARP cache poisoning, VOIP decoding on WEP encrypted channel, …), etc.

Scapy 在大多数其他工具无法处理的许多其他特定任务上也表现出色,例如发送无效帧、注入您自己的 802.11 帧、组合技术(VLAN 跳跃 + ARP 缓存中毒、WEP 加密通道上的 VoIP 解码等), 等等。

二、Scapy基础

1 利用pip安装库

类型 包含内容 Pip命令
默认版 Only Scapy pip install scapy
基础版 Scapy & IPython. Highly recommended pip install --pre scapy[basic]
完整版 Scapy & all its main dependencies pip install --pre scapy[complete]
如果只需要安装scapy库的话,直接使用pip安装以下命令就行了
pip install scapy

但对于想要完整体验Scapy强大功能的兄弟姐妹们而言,官方还是推荐至少使用以下命令安装基础版Scapy

pip install --pre scapy basic

完全体的Scapy直接敲!!!!!!!

pip install --pre scapy complete

Windows环境下除了安装Python环境之外还需要安装Npcap或Wincap,官方推荐使用Npcap

关于系统安装使用Scapy的命令行界面可以参考官方的下载与安装文档:Scapy的下载与安装

当以上安装环节全部完成之后不如终端上敲个“scapy”试试,然后就能看到Scapy的欢迎界面了(虽然没有GUI来的美观):

2 基本使用

起手引个包(Scapy v2 )

from scapy.all import *

2.1 conf变量

咱们可以通过conf变量来查看scapy的配置参数,然后根据咱们的需求来修改参数

print(conf)

放一些局部参数出来感受感受

对于使用命令行的兄弟们来说,修改命令行的主题色必定是使用命令行界面前的第一件事,咱们可以通过以下命令来修改命令行颜色:

'''
包含以下几种主题
DefaultTheme, BrightTheme, RastaTheme, ColorOnBlackTheme, BlackAndWhite, HTMLTheme, LatexTheme
'''
conf.color_theme = BrightTheme()  # 使用明亮色主题,默认是没有主题,即<NoTheme>

2.2 lsc()方法

lsc()方法用来查看Scapy支持的所有命令

lsc()

部分命令截图如下:

然后悄咪咪地看了以下lsc()的实现代码:

def lsc():# type: () -> None"""Displays Scapy's default commands"""print(repr(conf.commands))

哦,原来就是之前conf中的commands,那没事了

2.3 ls()方法

ls()方法的使用分两种情况

  • 无参数的情况下,用来查看可以实现的所有的网络协议
  • 带参数的情况下,用来查看参数(网络协议)的字段详情
ls()  # 不带参数情况下输出所有支持的网络协议

'''
ls(网络协议类)
'''
ls(UDP())  # 带参数情况下输出协议相关参数


嗯?你们说知道这些字段有什么用?我都不好意思拆穿你们,不知道有什么用你还会搜到这篇文章吗?

3 发送数据

3.1 创建数据

咱们这里先用IP数据包举例吧:

'''
实例化一个IP数据包
调用"data.show"方法查看数据包的默认字段
'''
data = IP()
data.show()


啥?一个包不够?OK,满足你们的需要,咱们直接按IP+掩码来构建一组IP数据可以吧?不多说,直接上代码:

'''
构建了一组数据,目标地址为www.slashdot.org的IP,且掩码为30的所有IP地址
'''
data=IP(dst="www.slashdot.org/30")
data.show()


是不是发现原来咱们设置的dst为127.0.0.1的显示结果不一样?咱们这就已经根据一个网段生成一组数据包了。除此之外,咱们还能构建一个指定多层字段的数据包,比如指定IP协议之后再指定ICMP协议字段,就可以修改成以下方式:

'''
指定IP目的地址并使用上层的ICMP协议
'''
data = IP(dst="1.2.3.4")/ICMP()

3.2 发送数据

1、send()方法在第三层(网络层)发工作,处理路由数据与第二层数据:

'''
处理第三层数据,构建数据发送即可,设置return_packets=True可接收返回的数据包
'''
send(IP(dst="1.2.3.4")/ICMP())
resp = send(IP(dst="1.2.3.4")/ICMP(), return_packets=True)

2、sendp()方法在第二层(数据链路层)工作,需要指定正确的接口与数据链路层协议:

'''
处理第二层数据,需要指定接口与链路层协议,设置return_packets=True可接收返回的数据包
'''
sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")
resp = sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), return_packets=True, iface="eth1")

3.3 fuzz()方法

fuzz()方法是用来创建随机的合理参数的数据包,比如下面这个:

'''
loop字段代表循环发送
fuzz(随机的协议类)
这里咱们就构建了一个除了目标地址与NTP版本为4之外的一个随机数据包
(如果您在 IP 层使用 fuzz(),则 src 和 dst 参数不会是随机的,如果需要的话,请使用 RandIP())
'''
send(IP(dst="127.0.0.1")/fuzz(UDP()/NTP(version=4)),loop=1)

3.4 发送与接收数据

1、sr()方法发送数据包与接收数据,返回值为两个,一个是应答返回的数据包,一个是未应答的数据包

'''
ans为返回的应答数据包
unans为发送的未应答的数据包
调用ans.summary()与unans.summary()查看简单的数据包信息,比".show"的信息要少
'''
ans, unans = sr(IP(dst="192.168.3.1")/TCP(dport=[21,22,23]))
ans.summary()
unans.summary()

2、sr1()方法是sr()的特殊用法,仅仅返回一个参数,就是所收到的应答的数据包

'''
resp为返回的应答数据包
'''
resp = sr1(IP(dst="www.slashdot.org")/ICMP())

3、srp()方法与srp1()方法是针对二层数据的发送方法,区别也就是sr()与sr1()的区别,即返回参数是否包含未应答的发送数据。

三、结尾

差不多Scapy的基础使用就到这里了吧,至于一些高级应用,就暂时不讲了,等之后对这方面的应用需求更高的时候,再整理一些Scapy的“骚”操作吧,Scapy这个几乎“万能”的数据构造库可不仅仅这么一些功能。建议各位还是参照官方文档来玩一些“技巧”。

Scapy官方文档

数据包工具--Scapy基础篇相关推荐

  1. 大数据 - 文本文件数据提取工具之一 基础篇常见文本格式

    基础篇如何正确的拆分常见的文本格式, 什么样的字符能做拆分符号,理论上所有的字符都可以作为拆分符号用来拼接多列数据, 在拆分列数据的时候,数据里面不能再有这个拆分符号一样的字符串,否则数据就无法分开了 ...

  2. 0基础python入门书籍 excel_【曾贤志】从零基础开始用Python处理Excel数据 - 第1季 基础篇...

    =====[曾贤志]从零基础开始用Python处理Excel数据 第1季 基础篇====== 1-1 什么是python? .mp4 1-2 为什么要学习用Python处理Excel表格? .mp4 ...

  3. k8s集群下搭建数据同步工具-canal:canal-admin篇

    k8s集群下搭建数据同步工具-canal:canal-admin篇 前言 容器化 canal-admin 环境准备 k8s集群创建pod canal-admin 前言 本文使用v1.1.4版本的can ...

  4. 交互式数据包处理程序 Scapy 入门指南

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

  5. 交互式数据包处理程序 Scapy 用法

    From:https://www.cnblogs.com/hongxueyong/p/5641475.html Scapy 用法官方文档:http://scapy.readthedocs.io/en/ ...

  6. App数据抓取(基础篇)

    文章目录 简介 环境搭建 夜神模拟器 fiddler mitmproxy Packet Capture Appium Docker 小结 简介 虽然App的反爬机制没有Web端那么复杂,但需要Java ...

  7. Android-TCPDump for Android(抓TCP数据包工具)

    如果要抓TCP数据包,我们可以使用TCPdump工具,类似于windows/linux下使用的这个工具一样 具体方法 下载tcpdump,  还有个地址是http://www.strazzere.co ...

  8. TCPDUMP for Android(抓TCP数据包工具)

    2019独角兽企业重金招聘Python工程师标准>>> 如果要抓TCP数据包,我们可以使用TCPdump工具,类似于windows/linux下使用的这个工具一样.具体方法是 下载t ...

  9. 红队使用的那些工具(基础篇)附下载

    更多黑客技能 公众号:暗网黑客 修复百度云链接,新增shiro反序列化检测工具(在网盘链接里) 链接: https://pan.baidu.com/s/1nhtFw9mJ0cQ_g_dAxZe45g ...

最新文章

  1. JQuery Ajax解读(3)
  2. uc/os中对任务的总体理解
  3. Linux下Web网站压力测试工具Webbench
  4. step3 . day6数据结构之非线性表 满二叉树和不完全二叉树
  5. os.path python使用遍历文件夹文件
  6. HTML5知识点汇总
  7. mysql-bin.index找不到_MySQL不能启动 mysql-bin.index' not found (Errcode: 13)
  8. Mingw编译DLib
  9. RISC-V正在采取行动,避免MIPS类的碎片化
  10. ios pan手势滑动消失动画_解析Color OS全面屏手势,操作丝滑,操作逻辑帮了大忙...
  11. wordpress标签或者固定地址中文404错误解决插件
  12. Adaptive Execution patch and how to bulid on cdh5
  13. 商品搜索——输入联想|智能提示探索
  14. linux 防火墙检查
  15. 【TWVRP】基于matlab禁忌搜索和节约算法求解带时间窗的车辆路径规划问题【含Matlab源码 1229期】
  16. Exploring Plain Vision Transformer Backbones for Object Detection 论文阅读笔记
  17. IT行业程序员工资一般多少?发量与薪资成反比
  18. html几个重要标签用法(div,p,span,ul,li,dl,dt,dd,a,img,h,strong,em)
  19. 扬帆际海:shopee店铺关键词广告怎么获得流量?
  20. 唯美、清晰的代码长什么样

热门文章

  1. PORUHBUB.CROWN_ios安卓 testlight /apps/android开发包安装
  2. 抖音引流,抖音短视频引流教学
  3. 一个项目经理的贪嗔痴
  4. vue2_路由03_路由传参
  5. 今天杂志今天杂志社今天编辑部2022年第22期目录
  6. 【Spring Boot】整合JPA模糊分页查询
  7. 实时linux 编程,uClinux实时改造技术
  8. 自己动手玩转深度学习项目 1
  9. 【云原生之Docker实战】使用Docker部署StackEdit在线Markdown编辑器
  10. 手机和电脑数据恢复,粉碎删除,电脑恢复文件教程