コード例 #1
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()
コード例 #2
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)