PC & IT SUPPORT MADE EASY FORUM
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Python Cypher Script

Go down

Python Cypher Script Empty Python Cypher Script

Post by jamied_uk 21st April 2021, 17:39

Code


Code:
#!/usr/bin/python3
# (c) J~Net 2021
#
# https://jnet.forumotion.com/t1734-python-cypher-script#2684
#
# ./menu.py
#
from Crypto import Random
from Crypto.Cipher import AES
import os
import os.path
from os import listdir
from os.path import isfile, join
import time

class Encryptor:
    def __init__(self, key):
        self.key=key

    def pad(self, s):
        return s + b"\0" * (AES.block_size - len(s) % AES.block_size)

    def encrypt(self, message, key, key_size=256):
        message=self.pad(message)
        iv=Random.new().read(AES.block_size)
        cipher=AES.new(key, AES.MODE_CBC, iv)
        return iv + cipher.encrypt(message)

    def encrypt_file(self, file_name):
        with open(file_name, 'rb') as fo:
            plaintext=fo.read()
        enc=self.encrypt(plaintext, self.key)
        with open(file_name + ".enc", 'wb') as fo:
            fo.write(enc)
        os.remove(file_name)

    def decrypt(self, ciphertext, key):
        iv=ciphertext[:AES.block_size]
        cipher=AES.new(key, AES.MODE_CBC, iv)
        plaintext=cipher.decrypt(ciphertext[AES.block_size:])
        return plaintext.rstrip(b"\0")

    def decrypt_file(self, file_name):
        with open(file_name, 'rb') as fo:
            ciphertext=fo.read()
        dec=self.decrypt(ciphertext, self.key)
        with open(file_name[:-4], 'wb') as fo:
            fo.write(dec)
        os.remove(file_name)

    def getAllFiles(self):
        dir_path=os.path.dirname(os.path.realpath(__file__))
        dirs=[]
        for dirName, subdirList, fileList in os.walk(dir_path):
            for fname in fileList:
                if (fname != 'script.py' and fname != 'data.txt.enc'):
                    dirs.append(dirName + "\\" + fname)
        return dirs

    def encrypt_all_files(self):
        dirs=self.getAllFiles()
        for file_name in dirs:
            self.encrypt_file(file_name)

    def decrypt_all_files(self):
        dirs=self.getAllFiles()
        for file_name in dirs:
            self.decrypt_file(file_name)


key=b'[EX\xc8\xd5\xbfI{\xa2$\x05(\xd5\x18\xbf\xc0\x85)\x10nc\x94\x02)j\xdf\xcb\xc4\x94\x9d(\x9e'
enc=Encryptor(key)
clear=lambda: os.system('clear')

if os.path.isfile('data.txt.enc'):
    while True:
        password=str(input("Enter password: "))
        enc.decrypt_file("data.txt.enc")
        p=''
        with open("data.txt", "r") as f:
            p=f.readlines()
        if p[0] == password:
            enc.encrypt_file("data.txt")
            break

    while True:
        clear()
        print("Welcome To The File Encyption Menu")
        print("")
        choice=int(input(
            "1. Press 1 To Encrypt File.\n2. Press 2 To Decrypt File.\n3. Press 3 To Encrypt All Files In The Folder.\n4. Press 4 To Decrypt All Files In The Folder.\n5. Press 5 To Exit.\n"))
        clear()
        if choice == 1:
            enc.encrypt_file(str(input("Enter name of file to encrypt: ")))
        elif choice == 2:
            enc.decrypt_file(str(input("Enter name of file to decrypt: ")))
        elif choice == 3:
            enc.encrypt_all_files()
        elif choice == 4:
            enc.decrypt_all_files()
        elif choice == 5:
            exit()
        else:
            print("Please select a valid option!")

else:
    while True:
        clear()
        password=str(input("Setting up stuff. Enter a password that will be used for decryption: "))
        repassword=str(input("Confirm password: "))
        if password == repassword:
            break
        else:
            print("Passwords Mismatched!")
    f=open("data.txt", "w+")
    f.write(password)
    f.close()
    enc.encrypt_file("data.txt")
    print("Please restart the program to complete the setup")
    time.sleep(15)



Code:
sudo pip install pycrypto

Then make Executable

sudo chmod +x menu.py

Then Run

./menu.py



Files that are encrypted will have a new extension for example:

test.txt.enc


Files that are encrypted will have a new extension for example:

test.txt.enc

To decrypt you use filename

test.txt
jamied_uk
jamied_uk
Admin

Posts : 2951
Join date : 2010-05-09
Age : 41
Location : UK

https://jnet.sytes.net

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum