Python原始套接字编程实例解析


Posted in Python onJanuary 29, 2020

这篇文章主要介绍了Python原始套接字编程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互。

因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送。

使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TCP的限制。

下面开始构造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()

运行后抓包如下:

Python原始套接字编程实例解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程实现同步的四种方式
May 02 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
基于Django用户认证系统详解
Feb 21 Python
详解python里的命名规范
Jul 16 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
对python中UDP,socket的使用详解
Aug 22 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
PyCharm 专业版安装图文教程
Feb 20 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
Python内置类型性能分析过程实例
Jan 29 #Python
python add_argument()用法解析
Jan 29 #Python
python使用ctypes调用扩展模块的实例方法
Jan 28 #Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 #Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 #Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 #Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 #Python
You might like
PHP 定界符 使用技巧
2009/06/14 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
十岁生日父母答谢词
2014/01/18 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
营销与策划实训报告
2014/11/05 职场文书
病人慰问信范文
2015/02/15 职场文书
支行行长岗位职责
2015/02/15 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
老人与海读书笔记
2015/06/26 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
检讨书怎么写?
2019/06/21 职场文书
Python机器学习之基础概述
2021/05/19 Python