初探Scapy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探Scapy相关的知识,希望对你有一定的参考价值。

参考技术A

<br />

在 Scapy 中可以用特别简单的方法来构造一个数据包,比如构造一个 IP 包,并传入一些参数:

使用 / 可以将不同的包进行组合:

除了一个数据包一个数据包地构造,Scapy 还支持同时构造多个数据包:

此外,使用 fuzz 函数可以快速构造随机模板,同时保证其它参数是正确的,如:

在此构造中,IP 层是普通的,而 UDP 和 NTP 层是 fuzz 的。因此,除了 UDP 和校验和必须正确和 UDP 的目标端口必须是 123(NTP 协议要求)之外,其他的都是随机的
<br />

构造好了数据包之后,是时候把它们发出去了。Scapy 提供了基于第三层即网络层的 send 函数,和基于第二层即数据链路层的 sendp 函数,这意味着,使用 sen
![Uploading Screenshot from 2016-05-13 20-27-49_682712.png . . .]
d 函数不需要我们考虑路由和第二层的细节,而使用 sendp 函数需要我们指定发送数据包的网卡和链路层的协议。

在 Scapy 中使用 sr 函数、sr1 函数来发送和接收第三层的数据包(IP, ARP等),而 srp 函数用于发送和接受第二层的数据包(Ethernet,802.3等)

例如,我们向 bing.com 发送一个 ICMP 包:

sr 函数 是 Scapy 的核心,这个函数返回两个列表,第一个列表是收到应答的包和其对应的应答,第二个列表是未收到应答的包,通常,我们需要调用别的函数来使得这两个返回值更易于阅读,如:

如果远程主机对于应答的速率有限制,我们可以通过设置 inter 参数来设置发送相邻两个包直接的时间间隔,此外,我们可以通过设置 timeout 参数来设置等待应答的超时时间,还可以设置 retry 参数来设置重试次数。在 Scapy 中,如果 retry = 3,那么 Scapy 会尝试发送未应答的包 3 次,如果 retry = -3 ,Scapy 会一直发送未应答的包直到没有更多的答案是相同的包 3 次(表示没有理解这句话,原文是:If retry is -3, scapy will resend unanswered packets until no more answer is given for the same set of unanswered packets 3 times in a row.)

window下安装scapy

1.首先先安装python3,安装完成python3后自然就有了pip

 

2.然后使用pip install  scapy 安装scapy,如果提示升级pip就先升级pip,升级完pip后再使用这个命令安装scapy

 

3.安装完之后如果再cmd下能敲scapy,但是提示报错,去这个网站下载源码https://github.com/secdev/scapy

 

4.然后把下载的包中scapy文件夹复制到python目录下D:\Program Files\python\Lib\site-packages\,安装目录下

  也有个scapy目录,直接覆盖,这里注意只复制scapy文件夹就好

 

5.打开cmd,敲scapy 成功!

以上是关于初探Scapy的主要内容,如果未能解决你的问题,请参考以下文章

初探AlarmManager:使用

javascript 函数初探 --- 闭包初探#1

javascript 对象初探 --- call()和apply()初探

初探Vue的ref($ref)

MySQL 日志初探

xss初探