2023-SWPU NSS秋季招新赛(校外赛道)Misc—我要成为原神高手WP
1、题目信息
我是神里绫华的狗!!!

2、解题方法
有个genshin.h文件夹,打开看看发现里面是一堆文件夹0 1A 1A0等等,而且每个文件夹里面都有文件,0 1A 1A0...看着很眼熟,我们用010 Editor随便打开一个文件对比一下,发现0 1A 1A0是行数,而里面的文件名是十六进制byte,写个脚本提取一下信息:
import os
dir_path = r'genshin.h'
# 对文件夹进行排序
def list_sort(list_s):
for i in range(len(list_s)):
for j in range(len(list_s)-1):
if int(list_s[i].rjust(4, '0'), 16) < int(list_s[j].rjust(4, '0'), 16):
tmp = list_s[i]
list_s[i] = list_s[j]
list_s[j] = tmp
return list_s
dir_ls = list_sort(os.listdir(dir_path))
file_h = open(
r'result.h', 'wb')
for i in range(len(dir_ls)):
byte_tmp = os.listdir(dir_path +'\\' +dir_ls[i])[0]
#将十六进制的文件名转换为整数,并将其转换为字节形式,然后写入到 "result.h" 文件中。
file_h.write(int(byte_tmp,16).to_bytes(1,byteorder='little',signed=False))
result.h文件生成为:
#include <iostream>
#include <string>
#include <vector>
#define 香菱 int
#define 雷泽 char
#define 重云 long
#define 诺艾尔 float
#define 行秋 const
#define 菲谢尔 void
#define 砂糖 using
#define 班尼特 namespace
#define 安柏 std
#define 北斗 main
#define 凯亚 cin
#define 凝光 cout
#define 丽莎 scanf
#define 迪奥娜 printf
#define 辛焱 while
#define 罗莎莉亚 for
#define 烟绯 endl
#define 早柚 string
#define 九条裟罗 length
#define 托马 return
#define 五郎 vector
#define 云堇 push_back
#define 久岐忍 +
#define 鹿野院平藏 -
#define 柯莱 *
#define 多莉 /
#define 坎蒂丝 %
#define 莱伊拉 ?
#define 珐露珊 !
#define 瑶瑶 |
#define 米卡 &
#define 卡维 ""
#define 迪卢克 (
#define 莫娜 )
#define 琴 :
#define 刻晴 <
#define 七七 >
#define 温迪 =
#define 可莉 {
#define 达达利亚 }
#define 钟离 ,
#define 阿贝多 .
#define 甘雨 ;
#define 魈 [
#define 胡桃 ]
#define 优菈 _
#define 枫原万叶 ~
#define 神里绫华 ^=
#define 宵宫 ++
#define 雷电将军 --
#define 珊瑚宫心海 <<
#define 荒泷一斗 '!'
#define 申鹤 0
#define 八重神子 1
#define 白术 2
#define 神里绫人 44
#define 夜兰 114514
#define 提纳里 94
#define 我是神里绫华的狗 {114460, 114438, 114438, 114455, 114437, 114457, 114551, 114446, 114479, 114448, 114462, 114488, 114529, 114458, 114466, 114455, 114530, 114493, 114542, 114530, 114468, 114553, 114492, 114442, 114552, 114544, 114531, 114541, 114489, 114528, 114469, 114492, 114451, 114529, 114486, 114453, 114529, 114475, 114458, 114463, 114532, 114464, 114555, 114474};
按照#define 中文对应的字符和数字处理下“我要成为原神高手.miHoYo”文件:
s= '砂糖 班尼特 安柏 甘雨 五郎 刻晴 香菱 七七 赛诺 迪卢克 香菱 派蒙 莫娜 可莉 五郎 刻晴 香菱 七七 荧 甘雨 荧 阿贝多 云堇 迪卢克 申鹤 莫娜 甘雨 荧 阿贝多 云堇 迪卢克 八重神子 莫娜 甘雨 罗莎莉亚 迪卢克 香菱 空 温迪 白术 甘雨 空 刻晴 派蒙 甘雨 空 宵宫 莫娜 可莉 香菱 寝子 温迪 荧 魈 空 鹿野院平藏 八重神子 胡桃 久岐忍 荧 魈 空 鹿野院平藏 白术 胡桃 甘雨 荧 阿贝多 云堇 迪卢克 寝子 莫娜 甘雨 达达利亚 托马 荧 甘雨 达达利亚 早柚 尼禄 迪卢克 行秋 早柚 米卡 派蒙 钟离 行秋 五郎 刻晴 香菱 七七 米卡 空 莫娜 可莉 早柚 荧 温迪 派蒙 甘雨 香菱 寝子 温迪 申鹤 甘雨 罗莎莉亚 迪卢克 雷泽 米卡 太郎丸 琴 荧 莫娜 可莉 香菱 萨古 温迪 空 魈 寝子 胡桃 坎蒂丝 提纳里 甘雨 太郎丸 温迪 荒泷一斗 久岐忍 迪卢克 太郎丸 鹿野院平藏 荒泷一斗 鹿野院平藏 萨古 久岐忍 提纳里 莫娜 坎蒂丝 提纳里 甘雨 寝子 宵宫 甘雨 达达利亚 托马 荧 甘雨 达达利亚 香菱 北斗 迪卢克 莫娜 可莉 香菱 派蒙 魈 胡桃 温迪 我是神里绫华的狗 雷泽 空 魈 神里绫人 胡桃 甘雨 罗莎莉亚 迪卢克 香菱 荧 温迪 申鹤 甘雨 荧 刻晴 神里绫人 甘雨 荧 宵宫 莫娜 可莉 派蒙 魈 荧 胡桃 神里绫华 夜兰 甘雨 空 魈 荧 胡桃 温迪 迪卢克 雷泽 莫娜 派蒙 魈 荧 胡桃 甘雨 达达利亚 五郎 刻晴 香菱 七七 寝子 温迪 赛诺 迪卢克 神里绫人 莫娜 甘雨 早柚 太郎丸 温迪 尼禄 迪卢克 空 钟离 寝子 莫娜 甘雨 凝光 珊瑚宫心海 太郎丸 甘雨 达达利亚'.split(' ')
dict_s = {'香菱':'int','雷泽':'char','重云':'long','诺艾尔':'float','行秋':'const','菲谢尔':'void','砂糖':'using',
'班尼特':'namespace','安柏':'std','北斗':'main','凯亚':'cin','凝光':'cout',
'丽莎':'scanf','迪奥娜':'printf','辛焱':'while','罗莎莉亚':'for','烟绯':'endl',
'早柚':'string','九条裟罗':'length','托马':'return','五郎':'vector','云堇':'push_back',
'久岐忍':'+','鹿野院平藏':'-','柯莱':'*','多莉':'/','坎蒂丝':'%','莱伊拉':'?','珐露珊':'!',
'瑶瑶':'|','米卡':'&','卡维':'""','迪卢克':'(','莫娜':')','琴':':','刻晴':'<','七七':'>',
'温迪':'=','可莉':'{','达达利亚':'}','钟离':',','阿贝多':'.','甘雨':';','魈':'[','胡桃':']',
'优菈':'_','枫原万叶':'~','神里绫华':'^=','宵宫':'++','雷电将军':'--','珊瑚宫心海':'<<',
'荒泷一斗':'\'!\'','申鹤':0,'八重神子':1,'白术':2,'神里绫人':44,'夜兰':114514,'提纳里':94,
'我是神里绫华的狗':{114460, 114438, 114438, 114455, 114437, 114457, 114551, 114446, 114479, 114448, 114462, 114488, 114529, 114458, 114466, 114455, 114530, 114493, 114542, 114530, 114468, 114553, 114492, 114442, 114552, 114544, 114531, 114541, 114489, 114528, 114469, 114492, 114451, 114529, 114486, 114453, 114529, 114475, 114458, 114463, 114532, 114464, 114555, 114474}}
result = ''
for i in range(len(s)):
try:
result += str(dict_s[s[i]]) + ' '
except:
result += s[i] + ' '
print(result)
得到:
using namespace std ; vector < int > 赛诺 ( int 派蒙 ) { vector < int > 荧 ; 荧 . push_back ( 0 ) ; 荧 . push_back ( 1 ) ; for ( int 空 =
2 ; 空 < 派蒙 ; 空 ++ ) { int 寝子 = 荧 [ 空 - 1 ] + 荧 [ 空 - 2 ] ; 荧 . push_back ( 寝子 ) ; } return 荧 ; } string 尼禄 ( const string
& 派蒙 , const vector < int > & 空 ) { string 荧 = 派蒙 ; int 寝子 = 0 ; for ( char & 太郎丸 : 荧 ) { int 萨古 = 空 [ 寝子 ] % 94 ; 太郎丸
= '!' + ( 太郎丸 - '!' - 萨古 + 94 ) % 94 ; 寝子 ++ ; } return 荧 ; } int main ( ) { int 派蒙 [ ] = {114437, 114438, 114442, 114446, 114448, 114451, 114453, 114455, 114457, 114458, 114460, 114462, 114463, 114464, 114466, 114468, 114469, 114474, 114475, 114479, 114486, 114488, 114489, 114492, 114493, 114528, 114529, 114530, 114531, 114532, 114541, 114542, 114544, 114551, 114552, 114553, 114555} char 空 [ 44 ]
; for ( int 荧 = 0 ; 荧 < 44 ; 荧 ++ ) { 派蒙 [ 荧 ] ^= 114514 ; 空 [ 荧 ] = ( char ) 派蒙 [ 荧 ] ; } vector < int > 寝子 = 赛诺 ( 44 ) ;
string 太郎丸 = 尼禄 ( 空 , 寝子 ) ; cout << 太郎丸 ; }
根据上述结果信息,再用python转换一下:
def signal(param_int):
in_list = [0,1]
for i in range(2,param_int):
tmp_i = in_list[i-1] + in_list[i-2]
in_list.append(tmp_i)
return in_list
def nilu(pymen,int_q):
str_in = pymen
tmp_q = 0
result = ''
for i in str_in:
str_tlw = ord(i)
int_sg = int_q[tmp_q] % 94
result += chr(ord('!') + (str_tlw - ord('!') - int_sg + 94)%94)
tmp_q +=1
return result
pymen = [114460, 114438, 114438, 114455, 114437, 114457, 114551, 114446, 114479, 114448, 114462, 114488, 114529, 114458, 114466, 114455, 114530, 114493, 114542, 114530, 114468, 114553, 114492, 114442, 114552, 114544, 114531, 114541, 114489, 114528, 114469, 114492, 114451, 114529, 114486, 114453, 114529, 114475, 114458, 114463, 114532, 114464, 114555, 114474]
list_q=[]
for i in range(44) :
pymen[i] = pymen[i] ^ 114514
list_q.append(chr(pymen[i]))
print(list_q)
int_q = signal(44)
flag = nilu(list_q,int_q)
print(flag)
#NSSCTF{Oh~so_you_play_Genshin_Impact_too!!!}
2023-SWPU NSS秋季招新赛(校外赛道)Misc—我要成为原神高手WP的更多相关文章
- 2022弱口令实验室招新赛CTF赛道WriteUp
Misc 签到 下载附件,得到一张二维码. 扫码,然后根据提示"linux"操作系统,直接cat /flag,得到flag. EasyMisc 下载得到EasyMisc附件,压缩包 ...
- 2019级第一次月赛暨ACM工作室第一次招新赛、补题赛
A:最简单签到,没有之一 Description 此题简单如题意,就是求最大值 Input 多组输入 每组输入输入一串字符串(包括字母和数字),长度小于500 Output 每行输出字符ASCII值与 ...
- ACM团队招新赛题解
标程代码全部为C语言编写.代码中的#if LOCAL_ 至#endif为本地一些调试内容,可以忽略. Xenny的A+B(1)[容易][签到] 签到题,做不出的话可能你有点不太适合ACM了. Xenn ...
- 0RAYS元旦招新赛
一共有4道pwn题,题目不算难,但是挺考验调试能力的. pie 一个main函数就四次溢出... 第一次leak canary,第二次leak libc,第三次直接覆盖返回地址为one_gadgets ...
- 招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)
生活不只是眼前的苟且,还有诗和远方. 架构说明: 要求是采用MVC模式,所以分了下面的几个包,但是由于是第一次写,可能分的也不是很清楚: 这个是后台部分的架构: 这个是前端的的展示: (那个StuLo ...
- ACM_招新笔试题系列——买包子
招新笔试题系列——买包子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小华刚到大学,一天早上她替她室友买早餐,一共要N个包子. ...
- XDTIC2019招新笔试题 + 官方解答
腾讯创新俱乐部2019年招新笔试试题 [1] 小宗学长正在努力学习数论,他写下了一个奇怪的算式: \[ 2019^{2018^{2017^{\dots^{2^1}}}} \] 算式的结果一定很大, ...
- 招新题流程简介(WS2812)
22物电科协软件招新题学习流程 有错误或者不当的地方请在评论区指出 题目简介 使用stm32驱动单一ws2812b灯珠实现呼吸灯效果,驱动及实现方法不限 演示效果 快速入门,在stm32核心板上点灯 ...
- 招新裁老,两面派互联网大厂,培训三个月,就拿15K,凭什么?
看到一位朋友在发帖子求问:亲身经历,(如有谎言我名字倒过来写)一个大学同学18年毕业的.在兰州一个二本学的兽医农牧,毕业难找工作,去深圳一个机构培训了三个月吧,然后就去做大数据 算法了,然后又去做ja ...
- CTFshow-萌新赛逆向_签退
查看题目信息 下载re3.pyc文件 使用uncompyle把re3.pyc反编译为re3.py uncompyle6 re3.pyc > re3.py 查看re3.py文件 # uncompy ...
随机推荐
- 数字孪生结合GIS能给物流行业带来怎样的改变
随着科技的不断发展和创新,数字孪生技术和地理信息系统(GIS)正日益在各个行业中发挥重要作用.其中,物流行业作为一个复杂而庞大的系统,也能从数字孪生和GIS的结合中获得许多益处和改变. 数字孪生是指通 ...
- VSCode 中优雅地编写 Markdown
VSCode 中优雅地编写 Markdown 在 VSCode 中编写 Markdown 有几个无法拒绝的优势,首先是顺手方便,常写代码的同学打开 VSCode 各项功能和快捷键使用的都比较熟练,可以 ...
- 文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题
一.用go语言,在 RB-INSERT 的第 16 行,将新插人的结点 z 着为红色.注意到,如果将 z 着为黑色,则红黑树的性质4就不会被破坏.那么为什么不选择将 z 着为黑色呢? 文心一言: 在红 ...
- 终于卷完了!MySQL 打怪升级进阶成神之路(2023 最新版)!
从第一篇文章开始,我们逐步详细介绍了 MySQL 数据库的基础知识,如:数据类型.存储引擎.性能优化(软.硬及sql语句),MySQL 数据库的高可用架构的部分,如:主从同步.读写分离的原理与实践.跨 ...
- 神经网络优化篇:详解指数加权平均数(Exponentially weighted averages)
指数加权平均数 比如这儿有去年伦敦的每日温度,所以1月1号,温度是40华氏度,相当于4摄氏度.世界上大部分地区使用摄氏度,但是美国使用华氏度.在1月2号是9摄氏度等等.在年中的时候,一年365天,年中 ...
- 半小时实现GPT纯血鸿蒙版
仅需半小时,即可实现纯血鸿蒙版本的ChatGPT! 废话少说,先看效果图: 如上图所示,这个小Demo实现了AI智能问答.靠右加粗的文本是用户点击底部提交按钮后出现的:后面靠左对齐的普通文本是来自AI ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 11.认识GAS & 创建自己的能力系统
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 16 - Writing our own Gameplay Ability Syst ...
- 如何使用loki查询日志中大于某一数字的值的日志
简介 loki是一款轻量级的日志收集中间件,比elk体系占用的内存更小,采用go语言开发,可以利用grafana来查询loki中存储的日志,loki存储日志只对提前预设的标签做索引,所以日志存储空间占 ...
- GDAL使用PROJ坐标转换相关问题的总结
目录 1. 概述 2. 详论 2.1. 数据 2.2. PROJ库 2.3. 参考 1. 概述 GDAL是使用PROJ进行坐标转换的,但是很容易出现转换不了的问题,这里总结一二,以供参考. 2. 详论 ...
- 火山引擎DataTester上线「集成工作台」功能,助力企业打造专属AB平台
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 AB测试不仅是做增长的"利器",也是企业优化效率.增加决策精确度的有效工具.随着国内企业服务市 ...