SecretModule
用记事本打开 customize.sh文件
这段代码最后提示了用base64解密
下载后打开得到
testk() {
echo "Welcome to the Secret module!But before you begin,you need to prove your self."
(/system/bin/getevent -lc 1 2>&1 | /system/bin/grep VOLUME | /system/bin/grep " DOWN" > $MODPATH/events) || return 1
return 0
}
choose() {
while true; do
/system/bin/getevent -lc 1 2>&1 | /system/bin/grep VOLUME | /system/bin/grep " DOWN" > $MODPATH/events
if (`cat $MODPATH/events 2>/dev/null | /system/bin/grep VOLUME >/dev/null`); then
break
fi
done
if (`cat $MODPATH/events 2>/dev/null | /system/bin/grep VOLUMEUP >/dev/null`); then
echo "114514"
else
echo "1919810"
fi
}
if testk; then
ui_print "Great! Now enter the secret."
else
ui_print "Legacy Device. Use a newer device to do this challenge"
exit
fi
concatenated=""
for i in 1 2 3 4 5 6 7
do
result=$(choose)
concatenated="${concatenated}${result}"
done
input_str=$(echo -n $concatenated | md5sum | awk '{print $1}')
sec="77a58d62b2c0870132bfe8e8ea3ad7f1"
if test $input_str = $sec
then
echo 'You are right!Flag is'
echo "moectf{$concatenated}"
else
echo 'Wrong. Try again.'
exit
fi
testk函数:
- 首先显示一条欢迎信息。
- 尝试捕捉音量减键(
VOLUME DOWN
)的按下事件,如果成功,则返回0(表示成功),否则返回1(表示失败)。
choose函数:
- 使用一个无限循环来不断检查是否有音量键的按下事件。
- 当检测到音量减键的按下时,跳出循环
- 随后检查事件文件(
$MODPATH/events
)中是否包含VOLUMEUP
或VOLUME DOWN
事件 - 根据检查结果打印不同的字符串(
114514
或1919810
)
主函数:
- 首先调用
testk
函数来检查是否满足条件 - 然后,通过调用
choose
函数7次,收集7个字符串(每次按键生成的字符串),将它们连接成一个长字符串。 - 对这个长字符串进行MD5哈希计算,并与预定义的哈希值
77a58d62b2c0870132bfe8e8ea3ad7f1
进行比较。 - 如果哈希值匹配,则显示“Flag”信息;否则,提示错误并退出。
由于MD5是单向的,因此从MD5散列值“解密”回原始数据是不可能的,所以需要爆破解题,脚本如下:
from hashlib import md5
s = ["114514", "1919810"]
sec = "77a58d62b2c0870132bfe8e8ea3ad7f1"
flag = ""
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
for f in s:
for g in s:
flag = a + b + c + d + e + f + g
if md5(flag.encode('utf-8')).hexdigest() == sec:
print(flag)