raw socket
一个很newbee的例子,可惜还得改
- import sys
- import time
- import socket
- import struct
- import random
- def SendPacketData (Buffer = None , DestIP = "127.0.0.1" , DestPort = 10000) :
- """SendPacketData"""
- if Buffer is None :
- return False
- try:
- Socket = socket.socket(socket.AF_INET,socket.SOCK_RAW)
- Socket.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
- Socket.setsockopt(socket.SOL_SOCKET,socket.SO_SNDTIMEO,2000)
- except:
- Socket.close()
- return False
- try:
- Socket.sendto(Buffer,0,(DestIP , DestPort))
- except:
- Socket.close()
- return True
- def SetPacketAddress (Number = 1) :
- """SetPakcetAddress"""
- return [".".join(["%d" % random.randint(1 , 0xFF) for i in range(0,4)]) for n in range(0 , Number)]
- def SetPacketData (Length = 32) :
- """SetPacketData"""
- return "".join(["%s" % chr(random.randint(0 , 255)) for n in range(Length)])
- def SetPacketCheckSum (Buffer = None) :
- """SetPacketCheckSum"""
- if Buffer == None :
- return False
- if len(Buffer) % 2 :
- Buffer += '/0'
- return ~sum([(ord(Buffer[n + 1]) << 8) + ord(Buffer[n]) for n in range(0 , len(Buffer) , 2)])
- #or return ~sum([ord(Buffer[n]) + ord(Buffer[n + 1]) * 256 for n in range(0 , len(Buffer) , 2)])
- def SynSendInit (DestIP = "127.0.0.1" , DestPort = 80) :
- """SynSendInit"""
- IpHdrLen = 20
- TcpHdrLen = 20
- IpVerlen = (4 << 4 | IpHdrLen / 4)
- IpTotal_len = socket.htons(IpHdrLen + TcpHdrLen)
- IpDestIP = struct.unpack('i',socket.inet_aton(DestIP))[0]
- IpSourceIP = struct.unpack('i',socket.inet_aton(SetPacketAddress()[0]))[0]
- TcpSport = socket.htons(random.randint(1024 , 65000))
- TcpDport = socket.htons(DestPort)
- TcpLenres = (TcpHdrLen / 4 << 4 | 0)
- TcpSeq = socket.htonl(int(time.time()))
- Buffer = struct.pack("LLBBHHHLLBBHHH",IpSourceIP,IpDestIP,0,socket.IPPROTO_TCP,socket.htons(TcpHdrLen)
- ,TcpSport,TcpDport,TcpSeq,0,TcpLenres,2,socket.htons(8192),0,0)
- TcpChecksum = SetPacketCheckSum(Buffer)
- Buffer = struct.pack("BBHHHBBHLL",IpVerlen,0,IpTotal_len,1,0x40,255,socket.IPPROTO_TCP,0,IpSourceIP,IpDestIP)
- IpChecksum = SetPacketCheckSum(Buffer)
- tcpcsp = struct.pack("L",TcpChecksum)
- ipcsp = struct.pack("L",IpChecksum)
- return struct.pack("BBHHHBBHLLHHLLBBHHH",IpVerlen,0,IpTotal_len,1,0x40,255,socket.IPPROTO_TCP
- ,(ord(ipcsp[1]) << 8) + ord(ipcsp[0]),IpSourceIP,IpDestIP
- ,TcpSport,TcpDport,TcpSeq,0,TcpLenres,2,socket.htons(8192)
- ,(ord(tcpcsp[1]) << 8) + ord(tcpcsp[0]),0)
- def SynSendMain (DestIP = "127.0.0.1" , DestPort = 80) :
- """SynSendMain"""
- return SendPacketData(SynSendInit(DestIP , DestPort) , DestIP , DestPort)
- if __name__ == "__main__" :
- try:
- SynSendMain()
- except:
- pass
raw socket的更多相关文章
- C#的Raw Socket实现网络封包监视
同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本 ...
- raw socket遇上windows
最近很长一段时间内又捡起了大学时丢下的网络协议,开始回顾网络协议编程,于是linux系统成了首选,它让我感到了无比的自由,可以很通透的游走于协议的各层. 最初写了个ARP欺骗程序,很成功的欺骗了win ...
- Path Analyzer Pro出现raw socket问题
使用windows7,8以及10平台运行一个traceroute liketools软件,名为Path Analyzer Pro 2.7,遇到raw socket问题,如图: 原因是raw socke ...
- Raw Socket vs Stream Socket vs datagram socket,原始套接字与流式套接字与数据报套接字
https://opensourceforu.com/2015/03/a-guide-to-using-raw-sockets/ In this tutorial, lets take a look ...
- C#之Raw Socket实现网络封包监视
同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本 ...
- 【VS开发】raw socket 的例子
raw socket 的例子 一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRa ...
- raw, SOCK_RAW - Linux IPv4 raw socket.
总 览 #include <sys/socket.h> #include <netinet/in.h> raw_socket = socket(PF_INET, SOCK_RA ...
- C#之Raw Socket网络封包监视源码
大家可以建立一个Windows Form应用程序,在下面的各个文件中添加对应的源码: //RawSocket.csnamespace ReceiveAll{ using System; using S ...
- Raw Socket(原始套接字)实现Sniffer(嗅探)
参考资料: https://www.xuebuyuan.com/3190946.html https://blog.csdn.net/zxygww/article/details/52093308 i ...
随机推荐
- objective-c 通过类名实例化类
NSString *myClassName = @"MainScene"; Class myClass = NSSClassFromString(myClassName);
- HDU-Minimum Inversion Number(最小逆序数)
Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...
- 【BZOJ】1086: [SCOI2005]王室联邦
http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题意:n个点的树,要求分块,使得每一块的大小在[b, 3b]内且块与某个点形成的块是连通的(某 ...
- weblogic 11g 配置db2数据源
配置db2数据源可以直接在包里面配置,不需要专门在服务器上配置数据源. 在11g版本前要配置db2数据源是需要增加包,后续的版本处理了这个问题. 1. 将C:\Program Files\SQLLIB ...
- 七、考反映小游戏《苹果iOS实例编程入门教程》
该app为应用的功能为一个简单的考反应游戏 纲要:-UIButton, UILabel, UIImageView 的运用:-利用rendom增加游戏可玩性: 游戏说明: 在按下开始游戏后,分为三盏的指 ...
- 使用RESTClient插件进行数据模拟(GET,POST)提交
1:在Firefox中下载RESTClient插件安装 2:安装好后的界面 (chrome://restclient/content/restclient.html) 3:选择GET/POST,输入U ...
- struts2中拦截器与过滤器的区别
1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器. 3.拦截器只能对Action请求起作用,而过滤器则可以对几乎 ...
- JQuery小结
一.选择网页元素 jQuery的基本设计和主要用法,就是"选择某个网页元素,然后对其进行某种操作".这是它区别于其他函数库的根本特点. 使用jQuery的第一步,往往就是将一个选择 ...
- CentOS7 网络管理相关命令
contos7 网卡配置文件自动识别ifcfg开头的文件(包括目录) CentOS7网卡命名规则: CentOS 7 开始对于网卡的编号则有另一套规则, 网卡的界面代号现在与网卡的来源有关,基本上的网 ...
- cookie&&session再理解笔记
就拿php来说,两个php页面之间不拿get,post传递变量的话,数据是不能共享的.访问完1.php页面该页面的变量就被销毁了.所以就拿学校食堂来说,拿现金买饭的话你交完钱后,他给你个票以便确认你, ...