网络编程
位置:首页>> 网络编程>> Python编程>> 基于python模拟TCP3次握手连接及发送数据

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

作者:挣扎的猪  发布时间:2022-04-02 02:40:33 

标签:python,模拟,TCP,握手

源码如下


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次握手连接及发送数据

来源:https://www.cnblogs.com/darkpig/p/7629854.html

0
投稿

猜你喜欢

  • Notepad++是一款不错的编辑器,很轻巧,我很喜欢它。再换个主题,加个代码高亮,看上去就更专业了。如果你是Mac用户,应该听说或使用过T
  • 本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的
  • TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术
  • python中冒号实际上有两个意思:1.默认全部选择;2. 指定范围。 下面看例子定义数组X=array([[1,2,3,4],[5,6,7
  • php二分查找示例二分查找常用写法有递归和非递归,在寻找中值的时候,可以用插值法代替求中值法。当有序数组中的数据均匀递增时,采用插值方法可以
  • 一:PIL功能介绍与安装PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜
  • 相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受~但是~在Python程序员面前
  • 本文实例为大家分享了python批量处理图片的具体代码,供大家参考,具体内容如下公司的一个项目要求把所有4096x4096的图片全部转化成2
  • 一、Tkinter的介绍和简单教程Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建
  • Debian Etch Linux上成功安装了MySQL 5.0.27 icc版本,并使用JDBC测试中文成功!中文问题的关键是全部使用UT
  • 什么是pyc文件pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有
  • 本文实例为大家分享了检测几何图形轮廓和检测花朵图形轮廓,供大家参考,具体内容如下OpenCV绘制图像轮廓绘制轮廓的一般步骤:1、读取图像im
  • 我们可使用Haskeys属性判别每个条目是否为一个集合,遍历完整的Request.Cookies集合,以来取得所有cookie的列表及其值:
  • Python 私有函数的实例详解与大多数语言一样,Python 也有私有的概念:• 私有函数不可以从它们的模块外面被调用• 私有类方法不能够
  • 在python中,通过如下两个模块可以实现邮件的自动化操作smtplibemailsmtplib模块是对SMTP协议的封装,用于发送邮件;e
  • 第一次使用python写程序,确实比C/C++之类方便许多。既然这个抽奖的数据不大,对效率要求并不高,所以采用python写,更加简洁、清晰
  • 本文分享的实例主要实现的是Python+matplotlib绘制一个有阴影和没有阴影的3D条形图,具体如下。首先看看演示效果:完整代码如下:
  • 前言:二分法也就是二分查找,它是一种效率较高的查找方法假如公司新来了一个人,叫张三,他是你们公司第47个人,过了一段时间后,有些人呢看张三不
  • 看到这张照片,我们一眼能够看到天宏(图中这位UED俊男)的眼睛。我们能从他的表情里读出一些他的性格。一张好的摄影作品,最重要的一点,就是这个
  • KNN核心算法函数,具体内容如下#! /usr/bin/env python3# -*- coding: utf-8 -*-# fileNa
手机版 网络编程 asp之家 www.aspxhome.com