مخفیسازی امن فایلها با رمزنگاری AES-256 — هر فایلی را درون هر فایلی پنهان کن
StegaSuite یک اپلیکیشن اندرویدی متنباز است که با استفاده از تکنیک Steganography (نهاننگاری) امکان مخفیسازی هر نوع فایلی را درون فایلهای دیگر فراهم میکند. برخلاف رمزنگاری معمولی که فقط محتوا را رمز میکند، StegaSuite وجود خود فایل مخفی شده را هم پنهان میکند — یعنی کسی که فایل حامل را میبیند، حتی نمیداند چیزی درونش پنهان شده!
فایل مخفی شده با استاندارد نظامی AES-256 رمز میشود. حتی اگر کسی مکانیزم مخفیسازی را پیدا کند، بدون رمز عبور قادر به خواندن محتوا نیست.
PNG, BMP, TIFF, WebP, WAV, MP3, MP4, PDF, ZIP و دهها فرمت دیگر به عنوان حامل. فایل مخفی شونده هم هیچ محدودیتی ندارد.
پشتیبانی کامل از فارسی (RTL) و انگلیسی (LTR) با قابلیت جابجایی آنی بین زبانها. طراحی مدرن با تم تاریک و روشن.
نیازی به انتخاب دستی فرمت نیست. اپلیکیشن با خواندن Magic Bytes فایل حامل، فرمت را به صورت خودکار تشخیص میدهد.
قبل از مخفیسازی، ظرفیت واقعی فایل حامل نمایش داده میشود تا بدانید حداکثر چه حجمی میتوانید مخفی کنید.
بدون نیاز به دسترسی روت یا جیلبریک. مستقیماً از GitHub Releases نصب و استفاده کنید (انتشار گوگلپلی بهزودی).
فایل حامل فایلی است که فایل مخفی شونده درون آن پنهان میشود. این فایل بعد از مخفیسازی کاملاً عادی به نظر میرسد.
هر فایلی را میتوانید مخفی کنید: متن، تصویر، صدا، ویدیو، PDF، ZIP و هر فرمت دیگری.
رمز عبور باعث میشود فایل مخفی شده علاوه بر مخفی بودن، با AES-256 هم رمز شود. این لایه امنیتی اضافه را Defense in Depth مینامند.
| نسخه | فایل | توضیح |
|---|---|---|
| نصبی (خودکفا) | StegaSuite-Install-2.0.0.zip | باز کن و Install.bat را اجرا کن (با ادمین → Program Files، بدون ادمین → نصب کاربرمحور). بدون نیاز به .NET |
| پرتابل | StegaSuite-Portable-2.0.0.exe | بدون نصب — فقط یکبار .NET 10 Desktop Runtime را نصب کن |
برنامه بدون ورود باز نمیشود (صفحه لاگین تمامصفحه):
این فرمتها به صورت بومی و با بالاترین کیفیت پشتیبانی میشوند:
| فرمت | پسوند | روش مخفیسازی | توضیح |
|---|---|---|---|
| PNG | .png | LSB پیکسلی | بهترین گزینه — بدون افت کیفیت |
| BMP | .bmp | LSB پیکسلی | کیفیت عالی، حجم بالا |
| WAV | .wav | LSB نمونه صوتی | صدا بدون تغییر شنیداری |
این فرمتها با روش Generic LSB پشتیبانی میشوند. برخی ممکن است باعث افت کیفیت شوند:
| دستهبندی | فرمتها | توضیح |
|---|---|---|
| تصاویر | TIFF, WebP, GIF, SVG | با تشخیص ساختار فایل، هدر پرش میشود |
| صدا | MP3, FLAC, OGG, M4A, AAC | پس از هدر فایل صوتی، LSB تغییر میکند |
| ویدیو | MP4, AVI, MKV, MOV, WebM | تشخیص اتمهای MP4/Matroska |
| اسناد | PDF, DOCX, XLSX, PPTX, TXT | پرش تا %%EOF یا هدر فایل |
| آرشیو | ZIP, RAR, 7Z, TAR, GZ | پرش از هدر ۳۰ بایتی ZIP |
| کد | JS, PY, TS, HTML, CSS | پرش ۴ بایت از ابتدای فایل |
فایل مخفی شده در کماهمیتترین بیتها (Least Significant Bit) فایل حامل قرار میگیرد. این تغییر آنقدر کوچک است که با چشم غیرمسلح یا ابزار معمولی قابل تشخیص نیست.
اگر رمز عبور تنظیم شده باشد، داده قبل از مخفیسازی با AES-256-GCM رمز میشود:
| پارامتر | مقدار | توضیح |
|---|---|---|
| الگوریتم | AES/GCM/NoPadding | رمزنگاری تصدیق شده (Authenticated Encryption) |
| اندازه کلید | 256 bits | امن در برابر حملات کوانتومی فعلی |
| استخراج کلید | PBKDF2WithHmacSHA256 | استاندارد استخراج کلید از رمز عبور |
| تعداد تکرار | 600,000 | مقاوم در برابر brute-force |
| Salt | 16 bytes | تصادفی با SecureRandom |
| Nonce (IV) | 12 bytes | تصادفی با SecureRandom |
| تگ GCM | 128 bits | تصدیق یکپارچگی داده |
هر فایل مخفی شده دارای ساختار زیر است:
┌─────────────────────────────────────────────────┐ │ Magic Bytes: SGP2 / SGF1 / SGA1 (4 bytes) │ ← تشخیص نوع فایل مخفی │ Payload Length (8 bytes) │ ← اندازه داده مخفی شده │ ┌───────────────────────────────────────────┐ │ │ │ Encrypted/CRC'd Payload │ │ ← داده رمز شده یا CRC │ │ ┌─────────────────────────────────────┐ │ │ │ │ │ Filename Length (4 bytes) │ │ │ ← طول نام فایل │ │ │ Filename (UTF-8) (≤1024 bytes) │ │ │ ← نام اصلی فایل │ │ │ File Content (N bytes) │ │ │ ← محتوای اصلی فایل │ │ └─────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘
اپلیکیشن برای جلوگیری از خرابی فایل حامل، هدر فرمتها را شناسایی و از آنها رد میشود:
| فرمت | Magic Bytes | بایت امن (Safe Offset) |
|---|---|---|
| JPEG | FF D8 | متغیر — تا SOS/EOI اسکن میکند |
| 25 25 (%%) | متغیر — تا %%EOF اسکن میکند | |
| ZIP | 50 4B 03 04 | 30 |
| RAR | 52 69 63 68 | 12 |
| Matroska | 1A 45 DF A3 | 4 |
| GIF | 47 49 46 | 13 |
| TIFF | 49 49 2A 00 / 4D 4D 00 2A | 8 |
| سایر | — | 4 (پیشفرض) |
| نوع حامل | فرمول | مثال |
|---|---|---|
| PNG/BMP | (عرض × ارتفاع × 3) ÷ 8 | تصویر ۱۹۲۰×۱۰۸۰: ≈ ۷۷۷ کیلوبایت |
| WAV | (تعداد نمونه × کانالها) ÷ 8 | صدای ۱۰ ثانیه ۴۴.۱kHz: ≈ ۲۵۹ کیلوبایت |
| عمومی | (اندازه فایل - بایت امن) ÷ 8 | فایل ۱ مگابایتی: ≈ ۱۲۲ کیلوبایت |
| محدودیت | توضیح | راهحل |
|---|---|---|
| حداکثر اندازه فایل | فایل مخفی شده حداکثر ۵۰ مگابایت باشد | فایل را فشرده (ZIP) کنید یا بخشهای کوچکتر بسازید |
| طول نام فایل | نام فایل حداکثر ۱۰۲۴ بایت (حدود ۳۴۰ حرف فارسی) | نامهای کوتاهتر استفاده کنید |
| فرمتهای Lossy | JPEG و WebP ممکن است داده را خراب کنند | از PNG یا BMP استفاده کنید |
| ظرفیت محدود | اندازه فایل مخفی شده به اندازه فایل حامل بستگی دارد | فایل حامل بزرگتر انتخاب کنید |
| فایلهای ویرایش شده | اگر فایل حامل بعد از مخفیسازی ویرایش شود (مثل crop عکس)، داده خراب میشود | فایل حامل را دستکاری نکنید |
| V1 Legacy | فایلهای مخفی شده با نسخه قدیمیتر نام فایل اصلی را ندارند | از نسخه جدید استفاده کنید |
| نشانه | علت احتمالی | راهحل |
|---|---|---|
| خطا در استخراج: «پسورد اشتباه یا فایل خراب» | رمز عبور اشتباه یا فایل حامل ویرایش/فشرده شده | رمز را دوباره بررسی کنید. مطمئن شوید فایل حامل تغییر نکرده. |
| خطا: «فایل خراب است» | فایل حامل با فشردهسازی یا ویرایش آسیب دیده | از نسخه اصلی فایل حامل استفاده کنید. از PNG استفاده کنید. |
| ظرفیت کافی نیست | فایل حامل کوچکتر از فایل مخفی شونده است | فایل حامل بزرگتر انتخاب کنید یا فایل مخفی شونده را فشرده کنید. |
| فایل خروجی باز نمیشود | فرمت فایل خروجی با اپلیکیشن پیشفرض سازگار نیست | فایل را با اپلیکیشن مناسب باز کنید (مثلاً PNG با نمایشگر تصویر). |
| «پسورد خالی است» | فیلد رمز عبور خالی گذاشته شده | یا رمز وارد کنید، یا فیلد را خالی رها کنید (بدون رمزنگاری). |
| نام فایل نمایش داده نمیشود | فایل با نسخه قدیمیتر (V1) مخفی شده | نام فایل استخراج شده «recovered_file» خواهد بود. طبیعی است. |
| ویژگی | StegaSuite | ابزارهای مشابه |
|---|---|---|
| رمزنگاری | AES-256-GCM | معمولاً AES-128 یا بدون رمزنگاری |
| فرمتهای حامل | ۳۰+ فرمت | عمدتاً PNG/JPEG |
| تشخیص فرمت | خودکار با Magic Bytes | دستی یا فقط پسوند |
| رابط کاربری | فارسی و انگلیسی | عمدتاً انگلیسی |
| متنباز | بله | معمولاً خیر |
| پشتیبانی V1/V2 | backward compatible | معمولاً خیر |
| نسخه | Magic | ویژگی |
|---|---|---|
| V1 Legacy | SGP1 | بدون ذخیره نام فایل — نام خروجی: «recovered_file» |
| V2 Current | SGP2 | شامل نام فایل اصلی UTF-8 |
| File V1 | SGF1 | مخفیسازی عمومی فایلها (غیرتصویری) |
| Audio V1 | SGA1 | مخفیسازی در فایلهای صوتی WAV |
Original pixel: R=10110100 G=11001011 B=01101010
↑ ↑ ↑
LSB hidden: R=1011010**0** G=1100101**1** B=0110101**0**
↑ ↑ ↑
└───────┴───────┘
3 bits per pixel
تغییر رنگ: حداکثر 1/255
Capacity: width × height × 3 bits ÷ 8 = bytes