from flag import flag e = 0x1337 p = 199138677823743837339927520157607820029746574557746549094921488292877226509198315016018919385259781238148402833316033634968163276198999279327827901879426429664674358844084491830543271625147280950273934405879341438429171453002453838897458102128836690385604150324972907981960626767679153125735677417397078196059 q = 112213695905472142415221444515326532320352429478341683352811183503269676555434601229013679319423878238944956830244386653674413411658696751173844443394608246716053086226910581400528167848306119179879115809778793093611381764939789057524575349501163689452810148280625226541609383166347879832134495444706697124741 n = p * q assert (flag.startswith('NCTF')) m = int.from_bytes(flag.encode(), 'big') assert (m.bit_length() > 1337) c = pow(m, e, n) print(c) # 10562302690541901187975815594605242014385201583329309191736952454310803387032252007244962585846519762051885640856082157060593829013572592812958261432327975138581784360302599265408134332094134880789013207382277849503344042487389850373487656200657856862096900860792273206447552132458430989534820256156021128891296387414689693952047302604774923411425863612316726417214819110981605912408620996068520823370069362751149060142640529571400977787330956486849449005402750224992048562898004309319577192693315658275912449198365737965570035264841782399978307388920681068646219895287752359564029778568376881425070363592696751183359
from flag import flag assert flag.startswith("flag{") assert flag.endswith("}") assert len(flag) == 27 def lfsr(R, mask): output = (R << 1) & 0xffffff i = (R & mask) & 0xffffff lastbit = 0 while i != 0: lastbit ^= (i & 1) i = i >> 1 output ^= lastbit return (output, lastbit) R = int(flag[5:-1], 2) mask = 0x100002 f = open("key", "ab") for i in range(12): tmp = 0 for j in range(8): (R, out) = lfsr(R, mask) tmp = (tmp << 1) ^ out f.write(chr(tmp)) f.close()
from flag import flag assert flag.startswith("Susctf{") assert flag.endswith("}") assert len(flag)==27 def lfsr(R,mask): output = (R << 1) & 0xffffff i=(R&mask)&0xffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 output^=lastbit return (output,lastbit) R=int(flag[7:-1],2) mask = 0b1010011010101001100 f=open("key","ab") for i in range(12): tmp=0 for j in range(8): (R,out)=lfsr(R,mask) tmp=(tmp << 1)^out f.write(chr(tmp)) f.close()
from flag import flag assert flag.startswith("everctf{") assert flag.endswith("}") assert len(flag) == 28 def lfsr(R, mask): output = (R << 1) & 0xffffff i = (R & mask) & 0xffffff lastbit = 0 while i != 0: lastbit ^= (i & 1) i = i >> 1 output ^= lastbit return (output, lastbit) if __name__ == '__main__': R = int(flag[8:-1], 2) mask = 0b1010011000100011100 f = open("key", "wb") for i in range(12): tmp = 0 for j in range(8): (R, out) = lfsr(R, mask) tmp = (tmp << 1) ^ out f.write(tmp.to_bytes(1, byteorder='big')) f.close()
#encoding:utf-8 from Crypto.Util.number import bytes_to_long, long_to_bytes, getPrime import gmpy2, os from Crypto.Cipher import AES from flag import flag assert flag.startswith("DASCTF{") and flag.endswith("}") def padding(s, blocklen): length = (blocklen - len(s)) % blocklen return s + chr(length) * length key = os.urandom(16) iv = os.urandom(16) m = padding(flag, 16) c = AES.new(key, AES.MODE_CBC, iv).encrypt(m) print c.encode("hex") p = getPrime(512) q = getPrime(512) n = p * q e = 65537 m = bytes_to_long(key) c = pow(m, e, n) print hex(n).strip("L") print hex(c).strip("L") q = getPrime(512) n = p * q m = bytes_to_long(iv)