PDA

View Full Version : Water Mark و پنهان نگاری در C#



jeyjix
سه شنبه 19 آذر 1387, 19:51 عصر
سلام دوستان .
مشتاقانه ! منتظر کامپونت ها راهنمایی ها و کمک شکما در مورد واتر مارک متون در C# هستم
ممنون :متفکر:

RED-C0DE
سه شنبه 19 آذر 1387, 22:46 عصر
شما دقیقا چی مد نظرتونه؟ دقیقتر بگین...
یکی از مرسوم ترین روشهای این نوع پنهان کاری (Steganography)، با تغییر دادن LSB
Least Significant Bit انجام می شه...
حالا شاید جای مناسبی نباشه ولی :

مثلا یک فایل تصویری Bitmap با اندازه 100 * 100 = 10000 پیکسل وجود داره. بصورت 24 بیت ذخیره شده (یعنی 3 بایت...RGB که 8 بیت برای رنگ قرمز، 8 بیت برای رنگ سبز و 8 بیت برای رنگ آبی کنار گذاشته شده) ، اگه ما بیایم و از این 10000 تا پیکسل (هر پیکسل 3 بایت که می شه در مجموع 10000 * 3 = 30000 بایت) یا در واقع از هر 30000 تا بایت ، از هر کدوم ، یک بیت رو برای اطلاعات مورد نظر خودمون استفاد کنیم می تونیم 3750 کیلو بایت اطلاعات رو ذخیره کنیم...
این فقط یک نمونه ساده بود که همه چیز مشخص بشه...
اینکه چه بیتی رو تغییر بدیم به نفع اطلاعات مورد نظر خودمون که قصد پنهان کردنشو داریم نکته مهمشه و اون همین LSB یا کم ارزش ترین بیت هست که می شه بیت شماره 1...
اما چرا اینجوریه ، در واقع چطور می شه که در صورت تغییر این بیت تصویر مورد استفاده تغییری نمی کنه (به راحتی دیده نمی شه!) ؟

همونطوری که می دونید هر رنگ فرمت RGB از 3 بایت تشکیل شده...مثلا یه همچین رنگی رو فرض کنید :
R=10011100 G=11100011 B=00110100

که در مبنای 10 معادل :
B=52 G=227 R=156
هستند...

اگه کمی فکر کنید، درک می کنید با تغییر دادن مثلا 52 به 51 یا 227 به 226 یا 156 به 157 ، تغییر محسوسی دیده نمی شه در رنگ تولیدی...به همین خاطر می شه با تغییر 1 بیت که کم ارزش هست در مقیاس عددی، اینکارو انجام داد...
البته همونطور که حدس زدید احتمال اینم هست که اصلا این بیت تغییری نکنه یعنی اطلاعاتی که داریم ذخیره می کنیم هم همین مقدار رو داشته باشه...و در نهایت با احتمال 50% ممکنه که این بیت یک واحد کم با زیاد بشه که نتیجه کل کار که همان رنگ تولیدی تصویر هست صدمه ای نمی زنه...

البته می شه از بیشتر از 1 بیت هم کمک گرفت که بدیهیست هرچی بیشتر به سمت چپ بریم تفاضل مقدار رنگ جدید با رنگ اصلی نمایانتر می شه که باعث افت کیفیت تصویر میشه...

اینم بگم این تکنیک بیشتر در فرمتهای صوتی تصویری مرسومه ...

برای اطلاعات بیشتر keyword هایی مثل :
Steganography , Watermarking , Digital Hiding
جستجو کنید...

برای کد نویسی این تکنیک هم شما باید با فرمت فایلهای هدفتون خوب آشنا باشید...پیشنهاد می کنم روی همین فرمت Bitmap 24 بیت کار کنید...خیلی ساده است...

نمونه ابزارها برای مطالعه بیشتر :
http://www.jjtc.com/Steganography/toolmatrix.htm


چند تا لینک مفید :
http://en.wikipedia.org/wiki/Steganography
http://en.wikipedia.org/wiki/Digital_watermark
http://www.petitcolas.net/fabien/steganography/
http://www.garykessler.net/library/steganography.html

نمونه کد :
http://www.binary-universe.net
http://www.codeproject.com/KB/security/steganodotnet3.aspx
http://www.codeproject.com/KB/recipes/Image-Steganography.aspx
http://www.codeproject.com/KB/security/steganodotnet.aspx

موفق باشید...

jeyjix
چهارشنبه 20 آذر 1387, 15:24 عصر
واقعا ممنونم و خوشحالم که یه هم صحبت پیدا کردم !!
اما این روش برای تصاویر خوبه و با اسکن و ... از بین میره !
من میخوام باکمک شیفت کلمات و خطوط و یکم ابدا ! این کار رو انجام بدم ..البته این کار قبلا شده و من یکنم تغییر توی پروسه ی انجامش میخوام بدم
توی این زمینه کامپوننت و یا رسورس کدی داری ؟
بزرگواری میکنی بازم بهم اطلاعات بدی
البته تا حدودی ماهیتش رو میدونم ! اما فعلا گیر عملی انجام دادنشم
بازم ممنون

RED-C0DE
پنج شنبه 21 آذر 1387, 22:25 عصر
اما این روش برای تصاویر خوبه و با اسکن و ... از بین میره !
من میخوام باکمک شیفت کلمات و خطوط و یکم ابدا ! این کار رو انجام بدم ..البته این کار قبلا شده و من یکنم تغییر توی پروسه ی انجامش میخوام بدم

منظورتو متوجه نشدم...!