def decryptParamsAndCheckAdmin(encryptedParams): cipher = challenge10.CBC(AES.new(key, AES.MODE_ECB), key) paddedParams = cipher.decrypt(encryptedParams) params = challenge15.unpadPKCS7(paddedParams) if any([x > 127 for x in params]): raise ValueError(params) return params.find(b';admin=true;') != -1
def padding_oracle(iv, s): cipher = challenge10.CBC(AES.new(key, AES.MODE_ECB), iv) paddedT = cipher.decrypt(s) try: t = challenge15.unpadPKCS7(paddedT) except ValueError: return False return True
def decryptParamsAndCheckAdmin(encryptedParams): cipher = challenge10.CBC(AES.new(key, AES.MODE_ECB), iv) paddedParams = cipher.decrypt(encryptedParams) params = challenge15.unpadPKCS7(paddedParams) return params.find(b';admin=true;') != -1
def decipher(iv, s, padding_oracle): knownP = b'' for i in range(len(s) // 16): st = s if i == 0 else s[:-i * 16] knownP = decipher_last_block(iv, st, padding_oracle) + knownP return challenge15.unpadPKCS7(knownP)
def decryptParamsAndCheckAdmin(encryptedParams): cipher = challenge18.CTR(AES.new(key, AES.MODE_ECB), nonce) paddedParams = cipher.decrypt(encryptedParams) params = challenge15.unpadPKCS7(paddedParams) return params.find(b';admin=true;') != -1
def decrypt(self, key, iv, encryptedMessage): cipher = AES.new(key, AES.MODE_CBC, iv) return challenge15.unpadPKCS7(cipher.decrypt(encryptedMessage)).decode('ascii')