Scapy小总结

Scapy

可以是用户发送,嗅探、分析和伪造网络数据包

一个强大的交互式包处理程序,

基于python,因此可以像python那样,函数调用、循环、分支语句等等!

网络的发现相当于是一个黑盒测试,我们需要发送许多个stimuli(数据包),但是得到回应的却是极少数!

任何数据包都可以被创建和切割

_可以得到lasted result

 产生数据包集合

send Package

fuzzing

如图所示,可以看到flags的值是什么意思了。默认值2表示的意思就是SYN=1

DNS查询:

>>>sr1(IP(dst="192.168.5.1")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.baidu.com")))

ACK 扫描:

ans,unans=sr(IP(dst="www.slashdot.org")/TCP(dport=[80,666],flags="A"))

flags=A

Xmas Scan圣诞树扫描,Nmap里面这些扫描方式都是有的!关于这种扫描方式,由于MicroSoft忽略了标准,所以这种扫描方式对Windows95/NT是无效的!

ans,unans = sr(IP(dst="192.168.1.1")/TCP(dport=666,flags="FPU") )

flags=FPU”,用wireshark看一下到底什么是FPU

可以看到,实际上就是将FIN PSH URG置为1TCP数据包!

IP扫描

ans,unans=sr(IP(dst="192.168.1.1",proto=(0,255))/"SCAPY",retry=2)

 arp Ping 扫描局域网中的Mac

ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"),timeout=2)

对结果的处理

ICMP ping

ans,unans=sr(IP(dst="192.168.1.1-254")/ICMP())

ICMP默认的封装格式中可以看到type=8,就是请求回显(Ping

TCP ping

有的时候,某些服务器是可以进制ping的,可以是禁止icmp协议!

TCP扫描

BT5中对某台readhad的扫描,下面我在这台redhat上面写上禁ping的策略

部署在redhat上面的禁ping策略

现在已经ping不起作用了,下面来看下此时的TCP ping

对于TCPSYN扫描,看来还是有效的!

UPD Scan 其形式和TCP Scan 是类似的!

攻击手段!

非正常的数据包! Ping of Death   ICMP携带的最大数据包长度为

SYN Scan SYN扫描,将flags字段设置为2,或者是“S

事实上说明flags=S”和flags=2 效果是一样的!而且默认的值就是flags=2,关于flags字段,还有flags=SA” 即SYNACK 包!

???在这个IP(虚拟机的)里面,总是有警告:扫描目标的Mac无法发现,即使是手动封装也还是会出现问题?还有就是扫描本级也有问题!貌似扫描x.x.x.1/google.com d等是没有什么问题的!

    后来本人换用BackTrack5  没有发现这样的问题,怀疑还是与用户权限有关系的!

sr(IP(dst="192.168.1.1")/TCP(sport=RandShort(),dport=[440,441,442,443],flags='S'))   使用随机端口进行对服务器的扫描

关于结果与sprintf()

 

 

nmap_fd

最早的支持的是Nmap4.2,貌似支持4.3以前的版本。在scapyV2中必须先load an extension module

load_module(“nmap”)

 

使用scapy 嗅探网络数据包

sniff(fliter = “icmp and host 66.35.250.151”, count=2)

sniff(iface=”en1”, count= , prn= lambda x: x.show)

 

使用wireshark来查看数据包

>>> packets = Ether()/IP(dst=Net("google.com/30"))/ICMP()     # first generate some packets >>> wireshark(packets)                                        # show them with Wireshark

 

使用scapy构造DHCP Discovery 数据包!

>>> conf.checkIPaddr = False 
>>> fam,hw =get_if_raw_hwaddr(conf.iface)
>>> dhcp_discover = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=hw)/DHCP(options=[("message-type","discover"),"end"]) 
>>> ans, unans = srp(dhcp_discover, multi=True)      # Press CTRL-C after several seconds 
Begin emission: Finished to send 1 packets. .*...*.. Received 8 packets, got 2 answers, remaining 0 packets

 

可以查看的LAN上面所有的DHCP Server

注意记得要把在srp函数中要加muti = True,这样才能接受多个dhcpoffer

 

你可能感兴趣的:(Scapy)