一个很newbee的例子,可惜还得改

  1. import sys
  2. import time
  3.  
  4. import socket
  5. import struct
  6.  
  7. import random
  8.  
  9. def SendPacketData (Buffer = None , DestIP = "127.0.0.1" , DestPort = 10000) :
  10. """SendPacketData"""
  11.  
  12. if Buffer is None :
  13. return False
  14.  
  15. try:
  16. Socket = socket.socket(socket.AF_INET,socket.SOCK_RAW)
  17. Socket.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
  18. Socket.setsockopt(socket.SOL_SOCKET,socket.SO_SNDTIMEO,2000)
  19.  
  20. except:
  21. Socket.close()
  22. return False
  23.  
  24. try:
  25. Socket.sendto(Buffer,0,(DestIP , DestPort))
  26.  
  27. except:
  28. Socket.close()
  29.  
  30. return True
  31.  
  32. def SetPacketAddress (Number = 1) :
  33. """SetPakcetAddress"""
  34.  
  35. return [".".join(["%d" % random.randint(1 , 0xFF) for i in range(0,4)]) for n in range(0 , Number)]
  36.  
  37. def SetPacketData (Length = 32) :
  38. """SetPacketData"""
  39.  
  40. return "".join(["%s" % chr(random.randint(0 , 255)) for n in range(Length)])
  41.  
  42. def SetPacketCheckSum (Buffer = None) :
  43. """SetPacketCheckSum"""
  44.  
  45. if Buffer == None :
  46. return False
  47.  
  48. if len(Buffer) % 2 :
  49. Buffer += '/0'
  50.  
  51. return ~sum([(ord(Buffer[n + 1]) << 8) + ord(Buffer[n]) for n in range(0 , len(Buffer) , 2)])
  52. #or return ~sum([ord(Buffer[n]) + ord(Buffer[n + 1]) * 256 for n in range(0 , len(Buffer) , 2)])
  53.  
  54. def SynSendInit (DestIP = "127.0.0.1" , DestPort = 80) :
  55. """SynSendInit"""
  56.  
  57. IpHdrLen = 20
  58. TcpHdrLen = 20
  59.  
  60. IpVerlen = (4 << 4 | IpHdrLen / 4)
  61. IpTotal_len = socket.htons(IpHdrLen + TcpHdrLen)
  62.  
  63. IpDestIP = struct.unpack('i',socket.inet_aton(DestIP))[0]
  64. IpSourceIP = struct.unpack('i',socket.inet_aton(SetPacketAddress()[0]))[0]
  65.  
  66. TcpSport = socket.htons(random.randint(1024 , 65000))
  67. TcpDport = socket.htons(DestPort)
  68.  
  69. TcpLenres = (TcpHdrLen / 4 << 4 | 0)
  70. TcpSeq = socket.htonl(int(time.time()))
  71.  
  72. Buffer = struct.pack("LLBBHHHLLBBHHH",IpSourceIP,IpDestIP,0,socket.IPPROTO_TCP,socket.htons(TcpHdrLen)
  73. ,TcpSport,TcpDport,TcpSeq,0,TcpLenres,2,socket.htons(8192),0,0)
  74. TcpChecksum = SetPacketCheckSum(Buffer)
  75.  
  76. Buffer = struct.pack("BBHHHBBHLL",IpVerlen,0,IpTotal_len,1,0x40,255,socket.IPPROTO_TCP,0,IpSourceIP,IpDestIP)
  77. IpChecksum = SetPacketCheckSum(Buffer)
  78.  
  79. tcpcsp = struct.pack("L",TcpChecksum)
  80. ipcsp = struct.pack("L",IpChecksum)
  81.  
  82. return struct.pack("BBHHHBBHLLHHLLBBHHH",IpVerlen,0,IpTotal_len,1,0x40,255,socket.IPPROTO_TCP
  83. ,(ord(ipcsp[1]) << 8) + ord(ipcsp[0]),IpSourceIP,IpDestIP
  84. ,TcpSport,TcpDport,TcpSeq,0,TcpLenres,2,socket.htons(8192)
  85. ,(ord(tcpcsp[1]) << 8) + ord(tcpcsp[0]),0)
  86.  
  87. def SynSendMain (DestIP = "127.0.0.1" , DestPort = 80) :
  88. """SynSendMain"""
  89.  
  90. return SendPacketData(SynSendInit(DestIP , DestPort) , DestIP , DestPort)
  91.  
  92. if __name__ == "__main__" :
  93. try:
  94. SynSendMain()
  95. except:
  96. pass

raw socket的更多相关文章

  1. C#的Raw Socket实现网络封包监视

    同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本 ...

  2. raw socket遇上windows

    最近很长一段时间内又捡起了大学时丢下的网络协议,开始回顾网络协议编程,于是linux系统成了首选,它让我感到了无比的自由,可以很通透的游走于协议的各层. 最初写了个ARP欺骗程序,很成功的欺骗了win ...

  3. Path Analyzer Pro出现raw socket问题

    使用windows7,8以及10平台运行一个traceroute liketools软件,名为Path Analyzer Pro 2.7,遇到raw socket问题,如图: 原因是raw socke ...

  4. Raw Socket vs Stream Socket vs datagram socket,原始套接字与流式套接字与数据报套接字

    https://opensourceforu.com/2015/03/a-guide-to-using-raw-sockets/ In this tutorial, let’s take a look ...

  5. C#之Raw Socket实现网络封包监视

    同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本 ...

  6. 【VS开发】raw socket 的例子

    raw socket 的例子 一. 摘要    Raw Socket: 原始套接字    可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRa ...

  7. raw, SOCK_RAW - Linux IPv4 raw socket.

    总 览 #include <sys/socket.h> #include <netinet/in.h> raw_socket = socket(PF_INET, SOCK_RA ...

  8. C#之Raw Socket网络封包监视源码

    大家可以建立一个Windows Form应用程序,在下面的各个文件中添加对应的源码: //RawSocket.csnamespace ReceiveAll{ using System; using S ...

  9. Raw Socket(原始套接字)实现Sniffer(嗅探)

    参考资料: https://www.xuebuyuan.com/3190946.html https://blog.csdn.net/zxygww/article/details/52093308 i ...

随机推荐

  1. objective-c 通过类名实例化类

    NSString *myClassName = @"MainScene"; Class myClass = NSSClassFromString(myClassName);

  2. HDU-Minimum Inversion Number(最小逆序数)

    Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...

  3. 【BZOJ】1086: [SCOI2005]王室联邦

    http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题意:n个点的树,要求分块,使得每一块的大小在[b, 3b]内且块与某个点形成的块是连通的(某 ...

  4. weblogic 11g 配置db2数据源

    配置db2数据源可以直接在包里面配置,不需要专门在服务器上配置数据源. 在11g版本前要配置db2数据源是需要增加包,后续的版本处理了这个问题. 1. 将C:\Program Files\SQLLIB ...

  5. 七、考反映小游戏《苹果iOS实例编程入门教程》

    该app为应用的功能为一个简单的考反应游戏 纲要:-UIButton, UILabel, UIImageView 的运用:-利用rendom增加游戏可玩性: 游戏说明: 在按下开始游戏后,分为三盏的指 ...

  6. 使用RESTClient插件进行数据模拟(GET,POST)提交

    1:在Firefox中下载RESTClient插件安装 2:安装好后的界面 (chrome://restclient/content/restclient.html) 3:选择GET/POST,输入U ...

  7. struts2中拦截器与过滤器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器.  3.拦截器只能对Action请求起作用,而过滤器则可以对几乎 ...

  8. JQuery小结

    一.选择网页元素 jQuery的基本设计和主要用法,就是"选择某个网页元素,然后对其进行某种操作".这是它区别于其他函数库的根本特点. 使用jQuery的第一步,往往就是将一个选择 ...

  9. CentOS7 网络管理相关命令

    contos7 网卡配置文件自动识别ifcfg开头的文件(包括目录) CentOS7网卡命名规则: CentOS 7 开始对于网卡的编号则有另一套规则, 网卡的界面代号现在与网卡的来源有关,基本上的网 ...

  10. cookie&&session再理解笔记

    就拿php来说,两个php页面之间不拿get,post传递变量的话,数据是不能共享的.访问完1.php页面该页面的变量就被销毁了.所以就拿学校食堂来说,拿现金买饭的话你交完钱后,他给你个票以便确认你, ...