wifi钓鱼-python

tcp协议:

---Source Port是源端口,16位

---Destination Port是目的端口,16位

---Sequence Number是发送数据包中的第一个字节的序列号,32位

---Acknowledgment Number是确认序列号,32位

---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4

---标志位: 6位,URG表示Urgent Pointer字段有意义:

ACK表示Acknowledgment Number字段有意义

PSH表示Push功能,RST表示复位TCP连接

SYN表示SYN报文(在建立TCP连接的时候使用)

FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度

---Checksum是校验和,16位

---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移

IHL(Internet Header Length 报头长度)是计算机名词,位于IP报文的第二个字段,4位,表示IP报文头部按32位字长(32位,4字节)计数的长度,也即报文头的长度等于IHL的值乘以4

涉及到python中的scapy库

# -- coding: utf-8 --
from scapy.all import *
 
#数据包应用层数据部分
data='mydata'
#发送端IP地址10.0.3.83 接收端ip 10.0.3.88      
传输层的TCP并未指明数据包类型:syn fin ack 窗口大小 数据包如果分片,要指明序号
pkt=IP(src='10.0.3.83',dst='10.0.3.88')/TCP(sport=12345,dport=5555)/data
#间隔一秒发送一次   总共发送5次   发送网卡口:enp1s0
send(pkt,inter=1,count=5,iface="enp1s0") 
eth = Ether(src=src_mac, dst=dst_mac)#赋值src_mac时需要注意,参数为字符串类型
arp = ARP(hwsrc=src_mac, psrc=src_ip, hwdst=dst_mac, pdst=dst_ip, op=2)
#src为源,dst为目标,op=2为响应报文、1为请求
pkt = eth / arp
endp(pkt)
构建一层包:
#不同层之间用/分隔(常用)
Ether = Ether(src="源mac",dst="目的mac")    #以太网层=二层
IP   = IP(src="源ip",dst="目的ip或者URL")   #IP层(三层)
XY   = ICMP()、TCP()、UDP() [都可以用dport=目的端口,sport=源端口]  #协议封装在IP层  
ARP  = ARP(hwsrc=‘二层源mac‘,psrc=‘三层源IP‘,hwdst=‘二层目的mac‘,pdst=‘三层目的IP‘)     
SJ    = padding(load=‘x‘*8)           #数据位,填充 x乘8个    
RandMAC()  任意MAC地址               
RandIP()   任意IP地址

构建二层包:
(以Ether层开头) 如:pkt=Ether/IP/ARP

构建三层包:
(以IP层开头) 如:pkt=IP/XY/SJ2.

只发送二层:

sendp()  #给定网卡接口 

只发送三层:send()   #自动根据路由表进行路由发送 

如发二层包:     
sendp(pkt,iface="eth0",loop=1,inter=1 )   

参数:	
pkt          #构建包的变量	
iface="eth0"  #选择网卡为eth0	
loop=1       #循环发送	
inter=1      #每隔1秒发送	
timeout=1    #超时1秒就丢弃,实际时间看程序处理能力而定

发送并返回 二层:    

srp()   #发送包, 返回答复和没有答复的包的数量     
srp1() #发送包, 返回只答复或者发送的包的详细信息| .参数,显示这个参数的返回数据 

三层:     
sr(  )  #发送包, 返回答复和没有答复的包的数量     
sr1( ) #发送包, 返回只答复或者发送的包的详细信息|.参数,显示这个参数的返回数据 
如二层发收包:     
srp1(pkt,timeout=1,verbose=0 ) 
参数:        
pkt       #构建包的变量        
timeout=1 #超时1秒就丢弃,实际时间看程序处理能力而定        
verbose=0 #不显示详细信息

sniff嗅探函数:

sniff(filter="",iface="any",prn=function,count=N)

#filter参数允许对Scapy嗅探的数据包指定一个BPF(Wireshark类型)的过滤器,也可以留空以嗅探所有的数据包。

#iface参数设置嗅探器所要嗅探的网卡,留空则对所有网卡进行嗅探。

#prn参数指定嗅探到符合过滤器条件的数据包时所调用的回调函数,这个回调函数以接受到的数据包对象作为唯一的参数。

# count参数指定需要嗅探的数据包的个数,留空则默认为嗅探无限个
haslayer(xxx) 是scapy的一个成员函数,他会检测XXX层是不是存在,存在的话,会将xxx层返回
xxx可以是 TCP,IP,ICMP
写函数:
scapy.wrpcap(‘filename’,list) 
第一个参数是filename,第二个参数是一个list,保存报文的list

IPy是python处理ip的一个库 ,例如输出网段内的所有ip:

from IPy import IP
 
ip = IP('192.168.0.0/16')
 
print(ip.len())
 
for x in ip:
 
 print(x)

 

 

 

参考:

https://www.jianshu.com/p/c42578889ba1

https://blog.csdn.net/hjxzb/article/details/79299121

https://blog.csdn.net/shichimiyasatone/article/details/79712976

https://blog.csdn.net/singleyellow/article/details/79737473

https://blog.csdn.net/qq_41185868/article/details/80396915

这篇文章写的比较详细:IPy——Python中ip地址处理模块

使用Python获取网段IP个数以及地址清单的方法

实用的IP地址处理模块IPy

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值