به نام خدا : این مطلب درباره Steganography ( پنهاننگاری؛ پنهان سازی یک پیام کوچک درون فایل بزرگتری که ظاهراً حاوی چیز دیگری است ) میباشد؛ این مطلب هم فانه و هم یکمکی جنبه علمی داره! یه نرم افزار ساده نوشتم براتون برا حس کردن وجه عملی داستان که با C# هستش، سورس کد و چیز میزاشو هم ته مطلب گزاشتم براتون.
Steganography چیست
Steganography ( پنهاننگاری ) هنر و علم برقراری ارتباط پنهانی است؛ هدف آن پنهان کردن ارتباط به وسیله قرار دادن پیام در یک رسانه پوششی است به گونهای که کمترین تغییر قابل کشف را در آن ایجاد نماید و نتوان موجودیت پیام پنهان در رسانه را حتی به صورت احتمالی آشکار ساخت؛ پنهاننگاری شاخهای از دانشی به نام اختفاء اطلاعات (Data Hiding) است؛ دانش اختفاء اطلاعات خود شامل چندین شاخه از جمله Cryptography، Watermarking میباشد؛ افرادی که میخواهند به صورت سری با یکدیگر ارتباط داشته باشند، اغلب سعی میکنند که آن ارتباط را به هر نحوی پنهان کنند.
Steganography برگرفته از دو کلمه ی یونانی stego به معنای پوشیده و graphy به معنای نوشتن است؛ بنابراین کل کلمه به معنای پوشیدهنویسی یا پنهاننگاری میباشد.
در حقیقت در ابتدا یونانیان باستان از این روش استفاده میکردند؛ به اینصورت که نوشتههای داخل لوح سنگ بهوسیله نوعی از واکس، پوشیده میشدند؛ اگر فرستنده اطلاعات میخواست که پیغامش را مخفی کند برای اهداف نظامی از Steganography استفاده میکرد؛ به اینصورت که پیغام در لوح بهطور مستقیم حکاکی میشد؛ سپس واکس از بالای پیغام ریخته میشد؛ بنابراین Steganography نه به این معنا اما وجود داشت.
منبع : wikipedia
فرق Steganography با Cryptography
Steganography یک عمل باستانی هستش که شامل پنهان کردن داده ها هستش ( که در ادامه مطلب انواعشو ذکر کردم )، حالا اگه کسی داده رو پیدا کنه، دیگه همه چی تمومه!؛ اما Cryptography که برادر کوچکتر Steganography محسوب میشود ( از لحاظ تاریخی چیز جدید تری هستش )، کاری به پنهان کردن داده نداره، اصل کارش رو رمزگزاری ( قفل گزاری ) داده هستش، یعنی تو روش Cryptography داده رو هم جلوتون بزارن، باز چیزی ازش نمیفهمید، چون رمزگزاری شده است.
بهترین روش برا تامین امنیت داده، استفاده از هر دو روش فوق هستش!؛ یعنی دادهمون رو اول رمزگزاری ( Cryptography ) کنیم و بعد پنهانش ( Steganography ) کنیم!
انواع Steganography
Steganography با توجه به نیت استفاده ازش، به 2 دسته کلی تقسیم میشود :
- Data Hiding : محافظت در برابر شناسایی شدن!
- Document Marking : محافظت در برابر حذف شدن!
روش Data Hiding از گذشته وجود داشته، ولی Document Marking یه چیز جدیدی هستش برا اثبات حق مالکیت! که اینم داستانای خودشو داره، که خب تو این مطلب موضوع مورد بحث ما نی، فلذا میریم سراغ روش Data Hiding؛ منبعد، هرجا از Steganography حرف زدیم، منظور روش Data Hiding هستش.
Histaeius از میلان برای ارتباط مخفیانه با یونانیان، سر یک برده را تراشیده، پیغامی را بر روی پوست سر برده خالکوبی میکرد و بعد منتظر رشد موهای برده میشد، سپس برده رو به یونان میفرستاد، بعد موهای سر برده را میتراشیدند و پیام پنهان رو میخوانند!
منبع : Steganography: Introduction, Examples and Tools
Histaeius که یک رهبر بی رحم یونانی بود، به دنبال قیام بر علیه پادشاه پارس بود، پیامی توطئه آمیز ( دستورالعمل شروع شروش ) را بر سر یک برده خالکوبی کرد، بعد از رشد موهای برده، او را به یک رهبر شورشی دیگر فرستاد.
منبع : Ancient Uses of Cryptography: Four Examples that Pre-Date the Internet
توجه : سریال فرار از زندان هم بر مبنای خالکوبی بر روی بدن طراحی شده، که داستان اینطور هستش که طرف نقشه و اطلاعات زندان رو تو بدنش طوری خالکوبی میکنه که کسی متوجه نشه، بعد میره که داداششو نجات بده؛ من این سریال رو فک کنم 10 سال پیش دیدم ( البته چند فصل هستش که به مرور زمان ساخته شده )، زمانی که دبیرستان میرفتم، یه یارویی بود تو خیابون DVD فیلم میفروخت، ازش میخریدم، تو هر DVD فک کنم 4-5 قسمتش بود؛ هیییی، زمان چقدر زود میگذره! Steganography واقعی، زمان هستش، که عمر ما توش پنهان شده و کسی هم نمیتونه پیداش کنه، اصلا توجی بهش نداریم که بخوایم پیداش کنیم! خب دیگه شعر گفتن بسه، بریسم سراغ ادامه مطلب!
Scytale
یه نوع روش Steganography هستش که دادهها رو روی کاغذ ( تو گذشته متنون رو با چه قلمی و رو چه نوع کاغذی مینوشتن رو نمیدونم و موضوع بحث ما هم نی ) به صورت عمودی مینویسی و برای رمزگشایی گیرنده باید یک استوانه به همان اندازه داشته باشد، کاغذ رو دور استوانه میچرخونیش! بعد داده اصلی نمایان میشه! و به صورت افتی میخونیشون!؛ گفته می شود یونانیان باستان و به ویژه اسپارتان ها از این رمزگذار برای ارتباط در طول مبارزات نظامی استفاده می کردند.
منبع : wikipedia
مورخ یونان باستان، Herodotus نوشته : هنگامی که امپراطور پارس خشایار شاه در سال 480 پیش از میلاد به یونان حمله کرد، یونانیها توسط یک یونانی به نام Demaratus که در تبعید در ایران زندگی می کرد هشدار داده شدند ( طبق چیزی که خوندم این بابا شاهزاده اسپارتان ها بوده انگار که به ایران فرار میکنه، بعد که جنگ شروع میشه برمیگرده؛ یه چیز تو این مایه ها، کسی درست و حسابی تحقیق کرد، داستان کاملشو بده اینجا بزارم، چیز جالی میشه بنظرم )؛ در آن روزها از قرص های چوبی پوشیده از موم برای نوشتن استفاده می شد؛ Demaratus پیغام خود را بر روی لوح چوبی نوشت و سپس آن را با موم پوشاند، و این باعث می شود اطلاعات حیاتی به خارج از کشور قاچاق شود.
نشانه ( Cues )، کملهای خاص که در جمله بکار میره!
تعریف اصلی یک نشانه ، کلمه خاصی است که در متن ظاهر می شود و پیام را منتقل می کند؛ این نوع استگانوگرافی اغلب در شرایط جنگ برای پخش اطلاعات به جاسوسان یا نیروهای مقاومت در کشورهای دیگر مورد استفاده قرار می گرفت؛ ساده ترین مثال یک نمایش رادیویی شبانه است که در آن شنوندگان از قبل می دانند در طول قسمت خاصی از پخش، به یک کلمه خاص گوش فرا دهند؛ اگر این کلمه در طول پخش استفاده شود، دستورالعمل های خاصی باید رعایت شود؛ این روش ارتباطی به دلیل انعطاف پذیری بسیار مؤثر است؛ همچنین قادر به انتقال مقادیر زیادی از اطلاعات نیست!
یک مثال از روش فوق که فک کنم همتون شنیده باشید
کودتای 28 مرداد 1332 یکی از نقاط عطف تاریخ معاصر ایران است که با دخالت مستقیم آمریکا و انگلیس در ایران پیاده و دولت ملی دکتر محمد مصدق سرنگون شد .... نقشی که با جمله معروف «اینجا لندن است و اکنون ساعت دقیقا 12 نیمه شب است» آغاز و اجرا شد. این پیام در حقیقت رمز عملیات آژاکس برای سرنگونی دولت محمد مصدق بود که از رادیو بی.بی.سی پخش شد.
جوهر نامرئی ( Invisible Ink )
خب دیگه این روش نیازی به معرفی نداره، خودتون دیگه استادید، حداقل یکبار با این روش تو امتحانا تقلب کردید ^_^؛ قدیما یادمه از چوب نازک ( به عنوان قلم ) و لیمو ترش ( به عنوان جوهر ) برا این کار استفاده میکردیم که بعد از حرارت دادن کاغذ، متن پنهان نمایش داده میشد، بعد قلم مخصوص اینکار اومد به بازار که انتهای قلم یه LED مانندی داشت که مینداختی رو کاغذ، متن پنهانو نمایش میداد و ... در کل روش جالبی هستش ^_^؛ فیلم های زیر رو هم میتویند ببیند، جالب هستند :
پنهان کردن داده ها داخل حروف ( Grille Cipher )
رمزنگاری مشبک ( grille cipher ) تکنیکی برای پنهان کردن یه متن ساده در یک مجموعه حروف میباشد؛ که یک قالبی وجود داره که روی حروف قرار میدی و در 4 جهت مختلف میچرخونیش و متن 4 تیکه! رو پیدا میکنی!؛ طبق توضیحات ویکیپدیا قدمت این روش برمیگرده به سال 1550 میلادی!!!
میدونم که توضیح کلی بود و متوجه نشدید! ^_^ فیلم های زیر رو ببینید ( هر چقدر هم که خوب توضیح بدم به فایل فیلمهای زیر نمیرسه! ) :
مطالعه بیشتر : Grille (cryptography)
پنهان کردن داده ها داخل کلمات ( Null Cipher )
تو این روش یک سری کلمات رو در نظر میگیریم ( که در حالت ایدهآل دارای معنی هستند وگرنه یه سری کمات درهم که کنار هم قرار گرفتن و جملشون معنی خاصی نمیده )، که مثلا حرف اول هر کلمه میشه داده ما!، پس حرف اول تمام کلمات رو بزاریم کنار هم، جمله پنهان ما تکمیل میشه! ( اینطوری داده مونو پنهان میکنیم )؛ که خب الزامی نی که حتما داده هامونو داخل حرف اول هر کلمه بزاریم، میتونیم داخل حرف دوم، سوم و ... داخل حرف آخر قرار بدیم؛ روش ساده و جالبیه.
مطلب مرتبط : Null Cipher
پنهان کردن داده داخل جمله به صورت باینری!
تو این روش، روال کار اینطوره که "خط فاصله یعنی 0 و space یعنی 1"؛ هر جملهای شامل چندین کلمه هستش، که بین هر کلمه میتونه space یا - قرار بدیم، که مجموع این space و - ها، اگه معادلشونو قرار بدیم، یه سری 0 و 1 تشکیل میشه، که میشه داده ما! شاید روش جالبی نباشه و سریع هم تشخیص داده بشه یا یه آدم حساسی، که به زیبایی متن اهمیت میده ( مث من! )، بیاد و اون - ها رو حذف کنه و یه دستی رو سر و روی جمله بکشه و داده پنهان مارو از بین ببره!
نرم افزار ته مطلبو بروزرسانی کردم این موردو هم بهش اضافه کردم که در زیر عکس ویرایش جدید برنامه رو میبینید :
برا پیدا کردن متن با پاراگراف های مناسب میتویند به این لینک مراجعه کنید : LOREM IPSUM
FontCode Steganography
اینم روش جالبی هستش، همونطور که در عکس زیر میبینید، اشکال مختلفی از هر حرف انگلیسی میبینید که در نگاه اول هیچ فرقی ندارند، اما اگه یکم با دقت نگاه کنید میبینید که این حروف ( مثلا a ) ظاهر و اندازشون 100% با هم یکسان نیستند! و خب همین ایده، میتونه روش خوبی برای پنهان کردن اطلاعات باشه.
برا توضحات بیشتر، فیلم زیر رو ببینید، کامل این روشو توضیح داده به صورت عملی! :
سازنده این روش، دانشگاه Columbia آمریکا هستش، در لینک زیر ( وبسایت دانشگاه فوق )، تمام اسناد مرتبط با این روش رو میتویند پیدا کنید :
FontCode: Embedding Information in Text Documents using Glyph Perturbation
پنهان کردن داده ها داخل نقاشی ( Johannes Balthasar Friderici )
در نگاه اول، این تصویر یک ساختمان تحت محاصره را به تصویر می کشد!؛ اما حروف در کمین پنجره ها وجود دارد، صفحه های سایه دار، بدون سایه و نقطه ای آنها می تواند با کلید حروف الفبا در صفحه بعدی مطابقت داشته باشد و یک پیام ناامیدکننده "Wir haben kein Pulver mehr" ( ما دیگر پودر [تفنگ] نداریم ) را نشان داد.
Printer Steganography
کد شناسایی دستگاه ( MIC )، که به Printer Steganography ( همچنین : نقاط زرد، نقاط ردیابی، نقاط مخفی ) معروف است؛ یک کد دیجیتالی ( یک سری نقاط زرد ) هستش که چاپگرهای لیزری خاصی در صفحاتی که ایجاد میکند، قرار میدن، که خب توسط کاربر قابل روئیت نی و فقط میتونید با میکروسکوپ مشاهدش کنید؛ به کمک این کدها میتونید اطلاعاتی رو در مورد زمان و تاریخ چاپ و شماره سریال دستگاهی که این برگه رو چاپ کرده و ... به دست ابرد!!!؛ فیلم زیر کامل این مورد رو توضیح داده :
مطالب مرتبط :
پنهان کردن اطلاعات داخل یک تصویر
میتونید اطلاعات ( چه متن باشه و چه حتی یه عکس دیگه! ) رو داخل یه عکس پنهان کنید!؛ روال کار اینطوره که داده هامونو داخل بیت های کم ارزش پیکسل های تصویر پنهان میکنیم.
این مورد روشهای مختلفی داره، حالا بستگی داره از چه فرمت عکسی استفاده کنید، مثلا فرمت bmp که خودش چندین مدل مختلف داره! یه مدلش : هر پیکسل 3 بایت داره ( R, G, B ) و فرمت PNG هم همینطور مدلهای مختلفی داره که یه مدلش! هر پیکسلش 4 بایت داره ( R, G, B, A ) و فرمتهای دیگه که دوست داشتید میتونید برید دربارشون تحقیق کنید!.
حالا فرض میکنیم از تصاویر PNG استفاده میکنیم که هر پیکسل 4 بایت داره، ما میتونیم مثلا از هر بایت، 2 بیت کم ارزششو استفاده کنیم، پس یعنی هر پیکسل 8 تا بیت به ما میده، پس در هر پیکسل میتونیم 1 بایت از داده مون رو پنهان کنیم!!! ( تئوری داستان همینی بود که گفتم )
البته روشهای دیگه ای هم برای این کار هستش، مثلا به جای این که از n بیت کم ارزش هر پیکسل استفاده کنیم ( باعث میشه تغییرات یکدست بشه، و اگه از تعداد بیت 3 به بالا استفاده کنیم، و داده مون کم باشه، قشنگ معلوم میشه که یه قسمت از عکس با قسمتهای دیگه عکس فرق داره که خب عکسی که در زیر گزاشتم این مشکلو میتونید ببینید )، یا میتونیم از یه سری از پیکسل های رندم، از کل دادههاش استفاده کنیم! که خب یه حالت نویزی رو تصویر ایجاد میشه؛ و هر روشی که به ذهنتون میرسه!
نرم افزاری نوشتم برای این مورد تا بهتر درک کنید و مشکلات خوبی ها و... شو ببینید، این از عکس نرمافزار فوق :
این از تست یک عکس؛ هر چقدر از تعداد بیت های کمی از پیکسل رو اشغال کنیم، تصویر حاوی داده های مخفی، به تصویر اصلی شبیه تر میشه و بطبع هرچی از بیت های بیشتری از پیکسل ها رو استفاده کنیم، که خب مورد رو در تصویر زیر به وضوح میبینید :
مطالب مرتبط :
توجه : این داستان پنهان کردن یه عکس داخل یه عکس دیگه چیز پیچیده ای نی، مثلا در ساده ترین حالت ممکن 2 عکس با اندازه یکسان دارید، 1 بیت پرارزش هر پیکسل عکس داده رو در بیت کم ارزش عکس حامل قرار میدید، بطبع هرچی از بیت های کمتری از تصویری حامل استفاده بشه تصویر حامل کیفیت بهتری خواهد داشت و تصویر داده که از تصویر حامل استخراج میکنیم بعدا، کیفیت کمتری، و بلعکس؛ گفتم یه توضیح کوچیک بدم که بدونید کار ساده ای هستش، که خب میتونید به لینک بالا هم مراجعه کنید و نمونه کد C# برای این موضوع رو ببینید.
پنهان کردن اطلاعات داخل یک تصویر ( QR code )
توجه : کد QR که در واقع یه عکس متشکل از مربعهای مشکلی کوچک هستش، دادههای مارو ( هر چی میخواد باشه، متن، لینک، ایمیل، هرچی! ) داخل یه عکس پنهان میکنه، کدهای QR رو فک کنم دیگه همتون دیده باشید، در زیر هم انواع مختلفی ازش رو قرار میدم؛ این کدها استفاده زیادی میشه امروزه، که بیشتر به خاطر راحتی کاربر مورد استفاده قرار میگیره تا روشی برا پنهان کردن اطلاعات! ولی خب اینم یه روشی برا پنهان کردن اطلاعات هستش دیگه، تمام این روشا رو که میزارم هدف اینه که با روشهای مختلف آشنا بشید و در صورت نیاز روش مناسب و اختصاصی خودتون رو ایجاد کنید.
1) QR مخفف چیست؟
QR مخفف عبارت Quick Response به معنی "پاسخ سریع" هستش.
2) کد QR چیست؟
کد QR یک کد 2-بعدی ( ماتریسی ) است، برخلاف بارکدها ( روی محصولاتی که از فروشگاه ها میخرید ) که 1-بعدی هستند.
کدهای QR، اغلب بارکد 2-بعدی ( 2D barcode ) نیز نامیده میشوند. ( هرچند که صحیح نیست اینکار، زیرا ماهیت این دو کاملا متفاوت از همدیگه هستش )
کد QR توسط صنعت خودرو اختراع شده است؛ شرکت ماشین سازی تویوتا از تهیه کننده خود، Denso Wave خواست تا بارکدی را تولید کند تا با اطمینان و به راحتی اجزاء را شناسایی کند؛ کدهای QR در ابتدا در کاربردهای صنعتی مورد استفاده قرار میگرفتند؛ بنابراین، آنها میبایست به راحتی قابل چاپ و از نظر شکل و اندازه و همچنین در هنگام نابودی یا کثیف شدن، خوانا بمانند.
مانند سایر کدها، نماد کد QR را میتوان با دستگاه های تصویربرداری ( مثل موبایل ) ضبط کرد و سپس به نرمافزار مربوطه داد تا اطلاعات موجود در تصویر فوق رو پردازش و استخراج کنه.
در QR، از سیستم خطایابی و تصحیح خطا Reed-Solomon استفاده میشود؛ تا اگه خراشهایی ( کثیفی، خراشیدگی و...) روی تصویر QR رخ داد، مشکلی در پردازش و استخراج داده از تصویر QR فوق، رخ نده. ( مثلا فک کنید یه کد QR دارید، حالا برداشتید با مداد سیاه یه مربع مشکی خودتون اضافه کردید یا یه مربط مشکی موجود رو با مداد سفید، سفیدش کردید، یا به دلیل خراشیدگی یا رفتن رنگ برخی مربعها یا به هر دلیل دیگه ای، تصویر QR تغییر کرد، اون سیستمی که میخواد تصویر QR فوق رو پردازش کنه، متوجه رخ دادن خطا بشه و اگه تونست خطا رو هم اصلاح میکنه )
از قابلیت تصحیح خطا برای کدهای QR با آرم نیز استفاده می شود (که اغلب به آن "Design QR code" یا به سادگی "QR code with image / icon / logo" نیز گفته می شود)؛ این ;کدهای گرافیکی QR به عنوان "آثار سابق" معیوب است ، زیرا نمادی که معمولاً در مرکز کد قرار دارد ، در کد QR برخی از داده های خود را دقیقاً مانند خاکی معمولی مخفی می کند.
به دلیل تصحیح خطای عالی (حتی اگر تا 30٪ سطح از بین برود) و همچنین ظرفیت زیاد ذخیره سازی اطلاعات (در مقایسه با بارکدهای دیگر)، کد QR به خارج از صنعت خودرو نیز گسترش یافته است؛ امروزه هر کسی دیگه یه موبایل دوربیندار داره، که رو این موبایلها هم میشه نرمافزارهای تجزیه و تحلیل و ایجاد کدهای QR رو نصب کرد؛ فلذا این ترکیب امکانات، این قابلیت رو میده که به کمک QR، اطلاعات رو بدون تایپ کردن، منتقل کنیم و استفاده کنیم؛ فلذا با گسترش موبایلهای هوشمند، استفاده گسترده از کدهای QR ممکن و ساده شده است و کدهای QR کاربردی شدهاند!
3) تولید کننده کد QR چیست؟ / نحوه ایجاد کد QR
تولیدکننده کد QR، نرمافزاری است که دادهها را در یک کد QR (به عنوان مثال یک متن یا آدرس یک وب سایت و... ) ذخیره میکند؛ سایت و نرمافزارهای موبایل، PC و... زیادی برای اینکار هستش. ( روال Encode و Decode اش رو در ادامه مطلب میگم )
4) آیا امکان ایجاد کدهای QR مختلف، برای داده یکسان، وجود دارد؟
بله، تمام کدهای QR زیر، دادشون یکسان هستش، فقط شکل ظاهریشون یکم فرق داره؛ در قسمت تجزیه و تحلیل کد QR متوجه میشید که چرا کدهای QR زیر یکسان هستند!
در کدهای QR زیر، من، متن ( داده ) DMF313.IR رو قرار دادم، شکل ظاهریشون در ظاهر فرق داره ولی اگه تمام کدهای زیر رو با موبایل اسکن کنید، داده یکسانی رو بهتون نشون میده.
با مراجعه به سایت QR Code Monkey، انواع حالات دیگه رو هم میتونید خودتون ایجاد کنید ( سایتها و نرمافزارهای زیادی برای تولید کدهای QR وجود داره، کافیه سرچ کنید! )
5) امکان قرار دادن عکس ( لوگو ) داخل کد QR وجود داره؟
بله، به نمونههای زیر دقت کنید :
6) آیا رنگ کدهای QR فقط سیاه و سفید میتونه باشه؟
اساسا رنگ مدنظر نی، حالا هر رنگی به هر شکلی میخواید قرار بدید، تا اینجا هم نمونههای رنگی و سیاه و سفید کدهای QR رو دیدید؛ البته میتونید یه نوع کد QR جدید ایجاد کنید که به رنگ حساس باشه و با تغییر رنگ هر نقطه، اطلاعات تغییر کنند.
7) انواع اطلاعات داخل کدهای QR
- متن
- لینک
- ارسال ایمیل!
- موقعیت GPS
- شماره تماس
- آدرس ایمیل
- WIFI ( SSID و PASSWORD و نوع وایفای شما ! )
- و...
هر نوع اطلاعاتی که فک کنید میتونید داخل این کدها قرار بدید، با موبایل که اسکن کنید، متوجه میشه داده شما چی هستش ( متنه، ایمیله، آدرس سایته، SMSهه، اطلاعات WIFI هستش و ... )؛ کدهای زیر رو اسکن کنید :
8) نحوه Encode کردن QR
تکمیل شود!!!
9) نحوه Decode کردن QR
تکمیل شود!!!
مطالب مرتبط :
پنهان کردن اطلاعات داخل یک صوت
اینم داستانش مث حالت تصویر هستش، انواع مختلف فرمت صوتی داریم! هر فایل صوتی میتونه 1 تا 11 کانال داشته باشه که به 1 کاناله میگن Mono به 2 کاناله میگن Stereo و... ( برا اطلاعات بیشتر به لینک مقابل برید : Standard speaker channel layouts ) خب حالا هر کانل یه سری Sample داره! و هر Sample هم بسته به فایل صوتی میتونه 1 بایت یا چند بایت باشه! و... ( داستان ماستان زیاد داره، جا برا تحقیق و بررسی و مطالعه و ... زیادی بازه ! ^_^ )، که خب من سراغ فایل صوتی با فرمت wav رفتم، که کدک فایل باید PCM باشه وگرنه برنامه پیغام خطا بهتون میده؛ فایل های صوتی رو هم دیگه قرار نمیدم، حجمشون زیاده، سرعت لود مطلب کم میشه و... ( کم هستش، کمتر میشه! )؛ بطبع هرچی از بیتهای بیشتری استفاده کنیم، خش خش توی فایل صوتی هم بیشتر میشه، استفاده از 1 بیت چیز معقولی هستش. ( تو تصاویر هم استفاده از 1-2 بیت معقول بود و بیشتر میکردیم بیتها رو، کاربر قشنگ متوجه میشد که یه قسمت از تصویر با بقیه قسمتا فرق داره، اینجا هم بخواید از بیت های زیادی استفاده کنید کاربر به سادگی متوجه خش خش موجود توی صدا میشه! )
تصویر زیر هم فرمت فایل wav هستش :
پنهان کردن اطلاعات داخل نمودار یک فایل صوتی!
یه حالت مخفی کردن داده ها داخل فایل صوتی هم به ذهنم رسید، کارایی آنچنانی نداره چون نمیشه دیتای زیادی داخلش ذخیره کرد ولی خب اینم یه روشه دیگه ^_^؛ روش کار اینطوره که داده ها رو طوری ذخیره کنیم داخل فایل صوتی، که فقط بشه با رسم نمودار ( عکس ) فایل فوق! بشه داده ها رو دید؛ عکس زیر نمونه یک فایل صوتی 33 ثانیه ای هستش که آدرس سایت رو داخلش ذخیره کردم؛ تو این روش چون کل سمپل رو تغییر میدیم، فایل صوتی به کلی تغییر میکنه!؛ اون قسمتهایی که مبینید برفکی هستش، بقیه قسمتهای فایل صوتی هستش که حاوی داده نی و حاوی داده های خود فایل صوتی هستش؛ پس معلومه که تا مثلا زمان 10 ثانیه آهنگ وز وز میکنه و بعدش درست میشه؛ البته روش درست اینه که نرمافزار یه فایل صوتی جدید و یکدست ایجاد کنه تا اون قسمت برفکی ( عکس زیر ) هم وجود نداشته باشه که این دست خودتونو میبوسه، بیشتر از این حوصلم نشد کار کنم رو برنامه ^_^ ( فقط خواستید برنامه رو ویرایش کنید و تغییری که گفتم رو اعمال کنید، باید بدونید که فایل Wav حدود 44 بایت اولش Header هستش که باید طبق دادهتون به درستی مقدار دهیشون کنید، حالا تو نت درباره نحوه ایجاد یک فایل Wav سرچ کنید مطلب زیاد هست، الان شاید با این حرفای من یکم گیج بشید ) :
اینم عکس ویرایش جدید نرمافزار! :
پنهان کردن داده داخل نت های موسیقی!
اگه تو کار موسیقی باشید یا رفیقی داشته باشید تو کار این چیزا باشه، قطعا تا حالا فهمیدید که موسیقی هم یه جورایی حروف الفبا داره برا خودش که بهش میگن نتهای موسقی که هر نت صدای خودشو داره؛ روش کار پنهان کاری اینطوره که به هر نت یک حرف خاص اختصاص بدیم و حالا طبق متنمون ( داده ای که قراره پنهان بشه )، بیایم و موسیقی رو ایجاد کنیم!!! ^_^ روش جالبی هستش.
روش بهتر اینه که موسیقی رو طوری بنوازیم ( ایجاد کنیم ) که هم طبیعی جلوه کنه! و هم حاوی داده های ما باشه؛ روش کار اینطوره که در زمان های خاص، از نت های خاص ( حروف خاص؛ قبلا گفتم که به هر نت حروفی اختصاص میدیم ) استفاده کنیم!؛ تو روش قبلی هر کی موسیقی رو گوش بده فک میکنه احتمالا یه موشی رو گیتار رژه رفته و این آهنگو ایجاد کرده ^_^ اما تو این روش جدید موسیقی ما حداقل مقبولیت رو داره، فوقش طرف میگه موسقی خوبی نبود، دیگه نمگه کدوم موشی رو گیتار رژه رفته ^_^
Microdot Steganography
Microdot متن یا تصویری هستش که به میزان قابل ملاحظه ای اندازش کوچیک میشه تا از شناسایی شدن مصون بمونه!؛ Microdot ها به طور معمول دایره ای و قطری حدود 1mm دارند اما می توانند به شکل ها و اندازه های مختلف ساخته شوند و از مواد مختلفی مانند پلی استر یا فلز ساخته شوند.
قدمت میکرودوتها به سال 1870 برمی گردد که اولین بار در طول جنگ فرانسه و پروس توسط کبوترهای پیام رسان استفاده شد که به هر کبوتر اجازه دهد حجم بالایی از پیام ها را حمل کند، زیرا کبوترها ظرفیت بارگذاری محدودی دارند؛ بعداً در جنگ جهانی اول و دوم به عنوان ابزاری برای ارسال پیام از طریق کانالهای پستی ناامن مورد استفاده قرار میگرفت.
با گذشت زمان و پیشرفت تکنولوژی، کوچکسازی های بیشتری ممکن شده است؛ در سال 1925 آقای Emanuel Goldberg روشی برای تولید میکرودوت های خیلی ریز ارائه کرد که میشد یک صفحه از متن را در 0.001mm مربع قرار داد! ( نمیدونم حالا این روش عملیاتی شده یا فقط در حد ایده مونده، ویکیپدیا چیزی ذکر نکرده بود )
تنها فیلم بدردبخوری که از Microdot تو نت پیدا کردم رو در زیر براتون میزارم، بدک نی، دوس داشتید ببینید :
منابع و مطالب مرتبط :
DNA Steganography
نمیدونم تا چقدر صحت داره و این که آیا در حد ارائه هستش و یا این که عملیاتی هم شده یا نه؛ حوصله و شاید هم بشه گفت علاقه تحقیق درباره این موضوع رو ندارم، لینکاشو میزارم، برید بخونید، تو نت هم خودتون میتونید سرچ کنید! :
Morse Code Steganography
خب کد مورس، به تنهایی یه روش Steganography نی، چون Steganography تعریفش این بود که داده هارو مخفی کنیم طوری که اگه داده رو پیدا کنند ( متوجه بشن )، داده لو میره! پس خود کد مورس به تنهایی یه روش Steganography نی، نحوه استفاده از این کد مورس هستش که مدنظر ما هستش که فیلم زیر یک نمونه برای این قسمت هستش.
کد مورس تمام حروف و اعداد انگلیسی به صورت زیر میباشد :
فیلم زیر مربوطه به یه آمریکایی که در ویتنام شمالی دستگیر شده و دارن ازش مصاحبه میگیرن، با پلک زدن هاش، داره کد مورس کلمه TORTURE ( به معنی شکنجه ) رو ارسال میکنه ( این فیلمی هستش که تو یوتیوب بود، از صحت داشتن یا نداشتنش من خبر ندارم، مهم هم نی برام، چیزی که مهمه روش ارسال پنهانی داده توسط این بابا هستش )؛ قطعا روش های مشابه رو دیدید حداقل توی فیلم ها!؛ که طرف یه مدار رو جای یکی از دندوناش قرار داده و به کمک کد مورس و کوبیدن دندان های ردیف بالایی به ردیف پایینی ( فعال کردن کلید فشاری مدار فوق! ) داده هایی رو ارسال میکنه و روش های مشابه دیگه؛ فیلم زیر رو ببیند :
معرفی نرم افزارهای Steganography
1) نرم افزار Stegosuite
سایت سازنده : Stegosuite
توضیحات : یک ابزار استگانوگرافی رایگان و Open Source که در جاوا نوشته شده است؛ با استفاده از Stegosuite میتوانید اطلاعات را به راحتی در فایلهای تصویری مخفی کنید.
خصوصیات :
- BMP, GIF and JPG supported
- AES encryption of embedded data
- Automatic avoidance of homogenous areas (only embed data in noisy areas)
- Embed text messages and multiple files of any type
- Easy to use
2) نرم افزار Steghide
سایت سازنده : Steghide
توضیحات : یک ابزار استگانوگرافی که قادر است داده ها را در انواع مختلف فایلهای تصویری و صوتی مخفی کند.
خصوصیات :
- compression of embedded data
- encryption of embedded data
- embedding of a checksum to verify the integrity of the extraced data
- support for JPEG, BMP, WAV and AU files
3) نرم افزار Xiao Steganography
سایت سازنده : Xiao Steganography
توضیحات : یک ابزار استگانوگرافی رایگان که می تواند برای مخفی کردن داده ها در تصاویر BMP و یا در فایل های صوتی WAV استفاده شود.
4) نرم افزار SSuite Picsel
سایت سازنده : SSuite Picsel
توضیحات : یک ابزار استگانوگرافی رایگان و پرتابل برای مخفی کردن متن درون یک فایل تصویری است اما در مقایسه با سایر ابزارها، یکم متفاوته!
خصوصیات : پشتیبانی از فایل های BMP, JPG, PNG, WMF
5) نرم افزار OpenPuff
سایت سازنده : OpenPuff
توضیحات : یک ابزار استگانوگرافی حرفه ای است که در آن می توانید پرونده ها را در فایل های عکس، صوت، فیلم و یا فلش ذخیره کنید.
خصوصیات :
- OpenPuff is a professional steganography tool :
- HW seeded random number generator (CSPRNG)
- Deniable steganography
- Carrier chains (up to 256Mb of hidden data)
- Carrier bits selection level
- Modern multi-cryptography (16 algorithms)
- Multi-layered data obfuscation (3 passwords)
- X-squared steganalysis resistance
- OpenPuff supports many carrier formats :
- Images (BMP, JPG, PCX, PNG, TGA)
- Audio support (AIFF, MP3, NEXT/SUN, WAV)
- Video support (3GP, MP4, MPG, VOB)
- Flash-Adobe support (FLV, SWF, PDF)
6) نرم افزار های دیگه Steganography
- Ultima Steganography
- Image Steganography
- SteganPEG
- SteganographX Plus
- rSteg
- Crypture
- OpenStego
- Camouflage
7) پروژه های Open Source در این زمینه
- Pentesting_toolkit
- Cloakify
- Stegify
- Pyexfil : وبسایت، گیتهاب
- Covertutils : وبسایت، گیتهاب
- Jsteg
- Packetwhisper
- Stegano : وبسایت، گیتهاب
- Stegcracker : وبسایت، گیتهاب
- Stego
- Steganography
- Stegastamp : وبسایت، گیتهاب
- Audiostego
- Stegoveritas
- Stegextract
- F5stegojs : وبسایت، گیتهاب
دانلود نرم افزار Steganography
نرم افزار زیر رو خودم نوشتم و برنامه دارم که توسعش بدم!، سر همین یه قسمت جداگونه براش تو مطلب ایجاد کردم تا تو بروزرسانی های بعدی به مشکل نخورم و از بقیه برنامه ها مجزا باشه؛ این برنامه ساده رو میتونید به همراه سورس کد C# از قسمت زیر دانلود کنید :
کتب مرتبط :
- حدود 69 تا کتاب مرتبط در لینک مقابل معرفی شده : 69 Best Steganography Books of All Time
- Steganography Techniques for Digital Images
- Data Hiding: Exposing Concealed Data in Multimedia, Operating Systems, Mobile Devices and Network Protocols
- Disappearing Cryptography: Information Hiding: Steganography and Watermarking
- Information Hiding in Speech Signals for Secure Communication
- Information Hiding in Communication Networks
- Steganography and Watermarking
- Digital Watermarking
- Digital Media Steganography: Principles, Algorithms, and Advances
- Steganography Using Visual Cryptography
- Information Hiding: Steganography and Watermarking – Attacks and Countermeasures
- Information Hiding Techniques for Steganography and Digital Watermarking
مطالب مرتبط :
- Steganography
- WAVE PCM soundfile format
- How to Hide Secret Data Inside an Image or Audio File in Seconds
- Encode Image In Sound With Python
- Steganography: Hiding your secrets with PHP
- An Overview of Steganography for the Computer Forensics Examiner
- Is steganography safe for hiding messages?
- Digital Steganography as an Advanced Malware Detection Evasion Technique
- Steganography & Malware
- پنهان کردن فایل txt داخل یه فایل txt دیگه در ویندوز
- لیست بزرگی از مقالات مربوط به Steganography ( بیش از 2000 مقاله مرتبط تا این زمان! )
به مطلب اضافه شود :
- Steganography Techniques
- Video Steganography
- Network Steganography (Protocol Steganography)
- لیست تمام روشهای Steganography متن، عکس و فایل های صوتی ( در این مطلب برا هر کدوم 1-2 روش ذکر کردم، درحالی که تعداد روش های موجود بیشتر از این حرفاس )
- نوشتن مطلب Cryptography ( همونطور که در عکس زیر میبینید، این مطلب فقط 1 بخش از 3 بخش مبحث ایمنی اطلاعات هستش! )؛ مبحث Watermarking هم به کارما مربوط نی، فلذا کاری بهش ندارم!
خب امیدوارم مطلب مفید بوده باشه براتون، روش دیگه ای به ذهنتون رسید بگید، فعلا یا علی.
کلیپ زیر رو هم دوست داشتید ببینید :
مهمان
تشکر از مطلب خوب شما در پناه خدا باشید همیشه