PDA

View Full Version : قفل کردن یک درایو



Felony
شنبه 28 اردیبهشت 1387, 18:53 عصر
دوستان من یه هارد اکسترنال دارم میخوام یه برنامه بنویسم که روی هارد نصبش کنم و کاربر تاوقتی که رمز عبور وارد نکرد نتونه به اطلاعات هارد دسترسی پیدا کنه یعنی با دابل کلیک روی درایو یه برنامه باز شه و از ما رمز عبور بخواد و اگه رمز درست بود وارد درایو شه.

لطفا اگه میشه کمک کنید .

Felony
شنبه 28 اردیبهشت 1387, 20:22 عصر
:چشمک:آقا من دستور قفل کردن درایو رو پیدا کردم و درایو به طور کامل قفل میشه حالا یه مشکل دارم این دستور یه تابع میخواد که نام درایو مورد نظر ما هست مثلا F تا درایو رو قفل کنه حالا من چطور میتونم نام درایو هارد اکسترنالم که در هرسیستم ممکنه یه اسمی داشته باشه رو پیدا کنم و از اون استفاده کنم ؟؟؟؟

Felony
شنبه 28 اردیبهشت 1387, 22:35 عصر
آقا فهمیدم برنامه قراره به عنوان AutoPlay بیاد بالا پس باید روی هارد باشه پس میشه گفت مسیری رو که درش هست رو بگیره و اون درایو رو قفل کنه.

حالا چهطور درایو مسیر جاری رو بگیرم ؟؟؟

Felony
شنبه 28 اردیبهشت 1387, 22:58 عصر
مشکلم حل شد به کمک این دستور :
a:=Application.ExeName;
a:=extractfileDrive(a);

DAMAVAND
یک شنبه 29 اردیبهشت 1387, 00:07 صبح
:چشمک:آقا من دستور قفل کردن درایو رو پیدا کردم؟؟؟؟


سلام
ممکنه بگيد از چه دستوري استفاده کرديد ????
با تشکر

Felony
یک شنبه 29 اردیبهشت 1387, 05:24 صبح
این هم دستورش که به وسیله ی توابع خود ویندوز این کار رو انجام میده :


procedure TForm1.Button1Click(Sender: TObject);
var
tmp:Cardinal;
st:string;
df: array [1..100] of Char;
i:cardinal;
h:Cardinal;
begin
st:='\\.\'+ 'N' +':';
for i:=1 to Length(st) do
df[i]:=st[i];
df[Length(st)+1]:=#0;
h:=CreateFile(@df,GENERIC_READ+GENERIC_WRITE,FILE_ SHARE_READ+FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0) ;
if DeviceIoControl(h,589848,nil,0,nil,0,tmp,nil)=Fals e then //LOCK.
ShowMessage('Error!');
end;
end.

Felony
یک شنبه 29 اردیبهشت 1387, 14:29 عصر
دوستان من برنامه رو نوشتم فقط یه مشکل:

برنامه رو ضمیمه کردم فایل Project1.exe رو تو یکی از درایوهاتون بریزید و اجراش کنید میبینید که درایو قفل میشه حالا پسوورد برای باز کردن درایو 123 هست این رمز رو وارد کنید و دکمه ی ok رو بزنید میبیند که درایو از حالت قفل بودن خارج میشه.

حالا چی کار کنم که این فایل به صورت Autorun اجرا شه ؟؟؟
میدونم که به وسیله ی اسمبلی باید این کار رو بکنم و با فایل Autorun.inf تست کردم ولی نشد آخه زیاد از اسمبلی سر در نمیارم .

و در ضمن اگه یکی موقع وصل کردن هارد دکمه ی shift رو نگه داشت و نزاشت Autorun اجرا شه تکلیف چیه ؟ اونموقع میتونه رو درایو کلیک راست کنه و رایو رو Open کنه و همه ی زحمات ما هم پر ... !!!

راه حلی دارید تو رو خدا کمک کنید تا اینجاش که کمکی نرسید و تنهایی بیچاره شدم تا درستش کنم حداقل اینجاش رو یه کمکی بکنید.

و در مورد سوال یکی از دوستان باید بگم که به جای N در سورسی که من گزاشتم
نام درایو مورد نظرتون رو بنویسید و اگرم میخواید درایوی که برنامه درش هست قفل بشه که از اون دستور که گزلشتم استفاده کنید حال وقتی برنامه اجراشه درایو قفل میشه تا زمانی که برنامه بسته شه وقتی برنامه بسته شد درایو باز میشه و در ضمن با این کد نمیتونید درایو ویندوزتون رو قفل کنید.

iranfa
یک شنبه 29 اردیبهشت 1387, 14:53 عصر
دوست عزيز ميتوني در مورد اون كدي كه دادي (قفل كردن درايو) توضيح بدي ؟
تك تك دستورات رو كامل توضيح بره لطفا
بسيــــــــــــــــــــــ ـار ممنون

lord_viper
یک شنبه 29 اردیبهشت 1387, 21:24 عصر
شما برای قفل کردن درایو چرا از رجیستری استفاده نمیکنین ؟هم راحت هم بی دردسر
hkey_current_user/ُُُُُُSoftware/Microsoft/Windows/CurrentVersion/Policies/Explorer
یه متغییر از نوع dword تعریف کن اگه مقدارشو No Drives بگزار (برای مخفی کردن درایو)یاNoViewOnDrive برای قفل کردن درایو
و مقدار اونو به دسیمال شماره هر درایو در مبنای 2
a=1,b=2,c=4,d=8 و .....

DAMAVAND
یک شنبه 29 اردیبهشت 1387, 22:11 عصر
شما برای قفل کردن درایو چرا از رجیستری استفاده نمیکنین ؟هم راحت هم بی دردسر
hkey_current_user/ُُُُُُSoftware/Microsoft/Windows/CurrentVersion/Policies/Explorer
یه متغییر از نوع dword تعریف کن اگه مقدارشو No Drives بگزار (برای مخفی کردن درایو)یاNoViewOnDrive برای قفل کردن درایو
و مقدار اونو به دسیمال شماره هر درایو در مبنای 2
a=1,b=2,c=4,d=8 و .....
اين کار فقط درايو رو مخفي ميکنه ولي از دسترس خارج نميکنه راحت ميشه به درايو دسترسي داشت.
بعد فکر کنم دوستمون منظورش اينکه که هارد اکسترنال رو کلا قفل کنه يعني اگه هارد رو به يه سيستم ديگه وصل شد باز هم قفل باشه بخاطر همين هم از استفاده کردن AutoRun و رجيستري بيفايدست.

Felony
دوشنبه 30 اردیبهشت 1387, 05:32 صبح
بله دوست گرامی دماوند درست میگن ریجستری به هیچ عنوان درایو رو قفل نمیکنه پس به درد من نمیخوره ولی سورسی که من گزاشتم اگر دقت کنید اول درایو رو UnMount میکنه و از دسترس تمامی نرم افزارها درش میاره و سپس قفلش میکنه پس به هیچ وجه نمیشه بهش دسترسی داشت.

Felony
دوشنبه 30 اردیبهشت 1387, 09:56 صبح
آقا من برای اینکه کسی نتونه برنامم رو ببنده (چون اگر برنامه بسته شه درایو از حالت قفل بودن در میاد) در رویداد OnFormDestroy گفتم که برنامم باز اجرا شه یعنی به هر روشی که برنامه رو ببندی باز اجرا میشه و درایو قفل باقی میمونه :قهقهه:

:ناراحت:حالا مشکل اینجاست که وقتی کلمه ی عبور رو درست وارد میکنی برنامه میخواد که خودش رو ببنده (application.terminate) و برنامه این روال رو به عنوان destroy شدن میشناسه و باز برنامه رو اجرا میکنه و باز درایو قفل میشه حالا چی کار کنم که اگه کلمه ی عبور رو درست وارد کردم کدهای درون رویداد OnForm Destroy اجرا نشه ؟؟؟

B-Vedadian
دوشنبه 30 اردیبهشت 1387, 10:31 صبح
Application.MainForm.OnDestroy:=nil

Felony
دوشنبه 30 اردیبهشت 1387, 11:31 صبح
این مشکل هم حل شد.
مممنون , فقط مونده اینکه چطور این برنامه رو بزارم به عنوان اتوران که به طور اتوماتیک با اتصال هارد به یک سیستم اجرا شه.

اگر کسی در این مورد چیزی میدونه لطفا کمک کنه.

iranfa
دوشنبه 30 اردیبهشت 1387, 13:49 عصر
اين كار رو هم ميشه با يك ini انجام داد منتها اگه كاربر رو درايو راست كليك و open كنه اونوقت برنامه اجرا نميشه؟
راستي ميتوني وقتي كارت تموم شد سورس كارتو همراه با توضيح رامون بزاري يا نه ؟
مر30

lord_viper
دوشنبه 30 اردیبهشت 1387, 15:39 عصر
اين کار فقط درايو رو مخفي ميکنه ولي از دسترس خارج نميکنه راحت ميشه به درايو دسترسي داشت.
بعد فکر کنم دوستمون منظورش اينکه که هارد اکسترنال رو کلا قفل کنه يعني اگه هارد رو به يه سيستم ديگه وصل شد باز هم قفل باشه بخاطر همين هم از استفاده کردن AutoRun و رجيستري بيفايدست.
شما با NoViewOnDrive امتحان کن و مطمئن باش
میبینی که جلوی ورود به درایو رو میگیره و یه اررور restrictions میده

DAMAVAND
دوشنبه 30 اردیبهشت 1387, 19:36 عصر
شما با NoViewOnDrive امتحان کن و مطمئن باش
میبینی که جلوی ورود به درایو رو میگیره و یه اررور restrictions میده

دوست عزيز سلام
اين روشي رو که گفته بوديد رو براي اطمينان تست کردم.درسته جلوي دسترسي رو ميگيره و همون خطا رو که نوشته بوديد ميده.
ولي با Command prompt راحت ميتونيد بهش دسترسي داشته باشيد .
خودتون امتحان کنيد !
فکر ميکنم روشي که دوستمون با اون درايو رو قفل کرد بهترين هست چون کاملا جلوي دسترسي به درايو رو ميگيره.
موفق باشيد .

B-Vedadian
سه شنبه 31 اردیبهشت 1387, 08:53 صبح
تا جایی که من میدونم، نمیتونی کاری کنی که با قرار گرفتن یک Media تو ویندوز، چیزی اجرا بشه و نشه جلوی اجراش رو گرفت!

آخه اگه امکان پذیر هم باشه عیب سیستم عامله، هر کس یه خصومتی با شخص دیگه داشته باشه...!

Felony
سه شنبه 31 اردیبهشت 1387, 09:43 صبح
دوستان دارم رو موضوع اجرا به صورت خودکارش کار میکنم اگر به نتیجه ای رسیدم چشم سورس رو همراه با توضیحات قرار میدم.
و در مورد نوشته ی دوست گرامی جناب Cyberfox باید بگم که دماوند درست میگه به راحتی با Command Prompt میشه به درایو سوییچ کرد و حتی با کمی ور رفتن بازش کرد ولی با سورسی که من گزاشتم به هیچ وجه نمیشه درایو رو باز کرد چون در آن زمان ویندوز هیچ درایوی رو نمیشناسه تا بخواد بهش دسترسی داسته باشه چون درایو UnMount شده و بعد قفل شده !

hojjatcroos
دوشنبه 02 دی 1387, 17:49 عصر
آقای Cyber fox با کار شما فقط درایو مخفی می شه و به راحتی می شه به آون دسترسی داشت

iamehsan56
سه شنبه 03 دی 1387, 11:49 صبح
دوست عزيز برنامه ات كار نمي كنه و Error مي ده.

Mask
سه شنبه 03 دی 1387, 21:12 عصر
با سلام
کافیه کد زیر رو درون یک فایل autorun.inf بریزید و در ریشه درایو قرار بدید حتی اگر open هم بکنه برنامه شما اجرا میشه.

[autorun]
action=Open Drive
open=Project1.exe OPEN
icon=C:\windows\system32\shell32.dll,8
shell\open=Open
shell\open\Command=Project1.exe OPEN
shell\open\Default=1
shell\explore=Explore
shell\explore\Command=Project1.exe EXPLORE
shell\AutoPlay=AutoPlay
shell\AutoPlay\Command=Project1.exe OPEN
میتونی آیکن هم براش نزاری

Mask
سه شنبه 03 دی 1387, 21:18 عصر
راستی وقتی برنامه رو میبندم درایو از حالت قفل خارج میشه.
برای این چه فکری کردی.
خدا میدونه smil soft حالا کجاست.
پست یه قرن پیش دوباره از زیر خاک اومده بالا.

Felony
چهارشنبه 04 دی 1387, 14:25 عصر
)خوب یه کار میکنیم که برنامه بسته نشه یا یه کلکی میزنیم که اگه بسته شد بازم اجرا شه :

تو رویداد OnClose یا OnDestroy فرمتون کد زیر رو بنویسید :


Winexec('ProjectName.exe',0);

با این کد هر وقت برنامه رو بخوای ببندی رویداد Onclose اجرا میشه و خود برنامه خودش رو دوباره اجرا میکنه .

و برای اینکه درایو رو آزاد کنید متغییر h رو از نوع سراسری تعریف کنید و هر وقت خواستید درایو رو آزاد کنید از کد زیر استفاده کنید :


CloseHandle(h);

ghanati
یک شنبه 16 فروردین 1388, 01:09 صبح
پسوردبازکردن فایل دانلودشده ]چیست:قلب:

Felony
یک شنبه 16 فروردین 1388, 06:39 صبح
پسوردبازکردن فایل دانلودشده ]چیست
فایل هیچ پسوردی نداره .

mithridates
یک شنبه 16 فروردین 1388, 18:38 عصر
دوست عزیز اگه فایل هات همه اجرایی باشن میشه یه کار کرد همه اول پسورد رو چک کنند که وارد شده یا نه .بعد اجرا شن (infect). ولی در حالت عادی به قول دوستمون autorun بالاخره میشه جلوشو گرفت. واسه اون کدی هم که گذاشتی که اگه بسته شد دوباره اجرا شه. دستوراتی هستن که طوری برنامه رو میبندن که اون دستور شما اجرا نمیشه اصلا

ولی یک راه کاربردی هست که راجب جلوگیری از بسته شدن بتونه امنیت بالاتر و قابل اطمینان تری داشته باشه ولی خوب آموزش این مدل کد نویسی توی این سایت مورد علاقه ویروس نویسان هست.

اگه خودت هنوز پیدا نکردی PM بده میگم بهت