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 ...
随机推荐
- Javascript Ajax总结——其他跨域技术之Web Sockets
Web Sockets的目标是在一个单独的持久连接上提供全双工.双向通信.在Javascript中创建了Web Sockets之后,会有一个HTTP请求发送到浏览器以发起连接.在取得服务器响应后,建立 ...
- Vue学习笔记-快速入门
整体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 【玩转腾讯混元大模型】怎么说?我用混元AI大模型开发了个IDEA插件
前言 halo 我是杨不易呀,在混元大模型内测阶段就已经体验了一番当时打开页面的时候灵感模块让我大吃一惊这么多角色模型真的太屌了,随后我立马进行了代码处理水平和上下文的效果结果一般般但是到如今混元大模 ...
- 从零玩转文件上传之七牛云-qiniufileupload
title: 从零玩转文件上传之七牛云 date: 2022-03-27 02:21:00.478 updated: 2022-04-10 14:13:35.426 url: https://www. ...
- 文心一言 VS 讯飞星火 VS chatgpt (168)-- 算法导论13.2 1题
一.用go语言,写出 RIGHT-ROTATE 的伪代码. 文心一言: 在计算机科学中,右旋转(RIGHT-ROTATE)是一种常见的操作,通常用于数组或链表.以下是一个使用Go语言实现右旋转的伪代码 ...
- Centos7安装高版本BIND9.16.41(DNS服务器)
安装高版本BIND9.16.41或9.18.15 双数版本为稳定版如9.16.9.18 使用手册:https://bind9.readthedocs.io/en/v9_16_19/reference. ...
- Jenkins汉化配置
登录进入Jenkins首页 输入:本地ip+端口号(localhost:8099) 进入插件管理页面(Manage Jenkins)安装相关插件 搜索:到available栏目搜索:Locale pl ...
- 在线编辑Excel——插入图表
本文内容介绍如何通过Excel在线编辑器--Spire.Cloud Excel来实现图表插入,插入图表时,可插入常见的柱状图.饼图.折线图.条形图.面积图.散点图.股价图等.这里挑选几种图表来展示插入 ...
- 第六部分_Shell脚本流程控制语句
流程控制语句 关键词:选择(人生漫漫长路,我该何去何从) 1. 基本语法结构 ㈠ if结构 箴言1:只要正确,就要一直向前冲️ F:表示false,为假 T:表示true,为真 if [ condit ...
- 讲真,你知道Python咋来的吗?
摘要:什么是Python?它怎么诞生的?它跟C语言.shell语言有什么区别?语言环境是怎么样的?这些你都知道吗? Python诞生在一个圣诞节 Python诞生于1989年的一个圣诞节,其创作者Gu ...