经调试判断流程为:
![]()
进入关键函数sub_401740,发现要求对flag的长度要求为4,要求flag的每一位都是小写的英文字母,并且每一位互不相同。其关键算法如图
![]()
关键对比算法为
![]()
而Serial已给;直接逆推即可,自己写的实现算法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| for Name_0 in range(97,123): for Name_1 in range(97,123): v8 = (Name_0 & 1) + 5; v59 = ((Name_0 >> 4) & 1) + 5; v53 = ((Name_0 >> 1) & 1) + 5; v55 = ((Name_0 >> 2) & 1) + 5; v57 = ((Name_0 >> 3) & 1) + 5; v45 = (Name_1 & 1) + 1; v51 = ((Name_1 >> 4) & 1) + 1; v47 = ((Name_1 >> 1) & 1) + 1; v10 = ((Name_1 >> 2) & 1) + 1; v49 = ((Name_1 >> 3) & 1) + 1; if v8 + v10 == 7 and v57 + v49 ==6 and v53 + v51==8 and v55 + v45 ==7 and v59 + v47 ==6: print(chr(Name_0),chr(Name_1)) for Name_2 in range(97,123): v27 = (Name_2 & 1) + 5 v60 = ((Name_2 >> 4) & 1) + 5 v54 = ((Name_2 >> 1) & 1) + 5 v56 = ((Name_2 >> 2) & 1) + 5 v58 = ((Name_2 >> 3) & 1) + 5 v46 = (112 & 1) + 1 v52 = ((112 >> 4) & 1) + 1 v48 = ((112>> 1) & 1) + 1 v29 = ((112 >> 2) & 1) + 1 v50 = ((112 >> 3) & 1) + 1 if v27 + v29 ==7 and v58 + v50==7 and v54 + v52==7 and v56 + v46==7 and v60 + v48==6: print (chr(Name_2))
|