python如何实现TCP包注入

  介绍

小编这次要给大家分享的是python如何实现TCP包注入,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

我就废话不多说了,大家还是直接看代码吧!

# !/usr/bin/env python   进口套接字   进口结构      def校验和(数据):   s=0   n=len(数据)% 2   因为我在范围(0,len(数据)- n, 2):   s +=奥德(数据[我])+(奥德(数据(i + 1)) & lt; & lt;8)   如果n:   s +=奥德(数据(i + 1))   ,而(s祝辞的在16):   s=(s,,0 xffff) + (s祝辞的在16)=~年代,0 xffff   返回年代      类ip ():      def __init__(自我、来源、目的地):   自我。版本=4   自我。ihl=5 #互联网头长度   自我。tos=0 #类型的服务   自我。tl=0 #总长度将由内核   自我。id=54321   自我。旗帜=0 #更多的碎片   自我。抵消=0   自我。ttl=255   自我。协议=socket.IPPROTO_TCP   自我。校验和=0 #将由内核   自我。源=socket.inet_aton(源)   self.destination=socket.inet_aton(目的地)      def包(自我):   ver_ihl=(自我。版本& lt; & lt;4)+ self.ihl   flags_offset=(自我。旗& lt; & lt;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)   返回ip_header      类tcp ():      def __init__(自我、srcp dstp):   自我。srcp=srcp   自我。dstp=dstp   自我。seqn=0   自我。ackn=0   自我。抵消=5 #数据偏移量:5 x4=20个字节   自我。保留=0   自我。=0开始   自我。ack=0   自我。psh=1   自我。rst=0   自我。syn=0   自我。鳍=0   自我。窗口=socket.htons (5840)   自我。校验和=0   自我。urgp=0   自我。载荷=?“      def包(自我、来源、目的地):   data_offset=(自我。抵消& lt; & lt;4)+ 0   旗帜=自我。鳍+(自我。syn & lt; & lt;1)+(自我。rst & lt; & lt;2)+(自我。psh & lt; & lt;3)+(自我。ack & lt; & lt;4)+(自我。开始& lt; & lt;5)   tcp_header=struct.pack (“! HHLLBBHHH"   self.srcp,   self.dstp,   self.seqn,   self.ackn,   data_offset,   旗帜,   self.window,   self.checksum,   self.urgp)   #伪头字段   source_ip=源   destination_ip=目标   保留=0   协议=socket.IPPROTO_TCP   total_length=len (tcp_header) + len (self.payload)   #伪头   psh=struct.pack (“! 4 s4sbbh"   source_ip、   destination_ip、   保留,   协议,   total_length)   psh=psh + tcp_header + self.payload   tcp_checksum=校验和(psh)   tcp_header=struct.pack (“! HHLLBBH"   self.srcp,   self.dstp,   self.seqn,   self.ackn,   data_offset,   旗帜,   self.window)   tcp_header +=struct.pack (“H" tcp_checksum) + struct.pack (“! H" self.urgp)   返回tcp_header      def测试(源、网站数据):   s=socket.socket (socket.AF_INET   socket.SOCK_RAW,   socket.IPPROTO_RAW)   src_host=源   dest_host=socket.gethostbyname(网站)   # IP报头   ipobj=ip (src_host dest_host)   iph=ipobj.pack ()   # TCP报头   tcpobj=tcp (1234、80)   tcpobj.data_length=len(数据)   tcph=tcpobj.pack (ipobj.source ipobj.destination)   #注入   包=iph + tcph +数据   s.sendto(包(dest_host, 80))   s.close ()      if __name__==& # 39; __main__ # 39;:   测试(“10.0.0.1",“www.baidu.com",“TEST")

<强> python3插座抓包

看代码吧!

进口套接字
  s=socket.socket (socket.AF_INET socket.SOCK_RAW socket.IPPROTO_TCP)
  而真正的:
  印刷(s.recvfrom (65565) 

看完这篇关于python如何实现TCP包注入的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

python如何实现TCP包注入