我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python Scapy(2.3.1)文

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python Scapy(2.3.1)文

http://blog.csdn.net/dj1174232716/article/details/44784081

Python的Scapy模块能够让用户发送,嗅探,解析并伪造网络数据包。这些能力能用来构建探测,扫描或者攻击网络的工具。

换句话说,Scapy是一个强大的交互式数据包处理程序。它能够伪造或者解码大量的数据包协议,发送,捕获数据包并匹配请求和回复。Scapy能轻松的处理像扫描,追踪,探测,单元测试,攻击或者网络发现能大多数常见的任务。它能够替代像hping, arpspoof, arp-sk, arping, p0f甚至是Nmap, tcpdump, and tshark这样的工具。


Scapy在执行很多工具不能处理的特定问题上也完成的很好。像是发送无效的数据帧,注入我们自己的802.11帧,在WEP上解码加密通道结合其他技术(VLAN hopping攻击+APR缓存中毒,VOIP解码等)等等。

看起来很不错。Scapy只做了两件主要的事:发送数据包并接受响应。你定义了一些数据包,然后发送他们,接受响应,匹配符合要求的响应,然后返回数据元组(请求,响应)和一些没有被匹配的数据包。这对于那些像Nmap和hping的工具来说有巨大的优势,他们不会减少数据包而是完整的数据包。

这些能建立更高水平的功能,比如路由追踪,只需要开始请求的TTL和响应的原始的IP地址便可返回结果。Ping这个网络并返回主机的响应,端口扫描并返回LaTeX格式的报告。


是什么让Scapy如此的特别?

首先,大多数网络工具你不能做作者没有设定的事情。那些工具被建立起来是为了特定的目标,不能偏离目标。比如说,ARP缓存中毒工具不会让你使用双802.1q封装。或者试图发现一个程序能发送,表达一个用ICMP的数据包。事实上,每当你有新的需求你必须构建新的工具。

第二,他们通常把解码和解释弄混淆。机器很擅长解码并帮助人们开始,解释是给人类看的。一些程序试图模仿这些行为。例如,他们说“这个端口是开放的”而不是“我收到了一个SYN-ACK”,有些时候他们是对的,有时候并不是。这对初学者很容易,但是当你知道你正在做什么的时候,你要试图解码从程序的解释中到底发生了什么,这是很困难的,因为你丢掉了大量的信息。并且你经常使用tcpdump -xX来解码,并解释,工具丢失了大量的信息。

第三,甚至程序只解码并不给他们收到的所有的信息。他们给你的网络情况是作者认为已经足够了的。但是并不完整,你对此会有一些偏见。比如说,你知道一个工具介绍以太网填充吗?

Scapy试图克服上面这些问题,他能够让你建立精确的你想要的数据包。尽管我认为堆一个802.1q协议上层的TCP没有任何意义。他可能工作在其他人的产品里我们不知道。Scapy有一个灵活的模块试图避免这种任意的限制。你能添加任何值和任何字段在协议栈中,历你是所有的作者。

事实上,在建立一个新的程序时,你不必写一百行的C代码,而秩序2行的Scapy。

在探测(追踪,扫描等)之后,Scapy总是给你所有的探测解码包,在解释之前。这就意味着你只需探测一次便可解释很多次。请求一个数据查看里面的填充的数据。


快速分组设计

其他工具坚持 program-that-you-run-from-a-shell的范式。结果是糟糕的语法来描述数据包。对于这样的工具,解决方法是采用跟高级的但是不怎么强大的描述,在这种情况下全凭住作者的设计。不如说,只有IP地址必须传给端口扫瞄器来触发端口扫描方案。即时情况改变了一点,你还是要进行端口扫描。

Scapy的范式提出了领域特定语言(DSL)可以强大并快速的描述不同类型的数据包。使用Python语法和Python解释器作为DSL的语法和解释器有很多有优点:不必编写独立的解释器,用户不需要在学其他的语言,他们将受益与一个完整,简介,强大的语言。

Scapy能允许用户描述数据包或者设置数据包在协议栈的层面上。每一个协议的字段都有默认的值并且能重载。Scapy不会强迫用户使用特定的方法或模板。这减轻了编写一个工具的要求,在C语言中,平均需要60行代码来描述一个数据包。用Scapy,发送的数据包可能只需要一行来描述其他的行来打印结果。90%的网络探测工具只需要两行Scapy代码便可编写。


一次探测,多次解释

网络测试是一个黑盒测试。当探测一个网络时,很多探测的数据包被发送,只有一小部分有响应。如果选择了正确的探测数据,想要的信息就可能通过响应获得或者是响应不足。不想许多工具,Scapy提供所有的信息,即所有发送的探测数据包和所有收到的数据包。检查数据能提供给用户想要的信息。当数据集很小的时候,用户只能从中挖掘信息。其他情况下,数据的解释依赖于观测点的采取,大多数工具选择观测点并丢弃所有与观测点不相关的数据。因为Scapy提供完整的原始数据,数据可能会被使用很多次允许观测点的演化,在分析中。比如说,TCP端口扫描能被探测到,扫描的结果数据很直观,这些数据也能直观的反应响应数据包的TTL。只需要调整数据的观测点一个新的探测就不必被启动了。



Scapy只解码,它不解释

网络探测工具的共同的问题就是他们试图解释收到的响应而不是解码并给出事实。报告一些事情像是Received a TCP Reset on port 80是不会解释出错的,报告Port 80 is closed是一个解释,可能正确在大多数情况下,但是在作者没想到的特殊情况下也可能错误。例如,一些扫瞄器倾向于报告一个过滤的TCP端口当他们收到一个ICMP目标地址不可达的数据包时。这可能是正确的,但是在一些情况下坑两个数据包并没有被防火墙过滤而是没有主机转发这个数据包。

解释的结果能帮助用户理解扫描道德结果,但是也可能带来更多的坏处,当他偏向于某个结果时。当发生什么事情时他们能自己做出解释,知识丰富的用户将试图逆向工程工具的解释来获取应发解释的事实。不幸的是大多数信息在操作时已经被抛弃了。


快速的例子

首先,我们玩一个字节,一次创建四个IP数据包。让我们看看他是怎么工作的。我们首先实例化一个IP类,然后我们再次实例化它并提供四个有意义的目标IP地址(/30是子网掩码)。使用Python的列表,我们发展了一个隐式的数据包在一个显示的数据报上。然后我们停止解释器,这为我们提供了一个会话文件,我们的变量在工作时就保存了,以便我们重新加载:

# ./scapy.py -s mysession
New session [mysession]
Welcome to Scapy (0.9.17.108beta)
>>> IP()
<IP |>
>>> target="www.target.com"
>>> target="www.target.com/30"
>>> ip=IP(dst=target)
>>> ip
<IP dst=<Net www.target.com/30> |>
>>> [p for p in ip]
[<IP dst=207.171.175.28 |>, <IP dst=207.171.175.29 |>,
 <IP dst=207.171.175.30 |>, <IP dst=207.171.175.31 |>]
>>> ^D
# scapy -s mysession
Using session [mysession]
Welcome to Scapy (0.9.17.108beta)
>>> ip
<IP dst=<Net www.target.com/30> |>
现在让我们来操纵一些数据包:

>>> IP()
<IP |>
>>> a=IP(dst="172.16.1.40")
>>> a
<IP dst=172.16.1.40 |>
>>> a.dst
'172.16.1.40'
>>> a.ttl
64
我们看到,我们想广播MAC地址,并且IP的有效载荷是从 ketchup.com and到mayo.com。TTL的值是从1到9.UDP的有效载荷是:

>>> Ether(dst="ff:ff:ff:ff:ff:ff")
      /IP(dst=["ketchup.com","mayo.com"],ttl=(1,9))
      /UDP()

我们用一行定义了18个数据包(一个隐式的数据包)。


敏感的默认值

Scapy试图对所有的数据包使用敏感的默认值,如果不重写的话:

1.IP源地址的选择是根据目标地址和路由表。

2.校验和是计算过的。

3.源MAC地址的选择是根据输出的接口

4.以太网的类型和IP协议是根据上层协议确定的


其他字段的默认值选择最有用的一个:

1.TCP的源端口是20,目的端口是80

2.UDP源端口和目的端口都是53

3.ICMP的类型是响应请求


学习Python

Scapy选择Python解释器作为命令解释器。这就意味着你可以直接使用Python(分配变量,使用循环,定义函数等等)。

如果你没有学过Python,请查看其他教程先学习Python。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python Scapy(2.3.1)文

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python Scapy(2.3.1)文

http://blog.csdn.net/dj1174232716/article/details/44784081Python的Scapy模块能够让用户发送,嗅探,解析并伪造网络数据包。这些能力能用来构建探测,扫描或者攻击网络的工具。换句
2023-01-31

Python Scapy ARP

参考手册:https://fossies.org/dox/scapy-2.3.3/当一台主机把以太网数据帧发送到位于同一个局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据包中的目的IP地址。
2023-01-31

Python Scapy Ping

参考手册:http://phaethon.github.io/scapy/api/usage.html scapy是python的一个库,提供网络协议的构造,请求等scrapy是python的爬虫框架三个层次:1、理解协议2、分析协议3、构
2023-01-31

Python Scapy TCP

TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。TCP通过下列方式来
2023-01-31

Linux-Python-Scapy的T

TCP 连接扫描:客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放;TCP SYN 扫描(也称为半开放扫描或stealth扫描):这个技术同 TCP 连接扫描非常相似。同样是客户端向服务器发送
2023-01-31

Kali-Python scapy模块-

Kali Python3环境安装scapy模块pip3 install scapy本地网卡网段arp_scan脚本#!/usr/bin/python3import loggingimport subprocesslogging.getLog
2023-01-31

python scapy学习笔记

1. ubuntu下安装gnuplot 转自:http://blog.163.com/gz_ricky/blog/static/182049118201362501316961/2.安装PyX sudo pip install pyx==0
2023-01-31

python 使用scapy创建arpi

以下程序均来自《Python.UNIX和Linux系统管理指南》据说scapy是一个很厉害的东西使用的scapy版本为2.1.0,注意导入包的方式与原书略有差别scapy_arping.py#!/usr/bin/env/pythonfrom
2023-01-31

Python scapy模块个人见解

scapy模块from scapy.all import *    //来自scapy.all文件,导入所有函数python交互模式中:ls(*)*=Ether、IP、ICMP、TCP、UDP、ARP    等等,查看可以配置的参数1.构建
2023-01-31

python scapy的用法之ARP主

python scapy的用法之ARP主机扫描和ARP欺骗 目录:1.scapy介绍2.安装scapy3.scapy常用4.ARP主机扫描5.ARP欺骗一、scapy介绍scapy是一个可用于网络嗅探的非常强大的第三方库。具有以下几个特点:
2023-01-30

python 网络数据包模块:scapy

scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络***和测试中。它可以代替hping,arpspoof.ARP SK,arping,p0f,甚至是部分nmap,Tcpdu
2023-01-31

Python使用scapy模块发包收包

前言众所周知,我们每天上网都会有很多数据包需要发送,然后处理在接受在发送,这样一个循环往复的过程这里就显示了很多数据包的发送接收数据,那什么是包呢?下面一起看看 包( packet )是网络通信传输中的数据单位,一般称之为数据包,其主要由源
2022-06-02

Python如何使用scapy模块发包收包

这篇文章给大家分享的是有关Python如何使用scapy模块发包收包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对
2023-06-14

Ubuntu中python导入scapy出错如何解决

在Ubuntu中导入Scapy出错可能是由于Scapy模块没有正确安装或Python解释器无法找到Scapy模块。以下是一些解决方法:1. 确保已经正确安装了Scapy模块。可以使用以下命令检查Scapy是否已经安装:```pip list
2023-08-24

如何使用Python中的发包收包利器Scapy

这篇文章将为大家详细讲解有关如何使用Python中的发包收包利器Scapy,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天跟大家讲的是Python 用于发送接受网络数据包的模块------
2023-06-15

Python渗透测试入门之Scapy库的使用详解

Scapy 是一个用来解析底层网络数据包的Python模块和交互式程序,该程序对底层包处理进行了抽象打包,使得对网络数据包的处理非常简便。本文就来聊聊它的具体使用,希望对大家有所帮助
2023-03-13

selenium-python中文版文

安装1.1. 简介Selenium Python提供了一个简单的绑定式API来使用Selenium WebDriver编写功能/验收测试。通过Selenium Python API,您可以以一种直观的方式访问Selenium WebDriv
2023-01-31

Python文件

1.文件读模式 rf = open("helloworld", 'r', encoding="utf-8")文件句柄:"helloworld" 表示读的文件的文件名,'r' 代表读模式,encoding="utf-8" 表示字符编码形式为u
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录