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 ...
随机推荐
- 真的最后一次了——城院GO导航大作业迭代最终版
真的!!!最后一次了!不骗人! 1.小程序的体验版二维码: 想体验的可以申请一下体验权限: 2.小程序目前功能介绍 1.首先进入是index页面:点击第一个是学校简介页面,第二个能直接跳到主程序的地图 ...
- 基于注解玩转excel导出导入-基于注解玩转excel导出导入
title: 基于注解玩转excel导出导入 date: 2021-05-01 15:55:13.53 updated: 2021-12-26 17:43:19.505 url: https://ww ...
- poj 3987 Computer Virus on Planet Pandora —— ac自动机复习
poj 3987 Computer Virus on Planet Pandora ac自动机复习 题意如下 给出多个模式串,最后给出一个文本串,求有多少个模式串被文本串包含或者被反序的文本串包含 几 ...
- DevOps|我们需要什么样的产研项目管理工具
上一篇文章<DevOps|产研运协作工具链上的皇冠-项目管理工具>主要讲了项目管理工具对软件研发的重要性,本篇文章主要想讲清楚我们需要什么样的项目管理工具,项目管理工具必须具备的功能有哪些 ...
- 使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘
摘要:本文带来基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程. 编者按:在LiteOS大揭秘系列,我们和读者们分享了<LiteOS是怎么 ...
- 开源遇上华为云——DataX for HuaweiCloud OBS
摘要:欢迎越来越多的开发者加入,与华为云一起不断成长,繁荣开源生态. 本文分享自华为云社区<开源遇上华为云--DataX for HuaweiCloud OBS>,作者:华为云社区精选. ...
- Solon 路由的 Url 大小写匹配与事项注意
Solon 路由器对 url 的匹配默认是 "忽略大小写" 的.如果有需要,可以强制开启:v2.2.14 后支持 @SolonMain public class App{ publ ...
- 面对科技公司的制裁,俄罗斯放出封印7年的神兽:RuTracker
大家好,我是DD! 最近俄乌冲突引发的科技公司站队,Oracle.微软.三星等全球知名科技公司都开始对俄罗斯实施制裁与封锁.就连崇尚自由的开源社区GitHub也发文会严格限制俄罗斯获得维持其咄咄逼人的 ...
- Java | Spring Boot数据源配置原理
在数据库访问过程中,"数据源"无疑是最重要的概念之一,它不仅可以对与数据库访问相关的各种参数进行封装和统一管理,还可以管理数据库连接池,提高数据库连接性能. 目前,在市面上有很多优 ...
- POJ 1456 Supermarket【贪心 + 并查集】
http://poj.org/problem?id=1456 题意:给你 N 件不同的商品,每件商品最多可以买一次.每件物品对应两个值 pi di pi 表示物品的价值,di 表示可以买的最迟时间(也 ...