Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| import numpy as np | |
| import hashlib | |
| from fpdf import FPDF | |
| from datetime import datetime | |
| # --- 1. SETUP THUẬT TOÁN (Giữ nguyên) --- | |
| SECRET_CODE = os.getenv("ES") | |
| exec_context = {} | |
| encrypt_fn = decrypt_fn = None | |
| if SECRET_CODE: | |
| try: | |
| exec(SECRET_CODE, exec_context) | |
| encrypt_fn, decrypt_fn = exec_context.get('transform_byte'), exec_context.get('untransform_byte') | |
| except Exception as e: print(f"Error: {e}") | |
| def get_file_sha256(file_path): | |
| h = hashlib.sha256() | |
| with open(file_path, 'rb') as f: | |
| while chunk := f.read(8192): h.update(chunk) | |
| return h.hexdigest() | |
| # --- 2. HÀM THIẾT KẾ CHỨNG CHỈ SIÊU CẤP --- | |
| class T4S_PDF(FPDF): | |
| def header(self): | |
| # Vẽ một thanh header màu xanh đậm | |
| self.set_fill_color(44, 62, 80) | |
| self.rect(0, 0, 297, 30, 'F') | |
| self.set_text_color(255, 255, 255) | |
| self.set_font("Helvetica", "B", 20) | |
| self.cell(0, 10, "TITANIUM4S - QUANTUM SECURE PROTOCOL", ln=True, align="C") | |
| self.set_font("Helvetica", "", 10) | |
| self.cell(0, 5, "Official Security Audit & Ownership Certificate", ln=True, align="C") | |
| def footer(self): | |
| self.set_y(-20) | |
| self.set_font("Helvetica", "I", 8) | |
| self.set_text_color(150, 150, 150) | |
| self.cell(0, 10, f"Issued by Titanium4S Zero-Trust Engine | Record ID: {hashlib.md5(str(datetime.now()).encode()).hexdigest()[:10].upper()}", align="C") | |
| def create_detailed_pdf(file_name, sha_hash, password, output_path): | |
| pdf = T4S_PDF(orientation="L", unit="mm", format="A4") | |
| pdf.add_page() | |
| # 1. PHẦN THÔNG TIN FILE (Bố cục cột) | |
| pdf.ln(10) | |
| pdf.set_text_color(0, 0, 0) | |
| pdf.set_font("Helvetica", "B", 16) | |
| pdf.cell(0, 10, "1. PROTECTED ASSET IDENTITY", ln=True) | |
| pdf.set_line_width(0.5); pdf.set_draw_color(44, 62, 80); pdf.line(10, pdf.get_y(), 287, pdf.get_y()) | |
| pdf.ln(5) | |
| pdf.set_font("Helvetica", "", 12) | |
| pdf.cell(40, 10, "Filename:", 0); pdf.set_font("Helvetica", "B", 12); pdf.cell(0, 10, file_name, ln=True) | |
| pdf.set_font("Helvetica", "", 12) | |
| pdf.cell(40, 10, "SHA-256 Fingerprint:", 0); pdf.set_font("Courier", "B", 10); pdf.cell(0, 10, sha_hash, ln=True) | |
| # 2. PHẦN CÔNG NGHỆ (Technology Overview) | |
| pdf.ln(10) | |
| pdf.set_font("Helvetica", "B", 16) | |
| pdf.cell(0, 10, "2. TECHNOLOGY SPECIFICATION", ln=True) | |
| pdf.set_line_width(0.5); pdf.line(10, pdf.get_y(), 287, pdf.get_y()) | |
| pdf.ln(5) | |
| pdf.set_font("Helvetica", "", 11) | |
| tech_info = ( | |
| "- Key Stretching: SHA-512 (10,000 Iterations) - Immunity against ASIC/GPU brute-force.\n" | |
| "- Cipher Core: Vectorized Non-linear Transformation (Proprietary ES Logic).\n" | |
| "- Protocol: Zero-Knowledge Proof (The system never stores your secret key)." | |
| ) | |
| pdf.multi_cell(0, 7, tech_info) | |
| # 3. PHẦN MẬT KHẨU & CẢNH BÁO (Làm nổi bật) | |
| pdf.ln(10) | |
| pdf.set_fill_color(254, 249, 231) # Màu vàng nhạt cho vùng password | |
| pdf.rect(10, pdf.get_y(), 277, 25, 'F') | |
| pdf.set_y(pdf.get_y() + 5) | |
| pdf.set_font("Helvetica", "B", 14); pdf.set_text_color(192, 57, 43) | |
| pdf.cell(0, 5, "CRITICAL: YOUR SECRET KEY RECORD", ln=True, align="C") | |
| pdf.set_font("Courier", "B", 18) | |
| pdf.cell(0, 12, password, ln=True, align="C") | |
| # 4. LỜI NHẮC CỦA TITANIUM4S | |
| pdf.ln(15) | |
| pdf.set_text_color(44, 62, 80) | |
| pdf.set_font("Helvetica", "B", 12) | |
| pdf.cell(0, 10, "SECURITY COMPLIANCE & WARNINGS:", ln=True) | |
| pdf.set_font("Helvetica", "", 10) | |
| pdf.multi_cell(0, 6, ( | |
| "1. This PDF is the only proof of ownership. If deleted, there is no backup on any server.\n" | |
| "2. The file .impossible is mathematically locked. Brute-forcing would take centuries with current hardware.\n" | |
| "3. Please store this certificate in a secure vault or an offline encrypted drive." | |
| )) | |
| # Đóng dấu "TOP SECRET" giả lập | |
| pdf.set_font("Helvetica", "B", 50) | |
| pdf.set_text_color(231, 76, 60) | |
| pdf.rotate(25, 200, 150) | |
| pdf.text(180, 180, "TOP SECRET") | |
| pdf.rotate(0) | |
| pdf.output(output_path) | |
| return output_path | |
| # --- 3. LOGIC XỬ LÝ CHÍNH --- | |
| def stretch_key(password): | |
| key = password.encode() + b"MinhDuc_Zero_Trust_Protocol" | |
| for _ in range(10000): key = hashlib.sha512(key).digest() | |
| return key[:32] | |
| def process_file(file, password, mode, progress=gr.Progress()): | |
| if not encrypt_fn: return None, "❌ Secret ES Error!" | |
| master_key = np.frombuffer(stretch_key(password), dtype=np.uint8) | |
| input_path = file.name | |
| original_name = os.path.basename(input_path) | |
| is_encrypt = (mode == "Mã hóa") | |
| output_name = original_name + ".impossible" if is_encrypt else (original_name.replace(".impossible", "") if original_name.endswith(".impossible") else "rebuilt_" + original_name) | |
| output_path = os.path.join(os.path.dirname(input_path), output_name) | |
| file_size = os.path.getsize(input_path) | |
| chunk_size = 4 * 1024 * 1024 | |
| bytes_processed = 0 | |
| fn = encrypt_fn if is_encrypt else decrypt_fn | |
| try: | |
| file_hash = get_file_sha256(input_path) if is_encrypt else "N/A" | |
| with open(input_path, 'rb') as f_in, open(output_path, 'wb') as f_out: | |
| while True: | |
| chunk = f_in.read(chunk_size) | |
| if not chunk: break | |
| data_arr = np.frombuffer(chunk, dtype=np.uint8) | |
| indices = np.arange(bytes_processed, bytes_processed + len(data_arr), dtype=np.uint64) | |
| key_chunk = master_key[indices % 32] | |
| f_out.write(fn(data_arr, key_chunk, indices).astype(np.uint8).tobytes()) | |
| bytes_processed += len(chunk) | |
| progress(bytes_processed / file_size, desc=f"Processing {mode}...") | |
| if is_encrypt: | |
| pdf_path = os.path.join(os.path.dirname(input_path), f"Audit_{original_name}.pdf") | |
| create_detailed_pdf(original_name, file_hash, password, pdf_path) | |
| return [output_path, pdf_path], "✅ Đã mã hóa & Xuất hồ sơ bảo mật!" | |
| return [output_path], "✅ Giải mã thành công!" | |
| except Exception as e: return None, f"❌ Lỗi: {str(e)}" | |
| # --- 4. GIAO DIỆN --- | |
| with gr.Blocks(theme=gr.themes.Monochrome(), title="Titanium4S Vault") as demo: | |
| gr.Markdown("# 🛡️ Titanium4S - Ultimate Audit Edition") | |
| with gr.Row(): | |
| with gr.Column(): | |
| inp_file = gr.File(label="Target File") | |
| inp_pass = gr.Textbox(label="Secret Key", type="password") | |
| inp_mode = gr.Radio(["Mã hóa", "Giải mã"], label="Mode", value="Mã hóa") | |
| btn = gr.Button("INITIALIZE PROTOCOL", variant="primary") | |
| with gr.Column(): | |
| out_files = gr.File(label="Output Assets", file_count="multiple") | |
| status = gr.Textbox(label="System Status", interactive=False) | |
| btn.click(process_file, [inp_file, inp_pass, inp_mode], [out_files, status]) | |
| demo.queue(1).launch(ssr_mode=False) | |