
EZip (50pts) Encrypt and ZIP EZip.zip 9adf5c855fdf8f5c39962e5785fb2205 v Deskripsi Peserta di beri sebuah file zip yang berisi file sebagai berikut: Archive: EZip.zip inflating: EZip.py inflating: flag.txt.EZip File EZip.py merupakan script yang telah mengenkripsi file flag.txt menjadi flag.txt.EZip dilihat dari extensinya. v Penyelesaian Analisa fungsi ez yang berisi script sebagai berikut. def ez(file): with open(file, 'r') as x, gzip.open(file + ".EZip", 'w') as y: y.write(compress(x.read())) Dilihat fungsi ini file inputan kita akan di open dan simpan ke dalam variable x, juga mengopen file inputan kita dengan menambah ektensi .EZip di simpan ke dalam variable y. Kemudian file inputan kita di baca dan di compress. Analisa fungsi compress yang berisi script sebagai berikut. def compress(str): return press(zlib.compress(str)) Di fungsi ini dilakukan proses zlib compress kemudian di lakukan proses press. Analisa fungsi press def press(str): z = chr(ord(str[0]) ^ ord('E')) for x, y in enumerate(str[1:]): z += chr(ord(y) ^ ord(str[x])) return z Di fungsi ini terjadi proses yang sebenarnya, char pertama dari hasil zlib.compress yang terjadi di fungsi compress akan di xor dengan E dan di simpan ke variable z. Kemudian str kecuali index pertama di enumerate menghasilkan x sebagai index ( ingat ini terkecuali str index pertama jadi mulai lagi dari 0) dan y sebagai value. Nilai y di xor dengan str[x] dan disimpan tambahkan ke variable z. Untuk melakukan dekripsi pesan kita harus membalikan langkah-langkah ini secara tepat. Proses dekripsi pertama kita open file yang terenkripsi dengan gzip kemudian kita lakukan kebalikan darip fungsi press ya itu dengan melakukan xor char pertama dari str dan kemudian melakukan proses xor dengan enumerate str kecuali index pertama dan tahapan terakhir melakukan proses zlib decompress. Script dekrip EZip sebagai berikut. This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review,...