iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Raw Socket使用示
  • 508
分享到

Python Raw Socket使用示

PythonRawSocket 2023-01-31 02:01:35 508人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

import sys import time import Socket import struct import random def SendPacketData (Buffer = None , DestIP = "127.0

import sys
import time

import Socket
import struct

import random

def SendPacketData (Buffer = None , DestIP = "127.0.0.1" , DestPort = 0) :
    """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__" :
    SynSendMain()

--结束END--

本文标题: Python Raw Socket使用示

本文链接: https://www.lsjlt.com/news/186401.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python Raw Socket使用示
    import sys import time import socket import struct import random def SendPacketData (Buffer = None , DestIP = "127.0...
    99+
    2023-01-31
    Python Raw Socket
  • Python socket 模块的使用
    一、使用socket实现一对一的简单通信  socket就是一个开往网络应用必备的功能模块。通过这个模块我们可以自己写程序的server端和client端,可以自己定义server端对外提供服务器的ip地址和端口。学会使用这个模块的之后我们...
    99+
    2023-01-31
    模块 Python socket
  • python之怎么使用socket
    本篇内容主要讲解“python之怎么使用socket”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python之怎么使用socket”吧!01:OSI模型1)OSI模型包括应用层、表示层、会话层...
    99+
    2023-06-01
  • python的socket库如何使用
    Python的socket库是用于网络通信的标准库,可以进行网络编程。下面是一个使用socket库的简单示例:```pythonim...
    99+
    2023-10-10
    python socket
  • python--socket用法
    服务器端:import SocketServerimport osclass MyTCPHandler(SocketServer.BaseRequestHandler):    def handle(self):        print ...
    99+
    2023-01-31
    python socket
  • Python的socket与socketserver怎么使用
    这篇“Python的socket与socketserver怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python...
    99+
    2023-06-30
  • Python使用socket实现简单的文
           因为工作需要,要在两台设备之间进行压力测试。即A设备不断往B设备发送文件,B设备接收文件后校验文件是否正确接收。       用Python的socket模块写了简单的Server和Client脚本。Server负责监听端口,...
    99+
    2023-01-31
    简单 Python socket
  • 实时通信Socket io的使用示例详解
    目录引言1、什么是socket.io2、socket.io的使用3、客户端自带事件4、版本问题引言 最近在工作中,遇到了一个需求,需要和后台服务实时通信,获取各种设备的实时状态、以及...
    99+
    2022-11-16
    Socket io实时通信 Socket io
  • socket编程之bind()函数使用示例详解
    目录正文端口号具体是怎么绑定老代码端口被占用的问题解决正文 当你创建了socket之后,你会想要把这个socket和你本机上的某个端口号(port)进行关联。 端口号是内核用来确认将...
    99+
    2022-11-13
    socket编程bind函数 socket bind
  • linux socket怎么使用
    本篇内容介绍了“linux socket怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!socket又称套接字,是Linux跨进程通信...
    99+
    2023-06-29
  • TCP Socket如何使用
    这篇文章主要讲解了“TCP Socket如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TCP Socket如何使用”吧!Java为TCP协议提供了两个类,分别在客户端编程和服务器端编...
    99+
    2023-06-17
  • Python 利用socket 实现 s
    1.场景描述:主机A主机B主机C10.13.170.76172.28.117.156(squid)10.95.113.131    主机A---->主机B(80)--->主机C(22), A通过B的80访问主机C131 2.Py...
    99+
    2023-01-31
    Python socket
  • Java使用Socket通信传输文件的方法示例
    本文实例讲述了Java使用Socket通信传输文件的方法。分享给大家供大家参考,具体如下:前面几篇文章介绍了使用Java的Socket编程和NIO包在Socket中的应用,这篇文章说说怎样利用Socket编程来实现简单的文件传输。这里由于前...
    99+
    2023-05-31
    java socket ava
  • 怎么在python中使用socket连接客户端
    本篇文章给大家分享的是有关怎么在python中使用socket连接客户端,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python的优点有哪些1、简单易用,与C/C++、Jav...
    99+
    2023-06-14
  • 在C++中使用HP-Socket
    目录1、简介2、使用方式3、实现简单线程池4、实现TCP客户端5、实现TCP服务端6、实现Http客户端1、简介 HP-Socket 是一套通用的高性能 TCP/UDP /HTTP...
    99+
    2024-04-02
  • Python中怎么使用Socket实现网络编程
    本篇文章为大家展示了Python中怎么使用Socket实现网络编程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Socket:套接字套接字好比电话的插口,主机和端口就好比区号和电话号码,主机:是你要...
    99+
    2023-06-17
  • vue中如何使用socket
    这篇“vue中如何使用socket”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue中如何使用socket”文章吧。一、W...
    99+
    2023-07-06
  • java中socket怎么使用
    在Java中使用Socket进行网络通信可以分为服务端和客户端两部分。服务端:1. 创建ServerSocket对象,并指定端口号。...
    99+
    2023-09-23
    java
  • 【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )
    文章目录 一、Socket 套接字简介1、Socket 套接字概念2、Socket 套接字类型3、Socket 套接字使用步骤4、Socket 套接字服务端与客户端 二、Socket 服务...
    99+
    2023-08-31
    Python socket 网络编程 TCP UDP 原力计划
  • Python——用socket和线程实现
      1.基础知识   Socket(套接字) 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。由此知道套接字是全双工的。 线程(thread) 线程是操作系统能够进行运...
    99+
    2023-01-31
    线程 Python socket
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作