Exemplo n.º 1
0
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
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
#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)