易风软件库12月9日消息,随着Python的日益普及,在平安范畴的使用也越来越多。例如,您可以运用请求模块编写一个工具来收回Web恳求;用套接字编写TCP网络通讯程序;解析和生成字节流可以运用struct模块。并且解析和处置网络分组在网络平安范畴更为罕见,通常

我们将运用tcpdump和wireshark(tshark)。但是,假如您想编写本身的程序实行处置,您需求一个更灵敏的言语包(库),这就是本文将引见的Scapy。

概述Scapy是一个Python模块和交互式程序,用于解析底层网络数据包。该程序对底层数据包实行笼统打包,使得网络数据包的处置变得十分复杂。该类库可普遍使用于网络平安范畴,可用于破绽应用、数据走漏、网络监控、入侵检测和流量剖析与捕捉。Scapy集成了数据可视化和报告生成,可以方便地显示后果和数据。

Scapy的根本思想是提出一种特定于范畴的言语,以便方便快捷地管理Wire格式。

运转Scapy可以经过pip装置:

pip装置scapy

也可以经过发行版的包管理器装置,比方yum,但是它的版本例如太老了,过时了。

也可以间接从官方仓库克隆源代码装置:

git克隆github /secdev/scapy

然后,您可以复杂地运转:

cd scapy

。/run_scapy

示例用法解析PCAP捕捉用Scapy做的最复杂的事情就是读取PCAP文件。让我们下载Wireshark的sip-rtp-opus-hybrid.pcap示例pcap数据包作为示例:

运用rdPCAP()函数引入PCAP文件并读取其内容:

& gt& gt& gtpkts = RDP cap(" sip-RTP-opus-hybrid . pcap ")

& gt& gt& gtpkts

& ltsip-RTP-opus-hybrid . pcap:TCP:0 UDP:7 ICMP:0 Other:0 & gt;

要更详细地读取PCAP文件中的数据,可以运用PcapReader从翻开的文件句柄中迭代读取数据包,一次读取一个数据包,bing实例化对象:

& gt& gt& gtFD = open(" sip-RTP-opus-hybrid . pcap "," rb ")

& gt& gt& gtreader = PCA reader(FD)

& gt& gt& gt读者

& ltscapy . utils . PCA reader at 0x7f 913 c7c 24 e 0 & gt;

& gt& gt& gt关于阅读器中的抄送:

...:打印(抄送)

...:

& gt& gt& gtfd.close()

如上所示,每个数据包都是以有线格式提供的。Scapy在网络层堆叠每个数据包。Scapy层对象对应于网络协议及其有线格式。

获取第一个数据包并反省IP层能否可用:

& gt& gt& gtfirst= CC

要以十六进制打印数据包,可以运用hexdump()函数:

& gt& gt& gthexdump(第一)

为了完全解析并完满输入数据包,您需求调用show()办法:

& gt& gt& gtfirst.show()

可以看出,以上未能无效地剖析SI负载。这是由于Scapy次要处置二进制协议网络堆栈的较低局部,而SIP不处置。但是可以引入第三方模块来解析一些使用层协议,比方HTTP协议。

例如,实时数据包捕捉剖析可以读取带有预捕捉数据包的PCAP文件。假如您想实行一些数据包嗅探,假如系统预备在混杂形式下运用网络接口,您可以调用sniff()从网卡获取一些数据包:

& gt& gt& gt关于嗅探中的CC(计数=5):

...:CC.show()

...:

Scapy还可以运用与Wireshark(tshark)和tcpdump相反的BPF语法来过滤嗅探到的数据包,并且许多其他工具支持:

& gt& gt& gt关于嗅探中的CC(filter = " UDP ",count=5):

...:CC.show()

...:

要将捕捉的数据包保管到PCAP文件中以供进一步剖析,可以运用wrpcap()函数导出到文件中:

& gt& gt& gt捕捉=嗅探(过滤器="udp ",计数=5)

& gt& gt& gt捕捉

& lt已嗅到:TCP:0 UDP:5 ICMP:0其他:0 & gt

& gt& gt& gtwrpcap("udp.pcap ",capture)

发送ping包可以嗅探(捕捉和解析)网络包,但是Scapy也支持为各种自动诈骗生成包:网络扫描、服务器探测、发送攻击系统格式错误的恳求等等。

这里有一个ping服务器的尝试,包括向服务发送一个internet控制音讯协议:

& gt& gt& gtCC = IP(dst="XXX") / ICMP()

& gt& gt& gtCC.show()

然后调用sr1()函数,可以发送一个互联网控制音讯协议(即ping)并等候前往包前往:

& gt& gt& gtrr=sr1(CC)

开端发射:

已发送完1个数据包。

...*

收到4个数据包,失掉1个答案,剩余0个数据包

& gt& gt& gt阻力比

以上失掉了正确的ICMP回复。

为了发送多个数据包和接纳呼应(例如,ping扫描),可以运用sr()函数。发送多个数据包,但等候单个呼应。还可以运用sr1_flood()函数。

协议层乱序Scapy经过重载Python“/”运算符完成层堆叠,不再强迫依照网络层顺序执行,从而到达预期的人为顺序(在一些测试和使用中很有用)。

& gt& gt& gtCC=ICMP() / UDP() / IP() / IP()

& gt& gt& gt抄送

& ltICMP | & ltUDP | & ltIP frag = 0 proto = ipencap | & ltIP | >;& gt& gt& gt

& gt& gt& gtCC.show()

###

它被设计为可以生成恣意网络数据包(成心损坏),用于破绽测试研讨或应用。当然,关于不熟习这一块的用户,激烈建议不要随便尝试,以免引提问题。

数据可视化Scapy还支持经过PyX对数据实行可视化(需求事后装置模块)。可以作为数据包或数据包列表输入的图形(PostScript/PDF格式):

& gt& gt& gtxxCC

模糊测试应用函数fuzz()可以经过疾速结构生成随机测试值,并运用模糊模板实行测试,循环发送。在上面的例子中,IP层是正常的,UDP和NTP层是模糊的。UDP校验和将是正确的,UDP目的端口将被NTP过载到123,NTP版本将被强迫为4,一切其他端口将被随机化:

send(IP(dst = " target ")/fuzz(UDP()/NTP(version = 4)),loop=1)

................C

发了16包。

综上所述,我们在这里引见scapy的一些根本用法。当然,这只是Scapy宏大功用中的冰山一角。更多用法请参考官方文档。

据Bug所知,有些工具曾经运用scapy包了:

Trackerjacker: WiFi网络映射器

Wifi fisher:Wifi接入点创立工具

Sshame:SSH公钥暴力解析器

ISF:工业系统的应用框架。

黑客需求进一步探究一些更特殊的用处。

以上就是今天所分享的内容了,更多行业知识、软件引荐、功能比照、工具测评请关注易风软件库。每天给大家带来更高效的企业服务软件,其中包括有礼想艺品,新南北,礼想,嗒米购,莱迪购,商盟讯,诚智通,淘一购,一点购,千语优选,城言,亲聊,聊购汇,乐享购,千语,新聚淘,博立购,深聊,苹果微信多开,安卓微信多开,探聊,惠趣购,易讯,友点赞,大麦购,古集优选,三秋,思语,纯净优选,淘个购,四季优选,搜货郎,探聊,聚通汇购等现如今热门社交软件,其中辅助功能有秒抢,避雷,埋雷软件,扫尾,单透软件等一些红包强项功能软件免费下载使用!