from typing import * flag = '30466633346f59213b4139794520572b45514d61583151576638643a' res = bytes([int(flag[i*2:i*2+2], 16) for i inrange(len(flag) // 2)]) length = len(res) raw = [] for i inrange(length): raw.append(res[i] ^ i) for i inrange(length // 2): raw[i*2], raw[i*2+1] = raw[i*2+1], raw[i*2] print(''.join(list(map(lambda i : chr(i),raw))))
helloRe
首先长度为22,每次跟一个值异或,然后值减一,跟一个字节数组对比,简单题。
1 2 3 4 5 6 7 8 9 10 11 12
key = '97 99 9C 91 9E 81 91 9D 9B 9A 9A AB 81 97 AE 80 83 8F 94 89 99 97' key = list(map(lambda x : int(x, 16), key.split(' '))) print(key) flag = '' i = 0 d = 0xff while i < 22: flag += chr(key[i] ^ d) i += 1 d -= 1 print(flag)
voidbtea(uint32_t *v, int n, uint32_tconst key[4]) { uint32_t y, z, sum; unsigned p, rounds, e; if (n > 1) /* Coding Part */ { rounds = 6 + 52/n; sum = 0; z = v[n-1]; do { sum += DELTA; e = (sum >> 2) & 3; for (p=0; p<n-1; p++) { y = v[p+1]; z = v[p] += MX; } y = v[0]; z = v[n-1] += MX; } while (--rounds); } elseif (n < -1) /* Decoding Part */ { n = -n; rounds = 6 + 52/n; sum = rounds*DELTA; y = v[0]; do { e = (sum >> 2) & 3; for (p=n-1; p>0; p--) { z = v[p-1]; y = v[p] -= MX; } z = v[n-1]; y = v[0] -= MX; sum -= DELTA; } while (--rounds); } }
a = '39383162303261336136653563306232' b = [chr(int(a[i*2:i*2+2], 16)) for i inrange(len(a) // 2)] # 大小端 print(''.join(reversed(b))) # passwd1 passwd1 = ''.join(reversed(b))
key = passwd1[0] for i inrange(1,16): key += chr(ord(passwd1[i]) ^ i) key = key.encode('utf8') print(key) iv = bytes([x for x inrange(16)])
static main() { auto b_arr_addr = 0x409080; auto addr = 0x401216; auto i = 0; for (i = 0;i <= 0x43e;i++) { auto x = Byte(addr + i) ^ Byte(b_arr_addr+i); PatchByte(addr + i, x); } }
在file->script file中运行后,在edit->patch program->apply patchs to input file
public final class MainActivity.a implements Runnable { public static final MainActivity.a a;
public static { MainActivity.a.a = new MainActivity.a(); }
@Override public final void run() { try { new ol().run(); new jm().run(); new fn().run(); new aj().run(); new xl().run(); new yn().run(); new qm().run(); new ao().run(); new vn().run(); new wm().run(); new wj().run(); new xn().run(); new jk().run(); new nl().run(); new co().run(); new um().run(); new nn().run(); new ll().run(); new ul().run(); new uj().run(); new ln().run(); new el().run(); new vk().run(); new hj().run(); new cl().run(); new ti().run(); new cn().run(); new kk().run(); new tl().run(); new go().run(); new pm().run(); new wi().run(); new fm().run(); new uk().run(); new bl().run(); new rk().run(); new bo().run(); new lk().run(); new bj().run(); new rl().run(); new il().run(); new ko().run(); new yi().run(); new pk().run(); new gm().run(); new dn().run(); new km().run(); new sm().run(); new yk().run(); new on().run(); new al().run(); new qk().run(); new hl().run(); new pj().run(); new pi().run(); new qi().run(); new qj().run(); new sj().run(); new yj().run(); new kl().run(); new vi().run(); new gj().run(); new nk().run(); new ej().run(); new vl().run(); new nm().run(); new bm().run(); new ri().run(); new dl().run(); new kn().run(); new mn().run(); new sn().run(); new ok().run(); new gl().run(); new eo().run(); new do().run(); new xj().run(); new zj().run(); new fl().run(); new dk().run(); new fj().run(); new im().run(); new zk().run(); new hm().run(); new xm().run(); new vm().run(); new ij().run(); new fo().run(); new oj().run(); new em().run(); new kj().run(); new zi().run(); new zm().run(); new rj().run(); new ho().run(); new ek().run(); new dm().run(); new un().run(); new tj().run(); new xi().run(); new qn().run(); new ml().run(); new cj().run(); new wn().run(); new zn().run(); new bk().run(); new in().run(); new jl().run(); new hk().run(); new jn().run(); new an().run(); new vj().run(); new tm().run(); new xk().run(); new sl().run(); new bn().run(); new nj().run(); new gn().run(); new wk().run(); new am().run(); new hn().run(); new ik().run(); new mj().run(); new zl().run(); new sk().run(); new mm().run(); new om().run(); new rm().run(); new gk().run(); new rn().run(); new io().run(); new tk().run(); new en().run(); new jo().run(); new pn().run(); new ym().run(); new lj().run(); new dj().run(); new ql().run(); new ck().run(); new cm().run(); new tn().run(); new yl().run(); new jj().run(); new fk().run(); new lm().run(); new wl().run(); new pl().run(); new ak().run(); new si().run(); new ui().run(); new mk().run(); } catch(Exception v0) { v0.printStackTrace(); } } }
from typing import * import re import os order = 'ol jm fn aj xl yn qm ao vn wm wj xn jk nl co um nn ll ul uj ln el vk hj cl ti cn kk tl go pm wi fm uk bl rk bo lk bj rl il ko yi pk gm dn km sm yk on al qk hl pj pi qi qj sj yj kl vi gj nk ej vl nm bm ri dl kn mn sn ok gl eo do xj zj fl dk fj im zk hm xm vm ij fo oj em kj zi zm rj ho ek dm un tj xi qn ml cj wn zn bk in jl hk jn an vj tm xk sl bn nj gn wk am hn ik mj zl sk mm om rm gk rn io tk en jo pn ym lj dj ql ck cm tn yl jj fk lm wl pl ak si ui mk'.split(' ')
dic = {} for i in order: url = os.path.join('/Users/zrzz/Downloads/com.ryen.gun', i + '.java') withopen(url, 'r') as f: content = f.read() if"hgame.vidar.club"in content: a = re.search(r'fd\.h\(\"bullet\", \"name\", \"(.)\", \"value\"\);', content).groups()[0] time = re.search(r'v0_1, (.+?)L, new mr', content).groups()[0] if'0x'in time: time = int(time, 16) else: time = int(time) dic[time] = a dic = sorted(dic.items(), key=lambda x: x[0]) flag = list(map(lambda x:x[1], dic)) print(''.join(flag)) # tsmyq{dQh3x_y3_nk_z4F1h3_0d_zi7I0dw}