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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
详解Python中的多线程编程
Apr 09 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 Python
使用Python对微信好友进行数据分析
Jun 27 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
python烟花效果的代码实例
Feb 25 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
Python 第三方库 openpyxl 的安装过程
Dec 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将数据导入到Foxmail
2006/10/09 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
实例解析php的数据类型
2018/10/24 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
js中事件对象和事件委托的介绍
2019/01/21 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
vue+iview实现文件上传
2020/11/17 Vue.js
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python 变量的创建过程详解
2019/09/02 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
简历的自我评价范文
2014/02/04 职场文书
户外宣传策划方案
2014/05/25 职场文书
财务会计专业求职信
2014/06/09 职场文书
政府法律服务方案
2014/06/14 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
大学生社会实践感想
2015/08/11 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android