python TCP包注入方式
我就废话不多说了,大家还是直接看代码吧!
#!/usr/bin/envpython importsocket importstruct defchecksum(data): s=0 n=len(data)%2 foriinrange(0,len(data)-n,2): s+=ord(data[i])+(ord(data[i+1])<<8) ifn: s+=ord(data[i+1]) while(s>>16): s=(s&0xFFFF)+(s>>16) s=~s&0xffff returns classip(): def__init__(self,source,destination): self.version=4 self.ihl=5#InternetHeaderLength self.tos=0#TypeofService self.tl=0#totallengthwillbefilledbykernel self.id=54321 self.flags=0#Morefragments self.offset=0 self.ttl=255 self.protocol=socket.IPPROTO_TCP self.checksum=0#willbefilledbykernel self.source=socket.inet_aton(source) self.destination=socket.inet_aton(destination) defpack(self): ver_ihl=(self.version<<4)+self.ihl flags_offset=(self.flags<<13)+self.offset ip_header=struct.pack("!BBHHHBBH4s4s", ver_ihl, self.tos, self.tl, self.id, flags_offset, self.ttl, self.protocol, self.checksum, self.source, self.destination) returnip_header classtcp(): def__init__(self,srcp,dstp): self.srcp=srcp self.dstp=dstp self.seqn=0 self.ackn=0 self.offset=5#Dataoffset:5x4=20bytes self.reserved=0 self.urg=0 self.ack=0 self.psh=1 self.rst=0 self.syn=0 self.fin=0 self.window=socket.htons(5840) self.checksum=0 self.urgp=0 self.payload="" defpack(self,source,destination): data_offset=(self.offset<<4)+0 flags=self.fin+(self.syn<<1)+(self.rst<<2)+(self.psh<<3)+(self.ack<<4)+(self.urg<<5) tcp_header=struct.pack("!HHLLBBHHH", self.srcp, self.dstp, self.seqn, self.ackn, data_offset, flags, self.window, self.checksum, self.urgp) #pseudoheaderfields source_ip=source destination_ip=destination reserved=0 protocol=socket.IPPROTO_TCP total_length=len(tcp_header)+len(self.payload) #Pseudoheader psh=struct.pack("!4s4sBBH", source_ip, destination_ip, reserved, protocol, total_length) psh=psh+tcp_header+self.payload tcp_checksum=checksum(psh) tcp_header=struct.pack("!HHLLBBH", self.srcp, self.dstp, self.seqn, self.ackn, data_offset, flags, self.window) tcp_header+=struct.pack("H",tcp_checksum)+struct.pack("!H",self.urgp) returntcp_header deftest(source,site,data): s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW) src_host=source dest_host=socket.gethostbyname(site) #IPHeader ipobj=ip(src_host,dest_host) iph=ipobj.pack() #TCPHeader tcpobj=tcp(1234,80) tcpobj.data_length=len(data) tcph=tcpobj.pack(ipobj.source,ipobj.destination) #Injection packet=iph+tcph+data s.sendto(packet,(dest_host,80)) s.close() if__name__=='__main__': test("10.0.0.1","www.baidu.com","ITSTEST")
补充知识:python3socket抓包
看代码吧!
importsocket s=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_TCP) whileTrue: print(s.recvfrom(65565))
以上这篇pythonTCP包注入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。