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

ctfshow-jwt

将信息进行安全的封装,以json的方式传递

三部分分别是:

Header

{

'typ': 'JWT' token类型

'alg': 'HS256' 算法名称

}

将这个信息进行base64加密,构成了第一部分

payload载荷,存放主要信息的地方

{

"sub": '1234567890', 标准中注册的声明

"name": 'john', 公共的声明

"admin" :true 私有的声明

}

base64加密,得到jwt第二部分

第三部分Signature签名

签名是将加密后的header和payload用点拼接,再将结果通过Header声明的算法

进行加密,构成了jwt整个第三部分

Signature也是由三部分组成的,第一部分加密之后的header,第二部分加密之后的payload,第三部分它对前两个信息的再次进行加密

先将header和payload进行base64加密,然后用点拼接,之后用header指定的算法进行加密,得到结果拼接到第三部分

web345

jwt抓个包看一下

解码第二部分

修改user成admin,直接拼接到原header发现不行

这个时候又尝试解header的base64得到

{"alg":"None","typ":"jwt"}

修改None成HS256再base64加密

eyJhbGciOiJIUzI1NiIsInR5cCI6Imp3dCJ9.W3siaXNzIjoiYWRtaW4iLCJpYXQiOjE3MDIyNjkwMzAsImV4cCI6MTcwMjI3NjIzMCwibmJmIjoxNzAyMjY5MDMwLCJzdWIiOiJhZG1pbiIsImp0aSI6ImYyMDYyYTMxYTdmMGU0MGE0MjgxZTI3NWViZjk2ZDVkIn1d

对用户进行了验证,签名未校验,不要签名就可以成功验证。但是alg不能为None

web346

有签名了

HS256算法加密

将里面的user改为admin,base64加密,去掉后边签名部分(保留最后的 .)

eyJpc3MiOiJhZG1pbiIsImlhdCI6MTczNDk1MzE5NSwiZXhwIjoxNzM0OTYwMzk1LCJuYmYiOjE3MzQ5NTMxOTUsInN1YiI6ImFkbWluIiwianRpIjoiYjhkMDk5NDU1NWU1ODU0ZjYyMjAzMTk3MjgyYjJlNDMifQ==

alg改为None空,签名会被置空,这样任何 token 都是有效的

原理:通过将alg改成空使token生效,再将user改为admin让服务器认为是admin用户拿到flag

web347

HS256算法加密,但上面说了是弱口令,找一下工具

使用hashcat进行爆破

密钥为 123456

到JWT.io 网站上填上密钥123456 修改sub为admin

web348

和上一题差不多

c-jwt-cracker安装和使用

https://blog.csdn.net/m0_61025358/article/details/134744252

密钥是aaab

密钥输错了,从新弄了一下

web349

题目下面有一个js文件

点击下载自动跳转到另一个页面

解读一下这两段代码

router.get('/', function(req, res, next) {
#定义了一个处理get请求的路由,设置响应内容类型为htmlres.type('html');var privateKey = fs.readFileSync(process.cwd()+'//public//private.key');
#从文件系统同步读取一个私钥文件,这个私钥用于JWT的签名var token = jwt.sign({ user: 'user' }, privateKey, { algorithm: 'RS256' });
#创建一个jwt,包含一个用户信息user,并用私钥签名,指定签名算法为RS256res.cookie('auth', token);#响应中设置一个名为auth的cookie,值为生成的jwtres.end('where is flag?');
结束响应并发送wher is flag?
});
router.post('/', function(req, res, next) {var flag = "flag_here";res.type('html');var auth = req.cookies.auth;#从请求中获取名为auth的cookie,它应该包含客户端发送的jwtvar cert = fs.readFileSync(process.cwd()+'//public/public.key');
#从文件系统同步读取一个公钥文件,用于jwt的验证jwt.verify(auth, cert, function(err, decoded) {
#验证jwt的有效性,如果有效,decoded会包含jwt的载荷(payload)if(decoded.user === 'admin'){
#检测jwt载荷中的user字段是否为admin。res.end(flag);}else{res.end('you are not admin');}});
});

私钥和公钥:私钥用于JWT的签名,公钥用于JWT的验证。私钥应该保密,公钥可以公开。

试着访问一下上面的目录

提示内部错误,删除部分目录试试,删除前面的目录可以下载

将两个全部下载下来

private

public

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNioS2aSHtu6WIU88oWzpShhkb
+r6QPBryJmdaR1a3ToD9sXDbeni5WTsWVKrmzmCk7tu4iNtkmn/r9D/bFcadHGnX
YqlTJItOdHZio3Bi1J2Elxg8IEBKx9g6RggTOGXQFxSxlzLNMRzRC4d2PcA9mxjA
bG1Naz58ibbtogeglQIDAQAB
-----END PUBLIC KEY-----

没什么思路了,抓个包看看

没什么用

看了一下代码,又想了一下既然我有私钥是否能够伪造jwt呢

使用python写了一个脚本用来生成jwt

import jwt
#读取私钥内容
public = open('private.key', 'r').read()
#定义一个载荷,键值对,user:admin
payload={"user":"admin"}
print(jwt.encode(payload, key=public, algorithm='RS256'))#使用私钥和RS256算法生成JWT,并打印

不知道为什么没有成功

看了一下别人写的要用post请求

还可以访问这个网站https://jwt.io/,通过私钥和公钥生成jwt

web350

有个源码包访问下载下来

访问页面还是和上面的一样什么都没有

下载下来的压缩包解压之后里面有很多文件

不过最重要的是public里面的公钥

光有公钥,不能像上一题那样解了,先抓个包看看吧

看一下算法

用的RS256算法加密,搜索一下

RS256(带有SHA-256的 RSA 签名)是一种非对称算法,它使用公钥/私钥对:身份提供者拥有用于生成签名的私钥(秘密)密钥,而 JWT 的消费者获得公钥验证签名。由于与私钥相反,公钥不需要保持安全,因此大多数身份提供者都可以让消费者轻松获取和使用(通常通过元数据 URL)。
  • 对称加密: 加密方和解密方利用同一个秘钥对数据进行加密和解密。
  • 非对称加密: 加密方用私钥加密,并把公钥告诉解密方用于解密。

还是没有什么有用的翻找一下给的代码,找到了routes下的index.js

访问一下私钥和公钥的位置

私钥访问错误

公钥可以下载,但和给的是一样的

在网上找到一篇文章,里面说了jwt的漏洞算法修改,非对称加密修改成对称加密

https://www.cnblogs.com/backlion/p/16699442.html

使用python脚本生成的tonken不行,看了一下别人的脚本,生成的token

<?php

require_once '../../vendor/autoload.php';#引入 Composer 的自动加载器

use Firebase\JWT\JWT;#引入 Firebase\JWT\JWT 类

$str = '{"user":"admin"}';

$payload = json_decode($str,true);#使用json函数将 JSON 字符串解析为 PHP 数组。

$privateKey = file_get_contents("../../loadFile/public.key");

$JWT = JWT::encode($payload, $privateKey, 'HS256');#创建一个 JWT

print_r($JWT);

?>

//eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYWRtaW4ifQ.tUW02ZLnqxC3g29JEh_dGs6bIz93kIXZxUX4uRfXrdU

相关文章:

ctfshow-jwt

将信息进行安全的封装&#xff0c;以json的方式传递 三部分分别是: Header { typ: JWT token类型 alg: HS256 算法名称 } 将这个信息进行base64加密&#xff0c;构成了第一部分 payload载荷&#xff0c;存放主要信息的地方 { "sub": 1234567890, 标准中注册的…...

植物大战僵尸融合版,真无双版,喵版,抽卡版,杂交版v3

我用夸克网盘分享了「植物大战僵尸」链接&#xff1a; https://pan.quark.cn/s/11a45054a4da 融合版‌的作者为B站up主蓝飘飘fly。该版本在原版植物基础上创新地将两种不同的植物种植在一起进行融合&#xff0c;创造出独特的游戏体验‌。‌抽卡版、喵版、无双版是由B站UP主【时…...

将Minio设置为Django的默认Storage(django-storages)

这里写自定义目录标题 前置说明静态文件收集静态文件 使用django-storages来使Django集成Minio安装依赖settings.py测试收集静态文件测试媒体文件 前置说明 静态文件 Django默认的Storage是本地&#xff0c;项目中的CSS、图片、JS都是静态文件。一般会将静态文件放到一个单独…...

MaaS(Model as a Service)

1.MasS是什么&#xff1f; Model as a Service&#xff08;MaaS&#xff09;是一种云计算服务模式&#xff0c;它允许用户通过互联网访问和使用机器学习模型&#xff0c;而不需要自行构建和维护这些模型。MaaS提供了模型的托管、管理和监控&#xff0c;使用户能够专注于应用程…...

Docker怎么关闭容器开机自启,批量好几个容器一起操作?

环境&#xff1a; WSL2 docker v25 问题描述&#xff1a; Docker怎么关闭容器开机自启&#xff0c;批量好几个容器一起操作&#xff1f; 解决方案&#xff1a; 在 Docker 中&#xff0c;您可以使用多种方法来关闭容器并配置它们是否在系统启动时自动启动。以下是具体步骤和…...

训练时开Dropout,推理时不开Dropout的原因以及推理过程是怎样的?(中英双语)

Dropout的概念与应用&#xff1a;基于Transformer模型的深入解析 在深度学习中&#xff0c;Dropout 是一种常用的正则化技术&#xff0c;主要用于防止神经网络的过拟合。在训练过程中&#xff0c;Dropout通过随机丢弃神经网络中的一部分神经元&#xff0c;降低了网络的复杂度&…...

STL heap原理和用法

在C STL&#xff08;标准模板库&#xff09;中&#xff0c;heap&#xff08;堆&#xff09;并不是一个独立的容器&#xff0c;而是一组基于容器&#xff08;通常是 vector&#xff09;实现的算法函数&#xff0c;用于将一段数据组织成堆的数据结构形式&#xff0c;并提供了一些…...

【DRAM存储器四十三】LPDDR5介绍--寻址

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《某LPDDR5数据手册》 、《JESD209-5C》 前面我们介绍的LPDDR5一个die的数据位宽...

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…...

Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解

文章目录 概述结构案例实现优缺点及使用场景 概述 享元模式也叫蝇量模式&#xff1a;运用共享技术有效地支持大量细粒度的对象&#xff1b; 常用于系统底层开发&#xff0c;解决系统的性能问题。像数据库连接池&#xff0c;里面都是创建好的连接对象&#xff0c;在这些连接对象…...

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…...

肿瘤电场治疗费用

肿瘤电场治疗作为一种前沿的肿瘤治疗方法&#xff0c;近年来备受关注。该方法通过利用特定频率的交流电场&#xff0c;作用于恶性肿瘤细胞&#xff0c;以达到抑制肿瘤生长的目的。然而&#xff0c;随着这种治疗方法的普及&#xff0c;其费用问题也逐渐成为患者和家属关注的焦点…...

datatables快速入门

官网 进入官网https://datatables.net/ 点击下载 支持多种方式下载 快速入门 这里以cdn的方式演示 https://cdn.datatables.net/ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport&…...

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…...

我的创作纪念日(五年)

慕然回首 平平无奇的周一早晨&#xff0c;收到来自csdn的提醒&#xff0c;创作纪念日五周年了&#xff0c;这也意味着我从事开发行业差不多有整整五年了&#xff0c;五年啊&#xff01;你知道这五年我是怎么过的吗&#xff1f;一句Just do IT&#xff0c;我做it整整做了五年&am…...

企业AI助理背后的技术架构:从数据到智能决策

在当今数字化时代&#xff0c;企业AI助理已经成为推动企业数字化转型和智能化升级的重要工具。它们通过整合企业内外部数据资源&#xff0c;运用先进的算法和模型&#xff0c;为企业提供高效、精准的智能决策支持。本文将深入探讨企业AI助理背后的技术架构&#xff0c;从数据收…...

主流AI视频生成工具|Sora零基础入门指南

Sora是什么&#xff1f; Sora 是 OpenAI 推出的新一代 AI 视频生成工具。它能让用户通过简单的文本描述或图片提示&#xff0c;快速生成高质量的视频内容。无论是广告短片、创意视频&#xff0c;还是实验性艺术作品&#xff0c;Sora 都能帮助创作者以极低的门槛实现自己的想法。…...

单元测试/系统测试/集成测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…...

前端文件下载多方式集合

基于vueelement UI框架 // ts-ignore import axios from "axios"; import { ElMessage } from "element-plus"; import webConfig from "/config";class FileDownload {/*** 文件流下载* param url string 下载地址* param params object 请求…...

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时&#xff0c;给数据库打了一个快照&#xff0c;且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

Java进阶学习笔记|面向对象

第一章.类和对象 1.面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓 2.面向对象:自己的事情别人帮忙去干,代表语言Java语言 洗衣服:自己的事情别人干 -> 全自动洗衣机3.为啥要使用面向对…...

ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)

一、简介&#xff08;节选手册&#xff09; 资料参考https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32h2/api-reference/peripherals/adc_calibration.html 1 概述 ESP32-H2 搭载了以下模拟外设&#xff1a; • 一个 12 位逐次逼近型模拟数字转换器 (SAR ADC)&…...

二叉树的右视图

199. 二叉树的右视图 已解答 中等 相关标签 相关企业 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 # Definition for a binary tree node. # class TreeNode(object): #…...

Pinpoint 是一个开源的分布式追踪系统

pinpointagent2.2.2.tar 是 Pinpoint 的一个版本&#xff0c;Pinpoint 是一个开源的分布式追踪系统&#xff0c;专门用于对 Java 应用程序进行性能监控、日志记录和故障诊断。它可以帮助开发人员和运维人员追踪和分析微服务架构中服务之间的调用链&#xff0c;并进行性能分析。…...

React 脚手架使用指南

React 脚手架使用指南 目录 概述创建项目项目结构常用命令配置说明最佳实践 概述 什么是 React 脚手架&#xff1f; React 脚手架(Create React App)是 Facebook 官方提供的创建 React 单页应用的工具。它提供了一个零配置的现代构建设置。 为什么使用脚手架&#xff1f;…...

Win10提示“缺少fbgemm.dll”怎么办?缺失fbgemm.dll文件的修复方法来啦!

fbgemm.dll文件的作用 fbgemm.dll&#xff08;Facebook GEMM library&#xff09;是一个动态链接库文件&#xff0c;它主要用于优化矩阵乘法运算&#xff0c;提高计算性能。虽然它不是Windows 10系统的核心组件&#xff0c;但在某些应用程序或游戏中&#xff0c;尤其是那些需要…...

vue2 elementui if导致的rules判断失效

优化目标 和 目标转化出价必填的 切换的时候还会隐藏掉 这时候的if语句会导致rules判断失效 我的办法是把判断拉到外面 别放在el-form-item里 <section v-if"unitForm.baseTarget OCPM && unitForm.cpaTargetOptions ! undefined && unitForm.cpaTa…...

基于科大讯飞大模型Spark 4.0 Ultar 的微信聊天机器人搭建教程---零基础搭建最详细图文版!!!

1、软件的下载及部署 搭建该微信聊天机器人&#xff0c;主要依赖的编程语言为python&#xff0c;故需要搭建python的开发环境&#xff0c;主要包含python解释器的下载与安装以及编译器pycharm的下载与安装 1.1 python解释器的下载与安装 python解释器官网&#xff1a;https:…...

SpringBoot整合Netty

前言 Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高并发协议服务器和客户端。 Netty主要基于Java NIO实现,提供了异步和事件驱动的网络编程工具,简化了TCP和UDP服务器的编程。 Netty广泛应用于分布式系统、实时通信、游戏开发等领域,例如,…...

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…...

《 OpenCV 环境搭建》

《OpenCV 环境搭建》 一、OpenCV 简介二、准备工作三、安装 OpenCV&#xff08;一&#xff09;获取安装包&#xff08;二&#xff09;安装过程 四、配置环境变量&#xff08;一&#xff09;系统环境变量配置&#xff08;二&#xff09;项目环境变量配置&#xff08;以 Visual S…...

【阅读记录-章节7】Build a Large Language Model (From Scratch)

系列文章目录 【阅读记录-章节1】Build a Large Language Model (From Scratch) 【阅读记录-章节2】Build a Large Language Model (From Scratch) 【阅读记录-章节3】Build a Large Language Model (From Scratch) 【阅读记录-章节4】Build a Large Language Model (From Scr…...

在js中实现下载base64数据,兼容低版本

详细步骤如下 1、解析 Base64 数据&#xff1a; 如果数据流中包含前缀 data:…;base64,&#xff0c;先分离 MIME 类型和 Base64 数据部分。如果没有前缀&#xff0c;假设默认 MIME 类型&#xff08;如 application/octet-stream&#xff09;。 2、Base64 解码&#xff1a; 使…...

垃圾分割数据集labelme格式659张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;659 标注数量(json文件个数)&#xff1a;659 标注类别数&#xff1a;1 标注类别名称:["garbage"] 每个类别标注的框数&#…...

深入探索 npm cache clean --force:清理 npm 缓存的艺术

npm 是 JavaScript 编程语言的包管理器&#xff0c;它是 Node.js 运行环境的默认包管理器。npm 提供了一个丰富的生态系统&#xff0c;包括数以百万计的可重用代码包。然而&#xff0c;随着时间的推移&#xff0c;npm 的缓存可能会变得庞大&#xff0c;影响性能或导致一些奇怪的…...

Flink中并行度和slot的关系——任务和任务槽

一、任务槽&#xff08;task slots) Flink的每一个TaskManager是一个JVM进程&#xff0c;在其上可以运行多个线程&#xff08;任务task&#xff09;&#xff0c;那么每个线程可以拥有多少进程资源呢&#xff1f;任务槽就是这样一个概念&#xff0c;对taskManager上每个任务运行…...

22【AUTOSAR自适应平台设计的概述01】杂项概念介绍

1.AUTOSAR自适应平台设计的概述 本小课题主要是让读者对AUTOSAR自适应平台设计的思路有个宏观的概念,不拘泥于具体的技术细节。 总结如下: 概述AUTOSAR自适应平台(AP)的设计。为AP用户和实施者提供总体设计和关键概念2.具体的章节由以下几个部分组成: 技术范围和方法: 介…...

基础运维学习计划-base版

目录 需要学习的内容&#xff1f; liunx基础 sql/mysql基础 tcp/ip协议基础 http基础 dns基础 网络基础&#xff1a;交换&路由概念&原理 常见网络协议 月学习计划 12.26 日 &#xff08;bilibili自己找视频看看&#xff0c;资源很多&#xff09; 12.27日 1…...

Golang的发展历程

Golang的发展历程可以分为以下几个阶段&#xff1a; 设计阶段&#xff1a;2007年&#xff0c;Google开始研究开发一种新的编程语言&#xff0c;主要出于对C和Java等编程语言的不足之处的反思。经过一年多的研究和讨论&#xff0c;Golang的设计方案得到确定&#xff0c;主要包括…...

数据结构之线性表之顺序表

定义&#xff1a; 由n&#xff08;n>0&#xff09;个数据特性相同的元素构成的有限序列称为线性表 简单来说n个相同数据类型的数据组wsw合在一起的这么一个集合就是一个线性表 线性表包括顺序表和链表 1. 顺序表&#xff08;我们所有的代码实现都用函数来封装&#xff09…...

GESP202309 二级【小杨的 X 字矩阵】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202309 二级] 小杨的 X 字矩阵 题目描述 小杨想要构造一个 的 X 字矩阵&#xff08; 为奇数&#xff09;&#xff0c;这个矩阵的两条对角线都是半角加号 &#xff0c;其余都是半角减号 - 。例如&#xff0c;一个 5 5 5 \times 5 5…...

流量主微信小程序工具类去水印

工具类微信小程序流量主带后台管理&#xff0c;可开通广告&#xff0c;带自有后台管理&#xff0c;不借助第三方接口 介绍 支持抖音&#xff0c;小红书&#xff0c;哔哩哔哩视频水印去除&#xff0c;功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能&#xff0c…...

Es搭建——单节点——Linux

Es搭建——单节点——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/downloads/elasticsearch 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv elastics…...

linux安装idea

参考原网址&#xff1a;在Linux系统中安装idea教程_idea linux-CSDN博客 1.下载idea Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选择Download&#xff0c;下载正确的文件名&#xff1a;ideaIU-2024.3.1.1.tar.gz 2.安装vim sudo apt install vim 3.解压…...

PLSQL 客户端连接 Oracle 数据库配置

1. 安装Oracle客户端 首先&#xff0c;安装Oracle客户端。可以从Oracle官方网站下载Oracle Instant Client, 安装完成后&#xff0c;请记住安装路径&#xff0c;因为将在后续步骤中需要用到它。 2. 配置环境变量 添加环境变量 ORACLE_HOME 安装Oracle客户端后&#xff0c;配…...

C#调用OpenXml,读取excel行数据,遇到空单元跳过现象处理

问题及现象 在OpenXML中文件不包含空白单元格的条目&#xff0c;这就是跳过空白单元格的原因。 所以如果当我们打开一个excel&#xff0c;读取一个表格数据&#xff0c;发现如果有空单元格&#xff0c;openXML会跳过导致读取的数据发生错位。 比如这个是原始的excel表格数据…...

【计算机视觉CV-图像分类】06 - VGGNet的鲜花分类实现:从数据预处理到模型优化的完整实战!

目录 引言 VGGNet概述 VGGNet的网络架构 基于预训练VGGNet的五类鲜花分类实现 4.1 数据准备与预处理 4.2 模型实例化与参数调整 4.3 模型训练与保存最优模型 4.4 模型导入与预测 4.5 训练过程的可视化 模型优化与防止过拟合 总结与展望 参考文献 引言 在计算机视觉…...

QT 控件定义为智能指针引发的bug

问题描述&#xff1a; std::unique_ptr<QStackedLayout> m_stacked_layout; 如上为定义&#xff1b; 调用&#xff1a; Line13ABClient::Line13ABClient(QWidget *parent) : BaseWidget(parent) { // 成员变量初始化 m_get_ready false; m_tittle_wnd…...

@register_model 装饰器

使用 register_model 装饰器来注册模型类有以下几个优势&#xff1a; 自动化注册&#xff1a; 通过装饰器自动将模型类注册到一个全局字典中&#xff0c;避免了手动注册的繁琐操作&#xff0c;使代码更加简洁和易于维护。 易于扩展&#xff1a; 可以方便地添加新模型&#xff…...

图像处理-Ch7-图像金字塔和其他变换

Ch7 小波变换&其他图像变换 文章目录 Ch7 小波变换&其他图像变换背景知识(bk)图像金字塔(Image Pyramid)子带编码(Sub-band Coding)Z - 变换(线性变换)完美重建滤波器组(PCFB, Perfect Construction Filter Banks)有限脉冲响应&#xff08;FIR&#xff09;滤波器双正交…...