NepMagic —— CheckIn
先简述一下一开始失败的过程:
可以先用RGSSAD解压器,搞出个data文件夹,里面是游戏的地图、人物啥的.rxdata数据,再用RXDataEditor可以解析这些数据,里面直接分析map,可以发现前面十来个map基本没在游戏里出现,map中找到npc,再翻翻目录下的内容,就可以找到npc的对话信息:

以为拼一拼就能拿到flag,搞了半天,最后发现有一段不是npc嘴里的(
唉,既然知道地图不多也没啥怪,就老老实实走得了,中间有一张地图多踩踩能出一段隐藏的flag,最后拿到完整flag:

3DNep
附件里一个.gltf文件,找个在线的GLTF模型查看器直接看,能看到底部有个QRcode:

找找资料发现是汉信码,直接扫就能拿到flag:

Nemophila
附件有个加密zip和一个mimi.py:
import base64
print("这里有一个藏宝室,镇守着一个宝箱怪,当你说出正确的口令时,你也就快获得了这个屋子里最至高无上的宝物。")
print("提示:宝箱怪只会提示你口令正确与否,请你试试吧!")
flag = input('Turn in your guess: ')
if len(flag) !=48:
print("长度不对!")
exit(1)
if ord(flag.capitalize()[0]) != 83 or not flag[0].islower(): #s
print("Please try again!")
exit(1)
if flag[-3:] != "ve}":
print("Please try again!")
exit(1)
if flag.count(chr(95)) != 4:
print("Please try again!")
exit(1)
if base64.b64encode((flag[10:13]+flag[28:31]).encode('utf-8')).decode() != 'RnJpSGlt':
print("Please try again!")
exit(1)
if int(flag[24:26]) > 10 and int(flag[24:26]) < 20 and pow(int(flag[24:26]),2,5) != 0:
print("好像有点不对!")
exit(1)
number = flag[33] + flag[41] + flag[43:45]
if int(number) * 9_27 != 1028970 and not number.isnumeric():
print("还是不对呢!")
exit(1)
if flag[35:41].replace("e", "1") != "1t1rna":
print("Please try again!")
exit(1)
if flag[31:33].swapcase() != "ME":
print("这不是我!")
exit(1)
if list(map(len,flag.split("_"))) != [6, 12, 14, 7, 5] and list(map(len,flag.split("&"))) != [17, 9, 20]:
print("换个顺序!")
exit(1)
if ord(min(flag[:2].swapcase())) != 69:
print("Please try again!")
exit(1)
if flag[2] + flag[4:6] != "cet4"[:3]:
print("我不想考四级!")
exit(1)
new=""
for i in flag[7:10] + flag[18] + flag[26]: new += chr(ord(i) + 1)
if new != "jt|Df":
print("Please try again!")
exit(1)
if "SunR" in flag and "eren" in flag:
print("好像对了!可以先去试试!")
exit(1)
print("恭喜你~发现了上个世纪的秘密~快去向冒险家协会索要报酬吧!")
根据逻辑来就行,不过能通过口令验证的字符串还挺多的,改了好几次才出正确口令:
'''
s 0
e 1
c 2
et 4-5
_ 6
is{ 7-9
Fri 10-12
& 17
C 18
_ 19
10/15/20 24-25
e 26
& 27
Him 28-30
me 31-32
1 33
_ 34
eterna 35-40
1 41
_ 42
10 43-44
ve} 45-47
'''
flag = "sec et_is{Fri &C_ 10e&Himme1_eterna1_10ve}"
'''
secret_is{FriSunR&C_eren10e&Himme1_eterna1_10ve}
secret_is{Frieren&C_SunR10e&Himme1_eterna1_10ve}
secret_is{Frieren&C_SunR10e&Himme1_1terna1_10ve}
secret_is{Frieren&C_SunR10e&Himme1_et1rna1_10ve}
secret_is{Frieren&C_SunR10e&Himme1_1t1rna1_10ve}
'''
#最终的正确口令是:secret_is{Frieren&C_SunR15e&Himme1_eterna1_10ve}
解压缩包里面一个png,不过内容显然被加密过了,试了试异或png头,发现开头是sec,想着肯定是异或刚刚的口令:

能看到正常图片了,010打开发现CRC校验有误,爆破一下宽高再改改就能出flag了:

NepCamera
描述说是摄像头记录,wireshark启动发现是USB流量,简单翻了翻能看到基本都是以jpg图片的形式传输信息的,一开始先试着导出了frame.number==1的usb.iso.data,里面分了好几段,有固定的数据头0c啥的,距离jpg文件头有24字节,试着把每一段开头都删掉24字节,再把逗号删了,发现提取出来的图片还是很清晰的,不过只有一小部分,大小是60kb,frame.number==2对应的也是jpg数据,加在第一张图片后面就行了,连续搞了三段共180kb大小的图片,初见端倪:

之后想过写脚本啥的,毕竟感觉这个图片还是有一定的拼接顺序在里面的,虽然一个一个搞出来也能看,比赛期间全都是手撸+硬看了,比较搞的是这个图片相当一部分都不暴露flag信息,只能硬猜,最后搞出了几张能猜出flag的图片:







比较难猜的是flag最后还有一个s
flag{Th3_c4mer4_takes_c1ear_pictures}