ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:34.54KB ,
资源ID:4801212      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4801212.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Scapy中文使用文档.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Scapy中文使用文档.docx

1、Scapy中文使用文档from:by Larry0x01 起航ScapyScapy的交互shell是运行在一个终端会话当中。因为需要root权限才能发送数据包,所以我们在这里使用sudo$ sudo scapyWelcome to Scapy 在Windows当中,请打开命令提示符(),并确保您拥有管理员权限:C:scapyINFO: No IPv6 support in kernelWARNING: No route found for IPv6 destination : (no default route?)Welcome to Scapy 如果您没有安装所有的可选包,Scapy将会告诉

2、你有些功能不可用:INFO: Cant import python gnuplot wrapper . Wont be able to plot.INFO: Cant import PyX. Wont be able to use psdump() or pdfdump().虽然没有安装,但发送和接收数据包的基本功能仍能有效。0x02 互动教程本节将会告诉您一些Scapy的功能。让我们按上文所述打开Scapy,亲自尝试些例子吧。第一步让我们来建立一个数据包试一试 a=IP(ttl=10) a = a del a 64堆加层次(OSI参考模型)/操作符在两层之间起到一个组合的作用。当使用该操作符

3、时,下层可以根据其上层,使它的一个或多个默认字段被重载。(您仍可以赋予您想要的值)一个字符串也可以被用作原料层(raw layer)。 IP() IP()/TCP()IP frag=0 proto=TCP | Ether()/IP()/TCP()Ether type=0x800 |IP frag=0 proto=TCP | IP()/TCP()/GET / HTTP/rnrnIP frag=0 proto=TCP |TCP | Ether()/IP()/IP()/UDP()Ether type=0x800 |IP frag=0 proto=IP |IP frag=0 proto=UDP | I

4、P(proto=55)/TCP()IP frag=0 proto=55 |每一个数据包都可以被建立或分解(注意:在Python中_(下划线)是上一条语句执行的结果): str(IP()Ex00x00x14x00x01x00x00x00|xe7x7fx00x00x01x7fx00x00x01 IP(_) a=Ether()/IP(dst=)/TCP()/GET / HTTP/ nn hexdump(a)00 02 15 37 A2 44 00 AE F3 52 AA D1 08 00 45 00 .R.E.00 43 00 01 00 00 40 06 78 3C C0 A8 05 15 42

5、23 .C.x b=str(a) bx00x02x157xa2Dx00xaexf3Rxaaxd1x08x00Ex00x00Cx00x01x00x00x06x c=Ether(b) cEther dst=00:02:15:37:a2:44 src=00:ae:f3:52:aa:d1 type=0x800 |IP version=4L ihl=5L tos=0x0 len=67 id=1 flags= frag=0L ttl=64 proto=TCP chksum=0x783c src= dst= options= |TCP sport=20 dport=80 seq=0L ack=0L data

6、ofs=5L reserved=0L flags=S window=8192 chksum=0xbb39 urgptr=0 options= |我们看到一个分解的数据包将其所有的字段填充。那是因为我认为,附加有原始字符串的字段都有它自身的价值。如果这太冗长,hide_defaults()方法将会删除具有默认值的字段: () c Ether dst=00:0f:66:56:fa:d2 src=00:ae:f3:52:aa:d1 type=0x800 |IP ihl=5L len=67 frag=0 proto=TCP chksum=0x783c src= dst= |TCP dataofs=5L

7、 chksum=0xbb39 options= |读取PCAP文件你可以从PCAP文件中读取数据包,并将其写入到一个PCAP文件中。 a=rdpcap(/spare/captures/) a图形转储(PDF,PS)如果您已经安装PyX,您可以做一个数据包的图形PostScript/ PDF转储(见下面丑陋的PNG图像,PostScript/PDF则具有更好的质量.) a423.pdfdump(layer_shift=1) a423.psdump(/tmp/,layer_shift=1)命令 效果str(pkt) 组装数据包hexdump(pkt) 十六进制转储ls(pkt) 显示出字段值的列表

8、() 一行摘要() 针对数据包的展开试图() 显示聚合的数据包(例如,计算好了校验和)() 用数据包字段填充格式字符串() 改变payload的decode方式() 绘制一个解释说明的PostScript图表() 绘制一个解释说明的PDF() 返回可以生成数据包的Scapy命令生成一组数据包目前我们只是生成一个数据包。让我们看看如何轻易地定制一组数据包。整个数据包的每一个字段(甚至是网络层次)都可以是一组。在这里隐含地定义了一组数据包的概念,意即是使用所有区域之间的笛卡尔乘积来生成的一组数据包。 a=IP(dst=) a p for p in a, , , b=IP(ttl=1,2,(5,9)

9、 b p for p in b, , , , , , c=TCP(dport=80,443) p for p in a/cIP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |, IP frag=0 proto=TCP dst= |某些操作(如修改一个数据包中的字符

10、串)无法对于一组数据包使用。在这些情况下,如果您忘记展开您的数据包集合,只有您忘记生成的列表中的第一个元素会被用于组装数据包。命令 效果summary() 显示一个关于每个数据包的摘要列表nsummary() 同上,但规定了数据包数量conversations() 显示一个会话图表show() 显示首选表示(通常用nsummary())filter() 返回一个lambda过滤后的数据包列表hexdump() 返回所有数据包的一个hexdumphexraw() 返回所以数据包Raw layer的hexdumppadding() 返回一个带填充的数据包的hexdumpnzpadding() 返回

11、一个具有非零填充的数据包的hexdumpplot() 规划一个应用到数据包列表的lambda函数make table() 根据lambda函数来显示表格发送数据包现在我们知道了如何处理数据包。让我们来看看如何发送它们。send()函数将会在第3层发送数据包。也就是说它会为你处理路由和第2层的数据。sendp()函数将会工作在第2层。选择合适的接口和正确的链路层协议都取决于你。 send(IP(dst=)/ICMP().Sent 1 packets. sendp(Ether()/IP(dst=,ttl=(1,4), iface=eth1).Sent 4 packets. sendp(Im tra

12、velling on Ethernet, iface=eth1, loop=1, inter=.CSent 16 packets. sendp(rdpcap(/tmp/pcapfile) # tcpreplay.Sent 11 packets.Fuzzingfuzz()函数可以通过一个具有随机值、数据类型合适的对象,来改变任何默认值,但该值不能是被计算的(像校验和那样)。这使得可以快速建立循环模糊化测试模板。在下面的例子中,IP层是正常的,UDP层和NTP层被fuzz。UDP的校验和是正确的,UDP的目的端口被NTP重载为123,而且NTP的版本被更变为4.其他所有的端口将被随机分组: sen

13、d(IP(dst=target)/fuzz(UDP()/NTP(version=4),loop=1).CSent 16 packets.发送和接收数据包(sr)现在让我们做一些有趣的事情。sr()函数是用来发送数据包和接收应答。该函数返回一对数据包及其应答,还有无应答的数据包。sr1()函数是一种变体,用来返回一个应答数据包。发送的数据包必须是第3层报文(IP,ARP等)。srp()则是使用第2层报文(以太网,等)。 p=sr1(IP(dst=)/ICMP()/XXXXXXXXXXX)Begin emission:.Finished to send 1 packets.*Received 5

14、packets, got 1 answers, remaining 0 packets pIP version=4L ihl=5L tos=0x0 len=39 id=15489 flags= frag=0L ttl=42 proto=ICMP chksum=0x51dd src= dst= options= |ICMP type=echo-reply code=0 chksum=0xee45 id=0x0 seq=0x0 |Raw load=XXXXXXXXXXX | ()- IP -version = 4Lihl = 5Ltos = 0x0len = 39id = 15489flags =

15、frag = 0Lttl = 42proto = ICMPchksum = 0x51ddsrc = = = - ICMP - type = echo-reply code = 0 chksum = 0xee45 id = 0x0 seq = 0x0- Raw - load = XXXXXXXXXXX- Padding - load = x00x00x00x00DNS查询(rd= recursion desired)。主机是我的DNS服务器。注意从我Linksys来的非空填充具有Etherleak缺陷: sr1(IP(dst=)/UDP()/DNS(rd=1,qd=DNSQR(qname=)Be

16、gin emission:Finished to send 1 packets.*Received 3 packets, got 1 answers, remaining 0 packetsIP version=4L ihl=5L tos=0x0 len=78 id=0 flags=DF frag=0L ttl=64 proto=UDP chksum=0xaf38 src= dst= options= |UDP sport=53 dport=53 len=58 chksum=0xd55d |DNS id=0 qr=1L opcode=QUERY aa=0L tc=0L rd=1L ra=1L

17、z=0L rcode=ok qdcount=1 ancount=1 nscount=0 arcount=0 qd= an= ns=0 ar=0 |发送和接收函数族是scapy中的核心部分。它们返回一对两个列表。第一个就是发送的数据包及其应答组成的列表,第二个是无应答数据包组成的列表。为了更好地呈现它们,它们被封装成一个对象,并且提供了一些便于操作的方法: sr(IP(dst=)/TCP(dport=21,22,23)Received 6 packets, got 3 answers, remaining 0 packets(, ) ans,unans=_ ()IP / TCP S = Ethe

18、r / IP / TCP RA / PaddingIP / TCP S = Ether / IP / TCP RA / PaddingIP / TCP S = Ether / IP / TCP RA / Padding如果对于应答数据包有速度限制,你可以通过inter参数来设置两个数据包之间等待的时间间隔。如果有些数据包丢失了,或者设置时间间隔不足以满足要求,你可以重新发送所有无应答数据包。你可以简单地对无应答数据包列表再调用一遍函数,或者去设置retry参数。如果retry设置为3,scapy会对无应答的数据包重复发送三次。如果retry设为-3,scapy则会一直发送无应答的数据包,直到。

19、timeout参数设置在最后一个数据包发出去之后的等待时间:SYN Scans在Scapy提示符中执行一下命令,可以对经典的SYN Scan初始化: sr1(IP(dst=)/TCP(dport=80,flags=S)以上向Google的80端口发送了一个SYN数据包,会在接收到一个应答后退出:Begin emission:.Finished to send 1 packets.*Received 2 packets, got 1 answers, remaining 0 packets (. lambda(s,r): , ,. (TCP:%ICMP:% - %) - dest-unreach

20、 RA -80 SA RA SA443 SA SA SA 在以上的例子中,如果接收到作为响应的ICMP数据包而不是预期的TCP数据包,就会打印出ICMP差错类型(error type)。对于更大型的扫描,我们可能对某个响应感兴趣,下面的例子就只显示设置了SA标志位的数据包: (lfilter = lambda (s,r): (%) = SA)0003 IP / TCP S = IP / TCP SA如果我们想对响应进行专业分析,我们可以使用使用以下的命令显示哪些端口是open的: (lfilter = lambda (s,r): (%) = SA,prn=lambda(s,r):(% is o

21、pen)https is open对于更大型的扫描,我们可以建立一个端口开放表: (lambda (s,r):TCP in r and rTCP.flags&2).make_table(lambda (s,r):. , , X) X - X443 X X X如果以上的方法还不够,Scapy还包含一个report_ports()函数,该函数不仅可以自动化SYN scan,而且还会对收集的结果以LaTeX形式输出: report_ports(,(440,443)Begin emission:.*.*Finished to send 4 packets.*Received 8 packets, go

22、t 4 answers, remaining 0 packetsbegintabular|r|l|l|nhlinenhttps & open & SA nhlinen440 & closed & TCP RA n441 & closed & TCP RA n442 & closed &TCP RA nhlinenhlinenendtabularnTCP tracerouteTCP路由追踪: ans,unans=sr(IP(dst=target, ttl=(4,25),id=RandShort()/TCP(flags=0x2)*.*.*.*.*.*Finished to send 22 pack

23、ets.*.Received 33 packets, got 21 answers, remaining 1 packets for snd,rcv in ans:. print , , isinstance, TCP).5 06 04 07 08 09 010 011 013 012 014 015 016 017 018 019 120 121 122 123 124 1注意:TCP路由跟踪和其他高级函数早已被构造好了: lsc()sr : Send and receive packets at layer 3sr1 : Send packets at layer 3 and return

24、 only the first answersrp : Send and receive packets at layer 2srp1 : Send and receive packets at layer 2 and return only the first answersrloop : Send a packet at layer 3 in loop and print the answer each timesrploop : Send a packet at layer 2 in loop and print the answer each timesniff : Sniff packetsp0f : Passive OS fingerprinting: which OS emitted this TCP SYN ?arpcachepoison : Poison targets cache with (your MAC,victims IP) couplesend : Send packets at layer 3sendp : Send packets at layer

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1