python神奇功能五、渗透测试框架初探

235 阅读1分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

Scapy篇

usage阅读

对应相关命令

命令效果
pkg.show()显示包的视图
pkg.pkg.show2()显示包的另一种视图
pkg.sprintf用数据包的方式显示
pkg.command返回可生成数据包的scapy命令
send发送一个数据包
sendp发送一个数据包
sr1发送一个数据包并接收一个应答即返回
sr发送一个数据包并接收应答

syn扫描

比如向google的80端口发送一个syn包,并在收到单个响应后退出

sr1=(IP(dst='72.14.207.99')/TCP(dport=80,flags='S'))

循环发送和接收

循环发送数据包

srloop(IP(dst='www.target.com/30')/TCP())

ACK 扫描

模拟ACK扫描

ans,unans = sr(IP(dst='www.xxx.com')/TCP(dport=[80,666],flags='A'))

我们可以在应答数据包中找到未过滤的端口:

>>> for s,r in ans:
...     if s[TCP].dport == r[TCP].sport:
...        print("%d is unfiltered" % s[TCP].dport)

ARP ping

在本地以太网上发现主机的最快方法是使用arp ping方法:

arping("192.168.1.*")

TCP ping

在某些主机禁止ping的情况,常规的ping是发现不了主机的,这个时候就可以使用TCP ping的方式

# 发起请求
ans, unans = sr( IP(dst="192.168.1.*")/TCP(dport=80,flags="S") )

# 获取结果
ans.summary( lambda s,r : r.sprintf("%IP.src% is alive") )

UDP ping

如果常规的ping禁止,TCP ping也无效,那么我们就可以使用万能的UDP ping:

ans, unans = sr( IP(dst="192.168.*.1-10")/UDP(dport=0) )

ans.summary( lambda s,r : r.sprintf("%IP.src% is alive") )