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通过定义一个类实例作为ftp回调方法
May 04 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
python 全局变量的import机制介绍
Sep 07 Python
浅谈python爬虫使用Selenium模拟浏览器行为
Feb 23 Python
对Python中的@classmethod用法详解
Apr 21 Python
django 删除数据库表后重新同步的方法
May 27 Python
Python如何使用函数做字典的值
Nov 30 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php之readdir函数用法实例
2014/11/13 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP7新特性
2021/03/09 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
js模拟类继承小例子
2010/07/17 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
python实现用户登陆邮件通知的方法
2015/07/09 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python的pygame安装教程详解
2020/02/10 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
tensorboard显示空白的解决
2020/02/15 Python
python利用faker库批量生成测试数据
2020/10/15 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
数控机械专业个人的自我评价
2014/01/02 职场文书
大学校园活动策划书
2014/02/04 职场文书
趣味体育活动方案
2014/02/08 职场文书
超市国庆节促销方案
2014/02/20 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
升职自荐信怎么写
2015/03/05 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
秋收起义观后感
2015/06/11 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js