مشاهده نسخه کامل
: خواندن داده ها از فضای پارتیشن بندی نشده C#
afceaglee2013
14-01-2013, 15:27
سلام دوستان من فلش مموری رو پارتیشن بندی کردم و مقداری از از فضا رو به صورت unpartitioned خالی گذاشتم میخواستم بدونم امکان خوندن یا نوشتن اطلاعات از اون قسمت هست یا نه
صد در صد مطمئن نیستم ولی بعضی نرم افزار ها مثل اینکه میتونن اینکارو انجام بدن اسمش دقیقا یادم نیست یکی از این hexViewer ها بودن
با creatfile فک کنم بشه کارایی کرد ولی فقط فایل ها رو تونستم باز کنم در صورتی که پارتیشن ها و حتی خود دیسک رو هم به گمونم میشه باز کرد
شما با CreateFile می توانید. به جای اینکه آدرس فایل را بدهید و باز کنید آدرس درایو را بدهید. و آن را باز کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
DriveLet درایوی است که پارتیشن بندی نشده اما نام دارد مثلا K:
نباید K:\ باشد بلکه K: یعنی \ ندارد.
حالت خواندن هم باید Read باشد
در اختیار گیری یا همان FileShare هم باید Read باشد و هم Write
FileMode هم Open باشد.
فراموش نکنید که باید خواندن شما 512 بایت 512 بایت باشد.
درصورت استفاده از uSD و یا مشابه ... :
یکسری از حافظه های MMC آدرس Offset دارند که می توانید با استفاده از WMI مقدار Offset آن ها را بدست آورید.
موفق باشید.
afceaglee2013
17-01-2013, 15:11
ممنون از جوابتون:n16:
این کلاس رو نوشتم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای خواندن دیتا هم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
درایو پارتیشن بندی نشده ندارم .. روی یکی از درایو ها که fat 32 بود امتحان کردم فایل ها رو راحت میشه خوند ولی در خوندن اطلاعات درایو مشکل داره یکی اینکه همه اطلاعات رو نمیشه خوند چند سکتور اول رو میخونه حدودا 10 سکتور (512*10) و اینکه نمیتونم offset رو تغییر بدم همیشه باید صفر بمونه
البته اینا خب چندان مهم نیست .. بزرگترین مشکل اینه که برای اینکه از این روش استفاده کنم باید حتما پارتیشن وجود داشته باشه (فرمت شده یا نشده) ولی مشکل اینه که ویندوز برای فلش مموری ها بیشتر از یک پارتیشن نمیشناسه و البته من هم اصراری ندارم پارتیشن رو نشون بده
چیزی که من میخوام اینه:
برنامه بتونه بدون در نظر گرفتن اینکه فضای فلش پارتیشن داره یا نه بتونه اطلاعات رو بنویسه و بخونه
تا اونجایی که تو اینترنت دیدم بعضی ها گفته بودن میشه با این آدرس"\\.\PhysicalDisk0" و Createfile میشه به اطلاعات خام دیسک دسترسی داشت ولی من نتونستم اینکارو انجام بدم:n13:
روی یکی از درایو ها که fat 32 بود امتحان کردم
زمانی که به صورت خام به دیسک ها متصل می شوید تفاوتی ندارد که پارتیشن چگونه فرمت شده باشد. این قالب بندی برای سیستم عامل ها معنا خواهد داشت.
این مطلب برای همه ی دیسک های HC یکسان است و تفاوتی ندارد مگر دیسک های غیر از HC نظیر uSD 2GB که شما توانایی دسترسی به آدرس های بعد از HiddenSectors را خواهید داشت یعنی MBRبا این روش قابل دسترس نیست و شما به BSE متصل خواهید شد. و آدرس BSE صفر این تابع خواهد شد.
در قبل هم بیان شد که برای متوجه شدن نوع دیسک Offset دیسک را از WMI در جدول win32_diskpartition بدست آورید.
اینکه نمیتونم offset رو تغییر بدم همیشه باید صفر بمونه
منظور از Offset اگر مانند قبل است که هیج. اما اگر می خواهید به نقطه خاصی از دیسک بروید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سپس با یک حلقه یا یک بافر نقطه مورد نظر خود را بخوانید.
بعضی ها گفته بودن میشه با این آدرس"\\.\PhysicalDisk0" و Createfile میشه
بله می شود اما به این نکته توجه داشته باشید شما با این کار دیگر دسترسی به درایو ها ندارید یعنی اگر یک هارد 5 درایو داشته باشد کل آن ها بارگذاری می شود و با اندکی تغییر در سکتور های آغازین کل دیسک مختل می شود.
با استفاده از همان DriveLet هم می شود در فلش ها نوشت و خواند بدون مشکل. استفاده از PhysicalDisk هم کل دیسک رو به شما می دهد اما در برخی اوقات با Permission ویندوز رو به رو خواهید شد. این مجوز UAC نیست بلکه پروتکت ویندوز است. این طور که من متوجه شدم یکسری ویندوز ها مجوز می دهند و یکسری هم نمی دهند. این به Build، نسخه و حتی مدل ویندوز دارد مثلا 7،Vista و...
من مفهوم جملات آخر شما را خوب متوجه نشدم با این حال امیدوارم که توضیحات فوق مفید باشد.
موفق باشید.
afceaglee2013
18-01-2013, 18:02
بله می شود اما به این نکته توجه داشته باشید شما با این کار دیگر دسترسی به درایو ها ندارید یعنی اگر یک هارد 5 درایو داشته باشد کل آن ها بارگذاری می شود و با اندکی تغییر در سکتور های آغازین کل دیسک مختل می شود.
راستش قضیه اینه که یه نفر از من خواسته یه سری اطلاعات رو در فلش به صورتی که اصلا امکان پاک شدن نداشته باشه کپی کنم .. نمیخوام از نرمافزار هایی که محدودیت دسترسی ایجاد میکنن استفاده کنم(تا حالا استفاده نکردم ) چون در هر صورت فلش باید قابل فرمت باشه و چون در هنگام فرمت جدول فایل ها پاک میشه به نظرم هیچ راهی وجود نداره .. من هم به نظرم رسید که فلش رو پارتیشن بندی کنم(حجم پارتیشن مقداری کمتر از حجم واقعی فلشه) چون ویندوز در حالت عادی فقط پارتیشن اول رو میبینه .. بنابراین اطلاعاتی که خارج از پارتیشن قرار دارن به هیچ وجه توسط ویندوز یا نرمافزار دیگه ای نمیتونه شناخته یا خوانده و پاک بشه
با استفاده از همان DriveLet هم می شود در فلش ها نوشت و خواند بدون مشکل. استفاده از PhysicalDisk هم کل دیسک رو به شما می دهد اما در برخی اوقات با Permission ویندوز رو به رو خواهید شد. این مجوز UAC نیست بلکه پروتکت ویندوز است. این طور که من متوجه شدم یکسری ویندوز ها مجوز می دهند و یکسری هم نمی دهند. این به Build، نسخه و حتی مدل ویندوز دارد مثلا 7،Vista و...
پس قضیه پیچیده شد چون من اصلا نمیدونم کجا رو باید تغییر بدم .. اینطور که پیداس مثل اینکه حتی یوزر های ادمین هم شامل این قضیه میشن..
پس شما راهی جز خوندن MBR نداری. وقتی MBR رو بخونی آدرس پارتیشن ها رو داری. کافیه به اون نقطه بری و سپس اطلاعاتت رو قرار بدی. برای خواندن MBR می توانید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
طول MBR رو یک جستجو بکنید پیدا می کنید.
این لینک ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) نیز راهنمای یافتن آدرس ها در MBR هست.
حال که آدرس پارتیشن دوم را دارید (که درایو لتر ندارد) کافیست تا حالت نوشتن را به FileStream داده و به آن نقطه بروید و هرچه می خواهید بنویسید و هر چه می خواهید پاک کنید.
حواستان به پروتکت ویندوز نیز باشد. خدا رو شکر الان که امتحان کردم ویندوز بهم گیر نداد ولی قبلا هیچ رقم راه نمی اومد.:n02:
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.