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

SHCTF-REVERSE

前言

之前写的,一直没发,留个记录吧,万一哪天记录掉了起码在csdn有个念想

1.ezapk

反编译

快速定位关键函数

package com.mycheck.ezjv;import adrt.ADRTLogCatReader;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.nio.charset.StandardCharsets;
import java.util.Base64;/* loaded from: classes.dex */
public class MainActivity extends Activity {byte[] key = {(byte) 12, (byte) 15, (byte) 25, (byte) 30, (byte) 36};@Override // android.app.Activityprotected void onCreate(Bundle bundle) {ADRTLogCatReader.onContext(this, "com.aide.ui.mgai");super.onCreate(bundle);setContentView(R.layout.activity_main);Check(this);}public static String Encode(String str, byte[] bArr) {StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {sb.append((char) (((char) (((char) (str.charAt(i) ^ bArr[i % bArr.length])) + 6)) * 2));}return Base64.getEncoder().encodeToString(sb.toString().getBytes(StandardCharsets.UTF_8));}public void Check(Context context) {((Button) findViewById(R.id.Button1)).setOnClickListener(new View.OnClickListener(this, (EditText) findViewById(R.id.test1), context) { // from class: com.mycheck.ezjv.MainActivity.100000000private final MainActivity this$0;private final Context val$context;private final EditText val$myedit;{this.this$0 = this;this.val$myedit = r9;this.val$context = context;}@Override // android.view.View.OnClickListenerpublic void onClick(View view) {if (!MainActivity.Encode(this.val$myedit.getText().toString(), this.this$0.key).equals("woLDgMOgw7hEwoJQw7zDtsKow7TDpMOMZMOow75QxIbDnsKmw6Z4UMK0w7rCklDCrMKqwqbDtMOOw6DDsg==")) {Toast.makeText(this.val$context, "Wrong! Try again~", 1).show();} else {Toast.makeText(this.val$context, "You Win!!", 1).show();}}});}
}

解密逻辑

  1. 字符串中的每个字符与一个循环使用的字节数组进行异或(XOR)操作。
  2. 对得到的结果加6。
  3. 将结果乘以2。
  4. 最后使用Base64编码。

解密脚本

import base64# 加密时使用的密钥
key = [12, 15, 25, 30, 36]def decode(encoded_str, key):# Base64 解码decoded_bytes = base64.b64decode(encoded_str)decoded_str = decoded_bytes.decode('utf-8')# 解密过程result = []for i in range(len(decoded_str)):ch = ord(decoded_str[i])ch = chr((ch // 2) - 6)ch = chr(ord(ch) ^ key[i % len(key)])result.append(ch)return ''.join(result)if __name__ == "__main__":encoded_str = "woLDgMOgw7hEwoJQw7zDtsKow7TDpMOMZMOow75QxIbDnsKmw6Z4UMK0w7rCklDCrMKqwqbDtMOOw6DDsg=="print("Decoded string:", decode(encoded_str, key))

7Ush87-akjxcy2Ju-dwia9;JSO-IQixnsm

验证一下

SHCTF{7Ush87-akjxcy2Ju-dwia9;JSO-IQixnsm}

2.rc4

看看sub_1200,再看看sub_12e2函数

很明显这是一个RC4

加密这里又异或了个0x66,这是魔改的一部分

写出解密脚本

def swap_bytes(a, b):return b, adef sub_1200(key, sbox_size=256):"""Initialize the S-box using the key."""sbox = list(range(sbox_size))j = 0for i in range(sbox_size):j = (j + sbox[i] + key[i % len(key)]) % sbox_sizesbox[i], sbox[j] = swap_bytes(sbox[i], sbox[j])return sboxdef decrypt(encrypted_data, sbox):"""Decrypt the data using the initialized S-box."""i, j = 0, 0decrypted_data = bytearray(len(encrypted_data))for k in range(len(encrypted_data)):i = (i + 1) % 256j = (j + sbox[i]) % 256sbox[i], sbox[j] = swap_bytes(sbox[i], sbox[j])temp = sbox[(sbox[i] + sbox[j]) % 256]decrypted_data[k] = encrypted_data[k] ^ temp ^ 0x66return decrypted_datadef main():# 加密后的 flag 数据 (从 v4 数组中获取)encrypted_flag = [0x5B3C8F65423FAB21,0x691AE7846E05170C,0x111F7077C3]# 将加密后的 flag 转换为字节数组encrypted_data = bytearray()for value in encrypted_flag:encrypted_data.extend(value.to_bytes(8, byteorder='little'))# 密钥 (从 v5 数组中获取)key = [0x212179654B6E6546]# 将密钥转换为字节数组key_bytes = bytearray()for value in key:key_bytes.extend(value.to_bytes(8, byteorder='little'))# 初始化 S-boxsbox = sub_1200(key_bytes)# 解密 flagdecrypted_flag = decrypt(encrypted_data, sbox)# 打印解密后的 flagprint("Decrypted Flag: ", end="")for byte in decrypted_flag:if 32 <= byte <= 126:  # Printable charactersprint(chr(byte), end="")else:print(f"\\x{byte:02x}", end="")print()if __name__ == "__main__":main()

输出一下

SHCTF{rc4_nice_ez!!!}

3.ezxor

查壳,发现无壳

拖进ida64位中,快速定位主函数

data = [-61, 105, 114, -60, 103, 74, -24, 17, 67, -49, 111, 0, -13, 68, 110, -8, 89, 73, -24, 78, 94, -30, 83, 67, -79, 92]

图中的数据提取出来

图中的解密逻辑

根据这个写出解密脚本

def decrypt_data():# 初始数据数组,根据提供的数据填充data = [-61, 105, 114, -60, 103, 74, -24, 17, 67, -49, 111, 0, -13, 68, 110, -8, 89, 73, -24, 78, 94, -30, 83, 67, -79, 92]# 逆向执行异或操作for i in range(26):mod_val = i % 3if mod_val == 1:data[i] ^= 0x21elif mod_val == 2:data[i] ^= 0x31else:data[i] ^= 0x90# 将解密后的字节转换为可读字符串decrypted_str = ''.join([chr(b if b >= 0 else b + 256) for b in data])print("Decrypted string:", decrypted_str)if __name__ == "__main__":decrypt_data()

SHCTF{x0r_N1ce_hxxxoorrr!}

4.gamegame

查壳,发现无壳,丢进ida64中,且发现是数独

模拟写出数独脚本

def is_safe(grid, row, col, num):"""Check if it's safe to place the number in the given position."""# Check the rowfor x in range(9):if grid[row][x] == num:return False# Check the columnfor x in range(9):if grid[x][col] == num:return False# Check the 3x3 subgridstart_row = row - row % 3start_col = col - col % 3for i in range(3):for j in range(3):if grid[i + start_row][j + start_col] == num:return Falsereturn Truedef print_grid(grid):"""Print the Sudoku grid."""for row in grid:print(" ".join(str(num) if num != 0 else '.' for num in row))def is_valid_sudoku(grid):"""Check if the Sudoku grid is valid."""for i in range(9):row_set = set()col_set = set()box_set = set()for j in range(9):if grid[i][j] != 0:if grid[i][j] in row_set:return Falserow_set.add(grid[i][j])if grid[j][i] != 0:if grid[j][i] in col_set:return Falsecol_set.add(grid[j][i])box_row = 3 * (i // 3)box_col = 3 * (i % 3)num = grid[box_row + j // 3][box_col + j % 3]if num != 0:if num in box_set:return Falsebox_set.add(num)return Truedef main():# Initialize an empty 9x9 Sudoku gridgrid = [[0 for _ in range(9)] for _ in range(9)]# Simulate user input of 51 numbersinputs = [5, 3, 4, 6, 7, 8, 9, 1, 2, 6, 7, 2, 1, 9, 5, 3, 4, 8, 1, 9, 8, 3, 4, 2, 5, 6, 7,8, 5, 9, 7, 6, 1, 4, 2, 3, 4, 2, 6, 8, 5, 3, 7, 9, 1, 7, 1, 3, 9, 2, 4, 8, 5, 6,9, 6, 1, 5, 3, 7, 2, 8, 4, 2, 8, 7, 4, 1, 9, 6, 3, 5, 3, 4, 5, 2, 8, 6, 1, 7, 9]v8 = 0while v8 < len(inputs):num = inputs[v8]placed = Falsefor i in range(9):for j in range(9):if grid[i][j] == 0:if is_safe(grid, i, j, num):grid[i][j] = numplaced = Truebreakif placed:breakif not placed:print("no")breakv8 += 1print(f"Placed {num} at position {v8}")print_grid(grid)if is_valid_sudoku(grid):print("yes,\nflag is your input")else:print("no")if __name__ == "__main__":main()

另外一个脚本

import copynon_puzzle = [[5, 3, 0, 0, 7, 0, 0, 0, 0],[6, 0, 0, 1, 9, 5, 0, 0, 0],[0, 9, 8, 0, 0, 0, 0, 6, 0],[8, 0, 0, 0, 6, 0, 0, 0, 3],[4, 0, 0, 8, 0, 3, 0, 0, 1],[7, 0, 0, 0, 2, 0, 0, 0, 6],[0, 6, 0, 0, 0, 0, 2, 8, 0],[0, 0, 0, 4, 1, 9, 0, 0, 5],[0, 0, 0, 0, 8, 0, 0, 7, 9]
]puzzle = copy.deepcopy(non_puzzle)def is_valid_move(puzzle, row, col, num):if num in puzzle[row]:return Falseif num in [puzzle[r][col] for r in range(9)]:return Falsestart_row, start_col = 3 * (row // 3), 3 * (col // 3)for i in range(3):for j in range(3):if puzzle[start_row + i][start_col + j] == num:return Falsereturn Truedef solve_sudoku(puzzle):for row in range(9):for col in range(9):if puzzle[row][col] == 0:for num in range(1, 10):if is_valid_move(puzzle, row, col, num):puzzle[row][col] = numif solve_sudoku(puzzle):return Truepuzzle[row][col] = 0return Falsereturn Truesolve_sudoku(puzzle)for i in range(len(non_puzzle)):for j in range(len(non_puzzle[i])):if non_puzzle[i][j] == 0:print(puzzle[i][j],end="")

然后我们输出我们刚刚打印的

468912723481342575971422657913948591537428763345261

468912723481342575971422657913948591537428763345261

shctf{468912723481342575971422657913948591537428763345261}

5.babytea

进入主函数

点进去函数

被魔改了一部分的XTEA算法

IDA字符串搜索找到主函数

密钥和密文都很明显。XTEA算法

下面对照给出解密脚本

#include <stdio.h>
#include <stdint.h>void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {unsigned int i;uint32_t v0=v[0], v1=v[1], delta=0x61C88747, sum=delta*num_rounds+0x8DDE2E40;for (i=0; i < num_rounds; i++) {   v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]) ^ v1;sum -= delta;v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]) ^ v0;}v[0]=v0; v[1]=v1;
}
int main()
{uint32_t enflag[] = {0x18C2E339, 0xE9550982, 0x108A30F7, 0x018430DD, 0xD5DE57B0, 0xD43E0740, 0xF42FDDE4, 0x968886E8,0xE5D77B79,0x685D758F};uint32_t key[4] = {1,1,2,3};for(int i=0;i<10;i+=2){uint32_t temp[2];        temp[0] = enflag[i];temp[1] = enflag[i+1];decipher(64,temp,key);printf("%c%c%c%c%c%c%c%c",*((char*)&temp[0]+0),*((char*)&temp[0]+1),*((char*)&temp[0]+2),*((char*)&temp[0]+3),*((char*)&temp[1]+0),*((char*)&temp[1]+1),*((char*)&temp[1]+2),*((char*)&temp[1]+3));}return 0;
}

delta=0x61C88747, sum=delta*num_rounds+0x8DDE2E40;

这是魔改的

shctf{962fd-464d-8f4f-f1fd-a6a0c987c569}

相关文章:

SHCTF-REVERSE

前言 之前写的&#xff0c;一直没发&#xff0c;留个记录吧&#xff0c;万一哪天记录掉了起码在csdn有个念想 1.ezapk 反编译 快速定位关键函数 package com.mycheck.ezjv;import adrt.ADRTLogCatReader; import android.app.Activity; import android.content.Context; impo…...

C++学习:六个月从基础到就业——模板编程:模板特化

C学习&#xff1a;六个月从基础到就业——模板编程&#xff1a;模板特化 本文是我C学习之旅系列的第三十四篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第十二篇&#xff0c;主要介绍C中的模板特化技术。查看完整系列目录了解更多内容。 目录 引言模板特化基础…...

【中级软件设计师】编译和解释程序的翻译阶段、符号表 (附软考真题)

【中级软件设计师】编译和解释程序的翻译阶段、符号表 (附软考真题) 目录 【中级软件设计师】编译和解释程序的翻译阶段、符号表 (附软考真题)一、历年真题二、考点&#xff1a;编译和解释程序的翻译阶段1、解释2、编译3、解释和编译的异同之处4、符号表 三、真题的答案与解析答…...

G1(Garbage-First)垃圾回收器与JVM内存

G1垃圾回收器简介 G1(Garbage-First)是Java虚拟机(JVM)中的一种垃圾回收器,它是针对服务器端应用设计的,旨在提供高吞吐量和低延迟的垃圾回收性能。G1垃圾回收器的主要目标是高效地管理JVM的堆内存,同时尽量减少垃圾回收(GC)过程对应用程序性能的影响。 特点 分区回收…...

STM32 驱动 INA226 测量电流电压功率

文章目录 一、INA226简介二、引脚功能三、寄存器介绍1.配置寄存器 0x002.分流电压寄存器 0x013.总线电压寄存器 0x024.功率寄存器 0x035.电流寄存器 0x046.基准寄存器 0x05 四、IIC 时序说明1.写时序2.读时序 五、程序六、实验现象1.线路图2.输出数据 一、INA226简介 INA226 是…...

解决新搭建的centos虚拟器,yum下载不了的问题

1. 检查网络连接 确保虚拟机可以访问互联网&#xff1a; ping 8.8.8.8 # 测试基础网络连通性若不通&#xff1a; 检查网卡 IP 配置&#xff08;参考之前的 IP 恢复步骤&#xff09;。 确认虚拟机网络模式&#xff08;如 NAT 或桥接模式&#xff09;是否允许访问外网。 检查网…...

python连接Elasticsearch并完成增删改查

python库提供了elasticsearch模块,可以通过以下命令进行快速安装,但是有个细节需要注意一下,安装的模块版本要跟es软件版本一致,此处举例:7.8.1 pip install elasticsearch==7.8.1 首先连接elasticsearch,以下是免密示例 from elasticsearch import Elasticsearch# El…...

Python爬虫(7)Python数据存储实战:CSV文件读写与复杂数据处理指南

目录 一、背景与核心价值‌二、CSV基础与核心应用场景‌‌2.1 CSV文件结构解析‌2.2 适用场景 三、Python csv模块核心操作‌3.1 安装与基础读写‌3.2 高级功能&#xff1a;字典读写与自定义格式‌ 四、处理复杂数据场景‌4.1 含特殊字符的字段‌4.2 嵌套数据&#xff08;如JSO…...

Spring Boot 中的条件注解

Spring Boot条件注解的汇总&#xff1a; 注解作用判断依据使用场景ConditionalOnBean容器中存在指定Bean时&#xff0c;被注解的配置或Bean定义生效指定Bean在容器中存在依赖其他已存在Bean时配置相关功能ConditionalOnCheckpointRestore在特定检查点恢复相关条件满足时生效满…...

Java 字符串分解技术:substring、tokenizing 和 trimming 方法详解

关键点 Java 字符串处理是开发中不可或缺的一部分&#xff0c;广泛用于数据解析和格式化。substring() 方法能够精确提取字符串的子串&#xff0c;需注意索引范围以避免异常。String.split() 是分词的首选方法&#xff0c;支持正则表达式&#xff0c;灵活性高。trim() 和 stri…...

OpenCV进阶操作:图像金字塔

文章目录 前言一、图像金字塔1、什么是图像金字塔2、金字塔类型1&#xff09; 高斯金字塔 (Gaussian Pyramid)2&#xff09;拉普拉斯金字塔 (Laplacian Pyramid) 3、图像金字塔的作用 二、图像金字塔中的操作1、向下采样步骤 2、向上采样步骤 3、拉普拉斯金字塔4、结论 三、代码…...

Rust游戏开发全栈指南:从理论到实践的革新之路

一、Rust游戏开发生态全景 1.1 核心引擎框架 Rust游戏生态已形成多层级工具链&#xff0c;覆盖从轻量级2D到3A级项目的开发需求&#xff1a; Bevy&#xff1a;采用ECS架构的模块化引擎&#xff0c;提供优雅的API设计和活跃社区支持&#xff0c;支持实时热重载和跨平台部署Fy…...

[GXYCTF2019]Ping Ping Ping

解题步骤 1、先使用 内敛执行 查看当前的php文件 执行 命令执行 发现空格被过滤 ?ip127.0.0.1$IFS|$IFSwhomi 还有一个点就是这个 执行的命令是不能进行拼接的 可能就是被过滤了 | 所以我们使用 ; 进行绕过一下 空格过滤代替 $IFS ${IFS} ${IFS}$9 //这里$1到$9都可以 $IFS$1…...

马哥教育Linux云计算运维课程

课程大小&#xff1a;19.1G 课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/90640128 更多资源下载&#xff1a;关注我 你是否找了很多资料看了很多视频聊了很多群友&#xff0c;却发现自己技术仍然原地踏步&#xff1f;本教程联合BAT一线导师倾囊相授…...

科技打头阵,创新赢未来——中科视界携千眼狼超高速摄像机亮相第三届科交会

2025年4月26日&#xff0c;合肥&#xff0c;第三届中国&#xff08;安徽&#xff09;科技创新成果转化交易会国际合作板块展区&#xff0c;中科视界及其旗下品牌“千眼狼”高速摄像机成为展会焦点。作为国内科学仪器的领军企业&#xff0c;中科视界以“科技打头阵&#xff0c;创…...

【Flutter】Unity 三端封装方案:Android / iOS / Web

关联文档&#xff1a;【方案分享】Flutter Unity 跨平台三维渲染架构设计全解&#xff1a;插件封装、通信机制与热更新机制—— 支持 Android/iOS/Web 的 3D 内容嵌入与远程资源管理&#xff0c;助力 XR 项目落地 —— 支持 Android/iOS/Web 的 3D 内容嵌入与远程资源管理&…...

高能效计算:破解算力增长与能源约束的科技密码

引言 在人工智能和大模型技术迅猛发展的今天&#xff0c;全球算力需求正以每年50%的速度激增[3]。然而&#xff0c;传统计算范式已逼近物理极限——国际能源署预测&#xff0c;到2030年数据中心的全球电力消耗占比可能突破3%[3]。面对这场"算力革命"与"能源危机…...

【质量管理】TRIZ(萃智)的工程系统进化法则

在文章【质量管理】现代TRIZ&#xff08;萃智&#xff09;理论概述-CSDN博客 我们谈到到现代TRIZ的理论、TRIZ与传统创新的差异等。在文章中我们有说到TRIZ的创始人阿奇舒勒发现其实技术的进化是有规律可循的。 那到底技术进步有什么规律呢&#xff1f; 技术进化发展趋势和路径…...

FastAPI系列07:“请求-响应”过程高阶技巧

“请求-响应”过程高阶技巧 1、自定义 Request自定义 Request的用途如何自定义 Request 2、自定义APIRouteAPIRoute的用途自定义 APIRoute的用途如何自定义 APIRoute 3、使用BackgroundTasks&#xff08;后台任务&#xff09;BackgroundTasks的用途如何使用BackgroundTasksBack…...

游戏服务器不加防护能活多久?

游戏服务器若不加防护&#xff0c;其存活时间受多种因素影响&#xff0c;但通常面临极高的安全风险&#xff0c;可能在数小时至数天内因攻击或漏洞利用而崩溃。以下是具体分析&#xff1a; 1. DDoS攻击与勒索风险 未加防护的服务器极易成为黑客攻击目标&#xff0c;尤其是DDoS…...

Embedding入门概述

概述 Embedding&#xff0c;嵌入&#xff0c;一种将离散的符号数据&#xff08;如单词、句子、图像等&#xff09;映射到连续的向量空间中的技术&#xff0c;这些向量能够捕捉数据之间的语义、结构等关系。就是把原本难以直接处理的符号数据&#xff0c;转换成计算机更容易理解…...

革新桌面自动化:微软UFO²操作系统深度解析与未来展望

一、系统架构&#xff1a;多智能体协同的OS级创新 微软UFO&#xff08;Unified Framework for Operations&#xff09;是首个深度集成于Windows底层的多智能体操作系统&#xff0c;其核心架构由HostAgent控制中枢与模块化AppAgent执行单元构成。 ​HostAgent作为系统级调度器…...

【Java】分布式事务解决方案

分布式事务是指在分布式系统中&#xff0c;为了保证多个节点上的操作要么全部成功提交&#xff0c;要么全部失败回滚&#xff0c;所采取的一系列技术手段和协议。 CAP理论 在一个分布式系统中以下三个基本属性无法被同时满足&#xff1a; C(一致性)&#xff1a;一致性是指写…...

es数据导出

有大数据量导出的需求 整体思路&#xff1a;分页查询es&#xff0c;一页查询2000条&#xff0c;下一页查询的截止时间取上一页最后一条记录的创建时间&#xff08;因为分页是按照创建时间逆序排列的&#xff09;&#xff0c;组装最后导出的list&#xff0c;利用EasyExcel导出到…...

chrony服务器(2)

安装与配置 [rootserver ~]# systemctl status ntp # 查看ntp状态 安装 # 默认已安装&#xff0c;若需要安装则可执行&#xff1a; [rootserver ~]# yum install chrony -y [rootserver ~]# systemctl start chronyd [rootserver ~]# systemctl enable chronyd Chrony配置文…...

C++入门小馆: STL 之queue和stack

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…...

从零搭建云原生后端系统 —— 一次真实项目实践分享

一、引言&#xff1a;为什么选择云原生技术打造后端&#xff1f; 在当今数字化加速的时代&#xff0c;业务需求变化频繁&#xff0c;应用需要快速开发、快速上线、快速迭代。传统单体应用后端架构在灵活性、扩展性和稳定性方面越来越难以满足需求。 而云原生&#xff08;Clou…...

东田数码科技前端面经

东田数码科技有限公司前端面经 一个月三次面试&#xff0c;也是逐渐积攒了许多经验&#xff0c;也有遇到面试官问到的重复的问题&#xff0c;也有一些我不懂的问题&#xff0c;以下是4.27东田前端面经&#xff0c;希望给大家做参考。 1-自我介绍 我是ac鸽&#xff0c;就读与…...

【音视频】SDL窗口显示

SDL视频显示函数简介 SDL_Init()&#xff1a; 初始化SDL系统SDL_CreateWindow()&#xff1a;创建窗口SDL_WindowSDL_CreateRenderer()&#xff1a;创建渲染器SDL_RendererSDL_CreateTexture()&#xff1a;创建纹理SDL_TextureSDL_UpdateTexture()&#xff1a; 设置纹理的数据S…...

小球在摆线上下落的物理过程MATLAB代码

‌物理建模‌&#xff1a; 使用摆线参数方程定义轨迹&#xff1a;x r(θ - sinθ), y r(1 - cosθ)通过微分方程求解角度θ随时间变化关系&#xff0c;考虑能量守恒定律计算实时速度分量和切向加速度 ‌可视化特性‌&#xff1a; 灰色虚线显示完整摆线轨迹红色小球实时显示当…...

【设计模式】享元模式

享元模式属于结构型设计模式 核心思想是通过共享技术&#xff0c;实现相似对象的高效复用。用 1%的资源支撑100%的需求——通过对象状态的分离与共享&#xff0c;用最小内存支持海量对象 内部状态&#xff1a;对象中不变的部分共享 外部状态&#xff1a;对象中变化的部分非共享…...

R中实现数值求导的包numDeriv

介绍 numDeriv 是一个用于数值求导的 R 包&#xff0c;它提供了计算函数导数的简单方法&#xff0c;支持一阶导数和高阶导数的计算。 计算一阶导数 grad(func, x, method"Richardson", sideNULL, eps1e-4, method.argslist(), ...) 参数&#xff1a; func&#x…...

常用的多传感器数据融合方法

1. 概述 根据具体需求&#xff08;实时性、计算资源、噪声特性&#xff09;选择合适的方法&#xff0c;实际应用中常结合多种方法&#xff08;如UKF与神经网络结合&#xff09;。 传统方法 &#xff08;KF/EKF/UKF/PF&#xff09;依赖数学模型&#xff0c;适合动态系统&#…...

[Lc_week] 447 | 155 | Q1 | hash | pair {}调用

447_Q1 题解 class Solution {typedef pair<int,int> PII;// 自定义哈希函数struct HashPII {size_t operator()(const PII& p) const {return hash<int>()(p.first) ^ (hash<int>()(p.second) << 1);}};public:int countCoveredBuildings(int n,…...

HTML5 新特性详解:语义化标签、表单与音视频嵌入

前言 HTML5作为当前Web开发的核心技术&#xff0c;为开发者提供了更强大、更语义化的工具集。本文将深入探讨HTML5的三大核心特性&#xff1a;语义化标签、增强的表单功能以及原生的音视频支持&#xff0c;帮助开发者构建更现代化、更易维护的网页应用。 一、HTML5语义化标签…...

关于 React Fiber 架构、Hooks 原理

下面将详细介绍你提到的关于 React Fiber 架构、Hooks 原理等相关知识点&#xff1a; React Fiber 架构概述 1. 架构演变 在 React 16 版本之前&#xff0c;采用的是栈调和&#xff08;Stack Reconciler&#xff09;&#xff0c;流程是 JSX 经过 render 函数转换为虚拟 DOM&…...

音视频之H.265/HEVC熵编码

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...

【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调

目录 1 简介2 本地部署2.1 配置环境2.2 下载模型 3 文生视频3.1 运行命令3.2 生成结果 4 图生视频4.1 运行命令4.2 生成结果 5 首尾帧生成视频5.1 运行命令5.2 生成结果 6 提示词扩展7 LoRA微调 1 简介 2 本地部署 2.1 配置环境 将Wan2.1工程克隆到本地&#xff1a; git cl…...

Java高频面试之并发编程-09

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;详细说说ThreadLocal ThreadLocal 是 Java 中用于实现线程本地变量的工具类&#xff0c;主要解决多线程环境下共享变量的…...

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过(CVE-2024-43441)

[Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过&#xff08;CVE-2024-43441&#xff09; Apache HugeGraph 是一款快速、高度可扩展的图数据库。它提供了完整的图数据库功能&#xff0c;具有出色的性能和企业级的可靠性。 Apache HugeGraph 存在一个 JWT t…...

MySQL最新安装、连接、卸载教程(Windows下)

文章目录 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09;1.MySQL安装2.MySQL连接2.1 命令行连接2.2 图形化连接&#xff08;推荐&#xff09; 3.MySQL卸载参考 MySQL最新安装、连接、卸载教程&#xff08;Windows下&#xff09; 1.MySQL安装 MySQL 一共可以…...

Scala 函数柯里化及闭包

一、柯里化 1.1 定义 柯里化是将一个接受多个参数的函数转换为一系列接受单个参数的函数的过程。每个函数返回一个新函数&#xff0c;直到所有参数都被收集完毕&#xff0c;最终返回结果。 1.2 示例 非柯里化函数&#xff08;普通多参数函数&#xff09; def add(a: Int, b…...

EasyRTC嵌入式音视频通信SDK助力视频客服,开启智能服务新时代

一、背景 在数字化服务浪潮下&#xff0c;客户对服务体验的要求日益提升&#xff0c;传统语音及文字客服在复杂业务沟通、可视化指导等场景下渐显不足。视频客服虽成为企业服务升级的关键方向&#xff0c;但普遍面临音视频延迟高、画质模糊、多端适配难、功能扩展性差等问题&a…...

OceanBase数据库-学习笔记1-概论

多租户概念 集群和分布式 随着互联网、物联网和大数据技术的发展&#xff0c;数据量呈指数级增长&#xff0c;单机数据库难以存储和处理如此庞大的数据。现代应用通常需要支持大量用户同时访问&#xff0c;单机数据库在高并发场景下容易成为性能瓶颈。单点故障是单机数据库的…...

Android 理清 Gradle、AGP、Groovy 和构建文件之间的关系

在 Android 开发中&#xff0c;我们常常会接触到一系列看似相近却各有分工的名词&#xff0c;比如&#xff1a;Gradle、Groovy、AGP、gradle-wrapper.properties、build.gradle、settings.gradle 等等。 它们彼此之间到底是什么关系&#xff1f;各自又承担了什么角色&#xff1…...

ubuntu 安装ollama后,如何让外网访问?

官网下载linux版本&#xff1a;https://ollama.com/download/linux 1、一键安装和运行 curl -fsSL https://ollama.com/install.sh | sh 2、下载和启动deepseek-r1大模型 ollama run deepseek-r1 这种方式的ollama是systemd形式的服务&#xff0c;会随即启动。默认开启了 …...

安卓的Launcher 在哪个环节进行启动

安卓Launcher在系统启动过程中的关键环节启动&#xff0c;具体如下&#xff1a; 内核启动&#xff1a;安卓设备开机后&#xff0c;首先由引导加载程序启动Linux内核。内核负责初始化硬件设备、建立内存管理机制、启动系统进程等基础工作&#xff0c;为整个系统的运行提供底层支…...

【银河麒麟高级服务器操作系统】在VMware虚拟机情况下出现软锁处理过程

系统环境及配置 系统环境 物理机/虚拟机/云/容器 VMware虚拟机&#xff0c;宿主机型号是YK SR750 网络环境 外网/私有网络/无网络 私有网络 硬件环境 机型 VMware Virtual Platform 处理器 Intel(R) Xeon(R) Gold 6348 CPU 2.60GHz 内存 64GB 整机类型/架构 x86…...

Ubuntu 22.04.4操作系统初始化详细配置

上一章节&#xff0c;主要讲解了Ubuntu 22.04.4操作系统的安装&#xff0c;但是在实际生产环境中&#xff0c;需要对Ubuntu操作系统初始化&#xff0c;从而提高系统的性能和稳定性。 一、查看Ubuntu系统版本和内核版本 # 查看系统版本 testubuntu:~$ sudo lsb_release -a Rel…...

[ACTF2020 新生赛]Upload

先写一个万能的一句话木马 使用一句话木马 发现这个是有内容过滤的 过滤了 <? 发现这个过滤的很死那就只能使用 不带 ? 的短标签了 使用script 标签 这个的使用只限于对方的php是5版本的 正好是低版本的 所以直接上传 改一下后缀为 phtml 成功上传 但是我们没有…...