基于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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
python django 原生sql 获取数据的例子
Aug 14 Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 Python
Python中and和or如何使用
May 28 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 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
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
jquery 上下滚动广告
2009/06/17 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
解决python写的windows服务不能启动的问题
2014/04/15 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
Java面试笔试题大全
2016/11/23 面试题
应届大学生自荐信格式
2013/09/21 职场文书
大型会议策划方案
2014/05/17 职场文书
2014年库房工作总结
2014/11/26 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers