基于python模拟TCP3次握手连接及发送数据


Posted in Python onNovember 06, 2020

源码如下

from scapy.all import *
import logging
logging.getLogger('scapy.runtime').setLevel(logging.ERROR)

target_ip    = '192.168.1.1'
target_port   = 80
data      = 'GET / HTTP/1.0 \r\n\r\n'

def start_tcp(target_ip,target_port):
  global sport,s_seq,d_seq  #主要是用于TCP3此握手建立连接后继续发送数据
  try:
    #第一次握手,发送SYN包
    ans = sr1(IP(dst=target_ip)/TCP(dport=target_port,sport=RandShort(),seq=RandInt(),flags='S'),verbose=False)
    sport = ans[TCP].dport  #源随机端口
    s_seq = ans[TCP].ack   #源序列号(其实初始值已经被服务端加1)
    d_seq = ans[TCP].seq + 1 #确认号,需要把服务端的序列号加1
    #第三次握手,发送ACK确认包
    send(IP(dst=target_ip)/TCP(dport=target_port,sport=sport,ack=d_seq,seq=s_seq,flags='A'),verbose=False)
  except Exception,e:
    print '[-]有错误,请注意检查!'
    print e

def trans_data(target_ip,target_port,data):
  #先建立TCP连接
  start_tcp(target_ip=target_ip,target_port=target_port)
  #print sport,s_seq,d_seq
  #发起GET请求
  ans = sr1(IP(dst=target_ip)/TCP(dport=target_port,sport=sport,seq=s_seq,ack=d_seq,flags=24)/data,verbose=False)
  #ans.show()
  #读取服务端发来的数据
  rcv = ans[Raw]
  print rcv

if __name__ == '__main__':
  #start_tcp(target_ip,target_port)
  trans_data(target_ip,target_port,data)

运行结果如下

# python exp3.py
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="wed, 26 Feb 1997 08:21:57 GMT">
<html><head><title>505 HTTP Version not supported</title></head><body><center><h1>505 HTTP Version not supported</h1></center></body></html>�p�-1���-1��2��2��D��o�p�-1��`��D

wireshark抓包截图如下:

基于python模拟TCP3次握手连接及发送数据

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

Python 相关文章推荐
老生常谈Python进阶之装饰器
May 11 Python
Python模拟用户登录验证
Sep 11 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python分布式编程实现过程解析
Nov 08 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 Python
python 将Excel转Word的示例
Mar 02 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
Python中time标准库的使用教程
Apr 13 Python
如何使用Django Admin管理后台导入CSV
Nov 06 #Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 #Python
python两种获取剪贴板内容的方法
Nov 06 #Python
用python写一个带有gui界面的密码生成器
Nov 06 #Python
python如何编写类似nmap的扫描工具
Nov 06 #Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 #Python
基于Python模拟浏览器发送http请求
Nov 06 #Python
You might like
DSP接收机前端设想
2021/03/02 无线电
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python实现的双色球生成功能示例
2017/12/18 Python
《Python学习手册》学习总结
2018/01/17 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
浅谈Python type的使用
2019/11/19 Python
Python argparse模块使用方法解析
2020/02/20 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
职业生涯规划书范文
2014/03/10 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
读后感作文评语
2014/12/25 职场文书
可可西里观后感
2015/06/08 职场文书
高考升学宴主持词
2019/06/21 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python