一、scapy定制udp
Scapy支持广泛的协议和基于Python的Packet生成器,可以通过一些简洁的命令快速生成自定义协议的数据包。下面来看一个实例来定制UDP协议:
from scapy.all import * pkt=Ether()/IP(dst="192.168.0.1")/UDP(dport=50000)/"abcdefghijklmnopqrst" sendp(pkt)
上面的代码,实现了在以太网帧里添加了IPv4头部和定制的UDP头部,数据往返的结果是一个自定义的packet。
二、scapy库使用教程
接下来我们看看scapy库的使用教程:
在这之前需要先安装好scapy。安装方法如下:
pip install scapy
常用的使用方法:
(1)发送数据包
from scapy.all import * send(IP(dst="192.168.0.1")/TCP(sport=RandShort(), dport=80), count=10)
这里 send 函数,将ip头和tcp头合成了一个数据包,并向目标主机192.168.0.1发送了10个TCP报文。
(2)抓取数据包
from scapy.all import * pkts = sniff(filter="tcp port 80", count=10) for pkt in pkts: print(pkt.summary())
上面的代码使用sniff函数捕获TCP端口为80的所有数据包,并打印出每个数据包的摘要。
三、scapy 获取报文时间
Scapy 为我们提供了许多工具来检查和操作嗅探到的包,例如时间戳。下面是一个例子:
from scapy.all import * from datetime import datetime start_time = datetime.now() pkt = sniff(count=50) end_time = datetime.now() total_time = end_time - start_time print("Total time: ",total_time)
在这个例子中,我们使用datetime模块来跟踪开始和结束时间,并计算执行时间。
四、scapy explore函数
Scapy还提供了explore函数来帮助用户探究packet等一些对象的内容和结构。
from scapy.all import * pkt = Ether()/IP(dst="8.8.8.8")/ICMP() pkt.show() explore(pkt)
这个例子将展示pkt的结构以及可以使用的字段。
五、scapy 解析 ipv6
Scapy可解析IPV6数据包。
from scapy.all import * inet6_packet = IPv6(src='fe80:6406:31dd:aa97:d260:a64:d1d4:c5cd', dst='fe80:0000:0000:0000:021b:77:c723:fa3c')/TCP(sport=51515, dport=80) pkt=Ether(src="aa:bb:cc:dd", dst="11:22:33:44")/inet6_packet pkt.show()
这个例子中,我们用IPv6()函数来构建一个IPv6数据包。我们像前面例子那样用Ether()构建了一个以太网数据包,将IPv6对象和其它的TCP选项组成了自定义数据包。
六、scapy模拟创建tcp到断开的过程
Scapy可以发送多个不同类型的TCP包,用于TCP握手过程。下面是一个例子:
from scapy.all import * src_port = RandShort() dst_ip = "192.168.0.1" dst_port=80 seq = 10023 syn_packet = IP(dst=dst_ip)/TCP(sport=src_port, dport=dst_port, flags="S", seq=seq) syn_ack_packet = sr1(syn_packet) ack_packet = IP(dst=dst_ip)/TCP(sport=src_port, dport=dst_port, flags="A", seq=syn_ack_packet.ack, ack=syn_ack_packet.seq + 1) fin_packet = IP(dst=dst_ip)/TCP(sport=src_port, dport=dst_port, flags="F", seq=seq+1) close_ack_packet = sr1(fin_packet) print("Connection established!")
这个例子模拟了一个TCP三次握手的过程,通过构造不同类型的TCP包,以此来测试网络连通性。
七、excel教程
Scapy还支持将packets导出为Excel文件。下面是一个例子:
from scapy.all import * pkts = sniff(count=10) wrpcap('test.xls', pkts)
通过将抓取到的10个wifi packets以Excel格式的方式导出到test.xls文件中。
八、scapy抓包
Scapy是一个很好用的Python包,可以编写一些简洁的代码来抓取数据包。下面是一个例子:
from scapy.all import * pkts = sniff(count=10) for pkt in pkts: print(pkt.summary())
在这个案例中,我们使用sniff函数并设置了count=10,以抓取10个数据包然后打印出它们的摘要。
九、scrapy框架
Scapy可以进行网络数据抓取,也可以作为数据解析框架。下面是一个例子:
from scapy.all import * pkts = sniff(count=10) result = [] for pkt in pkts: # 解析包头 payload = pkt.payload result.append(str(payload)) print(result)
在这个案例中,我们用for循环迭代数据包,然后将数据包解析出来。最后把结果列表打印出来。
十、scapy sniff 提取data
最后一个例子,我们使用sniff函数抓取数据包并提取data字段。
from scapy.all import * def handle_pkt(pkt): data = pkt[Raw].load print("Payload: %s" % data) sniff(filter="ip", prn=handle_pkt)
在这里,我们定义了一个回调函数handle_pkt。通过观察离散的片段数据(pkt)的内容(这些片段通常都被交错捕捉到),然后通过pkt[Raw].load提取数据包的载荷字段。最后,过滤IP分组的sniff()撞见了回调函数。payload参数是负载数据。
以上就是本文对scapy的详细阐述,包括定制UDP、库使用教程、获取报文时间、explore函数、解析IPv6、模拟创建TCP到断开的过程、Excel教程、抓包、数据解析框架和提取data。通过阅读以上内容,相信您对Scapy有了更深的理解。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/247649.html