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单元测试框架unittest简明使用实例
Apr 13 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
python先序遍历二叉树问题
Nov 10 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
Django中间件实现拦截器的方法
Jun 01 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Python Http请求json解析库用法解析
Nov 28 Python
python中添加模块导入路径的方法
Feb 03 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
4种非常实用的python内置数据结构
Apr 28 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 session有效期问题
2009/04/26 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
详解tween.js 中文使用指南
2018/01/05 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
Python实现简单的可逆加密程序实例
2015/03/05 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python线程创建和终止实例代码
2018/01/20 Python
Scrapy框架使用的基本知识
2018/10/21 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python占用的内存优化教程
2019/07/28 Python
python元组拆包实现方法
2021/02/28 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
详解Mysql 函数调用优化
2021/04/07 MySQL