[SWPUCTF 2021 新生赛]fakebase

题目链接:fakebase

下载完为python文件,打开[SWPUCTF 2021 新生赛]fakebase_第1张图片

分析代码可知:遍历flag中的字符,并且把字符对应的ASCII码变为二进制形式(因为有zfill(8)函数所以每个字符转换的二进制形式有8位),然后变成str形式连接在一起,变为整数形式给b1。

while循环语句:如果b1//31!=0,则把s_box中对应的b1%31下标的字符给s串。因为有取余运算,所以不能准确知道b1//31的商是多少,所以要爆破。

[SWPUCTF 2021 新生赛]fakebase_第2张图片 因为是%31,所以j从0到30进行爆破,依次求出tmp的值,看看哪一个符合flag形式。

 第二个for语句是求出j取不同值时,tmp的值。然后根据源代码逆向,把他变为二进制,
 tmp = tmp.zfill((len(tmp) // 8 + 1) * 8)则是保证tmp的二进制形式是8的倍数。然后每八个一组,把  它变为相应的字符。因为根据flag的形式,flag前缀为NSSCTF,所以if语句把含有NSSCTF的结果输出。

flag:NSSCTF{WHAt_BASe31}

你可能感兴趣的:(re简单题,python,网络安全)