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

 更新时间:2020年11月06日 16:17:15   作者:挣扎的猪  
这篇文章主要介绍了基于python模拟TCP3次握手连接及发送数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

源码如下

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中import机制详解

    Python中import机制详解

    在刚刚接触python时,我们会被其优美的格式、简洁的语法和无穷无尽的类库所震撼。在真正的将python应用到实际的项目中,你会遇到一些无法避免的问题。最让人困惑不解的问题有二类,一个编码问题,另一个则是引用问题。本文主要讨论关于Python中import的机制与实现
    2017-11-11
  • python 如何做一个识别率百分百的OCR

    python 如何做一个识别率百分百的OCR

    最近在做游戏自动化(测试),也就是游戏脚本了。主要有以下几个需求识别率百分百、速度要快、模型要小,本文就来着手实现它
    2021-05-05
  • Python中执行CMD命令的方法总结

    Python中执行CMD命令的方法总结

    在实际开发中,有时候我们需要在Python中执行一些系统命令(CMD命令),本文将详细介绍在Python中执行CMD命令的方法,并通过丰富的示例代码帮助大家更全面地理解这一过程,希望对大家有所帮助
    2023-12-12
  • Python3.10中match-case的用法和示例详解

    Python3.10中match-case的用法和示例详解

    在 Python 3.10 中引入了新的 match-case 语法,它是一种用于模式匹配的结构,下面小编就来和大家简单聊聊match-case的用法和示例吧,有需要的小伙伴可以参考下
    2023-10-10
  • python中re.findall() 的使用案例

    python中re.findall() 的使用案例

    re.findall() 函数是 python 中正则表达式模块(re)的一个重要函数,它可以根据正则表达式搜索字符串,并返回匹配的字符串列表,这篇文章给大家介绍了python中re.findall() 的使用案例,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • Python之Scrapy爬虫框架安装及使用详解

    Python之Scrapy爬虫框架安装及使用详解

    这篇文章主要为大家详细介绍了Python Scrapy爬虫框架安装及简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • python字典翻转的实现

    python字典翻转的实现

    本文主要介绍了python字典翻转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • python字典DICT类型合并详解

    python字典DICT类型合并详解

    这篇文章主要为大家详细介绍了python字典DICT类型合并,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • wxPython中wx.gird.Gird添加按钮的实现

    wxPython中wx.gird.Gird添加按钮的实现

    本文主要介绍了wxPython中wx.gird.Gird添加按钮的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • pycharm 使用conda虚拟环境的详细配置过程

    pycharm 使用conda虚拟环境的详细配置过程

    这篇文章主要介绍了pycharm 使用conda虚拟环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论