PDA

View Full Version : سوال: خواندن آدرس سکتور شروع یک فایل بروی هارد؟



shadanpoor
سه شنبه 06 اسفند 1392, 13:02 عصر
دوستان یه پروژه هست که تو مرحله قفل گذاریش نیاز دارم یه فایل رو جایی ایجاد کنم و آدرس سکتور شروع این فایل رو نگه دارم بعد تو هر بار اجرا محلشو چک کنم تا در صورتی که از هارد ایمیج گرفته شد و دوباره ریستور شد برنامه تشخیص بده.
البته برنامه به CPU ID , HDD ID , WindowsDigitalID و حتی همه Virtual Machine ها و ..... حساسیت داره و کدش تغییر میکنه. ولی مشکل Backup هنوز حل نشده و چون این یه برنامه شرکتیه و سرمایه یه شرکت بهش بستگی داره خیلی مهمه که امن باشه.

Alirezanet
سه شنبه 06 اسفند 1392, 15:23 عصر
فکر میکنم این روش درستی نباشه برای بالا بردن امنیت ... سکتور فایل های موجود روی هارد دیسک ها متغییر هستند تا اونجایی که من اطلاع دارم ... به طور مثال اگر از این روش استفاده کنید در صورتی که هارد مشتری شما دیفرگ بشه برنامه شما از کار میفته !

shadanpoor
پنج شنبه 08 اسفند 1392, 15:47 عصر
اول از همه ممنون که وقت گذاشتید...
کاملا فرمایش شما صحیحه ولی راه چاره ای نیست. سیستمهای ما هیچ کاربری دیگه ای نداره که بخاطرش هارد رو دیفرگ کنن در ضمن میشه موقع قرار داد این مورد رو اعلام هم کرد. اما فکر کنم بشه فایل مورد نظر رو جزء فایلهای خاصی قرار داد که محلشون نباید تغییر کنه کلی فایل رو ویندوز به همین شکل محلشو ثابت میکنه. تازه ما راضی هستیم چند موردی رو که تو سال ممکنه اتفاق بیافته رو کد جدید بهشون بدیم تلفنی امکان پذیره.
باز هم ممنون میشم درمورد سوال اول که آدرس سکتور شروعی فایل رو پیدا کرد و مورد دوم که بشه محل فایل رو ثابت کرد ، اگر دوستان اطلاعاتی دارن دریغ نکنن. :لبخندساده:

Alirezanet
پنج شنبه 08 اسفند 1392, 18:01 عصر
اول از همه ممنون که وقت گذاشتید...
کاملا فرمایش شما صحیحه ولی راه چاره ای نیست. سیستمهای ما هیچ کاربری دیگه ای نداره که بخاطرش هارد رو دیفرگ کنن در ضمن میشه موقع قرار داد این مورد رو اعلام هم کرد. اما فکر کنم بشه فایل مورد نظر رو جزء فایلهای خاصی قرار داد که محلشون نباید تغییر کنه کلی فایل رو ویندوز به همین شکل محلشو ثابت میکنه. تازه ما راضی هستیم چند موردی رو که تو سال ممکنه اتفاق بیافته رو کد جدید بهشون بدیم تلفنی امکان پذیره.
باز هم ممنون میشم درمورد سوال اول که آدرس سکتور شروعی فایل رو پیدا کرد و مورد دوم که بشه محل فایل رو ثابت کرد ، اگر دوستان اطلاعاتی دارن دریغ نکنن. :لبخندساده:

انجام این کار توسط زبان های سطح بالا به صورت پیش فرض امکان پذیر نیست هرچند کتابخانه های مختلفی که به صورت تجاری ارائه میشن رو میتونید پیدا کنید و ازشون استفاده کنید. پیشنهاد من این هستش که این قسمت از قفل رو از طریق زبان های سطح پایین تر مثل C++ استفاده کنید برای نوشتنش تا به نتیجه دلخواه برسید ...
به طور مثال در C++ کتابخانه هایی مثل DeviceIoControl (http://msdn.microsoft.com/en-us/library/aa363216.aspx)و Disk Management Control Codes (http://msdn.microsoft.com/en-us/library/aa363979(VS.85).aspx) هستند که چنین امکاناتی رو ارائه میدن ...

به دلیل اینکه منطقا این روش مختص به پروژه شما هست و حتی دوستانی که سابقه نوشتن انواع قفل های نرم افزاری رو دارند هم از این روش استفاده نکردنند فکر میکنم در این تاپیک به جواب قانع کننده ای نرسبد و کمی باید خودتون با این مشکل دست و پنجه نرم کنید...
بهترین گزینه برای این کار از نظر من نوشتن یک dll کوچیک c++ هستش که بتونید مقادیر مورد نظر رو با استفاده از اون بدست بیارید.

در آخر برای گرفتن کمک بیشتر بد نیست در تالار مربوط به c هم این مشکل رو مطرح کنید شاید کسی کتابخانه آماده ای داشته باشه که بتونید ازش در برنامتون استفاده کنید.

موفق باشید