PDA

View Full Version : روش اصولی نوشتن رمز ورود برای نرم افزار چگونه است؟



younes-98
جمعه 11 بهمن 1387, 18:54 عصر
با عرض سلام و خسته نباشید می خواستم بدونم طریقه نوشتن login برای نرم افزار و همچنین نوشتن تعیین سطح دسترسی به روش اصولی و مرسوم چگونه است؟ اگر برنامه آماده ای با سورس کامل هست لطفا معرفی کنید.

DelphiFriend
جمعه 11 بهمن 1387, 19:31 عصر
سلام برای این کار راههای زیادی وجود داره اما راحت ترین راه برای تازه واردها اینکه شما یه Edit و یه Button بسازید و بعد روی Button کلیک کرده و کد های زیر رو بنویسید.

begin
if edit1.text='' then
begin
showmessage('لطفا رمز عبور را وارد نماييد');
edit1.setfocus;
end
else
begin
if edit1.text='رمز عبور دلخواه شما' then
begin
form2.show;
edit1.clear;
form1.hide;
end
else
begin
showmessage('رمز عبور صحيح نيست');
edit1.clear;
edit1.setfocus;
end;
end;
end;
به همین راحتی.

vcldeveloper
جمعه 11 بهمن 1387, 20:55 عصر
توی تالار دات نت در یکی دو تاپیک بطور مفصل در این زمینه بحث شده، چون موضوع چندان به خودِ دات نت یا دلفی مربوط نمیشه، و بیشتر بحث روش مطرح هست، می تونید از نتایج همون بحث ها در هر پروژه ایی با هر زبانی استفاده کنید.

miladnoori67
جمعه 11 بهمن 1387, 23:44 عصر
سلام به شما آقا یونس و javapersian و همچنین آقای کشاورز ... خوب بریم سر اصل مطلب ، به نظر من کدی که آقای javapersian به کار بردن چند تا عیب بزرگ داره : 1 . امکان تغییر رمز برای کاربر وجود نداره.2.سطح امنیت اون بسیار پایینه .3.امکان ذخیره و بازیابی ثانویه وجود نداره و همیشه از رمز ثابتی استفاده میشه که به راحتی میشه اونو دور زد.خوب حالا اگر نظر منو بخواهید بایید بگم که شما نسبت به نرم افزاری که میخوایید بنویسید باید نوع رمز گزاری رو مشخص کنید.اگر میخواید یه امنیت متوسط به برنامه بدید باید یوزر و پسوردتونو توی بانک اطلاعاتی ذخیره کنید که امکان تغییر اون وجود داشته باشه. و برای ایجاد امنیت میتونید روی بانکتون پسورد بزارید. که البته اون رو هم به راحتی میشه باز کرد اما نه برای کاربران مبتدی.حالا اگر میخواید که واقعا امنیت رو بالا ببرید باید با الگوریتمهای رمز گزاری پسورد مورد نظر رو کد کرده و داخل بانک بریزید و سپس بانک رو قفل کنید ... چون بعد از کامپایل برنامه اون الگوریتم دیگه قابل دسترسی نیست پس باز هم ضریب امنیتی شما بالاتر رفت. میبینید با کمی زحمت میشه امنیت رو بهبود بخشید.اینم از این ... خسته نباشید ... اما آقا یونس من اعتقاد دارم هیچ قفلی نیست که نشه بازش کرد. حتی بدون کلید. اینو همیشه یادتون باشه.سرتونو درد آوردم.ممنون ... بای

vcldeveloper
شنبه 12 بهمن 1387, 05:09 صبح
http://www.barnamenevis.org/forum/showthread.php?t=120547
http://www.barnamenevis.org/forum/showthread.php?t=134104
http://www.barnamenevis.org/forum/showthread.php?t=126496&page=2

bmanfy
شنبه 12 بهمن 1387, 09:38 صبح
میتونی یک بانک تعریف کنی و کاربرانرو توی اون تعریف کنی .
میتونی فایل بسازی و توی فایل ذخیره کنی و هزار و یک روش برای رمزنگاری فایل به کارببری .
برای رمزنگاری میتونی از روشهای معتبر استفاده کنی یا خودت یه سری روش به ابداع کنی برای این کار .
اما معمولا از بانک اطلاعاتی استفاده می کنند چون دردسر نداره .

DelphiFriend
شنبه 12 بهمن 1387, 12:04 عصر
سلام به شما آقا یونس و javapersian و همچنین آقای کشاورز ... خوب بریم سر اصل مطلب ، به نظر من کدی که آقای javapersian به کار بردن چند تا عیب بزرگ داره : 1 . امکان تغییر رمز برای کاربر وجود نداره.2.سطح امنیت اون بسیار پایینه .3.امکان ذخیره و بازیابی ثانویه وجود نداره و همیشه از رمز ثابتی استفاده میشه که به راحتی میشه اونو دور زد.خوب حالا اگر نظر منو بخواهید بایید بگم که شما نسبت به نرم افزاری که میخوایید بنویسید باید نوع رمز گزاری رو مشخص کنید.اگر میخواید یه امنیت متوسط به برنامه بدید باید یوزر و پسوردتونو توی بانک اطلاعاتی ذخیره کنید که امکان تغییر اون وجود داشته باشه. و برای ایجاد امنیت میتونید روی بانکتون پسورد بزارید. که البته اون رو هم به راحتی میشه باز کرد اما نه برای کاربران مبتدی.حالا اگر میخواید که واقعا امنیت رو بالا ببرید باید با الگوریتمهای رمز گزاری پسورد مورد نظر رو کد کرده و داخل بانک بریزید و سپس بانک رو قفل کنید ... چون بعد از کامپایل برنامه اون الگوریتم دیگه قابل دسترسی نیست پس باز هم ضریب امنیتی شما بالاتر رفت. میبینید با کمی زحمت میشه امنیت رو بهبود بخشید.اینم از این ... خسته نباشید ... اما آقا یونس من اعتقاد دارم هیچ قفلی نیست که نشه بازش کرد. حتی بدون کلید. اینو همیشه یادتون باشه.سرتونو درد آوردم.ممنون ... بای

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

younes-98
سه شنبه 15 بهمن 1387, 18:20 عصر
با تشکر از دوستان که زحمت کشیدن و پاسخ دادند. من با کد خیلی راحتتر یاد میگیرم اگر ممکنه سورس یا پروژه آماده با دلفی که user name , password را روی بانک ذخیره میکنه معرفی کنید

DelphiFriend
سه شنبه 15 بهمن 1387, 19:09 عصر
دوست عزیز این کار بسیار راحت برای ورود رمز از بستی که بالا داده بودم میتونی استفاده کنی.
براي تغيير اون اول يه جدول بسازيد با يک فيلد دلخواه(مثلا pass) بعد يک فرم جديد بسازيد با دو تا Edit و يک Button اونوقت روي Button کليک کرده و کد هاي زير را قرار دهيد.


begin
if (edit1.Text=form2.ADOTable2['pass'])then
begin
if edit2.Text=edit3.Text then
begin
form2.ADOTable2.Edit;
form2.ADOTable2['pass']:=edit2.Text;
form2.ADOTable2.Post;
edit1.Clear;
edit2.Clear;
edit3.Clear;
showmessage('رمز با موفقيت تغيير کرد');
form8.Close;
end
else
showmessage('در وارد نمودن رمز عبور جديد دقت نماييد');
end
else
showmessage('رمز عبور صحيح نيست');
end;

البته قابل ذکر است که شکستن اين رمز براي حرفه اي ها خيلي ساده است ولي براي تازه کارها بدک نيسن
نکته: شما بايد از يک بانک اطلاعاتي استفاده نماييد که توسط سيستم عامل باز نشود.
براي اين کار در سايت جستجو نماييد.

DelphiFriend
چهارشنبه 16 بهمن 1387, 11:07 صبح
راستی فراموش کردم برای ورود رمز از پست دوم همین تاپیک به جای

if edit1.text='رمز عبور دلخواه شما' then

عبارت

if edit1.text=form2.AdoTable2['pass'] then

استفاده کنید

AliReza Vafakhah
چهارشنبه 16 بهمن 1387, 15:28 عصر
می تونید از این روش هم استفاده کنید ، هک کردنش سخته


کاراکترا ها را حرف به حرف به اندازه خاصی زیاد کنید و سپس این کاراکترها را به مبنای 2 ببرید و بعد ذخیره کنید

و برای خواندن

مبنای 2 را به مبنای 10 ببرید و سپس همان تعدادی که قبلا به هر حرف اضافه کرده اید از هر حرف کم کنید

من خودم در یک برنامه VB استفاده کرده ام


راستی حتما باید کاراکتر را به کد اسکی تیدیل کنید (در نوشتن و خواندن)

DelphiFriend
چهارشنبه 16 بهمن 1387, 17:29 عصر
می تونید از این روش هم استفاده کنید ، هک کردنش سخته
کاراکترا ها را حرف به حرف به اندازه خاصی زیاد کنید و سپس این کاراکترها را به مبنای 2 ببرید و بعد ذخیره کنید
و برای خواندن
مبنای 2 را به مبنای 10 ببرید و سپس همان تعدادی که قبلا به هر حرف اضافه کرده اید از هر حرف کم کنید
من خودم در یک برنامه VB استفاده کرده ام
راستی حتما باید کاراکتر را به کد اسکی تیدیل کنید (در نوشتن و خواندن)


البته که دوست خوبم alireza v.f راه خیلی عالی رو پیشنهاد کرد که باز کردنش هم سخت ولی برای دوستمون که تازه کارند ممکنه تبدیل کاراکترها به مبنای 2 و بعد برگردوندنش به مبنای 10 کار یکم سختی باشه.



هر چند راه ساده تر باشه شکستنش ساده تر و هرچند راه سخت تر باشه شکستنش سخت تر

AliReza Vafakhah
پنج شنبه 17 بهمن 1387, 02:16 صبح
خوب دوستان من سورس برنامه را در اختیارتون قرار میدم اما باید حرف هام رو در پست قبلی اصلاح کنم که نیازی به تبدیل مبنای 2 به 10 نیست فقط باید از 10 به 2 تبدیل کنید.

برنامه این طور کار میکنه که پسورد از شما میگیره و بعد هرکاراکتر توسط تابع Ord به کد اسکی تبدیل میشه و سپس 5 تا به کد اسکی همان کاراکتر اضافه میشه (البته می توانید تغییر بدهید)
و سپس در یک متغیر مجموعه کل کد اسکس کاراکترها قرار می گیرد و سپس این متغییر توسط تابعه ای به مبنای 2 تبدیل می شود و در آخر هم در رجیسیتری ذخیره می شود.

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

درفرم دوم هم امکان تغییر پسورد به شرط ورود با پسورد صحیح وجود دارد.

سورس با دلفی 2009 نوشته شده (می توانید کپی کنید و در دلفی x استفاده کنید)

دوستان می توانند روش های مختلف و قوی تر دیگری را هم پیاده سازی کنند.

vcldeveloper
پنج شنبه 17 بهمن 1387, 02:34 صبح
می تونید از این روش هم استفاده کنید ، هک کردنش سخته


کاراکترا ها را حرف به حرف به اندازه خاصی زیاد کنید و سپس این کاراکترها را به مبنای 2 ببرید و بعد ذخیره کنید

و برای خواندن

مبنای 2 را به مبنای 10 ببرید و سپس همان تعدادی که قبلا به هر حرف اضافه کرده اید از هر حرف کم کنید

من خودم در یک برنامه VB استفاده کرده ام
این روش های ساده برای کسی که مقداری با رمزنگاری و رمزگشایی آشنا باشه، مثل اب خوردن خواهند بود، و ظرف چند دقیقه رمزگشایی انجام میشه!

اگر قرار بود به این راحتی با یکی دوتا تبدیل کد رمز شده قابل قبولی تولید بشه که این همه ریاضی دان و متخصص رمزنگاری وقت خودشان را صرف ساختن الگوریتم هایی مثل DES، AES، یا RSA نمی کردند!

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

به نظر میرسه که به اون سه لینکی که در پست صفحه قبل دادم، توجه نکردید.

AliReza Vafakhah
پنج شنبه 17 بهمن 1387, 03:41 صبح
آقای کشاورز حرف شما کاملا درست است

ولی شما نمیگید که اون الگوریتم ها چه راهی را برای Code , DeCode کردن صرف می کنند

و این یه راهی بود که خودم من هم عرض کردم قوی تر از این رو میشه پیاده سازی کرد


و راستی این رو هم بگم که هنوز هیچ برنامه و هیچ رمزی نیست که هک نشده باشه

AliReza Vafakhah
پنج شنبه 17 بهمن 1387, 04:07 صبح
آقای کشاورز خیلی خیلی عذر می خوام من سر حرف خودم هستم که


و راستی این رو هم بگم که هنوز هیچ برنامه و هیچ رمزی نیست که هک نشده باشه

اما یه نگاهی هم به عکس زمیمه شده بندازید

من فقط پسورد را حرف a در نظر گرفتم ببینید که به چه شکل ذخیره شده


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

کنجکاو هستم بدون که یه هکر رمزنگاری رو از روی خود رمز انجام میده یا از سورس برنامه فقط همین

vcldeveloper
پنج شنبه 17 بهمن 1387, 13:26 عصر
و راستی این رو هم بگم که هنوز هیچ برنامه و هیچ رمزی نیست که هک نشده باشه
قرار نیست برنامه شما کرک نشه، بلکه قرار هست تا حد امکان این کار برای کرکر سخت بشه. هر چه امنیت نرم افزار بالاتر باشه، کرک های حرفه ایی تر برای کرک آن نیاز هست، و کرکرهای حرفه ایی هم صرف وقت گذرانی یک برنامه را کرک نمیکنند، باید براشون بصرفه.
در ضمن، رمزنگاری با هک و کرک فرق داره. الان خیلی از الگوریتم های رمزنگاری هستند که شکسته نشدند، و با سیستم های موجود نمیشه متن رمز شده با آنها را رمزگشایی کرد.


ولی شما نمیگید که اون الگوریتم ها چه راهی را برای Code , DeCode کردن صرف می کنند
همچین الگوریتم هایی از محاسبات پیشرفته و سنگین ریاضی استفاده می کنند.
این هم توضیحات ساده درباره دوتا از اینها:
http://en.wikipedia.org/wiki/RSA
http://en.wikipedia.org/wiki/Data_Encryption_Standard

vcldeveloper
پنج شنبه 17 بهمن 1387, 13:28 عصر
کنجکاو هستم بدون که یه هکر رمزنگاری رو از روی خود رمز انجام میده یا از سورس برنامه فقط همین
بستگی داره. رمزنگاری را بررسی میکنه، اگر پیچیده باشه، میره سراغ دور زدن آن، ولی اگر ساده باشه، روی شکستن آن کار میکنه.

bmanfy
جمعه 18 بهمن 1387, 08:56 صبح
کنجکاو هستم بدون که یه هکر رمزنگاری رو از روی خود رمز انجام میده یا از سورس برنامه فقط همین

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

miladnoori67
چهارشنبه 30 بهمن 1387, 16:42 عصر
اگر خیلی امنیت برای شما اهمیت داره. باید کمی پول خرج کنید و از پکرها و پروتکتورهای غیر رایگان و قوی استفاده کنید که کرک برنامه شما و دیکد کردن آن امکان پذیر نباشد.

rahjoya
چهارشنبه 07 اسفند 1387, 10:33 صبح
اگر میخواید یه امنیت متوسط به برنامه بدید باید یوزر و پسوردتونو توی بانک اطلاعاتی ذخیره کنید که امکان تغییر اون وجود داشته باشه. و برای ایجاد امنیت میتونید روی بانکتون پسورد بزارید. که البته اون رو هم به راحتی میشه باز کرد اما نه برای کاربران مبتدی.
با سلام
ميشه بگيد چه جوري روي بانكم در sql2000 ميتونم پسورد بزارم تا هركس كه enterprise manager را باز كرد نره اطلاعات را دستكاري كنه