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的更多相关文章

  1. 2022弱口令实验室招新赛CTF赛道WriteUp

    Misc 签到 下载附件,得到一张二维码. 扫码,然后根据提示"linux"操作系统,直接cat /flag,得到flag. EasyMisc 下载得到EasyMisc附件,压缩包 ...

  2. 2019级第一次月赛暨ACM工作室第一次招新赛、补题赛

    A:最简单签到,没有之一 Description 此题简单如题意,就是求最大值 Input 多组输入 每组输入输入一串字符串(包括字母和数字),长度小于500 Output 每行输出字符ASCII值与 ...

  3. ACM团队招新赛题解

    标程代码全部为C语言编写.代码中的#if LOCAL_ 至#endif为本地一些调试内容,可以忽略. Xenny的A+B(1)[容易][签到] 签到题,做不出的话可能你有点不太适合ACM了. Xenn ...

  4. 0RAYS元旦招新赛

    一共有4道pwn题,题目不算难,但是挺考验调试能力的. pie 一个main函数就四次溢出... 第一次leak canary,第二次leak libc,第三次直接覆盖返回地址为one_gadgets ...

  5. 招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)

    生活不只是眼前的苟且,还有诗和远方. 架构说明: 要求是采用MVC模式,所以分了下面的几个包,但是由于是第一次写,可能分的也不是很清楚: 这个是后台部分的架构: 这个是前端的的展示: (那个StuLo ...

  6. ACM_招新笔试题系列——买包子

    招新笔试题系列——买包子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小华刚到大学,一天早上她替她室友买早餐,一共要N个包子. ...

  7. XDTIC2019招新笔试题 + 官方解答

    腾讯创新俱乐部2019年招新笔试试题   [1] 小宗学长正在努力学习数论,他写下了一个奇怪的算式: \[ 2019^{2018^{2017^{\dots^{2^1}}}} \] 算式的结果一定很大, ...

  8. 招新题流程简介(WS2812)

    22物电科协软件招新题学习流程 有错误或者不当的地方请在评论区指出 题目简介 使用stm32驱动单一ws2812b灯珠实现呼吸灯效果,驱动及实现方法不限 演示效果 快速入门,在stm32核心板上点灯 ...

  9. 招新裁老,两面派互联网大厂,培训三个月,就拿15K,凭什么?

    看到一位朋友在发帖子求问:亲身经历,(如有谎言我名字倒过来写)一个大学同学18年毕业的.在兰州一个二本学的兽医农牧,毕业难找工作,去深圳一个机构培训了三个月吧,然后就去做大数据 算法了,然后又去做ja ...

  10. CTFshow-萌新赛逆向_签退

    查看题目信息 下载re3.pyc文件 使用uncompyle把re3.pyc反编译为re3.py uncompyle6 re3.pyc > re3.py 查看re3.py文件 # uncompy ...

随机推荐

  1. 华企盾DSC无缝替换其它加密软件两种方法

    有源码和大型图纸的使用第一种方案 第一种: 1.把DSCClient.exe和DSCService.exe添加到竞品的加密软件进程中,配置允许打开加密文件,加密类型不加密 2.安装DSC客户端后扫描加 ...

  2. 常用API之IP定位地区

    常用API之IP定位地区 高德地图API https://lbs.amap.com/api/webservice/guide/api/ipconfig 百度地图API https://lbsyun.b ...

  3. parameterType的用法

    在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的 ...

  4. 『Flutter』开篇

    什么是 Flutter Flutter 是由 Google 开发的开源框架 Flutter 用于构建跨平台的移动应用程序 Flutter 它允许开发者使用同一套代码来同时为 IOS 和 Android ...

  5. Ubuntu图形界面root登录“sorry, that didn't work please

    https://blog.51cto.com/u_14757092/2484490 ssh登录主机执行下vim /etc/pam.d/gdm-autologin 注释行 "auth requ ...

  6. ctfshow-misc详解(持续更新中)

    杂项签到 题目是个损坏的压缩包,考点:伪加密 修改如下: 保存解压得到flag flag{79ddfa61bda03defa7bfd8d702a656e4} misc2 题目描述: 偶然发现我竟然还有 ...

  7. zabbix常用监控项

    https://blog.csdn.net/xkjcf/article/details/78559273?locationNum=10&fps=1 agent.ping  #agent是否在线 ...

  8. MongoDB 安装、配置及详细使用教程

    环境:win10 下载地址 :https://pan.baidu.com/s/1a0SwRv9er3HTewzcI8nWgQ      提取码:dyyx   下载后,将该文件夹放在C盘的根目录下,然后 ...

  9. CUDA C编程权威指南:1-基于CUDA的异构并行计算

      什么是CUDA?CUDA(Compute Unified Device Architecture,统一计算设备架构)是NVIDIA(英伟达)提出的并行计算架构,结合了CPU和GPU的优点,主要用来 ...

  10. GaussDB(DWS)字符串处理函数返回错误结果集排查

    摘要:在使用字符串处理函数时,有时会出现非预期结果的场景.在排除使用问题后,应该从encoding和数据本身开始排查. 本文分享自华为云社区<GaussDB(DWS)字符串处理函数返回错误结果集 ...