示例#1
0
def gen_token(userdata):
    global key
    iv = rndfile.read(16)
    crypt = AES.new(key, AES.MODE_CBC, iv)
    userdata = userdata.replace(b"=", b"")  # OM NOM NOM
    userdata = userdata.replace(b";", b"")  # NOM NOM NOM NOM
    data = b"comment1=cooking%20MCs;userdata=" + userdata + b";comment2=%20like%20a%20pound%20of%20bacon"
    return iv + crypt.encrypt(pad_pkcs7(data, 16))
示例#2
0
 def encrypt(self, data):
     data = pad_pkcs7(data, self.bsz)
     output = bytes()
     iv = self.iv
     for i in range(0, len(data), self.bsz):
         block = self.cph.encrypt(
             bytes([a ^ b for a, b in zip(data[i:i + self.bsz], iv)]))
         output += block
         iv = block
     return output
示例#3
0
def encryption_oracle(data):
    rndfile = Random.new()
    mode = random.choice([AES.MODE_ECB, AES.MODE_CBC])
    if mode == AES.MODE_ECB:
        print("Using ECB!")
        crypt = AES.new(rndfile.read(16), mode)
    else:
        print("Using CBC!")
        crypt = AES.new(rndfile.read(16), mode, rndfile.read(16))

    plaintext = rndfile.read(random.randrange(5, 10)) + data + rndfile.read(
        random.randrange(5, 10))
    return crypt.encrypt(pad_pkcs7(plaintext, 16))
示例#4
0
def encryption_oracle(data):
    global key
    crypt = AES.new(key, AES.MODE_ECB)
    return crypt.encrypt(pad_pkcs7(data + magic, 16))
示例#5
0
def encrypted_profile_for(email):
    global key
    crypt = AES.new(key, AES.MODE_ECB)
    return crypt.encrypt(pad_pkcs7(profile_for(email).encode("ascii"), 16))