python原始套接字编程示例分享_python

下面开始构造HTTP数据包,

IP层和TCP层使用python的Impacket库,http内容自行填写。

复制代码 代码如下:

#!/usr/bin/env python

#-------------------------------------------------------------------------------
# Name:     raw_http.py
# Purpose:       construct a raw http get packet
#
# Author:    Yangjun
#
# Created:       08/02/2014
# Copyright:   (c) Yangjun 2014
# Licence:       <your licence>
#-------------------------------------------------------------------------------

import sys
import socket
from impacket import ImpactDecoder, ImpactPacket

def main():

    if len(sys.argv) < 3:
        print "Use: %s <src ip> <dst ip>" % sys.argv[0]
        print "Use: %s <src ip> <dst ip> <cnt>" % sys.argv[0]
        sys.exit(1)
    elif len(sys.argv) == 3:
        src = sys.argv[1]
        dst = sys.argv[2]
        cnt = 1
    elif len(sys.argv) ==4:
        src = sys.argv[1]
        dst = sys.argv[2]
        cnt = sys.argv[3]
    else:
        print "Input error!"
        sys.exit(1)
#print src, dst
    ip = ImpactPacket.IP()
    ip.set_ip_src(src)
    ip.set_ip_dst(dst)

    # Create a new ICMP packet of type ECHO.
    icmp = ImpactPacket.ICMP()
    tcp = ImpactPacket.TCP()
    tcp.set_th_sport(55968)
    tcp.set_th_dport(80)
    tcp.set_th_seq(1)
    tcp.set_th_ack(1)
    tcp.set_th_flags(0x18)
    tcp.set_th_win(64)

    tcp.contains( ImpactPacket.Data("GET /att/DIYLife/41264/528 HTTP/1.1\r\nHost: 192.168.111.1\r\nAccept-Encoding: identity\r\n\r\n"))

    ip.contains(tcp)

    # Open a raw socket. Special permissions are usually required.
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
    s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
    seq_id = 0
    while cnt >= 1:
        # Calculate its checksum.
        seq_id = seq_id + 1
        tcp.set_th_seq(seq_id)
        tcp.calculate_checksum()

        # Send it to the target host.
        s.sendto(ip.get_packet(), (dst,80))
        cnt= cnt -1

if __name__ == '__main__':
    main()

运行后抓包如下:

时间: 2024-09-20 08:53:09

python原始套接字编程示例分享_python的相关文章

网络数据抓包 windows- VC++ 用原始套接字编程,怎样抓取网页响应数据?

问题描述 VC++ 用原始套接字编程,怎样抓取网页响应数据? 在网上找了很多方法,都是只能抓取发出的请求数据,没有响应数据 recv(sock, recvInf, sizeof(recvInf), 0);//接收包 windows环境下,VS2015 解决方案 参考:http://www.codeproject.com/Articles/17031/A-Network-Sniffer-in-Chttp://www.netresec.com/?page=RawCap 解决方案二: 这个是开发给特定

python使用PyV8执行javascript代码示例分享_python

安装相应的库,我使用的是PyV8 需要注意的是里面写的function函数需要用()括起来 复制代码 代码如下: import PyV8 class Test():     def js(self):        ctxt = PyV8.JSContext()        ctxt.enter()               func = ctxt.eval('''(function(){return '###'})''')        print func()        print

python实现代码行数统计示例分享_python

复制代码 代码如下: #!/usr/bin/python '''        File      : count.py        Author    : Mike        E-Mail    : Mike_Zhang@live.com'''import sys,os extens = [".c",".cpp",".hpp",".h"]linesCount = 0filesCount = 0 def funCount

socket-python原始套接字的问题

问题描述 python原始套接字的问题 代码如下: import socket addr='localhost' serversocket=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_IP) serversocket.bind((addr,0)) serversocket.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) serversocket.ioctl(sock

Python中利用原始套接字进行网络编程的示例

  这篇文章主要介绍了Python中利用原始套接字进行网络编程的示例,使用sock_raw接受和发送数据包可以避开网络协议的诸多限制,需要的朋友可以参考下 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送. 使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TC

原始套接字-VPN到底是什么东西,有几个问题请教一下网络编程大神

问题描述 VPN到底是什么东西,有几个问题请教一下网络编程大神 1.有人说VPN能把系统的所有流量代理走,那么包不包括使用RAW Socket(原始套接字)发送的链路层数据帧呢? 2.VPN究竟是什么鬼?那PPTP协议是什么鬼?我能用原始套接字模拟PPTP连接吗,PPTP协议到底是什么协议,百度上有人说PPTP是第二层协议,那不就是链路层协议吗,还有人说PPTP基于TCP,我也是醉了.请问有没有关于VPN协议的书籍? 解决方案 vpn工作在ip层,RAW Socket的包不能保留,必须做修改,对

sock-怎么用python和原始套接字发送一tcp数据包?

问题描述 怎么用python和原始套接字发送一tcp数据包? 这段代码直接把数据packet_base作为ip的载荷了,怎么才能是packet_base作为tcp的载荷呢?谢谢 sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) sock.sendto(packet_base, 0, (IP_PACKET_IN, 12321)) sock.close() 解决方案 把你的代码修改成如下就是TCP啦:

网络编程-原始套接字实现SYN扫描,但用wireshark时始终没有发现发出去的包

问题描述 原始套接字实现SYN扫描,但用wireshark时始终没有发现发出去的包 #include #include #include #include #include #include "WS2TCPIP.H" #pragma comment(lib,"Ws2_32.lib") using namespace std; //SOCKADDR_IN target, source; //sockaddr_in target, source; //int sock;

《计算机网络:自顶向下方法(原书第6版)》一2.7 TCP套接字编程

2.7 TCP套接字编程 我们已经看到了一些重要的网络应用,下面就探讨一下网络应用程序是如何实际编写的.在2.1节讲过,典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中.当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字读出和写入数据彼此之间进行通信.开发者创建一个网络应用时,其主要任务就是编写客户程序和服务器程序的代码.网络应用程序有两类.一类是实现在协议标准(如一个RFC或某种其他标准文档)中所定义的操作:这样的应用程序又称为"