PDA

View Full Version : قفل کردن فایل به طوری که افراد و برنامه های دیگه نتونن بازش کنن



_abiriamir
پنج شنبه 22 مرداد 1388, 16:15 عصر
سلام
فکر کنم عنوان تاپیک همه چیز رو بگه ولی شاید لازم باشه یه توضیحاتی هم بدم.
من چندوقت پیش همین جا این سوال رو کردم و دوستان محترم جواب دادن که چند بیت اول فایل رو تغییر بدم و بعد هم برشون گردونم. خب این روش خوبی هست ولی هرچه زور زدم به جز یه فایل exe که این کار رو میکرد چیزی نصیبم نشد.
اگه دوستان این کار رو بلد هستن ممنون میشم که سورس مربوطه رو اینجا بزارن
مرسی

tdkhakpur
پنج شنبه 22 مرداد 1388, 17:39 عصر
سلام
ببینید یک راهنمای برای حل مشکلتان عرض میکنم.(البته تا اونجایی که من یادم میاد برای فایلهای تصویری این کار را انجام میدادید)
شما باید کار با فایل را بلد باشید یعنی اینکه مثلا 256 بایت اول یک فایل را میتوانید استخرا کرده و در داخل یک بافر 256 بایتی نگهداری کنید.
حال مرحله حساس کار شما قرار دادن داده های بی ارزش مثل صفر در این مکان از فایل که 256 بایت ازش استخراج کردید.که در بافر قرار دارد.
خوب با کار فوق - شما فایل را مجهول کردید. و کسی نمی تواند آن آنطور که هست ببینید.
بعد از این که کارتان تمام شد داده های موجود در بافر را به محل قبلی خود برگردانید.

K.Mohammadreza
پنج شنبه 22 مرداد 1388, 18:34 عصر
دوست من اين برنامه ميتونه نياز شما را برطرف کنه البته فقط سورسه و بايد خودت کامپايلش کني

_abiriamir
پنج شنبه 22 مرداد 1388, 19:46 عصر
دوست من اين برنامه ميتونه نياز شما را برطرف کنه البته فقط سورسه و بايد خودت کامپايلش کني
دستتون درد نکنه
واقعا ممنون
مشکلم حل شد فقط اگه کمی راجع به دستوراتش توضیح بدین ممنون میشم

K.Mohammadreza
پنج شنبه 22 مرداد 1388, 20:02 عصر
اين برنامه را همين الان براتون نوشتم چون نوشته بودين در پست هاي قبلي براتون فايل اجرايي گذاشتن، کارکردش بسيار ساده است فايلي را که مي خواهيم کدش کنيم در بصورت فايل Stream بازش مي کنيم و فقط براي خواندن و سپس فايل مقصد که ميخواهيم فايل کد شده در آن ذخيره بشه را وارد مي کنيم. سپس با استفاده از اون حلقه تمام طول فايل را پيمايش مي کنيم و شروع به خواندن بايت به بايت فايل مي کنيم و کد $20 که يک کاراکتر در مبناي شانزده است را به کاراکتر خونده شده اضافه مي کنيم و سپس اونو مي نويسيم و براي بازگشايي همان عمل را تکرار مي کنيم ولي اينبار کاراکتر $20 را کم مي کنيم و کارکتر حاصل را در فايل مي نويسيم.

BORHAN TEC
جمعه 23 مرداد 1388, 22:33 عصر
البته با عرض معذرت خواهی باید بگویم که این کار زیاد جالب نیست، البته دلیل خود را در زیر توضیح میدهم :
توضیح : همانطور که میدانید هر کاراکتر دارای یک کد خاص می باشد. اگر فرض کنیم که یکی از کاراکتر(بایت)هی موجود در فایل در جدول کاراکتره دارای آخرین شماره باشد با اضافه کردن یک شماره به آن ممکن است که اطلاعات غیر قابل برگشت شوند که این کار به هیچ عنوان از طرف من توصیه نمی شود!!!!

BORHAN TEC
جمعه 23 مرداد 1388, 22:46 عصر
یکی از بهترین راهها برای قفل کردن فایلها استفاده از عملگر بیتی XOR است که در زیر به توضیح کامل آن می پردازم .
توضیح : اگر یک عدد(به طور مثال 8) را با یک عدد دلخواه ( به عنوان مثال 12) XOR کنید یک عدد به دست می آید(در اینجا جواب میشود 4) . اگر عدد حاصل شده را دوباره با عدد قبلی (در اینجا 12) XOR کنیم دوباره عدد اولیه بدست می آید (در اینجا 8) . از این ویژگی جالب عملگر XOR میتوان به طور بسیار موثری برای کد کردن یا دیکد کردن کردن اطلاعات استفاده کرد. البته اگر امنیت برای شما مهم است میتوانید قسمتی از فایل را بایک عدد خاص و قسمت دیگری از فایل را با یک عدد دیگر XOR کنید.

tdkhakpur
جمعه 23 مرداد 1388, 23:19 عصر
البته با عرض معذرت خواهی باید بگویم که این کار زیاد جالب نیست، البته دلیل خود را در زیر توضیح میدهم :
توضیح : همانطور که میدانید هر کاراکتر دارای یک کد خاص می باشد. اگر فرض کنیم که یکی از کاراکتر(بایت)هی موجود در فایل در جدول کاراکتره دارای آخرین شماره باشد با اضافه کردن یک شماره به آن ممکن است که اطلاعات غیر قابل برگشت شوند که این کار به هیچ عنوان از طرف من توصیه نمی شود!!!!
روشی بکار برده شده است ایرادی ندارد فقط به سادگی قابل کرک شدن هست و از نظر امنیت تقریبا 50 درصد احتمال شکست را دارد.و روش xor شما هم مانند روش فوق هست ولی امنیت بالای دارد.
ولی در حالت کلی بهترین روش استفاده از فایل بصورت کد شده و باز کردن کد فایل در داخل برنامه هست یعنی در حالت خاموش برنامه(زمانی که اجرا نشده) فایل مورد نظر کد شده باشد.

_abiriamir
شنبه 24 مرداد 1388, 16:59 عصر
روشی بکار برده شده است ایرادی ندارد فقط به سادگی قابل کرک شدن هست و از نظر امنیت تقریبا 50 درصد احتمال شکست را دارد.و روش xor شما هم مانند روش فوق هست ولی امنیت بالای دارد.
چجوری کرک بشه؟



ولی در حالت کلی بهترین روش استفاده از فایل بصورت کد شده و باز کردن کد فایل در داخل برنامه هست یعنی در حالت خاموش برنامه(زمانی که اجرا نشده) فایل مورد نظر کد شده باشد.
خب چجوری میشه این کارو کرد؟

_abiriamir
شنبه 24 مرداد 1388, 17:02 عصر
راستی به توجه به دلیلی که جناب Ashayeri اوردن چطور مشکلی پیش نمیاد؟

tdkhakpur
شنبه 24 مرداد 1388, 20:43 عصر
خب ببینید فرض بر آن میگیریم که شما کار با فایل را میدانید و میتوانید محتوای فایل را کاراکتر به کاراکتر به کاراکتر دیگر تبدیل کنید.
خوب شما یک کاراکتر را از فایل بخوانید و دوباره با یک تغییر مثلا xor کردن اون را دوباره به فایل برگرداند(xor شده کاراکتر را). خوب اگر این کار را برای تمام محتوای فایل انجام بدید شما یک فایل کد شده با یک رمز مشخص که در xor استفاده کردید دارید.
برای اینکه فایل را دیکد کنید مطالب بالا را دوباره اجرا کنید فایل شما دیکد میشود.
ولی در مورد crack شدن باید عرض کنم که این رمز شما که در xor استفاده میکنید میتوانید با انجام مقایسات متعدد بدست بیاید که من فکر نکنم کسی بخواد این کار را انجام دهد.

BORHAN TEC
شنبه 24 مرداد 1388, 21:52 عصر
البته این مطلب را هم باید بگویم که رمزگذاری بر روی داده ها یکی از دشوارترین مسایل علم کامپیوتر است و روش گفته شده با عملگر XOR تنها یک روش پایه و ابتدایی است . باید بگویم که اگر امنیت برای شما بسیار بسیار مهم است شما باید از الگوریتم های پیچیده تری مانند الگوریتم AES ، هافمن ، Hash code و ... استفاده کنید که بعضی از این الگوریتم ها در کتابهای مربوط به ساختمان داده ها (Data Structures) و کتب مربوط به رمزگذاری داده ها مورد بحث قرار می گیرد. به عنوان مثال الگوریتم هافمن در کتابی که نویسنده آن "سیمور لیپ شوتز" است ، توضیح داده شده است.
لازم است که برای دوستان مبتدی هم این نکته را عرض کنم که "فقط" یکی از دلایل رمزگذاری داده ها "امنیت" است. دلیل دیگر رمزگذاری داده ها کاهش حجم اطلاعات است . به عنوان مثال الگوریتم های AES ، هافمن و... می توانند تا حدودی حجم اطلاعات را کاهش دهند. لازم است یک نکته دیگر را هم عرض کنم که ابزار اصلی در پیاده سازی این الگوریتمها "اشاره گرها" هستند. بنابرین اگر می خواهید که این الگوریتم ها را تمرین کنید باید در بحث اشاره گرها بسیار کار کشته باشید.

tdkhakpur
شنبه 24 مرداد 1388, 23:20 عصر
البته این مطلب را هم باید بگویم که رمزگذاری بر روی داده ها یکی از دشوارترین مسایل علم کامپیوتر است و روش گفته شده با عملگر XOR تنها یک روش پایه و ابتدایی است . باید بگویم که اگر امنیت برای شما بسیار بسیار مهم است شما باید از الگوریتم های پیچیده تری مانند الگوریتم AES ، هافمن ، Hash code و ... استفاده کنید که بعضی از این الگوریتم ها در کتابهای مربوط به ساختمان داده ها (Data Structures) و کتب مربوط به رمزگذاری داده ها مورد بحث قرار می گیرد. به عنوان مثال الگوریتم هافمن در کتابی که نویسنده آن "سیمور لیپ شوتز" است ، توضیح داده شده است.
لازم است که برای دوستان مبتدی هم این نکته را عرض کنم که "فقط" یکی از دلایل رمزگذاری داده ها "امنیت" است. دلیل دیگر رمزگذاری داده ها کاهش حجم اطلاعات است . به عنوان مثال الگوریتم های AES ، هافمن و... می توانند تا حدودی حجم اطلاعات را کاهش دهند. لازم است یک نکته دیگر را هم عرض کنم که ابزار اصلی در پیاده سازی این الگوریتمها "اشاره گرها" هستند. بنابرین اگر می خواهید که این الگوریتم ها را تمرین کنید باید در بحث اشاره گرها بسیار کار کشته باشید.
فشرده سازی چه ربطی به رمز گذاری داره خوب عالم و آدم از فشرده سازی های دنیا خبر دارند حالا بیا با این رمز سازی کنید.
هافمن یک نوع فشرده سازی بر اساس الگوی بیتهاست که برای بعضی از فایلها میتواند تاثیر بگذارد در بسیاری از جاها باعث افزارش حجم می شود.
در مورد دو تای دیگر هم عرض میکنم که به درد دوستمان نمیخورد چون ایشان یک کار ساده میخواهند نه پیچیده.
ولی در مورد ساختمان داده ها هم صحبتی به میان آوردید بله اون هم کارایی دارد ولی نمیدانم چرا اینجا بیان میکنید مگر دوستمان گفته من یک فایل بانک اطلاعاتی را میخواهم کد کنم؟
ولی اگر این کار را هم انجام دهد نباید کلیدهای جستجو در بانک اطلاعاتی که توسط یک ساختار مشخص در بانک ذخیره شده است را کد کند بلکه فقط داده هایی را که جزء کلیدهای اصلی نیستند را کد کرده و سپس دیکد کند.....و بسیاری موارد دیگر.

K.Mohammadreza
دوشنبه 26 مرداد 1388, 21:45 عصر
با سلام به دوستان باحال
شما که فقط حرف مي زنيد من ديدم دوستمون گفته بودن براشون فايل اجرايي گذاشتن شما هم که فقط حرف مي زنيد حالا به برنامه من که در مدت زمان کوتاهي نوشتمش ايراد مي گيريد اصلا قايل کرک شدن نيست زيرا از کارکتر 16 تايي استفاده شده و من يک نمونه فايل اجرايي مي زارم و شما کرکش کنيد

tdkhakpur
دوشنبه 26 مرداد 1388, 22:34 عصر
شما هم که فقط حرف مي زنيد حالا به برنامه من که در مدت زمان کوتاهي نوشتمش ايراد مي گيريد اصلا قايل کرک شدن نيست زيرا از کارکتر 16 تايي استفاده شده و من يک نمونه فايل اجرايي مي زارم و شما کرکش کنيد
اون فایل اجرایی را من برای دوستمان فرستادم داخل اون تاپیک یک حرفی به میان آمد و من هم به این خاطر فقطexeرا ارسال کرد.
ولی کسی به برنامه ارسالی شما خدایی نکرده توهینی نکرده که شما از خودتان دفاع میکنید .
پاورقی..
دوست گرامی این را برای شما نمیگم که به خودتان بگیرید اساسا رمز گذاشتن به هر قفلی به منزله این هست که "یک دیوانه ای سنگی را داخل چاه می اندازد و هزار عاقل نمیتوانند از داخل چاه درش بیارند" خوب قضیه همینه وقت میخواد.......

K.Mohammadreza
دوشنبه 26 مرداد 1388, 22:54 عصر
دوست عزيز من ناراحت نشدم اتفاقا خوشحال هم ميشم اگر کسي که مشکل يا انتقادي داره مطرح کنه ولي ناراحت ميشم وقتي بدون دليل و مدرک قابل قبول انتقاد کنه من کنه وقتمو صرف نوشتن اين برنامه نکردم فقط دلفي را باز کردم و 5 دقيقه کلا کار کردم

جواد ملاولی
یک شنبه 08 شهریور 1388, 17:29 عصر
خوشحال هم ميشم اگر کسي که مشکل يا انتقادي داره مطرح کنه
من یه سوال دارم. در این روشی که شما استفاده کردید، برای Decrypt کردن فایل دوباره اون رو روی هارد ذخیره می کنید. حالا اگه بخوایم این فایل رو داخل RAM سیستم Decrypt کنیم و همونجا ازش استفاده کنیم(که کاربر به هیچ وجه بهش دسترسی نداشته باشه) چکار باید بکنیم؟
اگه این فایل ما یه فیلم حجیم باشه و بخوایم پخشش کنیم چی؟
ممنون

جواد ملاولی
سه شنبه 10 شهریور 1388, 11:20 صبح
ما همچنان منتظر جوابیم.

hojjatcroos
سه شنبه 10 شهریور 1388, 22:53 عصر
سلام دوستان
خوب از TmemoryStream استفاده کنید.

جواد ملاولی
پنج شنبه 12 شهریور 1388, 05:27 صبح
از TmemoryStream استفاده کنید.
میشه برای پخش فیلم از داخل RAM یه مثال بذارید؟

AbiriAmir
پنج شنبه 12 شهریور 1388, 13:06 عصر
راجع به فيلم نظري ندارم ولي راجع به يه فايل کم حجم ميتونين اون رو رويه هارد ذخيره کنين و بعدم خيلي سريع پاکش کنين
اگر هم اطلاعاتش رو براي چندجاي برنامه لازم دارين ميتونين قبل از پاک کردنش اون رو تويه يه Memo لود کنيد و در جاهاي مختلف برنامه ازش استفاده کنين

Hamid.Kad
شنبه 21 شهریور 1388, 22:13 عصر
با سلام به دوستان باحال
شما که فقط حرف مي زنيد من ديدم دوستمون گفته بودن براشون فايل اجرايي گذاشتن شما هم که فقط حرف مي زنيد حالا به برنامه من که در مدت زمان کوتاهي نوشتمش ايراد مي گيريد اصلا قايل کرک شدن نيست زيرا از کارکتر 16 تايي استفاده شده و من يک نمونه فايل اجرايي مي زارم و شما کرکش کنيد

خوب شما لطف کنید فایل جدید بسازید تا فایل اصلی رو بهتون تحویل بدم! اونم در کمتر از 5 دقیقه! این روش راحت ترین روش برای Decrypt کردنه.براحتی میشه با استفاده از روشهای آماری فایل رمزگذاری شده رو به حالت اول برگردوند. نظرتون راجع به سناریوی زیر چیه ؟
طبق محاسبات آماری بیشترین حرفی که توی متون انگلیسی تکرار میشه حرف e هست. خوب، حالا من یه فایل متنی بزرگ به زبان انگلیسی میدم به برنامه شما و کدشدش رو تحویل میگیرم. حالا میگردم توی این فایل جدید، کاراکتری که بیشترین تکرار رو داشته پیدا میکنم و پیش خودم فکر میکنم که با احتمال زیادی، این کاراکتر جایگزین حرف e شده!!!. از اختلاف کد اسکی این دوتا کاراکتر رقمی که به هر کاراکتر توی برنامه اضافه کرده بودید بدست میاد. به همین راحتی! یا مثلاً توی زبان انگلیسی در 99 درصد موارد بعد از حرف q حرف u قرار میگیره. یعنی اگه شما کاراکتر جایزین q رو پیدا کنید به احتمال 99 درصد حرف u رو هم پیدا میکنید. پچهای مختلفی برای این الگوریتم وجود داره که بهبود میبخشه. ولی در کل روش خوبی نیست

K.Mohammadreza
یک شنبه 22 شهریور 1388, 18:39 عصر
دوست من شما فايلتونو بفرستيد تا من کدش کنم بعدش شما اونو دي کد کنيد البته يک خط به محتوياتش اضافه مي کنم شما اون خط را پيدا کنيد و در همين تاپيک قرار بديد. بعدش شما که در زمينه طراحي الگوريتم استاديد يک نگاه به تاپيک http://barnamenevis.org/forum/showthread.php?t=53919 بنداز و نظرت را در مورد توابع اونجا هم بده

Hamid.Kad
یک شنبه 22 شهریور 1388, 19:50 عصر
به تاپيک http://barnamenevis.org/forum/showthread.php?t=53919 بنداز و نظرت را در مورد توابع اونجا هم بده
من ارتباطی بین اون تایع و تابعی که شما در این تاپیک مطرح کردید پیدا نکردم. ضمن اینکه فرصت trace کردن اون تابع رو هم پیدا نکردم ولی از همون نگاه اول پیداست که با روش ارائه شده توسط شما کاملاً فرق داره. شما فرمودید برای کد کردن هر کاراکتر رو با یک عدد جمع می کنید و برای دیکد ازش کم میکنید. بنده هم عرض کردم که این روش به راحتی قابل کشفه. شما فایل exe برنامتون رو اینجا قرار بدید(بدون سورس) تا بنده خدمتتون عرض کنم که اون عدد چیه. البته به شرطی که فقط از همین روش استفاده کنید. من خودم برای کد کردن بعضی فایلهام توی برنامه به نوعی از این روش استفاده میکنم. مثلاً کاراکترهایی که پوزیشنشان مضرب 2 باشد با یک عدد، مضرب 3 با یک عدد دیگر و ..... جمع میکنم. خوب همین کار ساده شکستن رمز رو سخت تر میکنه. ضمن اینکه توی همون سناریوی بالا براتون توضیح دادم که روش شما چجوری قابل شکستنه. حالا اگه قبول ندارید که با این روش میشه بفرمائید که بیشتر توضیح بدم

K.Mohammadreza
پنج شنبه 26 شهریور 1388, 15:54 عصر
لطفا اگه تونستيد اون تابع را کرک کنيد چون واقعا ميخوام بدونم قابل کرک هست يا خير؟
ممنون

mbshareat
پنج شنبه 02 مهر 1388, 22:31 عصر
اجازه بدین منه مبتدی هم نظرمو بگم::خجالت:
برای استفاده از عملگر Xor تنها باید از عدد 255 کرد.علتش هم اینه که Xor کردن با بیت با مقدار یک،بیت با مقدار صفر رو یک می کنه و بیت با مقدار صفر رو یک ؛ اما اگر بیت ثابتی که بیت دیگر با اون Xor میشه صفر باشه بیت هایی که با صفر Xor بشن هیچ تغییری نمی کنن.:متعجب:
[بنابر این اگه می خواین از Xor استفاده کنین با هر کارکتر رو با 255 Xor کنین.:بامزه:]
:لبخند: روش دیگه ای که می شه انجام داد کم کردن عدد از 255 هستش!
یه روش دیگه هم استفاده از Not است که دقیقا مانند Xor با 255 عمل می کنه!:چشمک: