PDA

View Full Version : سوال: ساخت یک برنامه File Shredder (حذف فایل به صورت غیر قابل بازیابی)



clover
یک شنبه 09 اسفند 1388, 14:03 عصر
با سلام
حتما شما هم از برنامه هایی مثل Tune up Shredder که برای حذف فایل ها به صورت امن و غیر قابل بازیابی به کار می روند، استفاده کرده اید.
اطلاعات من در مورد این گونه برنامه ها تا این حد است که این برنامه ها فایل مورد نظر را با یک سری اطلاعات تصادفی رو نویسی می کنند و بعد این فایل را با روش هایی خاص حذف می کنند.

من سوالات زیادی در این زمینه دارم، از جمله اینکه :
آدرس فایل ها در چه قسمتی قرار دارند و چطور میشود به آنها دسترسی پیدا کرد. (به طور کلی فایل ها چگونه بر روی هارد ذخیره می شوند)

آیا توابع استاندارد که برای نوشتن بر روی فایل استفاده می شوند (هم در C و هم در ++C) مستقیما بر روی فایل می نویسند (در همان مکان قبلی بر روی هارد) یا اینکه این مورد توسط این توابع قابل کنترل نیست ؟ آیا اطلاعات فایلی که با این توابع بر روی آن نوشته شده است، قابل بازیابی است ؟

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

از شما دوستان انتظار ندارم به سوالات من در این تاپیک پاسخ کامل بدهید. با این حال ممنون می شوم اگر اطلاعات یا تجربه ای در این زمینه دارید (هر چند کوچک) در اختیار من قرار دهید و یا اگر منابعی در این زمینه می شناسید (در صورت امکان منابع اینترنتی، همراه با مثال های C یا ++C و نه کتاب)به من معرفی کنید.

amin1softco
یک شنبه 09 اسفند 1388, 14:15 عصر
ببین بیشتر این سوالاته تو بر می گرده به جدول تخصیص فایل که در ویندوز در سه نوع fat16 - fat32 - ntfs هست که اطلاعاتی از قبیل تاریخ و زمان ویرایش فایل و نوعش فقط خواندنی و مخفی و غیره در اون نگهداری میشه شما باید بری روش ها ی کار با این جدول درک کنی که در ان تی اس از درخت بی برای دسترسی به فایل استفاده میشه و در اکس پی قابلیت ها حفاظتی برای کاربران متفاوت هم بهش اضافه شده و اونوقت به نظر من با حذف آدرس ها در این جدول می تونی از بازیابی مجدد فایل جلو گیری کامل بکنی فت 16 و 32 هم قدیمی شده اصلا بیخیالش شو تازه این فقط در ویندوزه در لینوکس یونیکس و مک این جدول و نحوه ذخیره سازی اون متفاوته ........
راحتترین کار اینه که یکی از این نرم افزار های کوچولو که این کار رو می کنه فراخوانی کنی که به راحتی برات پاک سازی کنه همینhttp://www.barnamenevis.org/forum/images/icons/icon6.gif

navid_8x
پنج شنبه 13 اسفند 1388, 02:31 صبح
آیا میشه فقط با 0 کردن همه ی بایت های فایل، غیر قابل بازگشت کرد؟

hoax3r
پنج شنبه 13 اسفند 1388, 11:56 صبح
ساده ترین راهش اینه که از توابع داخلی ++C/C استفاده کنید و محتوای فایل مورد نظر رو با مقادری الکی پرکنید سایز فایل و نام فایل رو هم میتونین تغییر بدین و در نهایت فایل رو با تابعی مثل remove ( جزء توابع C ) پاک کنید.

clover
شنبه 15 اسفند 1388, 15:11 عصر
در مدتی که از ایجاد این تاپیک گذشته اطلاعاتی در مورد نحوه ذخیره سازی فایل ها و مشخصات فایل ها به دست آوردم از جمله اینکه :
مشخصات فایل ها در Directory Structure نگهداری می شود نه در جدول تخصیص فایل.
در هنگام حذف فایل ها مشخصات فایل از Directory Structure پاک نمی شود، بلکه با برچسبی به عنوان حذف شده مشخص می شود.

پس کارهایی که یک نرم افزار File Shredder باید انجام بدهد به مورد زیر محدود می شود :

1 - رو نویسی فایل
2 - حذف یا تغییر اطلاعات فایل از Directory Structure
3 - حذف فایل از هارد
حالا برای شروع کار، یک سوال دارم :
چطور می شود یک فایل را رونویسی کرد ؟

ساده ترین راهش اینه که از توابع داخلی ++C/C استفاده کنید و محتوای فایل مورد نظر رو با مقادری الکی پرکنید
بنده هم از همین روش استفاده کردم، اما نرم افزار Recover My File به راحتی آب خورد فایل مورد نظر را به صورت صد در صد سالم، تحویل داد !
روشی را پیشنهاد کنید که اطمینان بدهد دقیقا همان سکتور ها رونویسی می شوند.
ظاهرا با وقفه های بایوس امکان نوشتن در یک سکتور خاص وجود دارد، اما سوالی که مطرح است این است که : از کجا می توانیم بفهمیم یک فایل در چه سکتور هایی قرار دارد ؟

amin1softco
شنبه 15 اسفند 1388, 16:28 عصر
والا ما تو دانشگاه اینجور خوندیم دیگه نمی دونم جدیدا کجا نگهداری میشه
این لینکم اینجور میگه:
http://www.salvationdata.com/blog/articles010803/

File content becomes filled by special data array. i.e. the place on a disk which was occupied earlier became filled with other data (casual sequence of numbers). Thus, having overwritten its content with another one, you really destroy its presence. There are ways to restore the information and after such procedures, but they demand the special equipment which allows to fix is insignificant small level residual magnetization of a hard disk surface. It demands the big expenses which are expedient only if you stored plans of a super new aircraft.
But Safe File Shredder takes steps to exclude such possibility also: In addition, the program undertakes special steps to be assured that data will not be restored by residual level of a magnetic dust. After these manipulations program marks a data as deleted on the file system level and the place on a storage device becomes available for further use. In addition it can hide the folders and files names for restoring programs.
Other shredding programs use various algorithms. Basically they differ of passes quantity and types of data which placed in a space of deleted data and for some reasons it is enough. But the Safe File Shredder makes the protection even more convenient


من یک سرچی زدم حق با دوستمونه مشخصات فایل از جمله نام و غیرش در ساختار شاخه ذخیره میشه طبق گفته این لینک
http://www.pcguide.com/ref/hdd/file/fatAttributes-c.html

ولی فکر کنم بشه با استفاده از تغییر باینری خود دیسک و جدول تخصیص فایل هم این کار رو انجام داد.

hoax3r
شنبه 15 اسفند 1388, 19:00 عصر
اول یه نکته رو بگم شما هر بلایی سر یک فایل بیارین حالا از هر طریقی امکانات زبان های برنامه نویسی یا کتابخانه های دیگر در نهایت به API های سیستم عامل میرسیم که سیستم عامل موقعیت فایل رو پیدا میکنه و تغییرات لازم رو روی سکتور های مربوطه میده در نتیجه لزومی نداره خودمونو درگیر مسائل پیچیده فایل سیستم و نوع پارتیشن و ... بکنیم


بنده هم از همین روش استفاده کردم، اما نرم افزار Recover My File به راحتی آب خورد فایل مورد نظر را به صورت صد در صد سالم، تحویل داد !

من خودم برای برسی برنامه ای نوشتم با همون روشی که گفتم و میاد یه فایلو پاک میکنه و با نرم افزار TuneUp Undelete تست کردم نتونست فایل پاک شده رو برگردونه، برنامه که شما گفتین رو ندارم متاسفانه که تست کنم ولی حدس میزنم اینم نتونه(شایدم بتونه:لبخندساده:)
سورس برنامه رو ضمیمه کردم خواستین ببینید و تستش کنید، اینو با کامپایلر PellesC کامپایل کردم پس امکان اینکه در کامپایلر های دیگه مشکل پیدا کنه هست خصوصا مال میکروسافت، اگه از ++VC استفاده می کنید هدر stdbool.h رو حذف کنید


ظاهرا با وقفه های بایوس امکان نوشتن در یک سکتور خاص وجود دارد، اما سوالی که مطرح است این است که : از کجا می توانیم بفهمیم یک فایل در چه سکتور هایی قرار دارد ؟

با اینکه این روش رو پیشنهاد نمیکنم به دلیل پیچیدگی و احتمال خطای زیاد، ولی با این حال شما با API هم میتونید به سکتورها دسترسی داشته باشین و نیازی به وقفه نیست، (وقفه دیگه عمرش به سر آمده)
باز اگر خواستین از این راه اینکارو انجام بدین برای پیدا کردن موقعیت یک فایل روی دیسک این لینک رو ببینید که کمکتون میکنه،



http://msdn.microsoft.com/en-us/library/aa363911(VS.85).aspx

clover
دوشنبه 17 اسفند 1388, 09:41 صبح
با نرم افزار TuneUp Undelete تست کردم نتونست فایل پاک شده رو برگردونه،

این نرم افزار در این زمینه ضعیف هست، حتی گاهی اوقات قادر به بازیابی فایل هایی که به صورت عادی حذف شده اند و مدت زیادی از حذف اونها نمی گذرد نیست.

سورس برنامه رو ضمیمه کردم خواستین ببینید و تستش کنید،
حتما تست می کنم، البته اگر فایل اجرایی را هم می گذاشتید بهتر بود. این مدت زیاد به اینترنت دسترسی ندارم، اما سعی می کنم نتیجه را بهتون اطلاع بدم.

با اینکه این روش رو پیشنهاد نمیکنم به دلیل پیچیدگی و احتمال خطای زیاد، ولی با این حال شما با API هم میتونید به سکتورها دسترسی داشته باشین و نیازی به وقفه نیست، (وقفه دیگه عمرش به سر آمده)
باز اگر خواستین از این راه اینکارو انجام بدین برای پیدا کردن موقعیت یک فایل روی دیسک این لینک رو ببینید که کمکتون میکنه،
من فقط دنبال روشی هستم که بهم اطمینان بده دقیقا همان سکتور ها رو نویسی می شوند. حال وفقه بایوس باشد یا توابع C یا API سیستم عامل.

hoax3r
دوشنبه 17 اسفند 1388, 16:22 عصر
البته اگر فایل اجرایی را هم می گذاشتید بهتر بود.

من اون فایلی که گذاشتم فایل اجرایی همراهشه! برای استفاده مثلا اگه فایل c:\file.dat هست باید این دستور رو در CMD وارد کنید مسیر فایلو بصورت آرگومان میدین به برنامه


wiper c:\file.dat



من فقط دنبال روشی هستم که بهم اطمینان بده دقیقا همان سکتور ها رو نویسی می شوند. حال وفقه بایوس باشد یا توابع C یا API سیستم عامل.

برای اینکه اطمینان پیدا کنید که سکتور های فایل چه تغییری می کنند برنامه های WinHex یا Directory Snoop رو پیشنهاد می کنم بگیرین با اینا فایل های روی سیستمتون به اضافه موقعیت سکتور هاشون رو رو هارد می تونین ببینید،

Directory Snoop


http://www.briggsoft.com/dsnoop.htm


WinHex


http://www.x-ways.net/winhex/


اینا هر دو تجارین برای همین لینک نمیشه داد

navid_8x
یک شنبه 26 اردیبهشت 1389, 01:25 صبح
آیا این امکان غیر قابل بازگشت کردن با باز کردن فایل به صورت تصادفی و صفر کردن همه رکورد ها هستش؟