当前位置: 首页 > news >正文

BUUCTF蜘蛛侠呀

解压后发现是流量包,好多icmp包

发现icmp包尾部有$$STRAT打头16进制的字符串,好多重复得。我们只需要提取尾部这些字符串是当icmp的type=0时上图标识为褐色的字符串,还需要把16进制的字符串转为对应的字符串(bytes 类型)并去重。

使用python脚本

import pyshark
import binasciidef process_pcap():# 使用pyshark的FileCapture打开名为out.pcap的文件,# 并设置显示过滤器,只捕获icmp.type等于0的ICMP数据包packets = pyshark.FileCapture('out.pcap', display_filter="icmp.type==0")res = []# 以写入模式打开名为out.txt的文件,指定编码为'utf - 8'with open('out.txt', 'w', encoding='utf - 8') as f:# 遍历捕获到的每个数据包for each in packets:try:# 将数据包中的十六进制数据(each.icmp.data)先转换为字节串,# 再使用'utf - 8'编码将字节串解码为字符串data = binascii.unhexlify(each.icmp.data).decode('utf - 8')# 如果解码后的字符串不在结果列表res中if data not in res:# 将该字符串写入到out.txt文件中f.write(data)# 将该字符串添加到结果列表res中,实现去重功能res.append(data)# 如果在binascii.unhexlify或decode操作中出现错误,捕获binascii.Error异常并跳过except binascii.Error:pass# 关闭数据包捕获对象packets.close()print('done')if __name__ == '__main__':process_pcap()

把out.txt首行和尾的开始和结束标志去除,去掉每行的头部的,

复制内容到cyberchef

或者使用下面python脚本直接输出processed_out.txt。内容复制到cyberchef

import os
import pyshark
import binascii
from tqdm import tqdmdef process_pcap():packets = pyshark.FileCapture('out.pcap', display_filter="icmp.type==0")res = []total_packets = len(list(packets))packets = pyshark.FileCapture('out.pcap', display_filter="icmp.type==0")with open('out.txt', 'w', encoding='utf - 8') as f:for each in tqdm(packets, total = total_packets):try:data = binascii.unhexlify(each.icmp.data).decode('utf - 8')if data not in res:res.append(data)except binascii.Error:passpackets.close()new_res = res[1: - 1]new_content = []for line in new_res:if line.startswith('$$START$$'):line = line.replace('$$START$$', '', 1)line = line.rstrip('\n')new_content.append(line)output_file = 'processed_out.txt'with open(output_file, 'w', encoding='utf - 8') as f_out:for line in new_content:f_out.write(line + '\n')print('done')if __name__ == '__main__':process_pcap()

或使用这个脚本,有两个好处一是直接生成最终结果,二是由于数据较大处理时间约两分钟,初始化有提示带进度条用户体验好。

import os
import pyshark
import binascii
from tqdm import tqdmdef process_pcap_sync():res = []print("开始获取数据包总数...")try:total_packets = len(list(pyshark.FileCapture('out.pcap', display_filter="icmp.type==0")))print("开始捕获和处理数据包...") packets = pyshark.FileCapture('out.pcap', display_filter="icmp.type==0")progress_bar = tqdm(total = total_packets)for each in packets:try:data = binascii.unhexlify(each.icmp.data).decode('utf - 8')if data not in res:res.append(data)except binascii.Error as e:print(f"处理数据包时出现binascii.Error异常: {e}")progress_bar.update(1)progress_bar.close()packets.close()except Exception as e:print(f"在处理pcap文件时发生错误: {e}")if not res:print("没有获取到有效的数据,可能是过滤条件问题或者pcap文件内容问题")returnnew_res = res[1: - 1]new_content = []for line in new_res:if line.startswith('$$START$$'):line = line.replace('$$START$$', '', 1)line = line.rstrip('\n')new_content.append(line)output_file = 'processed_out.txt'with open(output_file, 'w', encoding='utf - 8') as f_out:for line in new_content:f_out.write(line + '\n')print('done')if __name__ == '__main__':try:process_pcap_sync()except Exception as e:print(f"在运行主程序时发生错误: {e}")

cyberchef识别出是zip文件,点击保存图标,另存为zip文件,解压得flag.gif

把这个gif文件拷贝进kali,输入下面命令

identify -format "%T" flag.gif
 

把使用identify得到隐写信息

2050502050502050205020202050202020205050205020502050205050505050202050502020205020505050205020206666

我们去掉尾部6666,把20用0替换,50用1替换

205050205050205020502020205020202020505020502050205020505050505020205050202020502050505020502020

使用python和qt写个程序实现,源码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTextEditclass TextReplaceTool(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):# 查找输入框及标签self.find_label = QLabel('查找内容:')self.find_input = QLineEdit()# 替换输入框及标签self.replace_label = QLabel('替换内容:')self.replace_input = QLineEdit()# 查找按钮self.find_button = QPushButton('查找')self.find_button.clicked.connect(self.find_text)# 替换按钮self.replace_button = QPushButton('替换')self.replace_button.clicked.connect(self.replace_text)# 文本编辑区域self.text_edit = QTextEdit()# 布局设置hbox1 = QHBoxLayout()hbox1.addWidget(self.find_label)hbox1.addWidget(self.find_input)hbox2 = QHBoxLayout()hbox2.addWidget(self.replace_label)hbox2.addWidget(self.replace_input)hbox3 = QHBoxLayout()hbox3.addWidget(self.find_button)hbox3.addWidget(self.replace_button)vbox = QVBoxLayout()vbox.addLayout(hbox1)vbox.addLayout(hbox2)vbox.addLayout(hbox3)vbox.addWidget(self.text_edit)self.setLayout(vbox)self.setWindowTitle('文本查找替换工具')self.show()def find_text(self):find_str = self.find_input.text()text = self.text_edit.toPlainText()start_index = text.find(find_str)if start_index!= -1:self.text_edit.moveCursor(QTextEdit.MoveOperation.Start)cursor = self.text_edit.textCursor()cursor.setPosition(start_index)self.text_edit.setTextCursor(cursor)def replace_text(self):find_str = self.find_input.text()replace_str = self.replace_input.text()text = self.text_edit.toPlainText()new_text = text.replace(find_str, replace_str)self.text_edit.setPlainText(new_text)if __name__ == '__main__':app = QApplication(sys.argv)ex = TextReplaceTool()sys.exit(app.exec_())

运行gui如图:两次替换可得结果

011011010100010000110101010111110011000101110100

去cyterchef

先binary(二进制)-bytes(字符串)再MD5编码

得 f0f1003afe4ae8ce4aa8e8487a8ab3b6

flag{f0f1003afe4ae8ce4aa8e8487a8ab3b6}

相关文章:

BUUCTF蜘蛛侠呀

解压后发现是流量包,好多icmp包 发现icmp包尾部有$$STRAT打头16进制的字符串,好多重复得。我们只需要提取尾部这些字符串是当icmp的type0时上图标识为褐色的字符串,还需要把16进制的字符串转为对应的字符串(bytes 类型&#xff09…...

大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

win自带录屏怎么用?让视频制作更简单!

win自带录屏怎么用?Windows系统内置的录屏功能,以其便捷高效著称,轻松满足多样化需求。无论是快速捕捉会议要点、制作教学视频,还是直播精彩游戏瞬间,都能一键启动,无缝录制。无需额外安装软件,…...

修改Kali Linux的镜像网站

由于官方的镜像可能会出现连接不上的问题导致无法安装我们所需要的包,所以需要切换镜像站为国内的,以下是一些国内常用的Kali Linux镜像网站,它们提供了与Kali Linux官方网站相同的软件包和资源,但访问速度更快: 清华…...

Docker精讲:基本安装,简单命令及核心概念

docker服务部署 docker是一个容器管理工具,其内部容器才是具体服务,所以我们在安装docker时不需要有太多定制内容,只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包,防止现有依赖包版本过低影响docker安装 yum update2. 安…...

利用git将项目上传到github

采用git而不是在pycharm中共享的原因:可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库,添加文件,上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库,添加文件,上传代码...

828华为云征文 | 华为云X实例CPU性能测试详解与优化策略

目录 引言 1. 测试环境搭建 1.1 测试实例的选择 1.2 CPU性能测试工具介绍 1.3 安装和配置Sysbench 2. CPU性能测试方法 2.1 测试场景设定 2.2 Sysbench单线程CPU性能测试 2.3 Sysbench多线程CPU性能测试(4线程) 2.4 高强度多线程CPU性能测试&a…...

ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?视频加字幕超简单!

ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?在视频制作和观看过程中,添加字幕是一项常见的需求,特别是对于外语视频或需要辅助阅读的场景。ASS(Advanced SubStation Alpha)字幕文件是一种常用的字幕格式&…...

camunda + oracle 启动报错 解决方法

启动报错如下: java.sql.SQLException: sql injection violation, comment not allow : select * from ( select a.*, ROWNUM rnum from (select RES.ID_,RES.REV_,RES.DUEDATE_,RES.PROCESS_INSTANCE_ID_,RES.EXCLUSIVE_from ACT_RU_JOB RESwhere (RES.RETRIES_ &g…...

变幅液压系统比例阀放大器

变幅液压系统是用于控制起重机或类似设备臂架角度变化的关键系统,它通过调节液压缸的伸缩来实现臂架的升降和变幅。以下是一些关于变幅液压系统的基本原理、组成和应用领域的信息: 基本原理:变幅液压系统通常由液压泵、液压缸、液压马达、控制…...

在 Ubuntu 安装 Python3.7(没有弯路)

注:当前Ubuntu版本为18.04 下载Python源码包 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz安装前准备 安装依赖组件 apt-get updateapt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libs…...

Linux 简易shell编写

shell shell是壳,外壳的意思,一般我们使用linux系统有用图形化界面的也有使用命令行界面的,这两个都是一种shell,以命令行为例: 如图这个就是我这里的命令行格式,在$符后面写的就是执行的指令,…...

POLYGON Nature - Low Poly 3D Art by Synty 树木植物

一个低多边形资源包,包含可以添加到现有多边形风格游戏中的树木、植物、地形、岩石、道具和特效 FX 资源。 为 POLYGON 系列提供混合样式树这一新增功能。弥合 POLYGON 与更传统的层级资源之间的差距。还提供了一组经典的 POLYGON 风格的树木和植被以满足你的需求。 该包还附带…...

了解什么是瞪羚企业

瞪羚企业”是指以科技创新或商业模式创新为支撑,进入高成长期的中小企业。识别范围主要是符合国家和省战略性新兴产业发展方向的产业领域,涵盖新兴产业、新一代信息技术(包括大数据、物联网和云计算、高端软件、互联网)、生物健康…...

寻找两个正序数的中位数(C)

最近面试,发现要手撕算法加上机试,被完败,索性给自己立一个目标,一周训练2次。 第一题。 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 …...

YOLOv10涨点改进:IoU优化 | Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU

💡💡💡现有IoU问题点:IoU (Intersection over Union)作为模型训练的关键,极大地显示了当前预测框与Ground Truth框之间的差异。后续研究者不断在IoU中加入更多的考虑因素,如中心距离、纵横比等。然而,仅仅提炼几何差异是有上限的;而且新的对价指数与借据本身存在潜在…...

Spring Boot 实现动态配置导出,同时支持公式和动态下拉框渲染和性能优化案例示范

在业务系统中,数据导出是一个非常常见且重要的功能,本文将详细介绍如何在 Spring Boot 中实现这一功能,并结合 MySQL 数据库、MyBatis 作为数据访问层,EasyExcel 作为导出工具,展示如何在电商交易系统中搭建灵活、可扩…...

一网打尽 运维必封的50个高危端口清单,零基础入门到精通,收藏这一篇就够了

文件传输相关端口: • TCP 20、21:FTP 服务(文件传输协议)端口,FTP 传输数据时未加密,容易受到攻击,如匿名上传下载、爆破、嗅探、远程执行等攻击,可能导致敏感文件泄露。 • TCP …...

方法 WebDriverWait

定义: WebDriverWait是Selenium WebDriver提供的一个工具类,它允许你设置等待条件,直到这个条件成立,才继续执行代码。这对于处理网页上的异步加载元素特别有用,比如等待某个元素变得可见、可点击等。 from se…...

LOESS(Locally Estimated Scatterplot Smoothing)

文章目录 LOESS 原理详解:LOESS 的优点:LOESS 的缺点:Python 实现代码:代码说明: LOESS(Locally Estimated Scatterplot Smoothing),即局部加权回归,是一种非参数回归方法…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...