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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
matplotlib作图添加表格实例代码
Jan 23 Python
Sanic框架Cookies操作示例
Jul 17 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
python实现小世界网络生成
Nov 21 Python
Python魔法方法 容器部方法详解
Jan 02 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
python函数超时自动退出的实操方法
Dec 28 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
django如何自定义manage.py管理命令
Apr 27 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 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计算2个日期的差值函数分享
2015/02/02 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
Python实现Kmeans聚类算法
2020/06/10 Python
简单了解Python生成器是什么
2019/07/02 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
应届毕业生如何写求职信
2014/02/16 职场文书
社区科普工作方案
2014/06/03 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
中学教师读书笔记
2015/07/01 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
创业计划书之美甲店
2019/09/20 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android