Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. from Crypto.Hash import SHA256
  2. from Crypto.Cipher import AES
  3. import os, random, sys, pkg_resources
  4.  
  5. def encrypt(key, filename):
  6. chunksize = 64 * 1024
  7. outFile = os.path.join(os.path.dirname(filename), "(lock)"+os.path.basename(filename))
  8. filesize = str(os.path.getsize(filename)).zfill(16)
  9. IV = ''
  10.  
  11. for i in range(16):
  12. IV += chr(random.randint(0, 0xFF))
  13.  
  14. encryptor = AES.new(key, AES.MODE_CBC, IV)
  15.  
  16. with open(filename, "rb") as infile:
  17. with open(outFile, "wb") as outfile:
  18. outfile.write(filesize)
  19. outfile.write(IV)
  20. while True:
  21. chunk = infile.read(chunksize)
  22.  
  23. if len(chunk) == 0:
  24. break
  25.  
  26. elif len(chunk) % 16 !=0:
  27. chunk += ' ' * (16 - (len(chunk) % 16))
  28.  
  29. outfile.write(encryptor.encrypt(chunk))
  30.  
  31.  
  32. def decrypt(key, filename):
  33. outFile = os.path.join(os.path.dirname(filename), os.path.basename(filename[6:]))
  34. chunksize = 64 * 1024
  35. with open(filename, "rb") as infile:
  36. filesize = infile.read(16)
  37. IV = infile.read(16)
  38.  
  39. decryptor = AES.new(key, AES.MODE_CBC, IV)
  40.  
  41. with open(outFile, "wb") as outfile:
  42. while True:
  43. chunk = infile.read(chunksize)
  44. if len(chunk) == 0:
  45. break
  46.  
  47. outfile.write(decryptor.decrypt(chunk))
  48.  
  49. outfile.truncate(int(filesize))
  50.  
  51. def allfiles():
  52. allFiles = []
  53. for root, subfiles, files in os.walk(os.getcwd()):
  54. for names in files:
  55. allFiles.append(os.path.join(root, names))
  56.  
  57. return allFiles
  58.  
  59.  
  60. choice = raw_input("Apakah anda ingin (E)ncrypt atau (D)ecrypt? ")
  61. password = raw_input("Enter the password: ")
  62.  
  63. encFiles = allfiles()
  64.  
  65. if choice == "E":
  66. for Tfiles in encFiles:
  67. if os.path.basename(Tfiles).startswith("(lock)"):
  68. print "%s sudah di encrypt" %str(Tfiles)
  69. pass
  70.  
  71. elif Tfiles == os.path.join(os.getcwd(), sys.argv[0]):
  72. pass
  73. else:
  74. encrypt(SHA256.new(password).digest(), str(Tfiles))
  75. print "Selesai encrypting %s" %str(Tfiles)
  76. os.remove(Tfiles)
  77.  
  78. elif choice == "e":
  79. for Tfiles in encFiles:
  80. if os.path.basename(Tfiles).startswith("(lock)"):
  81. print "%s sudah di encrypt" %str(Tfiles)
  82. pass
  83.  
  84. elif Tfiles == os.path.join(os.getcwd(), sys.argv[0]):
  85. pass
  86. else:
  87. encrypt(SHA256.new(password).digest(), str(Tfiles))
  88. print "Selesai encrypting %s" %str(Tfiles)
  89. os.remove(Tfiles)
  90.  
  91.  
  92. elif choice == "D":
  93. filename = raw_input("Masukan nama file yang ingin di Decrypt ex: (encrypted)debian.phar : ")
  94. if not os.path.exists(filename):
  95. print "File tidak ada"
  96. sys.exit(0)
  97. elif not filename.startswith("(lock)"):
  98. print "%s File sudah di encrypted" %filename
  99. sys.exit()
  100. else:
  101. decrypt(SHA256.new(password).digest(), filename)
  102. print "Selesai decrypting %s" %filename
  103. os.remove(filename)
  104.  
  105.  
  106. elif choice == "d":
  107. filename = raw_input("Masukan nama file yang ingin di Decrypt ex: (encrypted)debian.phar : ")
  108. if not os.path.exists(filename):
  109. print "File tidak ada"
  110. sys.exit(0)
  111. elif not filename.startswith("(lock)"):
  112. print "%s File sudah di encrypted" %filename
  113. sys.exit()
  114. else:
  115. decrypt(SHA256.new(password).digest(), filename)
  116. print "Selesai decrypting %s" %filename
  117. os.remove(filename)
  118.  
  119. else:
  120. print "Masukan pilihan yang benar."
  121. sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement