Experimenting with AES-128 symmetric key cipher.using python PART 2: you will try to use "brute force" to decrypt an encrypted message, where you only have the first 96-bits of the 128-bit secret key (last 4 bytes of the secret key are missing!) The program should be called "findk", and should deal with two files that contain the encrypted text as a stream of bytes and the first 96-bits of the key, respectively. The program should print out on standard output the missing 4 bytes of the key in hexadecimal, the decrypted message and the time it took to find the correct key. o To test this part, here is the encrypted file (ciphertext2.dat), and the first 96-bits of the key (partial-key.dat) Hint: the original message starts with the word "Salam". Answer you provided . from Crypto.Cipher import AES def revpad(s): """ This function is to remove padding. parameters: s:str string to be reverse padded """ k = ord(s[-1]) temp = 0 # temporary variable to check padding for i in range(1, k): # for loop to check padding if (s[-i] != s[-1]): # comparision of bytes with the last Byte temp = 1 if (temp == 0): return (s[:-k]) # Reverse padded string else: return ("Wrong padding") def decrypt(ct, key): """ This function is for decrypting ciphertext in ECB mode parameters: ct: str ciphertext to be decrypted key: str key for ECB mode encryption whose lenght is always a multiple of 16 in this case """ plaintxt = AES.new(key, AES.MODE_ECB) pt = plaintxt.decrypt(ct) return revpad(pt) # After decrypting padding should be removed if __name__ == "__main__": ciphertext = open("ciphertext2.dat", "r").read() partial_key = open("partial-key.dat", "r") for i in range(256): for j in range(256): for k in range(256): for l in range(256): remaining_key = chr(i) + chr(j) + chr(k) + chr(l) key = partial_key + remaining_key decrypted_text = decrypt(ciphertext, key) if (decrypted_text[:5] == "Salam"): print(decrypted_text)   key = partial_key + remaining_key TypeError: unsupported operand type(s) for +: '_io.TextIOWrapper' and 'str' why the error? , please can you correct the code to give the output =  should print out on standard output the missing 4 bytes of the key in hexadecimal, the decrypted message and the time it took to find the correct key. thank you in advance.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Experimenting with AES-128 symmetric key cipher.using python

PART 2: you will try to use "brute force" to decrypt an encrypted message, where you only have the first 96-bits of the 128-bit secret key (last 4 bytes of the secret key are missing!) The program should be called "findk", and should deal with two files that contain the encrypted text as a stream of bytes and the first 96-bits of the key, respectively. The program should print out on standard output the missing 4 bytes of the key in hexadecimal, the decrypted message and the time it took to find the correct key.
o To test this part, here is the encrypted file (ciphertext2.dat), and the first 96-bits of the key (partial-key.dat) Hint: the original message starts with the word "Salam".

Answer you provided .
from Crypto.Cipher import AES


def revpad(s):
"""
This function is to remove padding.

parameters:
s:str
string to be reverse padded

"""

k = ord(s[-1])
temp = 0 # temporary variable to check padding
for i in range(1, k): # for loop to check padding
if (s[-i] != s[-1]): # comparision of bytes with the last Byte
temp = 1

if (temp == 0):
return (s[:-k]) # Reverse padded string
else:
return ("Wrong padding")


def decrypt(ct, key):
"""
This function is for decrypting ciphertext in ECB mode

parameters:
ct: str
ciphertext to be decrypted
key: str
key for ECB mode encryption whose lenght is always a multiple of 16 in this case
"""

plaintxt = AES.new(key, AES.MODE_ECB)
pt = plaintxt.decrypt(ct)

return revpad(pt) # After decrypting padding should be removed


if __name__ == "__main__":
ciphertext = open("ciphertext2.dat", "r").read()
partial_key = open("partial-key.dat", "r")
for i in range(256):
for j in range(256):
for k in range(256):
for l in range(256):
remaining_key = chr(i) + chr(j) + chr(k) + chr(l)

key = partial_key + remaining_key
decrypted_text = decrypt(ciphertext, key)
if (decrypted_text[:5] == "Salam"):
print(decrypted_text)

 

key = partial_key + remaining_key
TypeError: unsupported operand type(s) for +: '_io.TextIOWrapper' and 'str'

why the error? ,

please can you correct the code to give the output =  should print out on standard output the missing 4 bytes of the key in hexadecimal, the decrypted message and the time it took to find the correct key.

thank you in advance.

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Encryption and decryption
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education