首页
论坛
专栏
课程

[原创]CTF2019晋级赛Q2第五题分析(qwertyaa)

2019-6-13 16:46 144

[原创]CTF2019晋级赛Q2第五题分析(qwertyaa)

2019-6-13 16:46
144

首先用 jadx,反编译 Java 层 MainActivity 的代码,可以看到疑似调用了 JNI 层的 gogogoJNI.check_key,但这个函数本身校验的串只能由 \00\01 组成,是个陷阱。

 

实际上看到的样式是 HTML,根据被调用的所谓 text1ViewloadUrl 可以猜测这实际上是个网页,网页地址由 JNI 层的函数 XOR 解码得来,为 http://127.0.0.1:8000/。JNI 层中的 JNI_OnLoad 里可以看到是在通过建立一个发送 so 文件内部分内容异或结果的 http 来提供这个网页。

 

我们可以直接用电脑访问手机 IP 来得到内容,核心校验逻辑在一个 WASM 模块中。可使用

require('fs').writeFileSync('aa.wasm',new Uint8Array(`
//HEX 内容
`.trim().split(/[\s\r\n]+/g).map(str => parseInt(str, 16))
))

来获得 wasm 文件内容。可以采用 wabt 工具的 wasm2c 来将内容转译为 c 代码,删去函数调用层数、memory 访问越界检查后用 gcc -O3 编译 c 文件后将 ELF 文件用 ida 打开就可以看到基本是人可看的代码(冗余内容被优化掉了)。

 

可以看到关键的 check_key 以外的函数仅将读取到的内容存入内存,而这个函数首先将这些内容的每个字节进行异或后得到 32 个变量,判断这 32 个值的线性组合是否等于特定值。

 

可将方程输入 Mathematica 求解,如下:

Solve[45*v32 + 248*v33 + 48*v31 + 90*v28 + 135*v29 + 106*v38 + 
    233*v19 + 188*v20 + 67*v13 + 232*v42 + 240*v48 + 124*v47 + 
    174*v57 + 153*v58 + 67*v62 + 194*v37 + 111*v34 + 108*v53 + 
    92*v54 + 81*v46 + 126*v49 + 103*v39 + 161*v40 + 50*v45 + 144*v6 + 
    15*v41 + 127*v12 + 19*v35 + 231*v43 + 40*v44 + 112*v23 + 20*v27 ==
    359512 && 
  v31 + 12*v31 + 56*v28 + 154*v29 + 149*v27 + 156*v38 + 32*v43 + 
    225*v19 + 26*v35 + 148*v6 + 180*v45 + 40*v40 + 194*v39 + 
    248*v48 + 171*v46 + 195*v54 + 78*v34 + 244*v62 + 101*v57 + 
    209*v58 + 81*v37 + 227*v53 + 10*v47 + 186*v49 + 212*v41 + 
    104*v12 + 90*v42 + 17*v13 + 178*v20 + 169*v44 + 94*v23 + 
    120*v33 + 131*v32 == 387514 && 
  145*v32 + 136*v33 + 240*v31 + 202*v29 + 38*v23 + 197*v44 + 
    154*v42 + 248*v41 + 67*v6 + 69*v40 + 46*v49 + 30*v47 + 95*v54 + 
    44*v34 + 117*v62 + 53*v57 + 9*v58 + 131*v37 + 83*v53 + 36*v46 + 
    55*v48 + 109*v39 + 40*v12 + 8*v13 + 86*v35 + 112*v19 + 
    251*(v20 + v45) + 174*v43 + 14*v38 + 188*v27 + 60*v28 == 301487 &&
   25*(v57 + v32) + 155*v33 + 140*v29 + 48*v27 + 65*v23 + 105*v38 + 
    45*v44 + 148*v13 + 5*v41 + 7*v39 + 102*v47 + 152*v53 + 35*v62 + 
    33*v58 + 57*v37 + 162*v34 + 112*v54 + 139*v46 + 182*v48 + 
    10*v49 + 145*v40 + 127*v45 + 30*v6 + 165*v12 + 109*v42 + 
    110*v20 + 113*v19 + 192*v43 + 116*v28 + 234*(v31 + v35) == 
   296549 && 
  82*v31 + 151*v28 + 156*v23 + 29*v44 + 76*v19 + 241*v42 + 130*v45 + 
    197*v49 + 141*v47 + 7*v46 + 118*v37 + 34*v58 + 113*v57 + 10*v62 + 
    189*v34 + 101*v53 + 236*v54 + 148*v48 + 104*v39 + 45*v40 + 
    164*v41 + 88*v12 + 39*v13 + 107*v35 + 108*(v6 + v20) + 210*v43 + 
    90*v38 + 97*v27 + 139*v29 + 209*v33 + 46*v32 == 344514 && 
  25*v28 + 153*v23 + 26*v42 + 237*v6 + 163*v39 + 230*v48 + 155*v47 + 
    225*v46 + 182*v53 + 13*v34 + 240*v58 + 49*v62 + 102*v37 + 
    50*v54 + 3*v49 + 38*v40 + 176*v45 + 105*v41 + 203*v12 + 115*v13 + 
    111*v35 + 96*v19 + 72*(v20 + v57) + 139*v43 + 117*v44 + 120*v38 + 
    90*v27 + 151*v29 + 179*v31 + 98*v33 + 7*v32 == 346892 && 
  97*v32 + 13*v33 + 156*v31 + 254*v27 + 187*(v40 + v44) + v43 + 
    67*v35 + 226*(v13 + v54) + 252*v12 + 100*v45 + 110*v47 + 
    170*v53 + 174*v58 + 61*v57 + 129*v62 + 150*v34 + 
    101*(v46 + v37) + 99*v48 + 127*v49 + 209*v39 + 203*v6 + 186*v41 + 
    39*v42 + 225*v19 + 65*v20 + 22*v38 + 214*v23 + 74*v29 + 99*v28 == 
   386678 && 
  134*v28 + 139*v43 + 218*v42 + 242*v41 + 133*v49 + 177*v46 + 88*v34 +
     v53 + 232*v37 + 171*v58 + 117*v57 + 220*v62 + 118*v54 + 60*v47 + 
    252*v48 + 222*v39 + 32*v40 + 48*v45 + 185*v6 + 240*v12 + v13 + 
    81*v20 + 22*v35 + 73*v19 + 72*v44 + 62*v38 + 106*v23 + 19*v27 + 
    156*v29 + 154*v31 + 77*v33 + 94*v32 == 348667 && 
  38*v28 + 48*v23 + 131*v43 + 247*v35 + 91*v20 + 143*v42 + 96*v45 + 
    117*v40 + 7*v39 + 75*v49 + 232*v48 + 75*v46 + 173*v34 + 122*v58 + 
    151*v57 + 19*v62 + 39*v37 + 189*v53 + 41*v54 + 26*v47 + 95*v6 + 
    130*v41 + 228*v12 + 211*v13 + 43*v19 + 52*v44 + 29*v38 + 
    242*v27 + 111*v29 + 220*v31 + 162*v33 + 70*v32 == 316884 && 
  112*v32 + 14*v33 + 189*v29 + 77*v23 + 126*v43 + 119*v35 + 233*v20 + 
    174*v13 + 214*v12 + 20*v45 + 220*v49 + 25*v46 + 104*v37 + 
    150*v62 + 92*v57 + 143*v58 + 136*v34 + 236*v53 + 147*v54 + 
    79*v47 + 204*v48 + 233*v39 + 165*v40 + 38*v6 + 120*v41 + 18*v42 + 
    244*v19 + 226*v44 + 33*v38 + 160*v27 + 5*v28 + 231*v31 == 372620 &&
   109*v28 + 135*v27 + 184*v23 + 216*v43 + 167*v19 + 
    170*v42 + (v12*64) + 183*v6 + 172*v39 + 94*v46 + 193*v54 + 
    38*v34 + 203*v57 + 98*v62 + 250*v37 + 191*v53 + 212*v47 + 
    175*v48 + 39*v49 + 171*v40 + 163*v45 + 165*v41 + 129*v13 + 
    199*v20 + 2*(v35 + v58) + 252*v44 + 187*v38 + 97*v29 + 50*v31 + 
    192*v33 + 88*v32 == 413102 && 
  136*v33 + 217*v28 + 193*v23 + 193*v38 + 208*(v20 + v6 + v42) + 
    58*v19 + 62*v35 + 51*v12 + 155*v45 + 149*v40 + 199*v49 + 46*v46 + 
    104*v37 + 106*v62 + 196*v57 + 117*v58 + 81*v34 + 203*v53 + 
    252*v54 + 248*v47 + 156*v48 + 240*v39 + 95*v41 + 102*v13 + 
    72*v43 + 23*v44 + 147*v27 + 226*v29 + 43*v31 + 16*v32 == 428661 &&
   112*v32 + 125*v28 + 135*v29 + 105*v27 + 220*v38 + 158*v19 + 
    67*v42 + 38*v12 + 214*v6 + 152*v39 + 83*v48 + 225*v47 + 224*v54 + 
    107*v37 + 49*v57 + 75*v58 + 216*v62 + 69*v34 + 144*v53 + 10*v46 + 
    15*v49 + 24*v40 + 136*v45 + 208*v41 + 165*v13 + 201*v20 + 
    180*v35 + 111*v43 + 65*v44 + 211*v23 + 80*v31 + 122*v33 == 
   371484 && 
  205*v33 + 76*v31 + 195*v28 + 74*v29 + 251*v27 + 75*v44 + 63*v20 + 
    58*v19 + 190*v13 + 71*v42 + 149*v6 + 166*v45 + 107*v39 + 
    127*v54 + 143*v53 + 51*v37 + 129*v57 + 132*v58 + 90*v62 + 
    68*v34 + 9*v46 + 88*v48 + 153*v49 + 178*v40 + 177*v41 + 99*v12 + 
    233*v35 + 109*v43 + 95*v38 + 152*(v23 + v47) + 8*v32 == 350848 && 
  31*v31 + 97*v27 + 5*v23 + 86*v38 + 88*v43 + 133*v20 + 161*v12 + 
    67*v6 + 177*v40 + 182*v49 + 245*v46 + 146*v34 + 30*v58 + 
    102*v57 + 253*v62 + 38*v37 + 209*v53 + 59*v54 + 40*v47 + 56*v48 + 
    202*v39 + 126*v41 + 95*v42 + 26*v13 + 123*v35 + 163*v19 + 
    219*v44 + 156*v28 + 183*(v45 + v29) + 43*v33 + (v32*128) == 
   334408 && 
  152*v28 + 247*v27 + 5*v23 + 159*v38 + 154*v43 + 192*v20 + 142*v12 + 
    171*v41 + 170*v42 + 77*v6 + 22*v40 + 155*v48 + 137*v54 + 7*v62 + 
    178*v58 + 136*v57 + 228*v37 + 223*v34 + 146*v53 + 92*v46 + 
    226*v47 + 170*v49 + 17*v39 + (v45*128) + 20*v13 + 49*v35 + 
    200*v19 + 42*v44 + 251*v29 + 91*v31 + 145*v33 + 39*v32 == 382822 &&
   104*v28 + 220*v23 + 173*v43 + 116*v20 + 123*v12 + 149*v6 + 
    197*v45 + 221*v49 + 244*v54 + 26*v37 + 231*v58 + 56*v62 + 
    204*v34 + 169*v53 + 205*(v57 + v46) + 77*v47 + 134*v48 + v40 + 
    47*v39 + 195*v41 + 219*v42 + 82*v13 + 80*v35 + 13*v19 + 192*v44 + 
    224*v38 + 152*v27 + 108*v29 + 121*v31 + 84*v33 + 226*v32 == 
   420160 && 
  204*v28 + 194*v23 + 70*v43 + 252*v44 + 118*(v20 + v47) + 92*v19 + 
    67*v35 + 171*v13 + 111*v42 + 184*v45 + 142*v49 + 171*v46 + 
    176*v54 + 184*v53 + 45*v34 + 219*v58 + 95*v57 + 48*v62 + 
    161*v48 + 83*v39 + 233*v40 + 215*v6 + 182*v41 + 126*(v37 + v12) + 
    21*v38 + 150*v27 + 245*v29 + 73*v31 + 39*v33 + 85*v32 == 402263 &&
   170*v31 + 195*v28 + 154*v29 + 250*v27 + 204*v38 + 84*v19 + 
    75*v13 + 72*v41 + 34*v40 + 3*v48 + 94*v46 + 164*v54 + 48*v53 + 
    138*v37 + 120*v57 + 40*v58 + 175*v62 + 224*v34 + 92*v47 + 
    191*v49 + 50*v39 + 167*v45 + 19*v6 + 238*v12 + 15*v42 + 111*v20 + 
    216*v35 + 145*v43 + 112*v44 + 140*v23 + 202*v33 + 169*v32 == 
   366968 && 
  170*v31 + 172*(v41 + v29) + 25*v27 + 147*v44 + 149*v19 + 63*v20 + 
    247*v35 + 23*v13 + 96*v12 + 56*v39 + 240*v48 + 5*v46 + 189*v54 + 
    183*v58 + 68*v57 + 246*v62 + 50*v37 + 112*v53 + 247*v47 + 
    164*v49 + 4*v45 + 19*(v40 + v34) + 139*v6 + 254*v42 + (v43*128) + 
    243*v38 + 213*v23 + 144*v28 + 106*v33 + 176*v32 == 384909 && 
  78*v33 + 125*v28 + 136*v27 + 93*v38 + 252*v44 + 223*(v20 + v58) + 
    156*v35 + v42 + 65*v6 + 74*v40 + 149*v47 + 184*v53 + (v37*128) + 
    31*v57 + 27*v62 + 22*v34 + 183*v54 + 113*v46 + 227*v49 + 
    159*v39 + 170*v45 + 211*v12 + 174*(v41 + v48) + 186*v13 + 
    253*v19 + 241*v43 + 148*v23 + 248*v32 + 41*(v31 + v29) == 425203 &&
   113*v32 + 13*v33 + 82*v31 + 105*(v46 + v29) + 243*v27 + 212*v44 + 
    140*(v35 + v12) + 181*v42 + 46*v40 + 155*v45 + 239*v49 + 
    242*v54 + 237*v34 + 39*v57 + 170*v58 + 198*v62 + 155*v53 + 
    99*v48 + 145*v47 + 43*v39 + 3*v6 + 75*v41 + 208*v13 + 197*v20 + 
    10*(v19 + v37) + 142*v43 + 27*v38 + 186*v23 + 118*v28 == 372162 &&
   19*v28 + 159*v23 + 139*v19 + 202*v13 + 185*v41 + 180*v39 + 
    96*v45 + 40*v40 + 7*v49 + 17*v46 + 206*v34 + 127*v54 + 58*v37 + 
    199*v58 + 50*v57 + 3*v62 + 207*v53 + 91*v47 + 63*v6 + 68*v12 + 
    72*v42 + 240*v20 + 36*v35 + 76*v43 + 229*v44 + 87*(v48 + v27) + 
    94*v29 + 45*v33 + 6*v32 + 136*(v31 + v38) == 297509 && 
  90*v31 + 108*v28 + 221*v23 + 144*v38 + 35*v43 + 9*v20 + 63*v12 + 
    114*v40 + 83*v48 + 202*v46 + 40*v54 + 115*v53 + v62 + 138*v58 + 
    12*v57 + 166*v37 + 215*v34 + 87*v47 + 74*v49 + 149*v39 + 76*v45 + 
    218*v41 + 123*v42 + 204*v13 + 172*v35 + 38*v19 + 200*v44 + 
    245*v27 + 235*(v6 + v29) + 153*v33 + 184*v32 == 372215 && 
  248*v33 + 122*v28 + 224*v27 + 12*v38 + 240*v35 + 190*v13 + 62*v42 + 
    61*v6 + 3*v39 + 84*v47 + 123*v53 + 28*v62 + 36*v57 + 150*v58 + 
    180*v37 + 190*v34 + 55*v54 + 116*v46 + 231*v48 + 81*v49 + 
    94*v40 + 142*v12 + 187*v41 + 225*v20 + 179*v19 + 77*v43 + 
    85*(v45 + v44) + 196*v23 + 144*v29 + 114*v31 + 143*v32 == 370337 &&
   190*v31 + 103*v28 + 95*v38 + 32*v43 + 74*v19 + 191*v42 + 13*v6 + 
    176*v40 + 154*v47 + 202*v34 + 40*v54 + 224*v37 + 7*v62 + 70*v58 + 
    2*v53 + 241*v46 + 65*v48 + 213*v39 + 122*(v45 + v57) + 14*v12 + 
    30*(v13 + v49) + 80*v20 + 116*v35 + 189*v44 + 76*v23 + 201*v27 + 
    158*(v41 + v29) + 204*v33 + 91*v32 == 314564 && 
  160*v28 + 31*v38 + 162*v35 + 205*v12 + 199*v45 + 75*v49 + 155*v47 + 
    95*v46 + 42*v53 + 248*v62 + 30*v58 + 102*v57 + 74*v57 + 165*v37 + 
    154*v34 + 223*v54 + 101*v48 + 14*v39 + 158*v40 + 253*v6 + 
    89*v41 + 202*v42 + 110*v13 + 67*v19 + 115*v43 + 83*(v20 + v44) + 
    27*v23 + 66*v27 + 118*v29 + 5*v31 + 88*v33 + 44*v32 == 325974 && 
  65*v32 + 5*v29 + 163*v23 + 123*v44 + 114*v35 + 150*v41 + 180*v45 + 
    146*v49 + 243*v47 + 160*v37 + 34*v58 + 84*v57 + 207*v62 + 
    168*v34 + 34*v53 + 41*v48 + 235*v39 + 185*v40 + 62*v6 + 140*v42 + 
    10*v13 + 35*v19 + 38*v43 + 208*(v12 + v38) + 111*v27 + 
    29*(v46 + v28) + 125*(v31 + v20) + 72*(v33 + v54) == 307088 && 
  140*v31 + 167*v44 + 67*v13 + 178*v42 + 16*v41 + 116*v39 + 44*v47 + 
    11*v34 + 152*v58 + 197*v57 + 127*v62 + 175*v37 + 18*v53 + 
    100*v46 + 128*v48 + 32*v49 + 253*v40 + 213*v45 + 171*v12 + 
    7*v35 + 162*v19 + 78*v43 + 97*v20 + 97*v38 + 177*v23 + 21*v6 + 
    21*v27 + 155*v28 + 26*v29 + 26*v54 + 243*v33 + 188*v32 == 322340 &&
   113*v32 + 242*v29 + 90*v28 + 7*v57 + 7*v27 + 193*v23 + 138*v38 + 
    233*v20 + 91*v13 + 89*v12 + 34*v45 + 9*v49 + 47*v46 + 110*v34 + 
    164*v54 + 193*v62 + 208*v37 + 140*v53 + 72*v47 + 113*v48 + 
    166*v39 + 51*v40 + 179*v6 + 184*v41 + 162*v42 + 156*v19 + 
    127*v35 + 127*v58 + 244*v43 + 183*v44 + 152*v31 + 252*v33 == 
   380716 && 
  244*v32 + 196*v33 + 197*v31 + 30*v27 + 171*v43 + 252*v44 + 
    206*v19 + 153*v20 + 67*v42 + 164*v6 + 10*v40 + 97*v49 + 173*v47 + 
    133*v53 + 100*v62 + 210*v58 + 146*v37 + 105*v34 + 75*v57 + 
    75*v54 + 142*v46 + 27*v48 + 15*v39 + 177*v45 + 141*v41 + 
    189*v12 + 239*v13 + 108*v35 + 249*v38 + 84*v23 + 7*v29 + 
    168*v28 == 393331 && 
  196*v33 + 218*v40 + 218*v28 + 221*v23 + 127*v38 + 47*v44 + 
    156*v13 + 198*v42 + 75*v12 + 146*v41 + 220*v6 + 235*v45 + 
    63*v39 + 230*v48 + 3*v46 + 221*v34 + 186*v37 + 241*v62 + 61*v58 + 
    79*v57 + 147*v53 + 57*v54 + 69*v47 + 167*v49 + 204*v20 + 
    197*v35 + 59*v19 + 179*v43 + 135*v27 + 210*v29 + 53*v31 + 
    185*v32 == 430295, {v32, v33, v31, v28, v29, v38, v19, v20, v13, 
  v42, v48, v47, v57, v58, v62, v37, v34, v53, v54, v46, v49, v39, 
  v40, v45, v6, v41, v12, v35, v43, v44, v23, v27}]

得到:

{{v32 -> 108, v33 -> 117, v31 -> 51, v28 -> 115, v29 -> 117, 
  v38 -> 95, v19 -> 100, v20 -> 99, v13 -> 116, v42 -> 95, v48 -> 105,
   v47 -> 116, v57 -> 51, v58 -> 101, v62 -> 51, v37 -> 51, v34 -> 48,
   v53 -> 83, v54 -> 109, v46 -> 101, v49 -> 109, v39 -> 108, 
  v40 -> 49, v45 -> 116, v6 -> 95, v41 -> 49, v12 -> 101, v35 -> 48, 
  v43 -> 95, v44 -> 49, v23 -> 115, v27 -> 102}}

最后用 python 将被异或的内容还原即可:

from z3 import *
from sympy import *
memory=[0]*2048
for i in range(1024,1024+32):
    memory[i]=BitVec('a['+str(i-1024)+']',32)
    #s.append(memory[i]&0xff==memory[i])
memory[1224]=32


v37 = memory[1027];
v52 = memory[1025];
(v54) = memory[1026];
v55 = memory[1024];
v37 ^= 0x6B;
v55 ^= 0x18;
v52 ^= 9;
v54 ^= 3;
memory[1027] = v37;
memory[1024] = v55;
memory[1025] = v52;
memory[1026] = v54;
v3 = memory[1030];
v4 = memory[1031];
v48 = memory[1029];
v47 = memory[1028];
v49 = memory[1030];
v46 = memory[1031];
v47 ^= 1;
v48 ^= 0x5A;
memory[1031] = v4 ^ 0x57;
v49 = v3 ^ 0x32;
memory[1028] = v47;
memory[1029] = v48;
memory[1030] = v3 ^ 0x32;
v46 = (v4 ^ 0x57);
v39 = memory[1033];
v5 = memory[1034];
v40 = memory[1034];
v6 = memory[1032];
v7 = memory[1035];
v45 = memory[1035];
v8 = memory[1033] ^ 0x5D;
v9 = v5 ^ 0x40;
v10 = v7 ^ 0x46;
memory[1033] = v8;
(v6) = v6 ^ 0x30;
v39 = v8;
memory[1032] = v6;
v40 = v9;
memory[1034] = v9;
memory[1035] = v10;
v45 = v10;
v11 = memory[1036];
v12 = memory[1038];
v13 = memory[1036];
v14 = memory[1037];
v41 = memory[1037];
v15 = memory[1039];
v42 = v15;
v16 = memory[1038] ^ 0x56;
v17 = v14 ^ 0x46;
v18 = v15 ^ 0x3D;
v13 ^= 0x2B;
memory[1038] = v16;
v12 = v16;
memory[1036] = v13;
memory[1037] = v17;
memory[1039] = v18;
v41 = v17;
v42 = v18;
v50 = memory[1041];
v19 = memory[1042];
v20 = memory[1040];
v58 = memory[1043];
v50 ^= 0x43;
(v20) = v20 ^ 2;
(v19) = v19 ^ 0x17;
memory[1040] = v20;
memory[1042] = v19;
memory[1041] = v50;
v21 = memory[1047];
v38 = memory[1047];
v22 = memory[1044];
v43 = memory[1044];
v44 = memory[1045];
(v23) = memory[1046];
v24 = memory[1045] ^ 0x53;
v25 = v22 ^ 0x32;
v26 = v21 ^ 0x26;
memory[1045] = v24;
(v23) = v23 ^ 0x1F;
v44 = v24;
memory[1044] = v25;
memory[1046] = v23;
memory[1047] = v26;
v43 = v25;
v38 = v26;
v27 = memory[1051];
v28 = memory[1049];
v62 = memory[1050];
v29 = memory[1048];
v30 = v27 ^ 0x10;
(v29) = v29 ^ 0x2A;
(v28) = v28 ^ 1;
memory[1048] = v29;
memory[1049] = v28;
v27 = (v27 ^ 0x10);
memory[1051] = v30;
(v31) = memory[1054];
v32 = memory[1053];
v33 = memory[1052];
v57 = memory[1055];
(v33) = v33 ^ 0x10;
(v32) = v32 ^ 0x1E;
(v31) = v31 ^ 0x40;
memory[1052] = v33;
memory[1053] = v32;
memory[1054] = v31;
v34 = v52;
v53 = v55;
v35 = v50;

li=[v32,v33,v31,v28,v29,v38,v19,v20,v13,v42,v48,v47,v57,v58,v62,v37,v34,v53,v54,v46,v49,v39,v40,v45,v6,v41,v12,v35,v43,v44,v23,v27]
uni=[]
for i in li:
    s=str(i)
    if s.find('^')>=0:
        q=int(s[s.find('^')+2:])
    else:
        q=0
    uni.append((int(s[s.find('[')+1:s.find(']')]),q))
print uni
#print(v32,v33,v31,v28,v29,v38,v19,v20,v13,v42,v48,v47,v57,v58,v62,v37,v34,v53,v54,v46,v49,v39,v40,v45,v6,v41,v12,v35,v43,v44,v23,v27)
#exit(0)
ans=[108,  117,  51,  115,  117,  95,  100,  99,  116,  95,  105,  116,  51,  101,  51,  51,  48,  83,  109,  101,  109,  108,  49,  116,  95,  49,  101,  48,  95,  49,  115,  102]
res=[0]*32
for i in range(len(ans)):
    res[uni[i][0]]=uni[i][1]^ans[i]

ret=""
for i in res:
    ret+=chr(i)

print ret

得到输出 K9nXu3_2o1q2_w3bassembly_r3vers3



[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (0)
游客
登录 | 注册 方可回帖
返回