scapy是python中一个非常强大的网络数据包处理模块,它可以轻松的构建各类数据包,这篇文章将对收发常见数据包做一个总结。官方文档在这

1.收发数据包函数

scapy模块中有好几个收发数据包的函数,他们能完成不同的功能:

  • send()  只发送而不接收数据包,并且网络层之下的都默认处理好了,只需传给它网络层之上(包括网络层)的参数即可
  • sendp()  只发送不接收,并且数据链路层之下的都处理好了,只需传给它数据链路层之上(包括数据联络层,最常用的是Ether)的参数
  • sr1()  发送完只接受1个响应包
  • sr()  发送完会返回2个列表,一个用来存收到的所以响应,另一个存未收到响应的数据包

2.发送ARP包

使用ls(ARP)查看scapy模块中的ARP类:

arp

发送ARP包:

注意:/ 用来连接不同层。

3.发送ICMP包

先看看IP类

ip

一般情况下只需要填写IP类的src,dst即源和目的地址即可。ICMP类的参数可以用同样方法查看。

发送ICMP包:

4.发送TCP包

TCP类如下:

tcp

sport,dport是源和目的端口,flags可以设置SYN,FIN等一些标志。其他序列号之类的就不再多说。

发送TCP SYN数据包探测主机端口是否开放:

如果端口开放则返回flags为SA(SYN/ACK):

tcp2

如果没开放则返回flags为RA(RST/ACK):

tcp3

用这个原理也可以实现SYN泛洪攻击,端口扫描器等等。另外,发送UDP和TCP类似。

 

 

观看更多有关 的文章?

*

+
跳转到评论