PDA

View Full Version : لو رفتن یوزر و پسورد ذخیره شده در برنامه



c-sharp_South
شنبه 03 تیر 1391, 08:10 صبح
سلام . در برنامه نویسی مثلا وقتی که توی برنامه یک یوزر و پسورد رو توی خود برنامه به صورت مخفی ذخیره میزاریم هر کسی که
بخواد فقط کافیه که برنامه رو با Notepad باز کنه و کلمه ی p a s s w o r d رو Find کنه تا به عکس زیر برسه:
http://s3.picofile.com/file/7416651070/lowraftanepw.jpg (http://s3.picofile.com/file/7416651070/lowraftanepw.jpg)
http://s3.picofile.com/file/7416651070/lowraftanepw.jpg
چه راهی برای حل این مشکل در C#‎ وجود داره که سورس کدها غیرقابل شناسایی بشه و از طرف دیگه هم حداقل واسه
افراد معمولی اطلاعاتمون لو نره و هم کرک کردن برنامه مشکل تر بشه؟
ممنون میشم راهنماییم کنین مثل همیشه :بوس::بوس::بوس:
یا حق :قلب:

uniqueboy_ara
شنبه 03 تیر 1391, 09:28 صبح
یه راه خیلی راحت برای این کار اینه که user و Pass مورد نظرت رو با فرمت Hash توی کدت قرار بدی، و در حین اجرا، user و pass که کاربر وارد میکنه رو هم Hash کنی و با مقادیر اولیه مقایسه کنی، اگر یکسان بودن به کاربر اجازه ورود بدی

veniz2008
شنبه 03 تیر 1391, 10:36 صبح
سلام، همونطور که دوستمون گفتن میتونید از hash استفاده کنید،یعنی شما هرچی رو که وارد کنید متد hash اونو به یه چیز دیگه تبدیل و ذخیره میکنه(مثلا شما پسورد رو 789 وارد میکنید ولی متد hash اونو به یه چیز عجیب و غریب تبدیل میکنه)،حالا حتی اگه کاربر به فایل یا دیتابیس شما دسترسی داشته باشه نمیتونه پسورد رو بیرون بکشه،اینم نمونه کد(اجرا کنید تا دقیق متوجه مفهوم hash بشید):

textBox2.Text = textBox1.Text.GetHashCode().ToString();
موفق باشی دوست من.

uniqueboy_ara
شنبه 03 تیر 1391, 11:42 صبح
یه برنامه کوچیک واست نوشتم که قضیه کامل برات جا بیفته :)88642

NasimBamdad
شنبه 03 تیر 1391, 11:45 صبح
از دیتابیس استفاده کنید . دیگه دوره این که در فایل ذخیره بشه نیست .

به صورت MD5 و یا Hash ذخیره کنید

c-sharp_South
شنبه 03 تیر 1391, 11:48 صبح
مرسی
این کارو انجام دادم دقیقا.
بازم توی سورس کد کلمه ای که توی textBox بود مشخص بود:
بعدش از این کد استفاده کردم که مصلما با کد بالا فرقی نداره:

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "salam".GetHashCode().ToString();
}
باز توی سورس کلمه ی salam مشخص به راحتی پیدا میشه طبق عکس زیر:

http://s3.picofile.com/file/7416762147/hasg.jpg (http://s3.picofile.com/file/7416762147/hasg.jpg)
http://s3.picofile.com/file/7416762147/hasg.jpg
مسلما یک جا دارم اشتباه میکنم . اگه میشه یک خورده بیشتر راهنمایی کنین در این مورد.
به جز کلمه ی ذخیره شده توی تکست باکس دستورات دیگه ای ممکنه انجام بشه توسط Button .
مثلا دستور بده که از توی رجیستری فلان Value رو به فلان ایمیل ارسال کن.

SmtpClient.Credentials = new System.Net.NetworkCredential("barnamenevis.org@gmail.com", "123barname456");
در این صورت دستورات رجستری رو چطوری باید پنهان کرد از سورس؟
http://s3.picofile.com/file/7415187632/heyfe_noon.jpg (http://s3.picofile.com/file/7415187632/heyfe_noon.jpg)
یا ایمیل و پسوردی که نوشتیم چطوری hash کنیم که از سورس معلوم نشه؟
واضح تر بگم.فرض کنین یک برنامه نویشیم واسه ارسال ایمیل.توی برنامه اومدیم یک Gmail و Password گذاشتیم که مخفی هستن.
کاربر فقط کافیه که متن ایمیلشو به همراه آدرس ایمیل دریافت کننده وارد کنه و Send رو بزنه تا ایمیل ارسال بشه با آدرس ایمیلی که ما در برنامه گذاشتیم.
خب الان اگه سورس برنامه رو با Notepad باز کنیم به راحتی میشه user o password رو کشید بیرون.
راه حل این چیه؟
واسم خیلی خیلی مهمه که این رو یاد بگیرم و کدها و پسورد ها و .... برنامه هام مخفی بمونه.
ممنون میشم بیشتر توضیح بدین در این مورد

c-sharp_South
شنبه 03 تیر 1391, 11:51 صبح
از دیتابیس استفاده کنید . دیگه دوره این که در فایل ذخیره بشه نیست .

به صورت MD5 و یا Hash ذخیره کنید

چطوری میشه بعد از اینکه برنامه نویسی تموم شد برنامه رو کلا به صورت hash یا md5 ذخیره کرد؟
اگه اینجوری بشه 100% مشکل حل میشه.

uniqueboy_ara
شنبه 03 تیر 1391, 12:14 عصر
آقا شما اون فایلی که من برات گذاشتمو ببینی مشکلت حل میشه هااا!
اونجوری هر کلمه به صورت MD5 ذخیره میشه!
مثلا salam تبدیل میشه به de6838252f95d3b9e803b28df33b4baa

veniz2008
شنبه 03 تیر 1391, 12:45 عصر
من با کلمه salam تست کردم مشکلی نداشت،شما دو تا textbox بذار و یک دکمه(داخل textbox1 پسورد رو قرار بده و دکمه رو اجرا کن)، داخل دکمه کد زیر رو بزار:

textBox2.Text = textBox1.Text.GetHashCode().ToString();
اینم تصویر:
88645

c-sharp_South
شنبه 03 تیر 1391, 13:08 عصر
بازم ممنون ولی فکر کنم منظورم رو اشتباه فهمیدید.
شما که تا اینجا در حق من برادری و لطف کردین و راهنماییم کردین اگه ممکنه برنامه ی زیر رو کاری کنین که از توی سورس نشه
یوزر و پسورد رو بیرون کشید:
http://s3.picofile.com/file/7416821719/testhash.jpg (http://s3.picofile.com/file/7416821719/testhash.jpg)
http://s3.picofile.com/file/7416821719/testhash.jpg
اینم لینک دانلود:
http://s3.picofile.com/file/7416823652/testhash.rar.html
ممنون میشم زحمت این رو بکیشین و سورس جدید رو بزارین.

veniz2008
شنبه 03 تیر 1391, 14:05 عصر
من یک سوال درباره MD5 داشتم،من using مربوط به security رو اضافه کردم ولی کلمه Hashing رو نمیشناسه،البته من از vs 2005 استفاده کردم،آیا MD5 در ویژوال 2005 هم کار میکنه؟چون فکر کنم شما با 2008 یا 2010 برنامه رو نوشته بودید.

c-sharp_South
شنبه 03 تیر 1391, 15:35 عصر
من هم توی یک پروژه ی دیگه که خودم کلمه ی Hashing رو نوشتم و using مروبط به security رو هم زدم ، کلمه ی Hashing رو شناسایی نمیکرد و ارور میداد.
من از 2010 استفاده میکنم.

Mahmoud.Afrad
شنبه 03 تیر 1391, 16:26 عصر
میتونید از برنامه smart assembly هم استفاده کنید

c-sharp_South
شنبه 03 تیر 1391, 17:04 عصر
میتونید از برنامه smart assembly هم استفاده کنید

در این مورد یک خورده میشه بیشتر توضیح بدین؟
کارش چیه!!!

ROSTAM2
شنبه 03 تیر 1391, 21:46 عصر
با سلام

شما مطمئن هستيد اين Hash زنبور عسل كه مي گيد قابل تبديل مجدد به كلمات اوليه خودش نيست؟؟؟؟ :متفکر:
فكر كنم فكري برا اينجا هم كرده باشن ها آخه تبديلي كه دوباره به حالت اول برنگرده كه نمي شه تو جاهايي كه نيازه از اون استفاده كرد

بالفرض مثال همين https كه صفحه رو بصورت امنيتي باز مي كنه ابتدا همه كدها رو تبديل به يه چيزي مي كنه كه غيرقابل فهميدن مي شه كه وسط راه اگه يقه شو گرفتن همه چي رو از ترسش لو نده ووقتي به سيستم مربوطه كه رسيد اطلاعات رو صحيح و سالم به دست كاربر مي ده

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 02:15 صبح
مشکل اینه: شما میایید کدی مینویسید که رشته ای رو هش میکنه و در کد مثلا کلمه salam رو میارید. هنگام کامپایل کلمه salam عینا در فایل برنامه وجود داره و فقط زمان اجرا هست که به هش تبدیل میشه یعنی زمانی که این خط کد اجرا میشه(در کد برنامه رشته salam قابل مشاهده است و فقط زمان اجرا هش میشه).
پس برای اینکه این کلمه غیرقابل دیدن در فایل برنامه باشه یا از برنامه smart assembly استفاده کنید و یا به روش زیر:
اول در یک پروژه دیگر(مخصوص به خودتون هست و نباید کسی از کد اون آگاه بشه و به کسی هم داده نمیشه) یوزرنیم و پسورد مورد نظر رو به هر روش قابل بازگشت رمز کنید(encrypt). حاصل این کد کردن به ازای هر یک از یوزر و پسورد یک رشته جدا خواهد بود. حالا این رشته ها را در برنامه ای که میخواید ارسال ایمیل صورت بگیره باید در متغیرهای رشته ای قرار بگیره که میتونید در کدتون این کار رو انجام بدید(توجه کنید که یوزر و پس کد شده رو در برنامه اصلی به کار ببرید نه یوزر پس اصلی رو). زمان ارسال ایمیل کافیه با یک متد مناسب رشته ها را از حالت کد شده به حالت اصلی بر گردونید(decrypt) و استفاده کنید بدون اینکه کاربر متوجه بشه. با این کار در فایل برنامه عبارات رمز شده قابل مشاهده است نه رشته های اصلی).

negar.rafie
یک شنبه 04 تیر 1391, 22:17 عصر
حالا ما salam را hash کردیم شد de6838252f95d3b9e803b28df33b4baa
حالا اگر خواستیم de6838252f95d3b9e803b28df33b4baa برگوندونیم و تبدیل کنیم به salam باید چکار کنیم؟

c-sharp_South
یک شنبه 04 تیر 1391, 22:46 عصر
من هیمنطور که دوستمون گفت از Smat Assembly استفاده کردم.
بهم کامل کامل کامل کامل جواب داد.
این لینک دانلود آخرین ورژنش که خودم هم دانلود کردم
http://dl2.soft98.ir/programing/SmartAssembly.6.7.0.221.rar
پسورد : soft98.ir

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 22:54 عصر
گفتم که باید از الگوریتمی استفاده کنید که قابل بازگشت باشه که این الگوریتم رو میتونید خوبدتون بنویسید یا اینکه از قابلیت های دات نت استفاده کنید.
از پروژه زیر هم میتونید استفاده کنید. (البته نباید کلید رمزنگاری رو فراموش کنید تا رشته رمز شده قابل بازگشت باشه)
http://up98.org/upload/server1/02/j/9nmg93k2jgf9muuy7ui8.rar

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

saeid.71
دوشنبه 05 تیر 1391, 11:33 صبح
مهدی جان اگه میخوای توی نت پد نشون نده میتونی رمزو دسکاری کنی، مثلا hex یا بایت کنی یکم بالا پایینش کنی، جلو ترش دوباره برگردونیش، اینطوری خود رمزتو توی برنامه نمینویسی که به همین راحتیا بشه پیداش کرد

c-sharp_South
دوشنبه 05 تیر 1391, 13:47 عصر
مهدی جان اگه میخوای توی نت پد نشون نده میتونی رمزو دسکاری کنی، مثلا hex یا بایت کنی یکم بالا پایینش کنی، جلو ترش دوباره برگردونیش، اینطوری خود رمزتو توی برنامه نمینویسی که به همین راحتیا بشه پیداش کرد

مرسی سعید جان از راهنماییت.
از همون Smat Assembly دارم استفاده میکنم.چون به جز اینکه کسی نمیتونه پسورد رو ببینه به هیچ وجه نمیتونه کد هیچ قسمتی از برنامه رو ببینه.
یعنی کلا برنامه Close Source میشه.
از این به بعد برای تمام برنامه هایی که مینویسم از همین روش استفاده میکنم.

afsonlab
دوشنبه 12 تیر 1391, 11:26 صبح
یه برنامه کوچیک واست نوشتم که قضیه کامل برات جا بیفته :)88642

سلام ببخشید چرا من نمیتونم این برنامه رو باز کنم ؟ میخوام با visual 2005 اجراش کنم نمیشه لطفا راهنماییم کنید

afsonlab
دوشنبه 12 تیر 1391, 11:33 صبح
یه برنامه کوچیک واست نوشتم که قضیه کامل برات جا بیفته :)88642

سلام خسته نباشید.من واسه اینکه بخوام با visual 2005 این برنامه رو اجرا کنم باید چکار کنم هر کاری کردم نشد لطفا راهنماییم کنید مرسی

veniz2008
دوشنبه 12 تیر 1391, 11:57 صبح
البته این برنامه فکر کنم با ویژوال 2010 نوشته شده باشه(اگه 2008 یا 2010 رو سیستم دارید امتحان کنید)،واسه اجرا شدن نیازی به ویژوال ندارید،میتونید فایل اجرایی برنامه ( HashingString ) رو از مسیر زیر اجرا کنید:
D:\HashingString\HashingString\bin\Debug
من پوشه برنامه رو تو درایو D کپی کردم.
موفق باشید.

afsonlab
دوشنبه 12 تیر 1391, 11:59 صبح
من با کلمه salam تست کردم مشکلی نداشت،شما دو تا textbox بذار و یک دکمه(داخل textbox1 پسورد رو قرار بده و دکمه رو اجرا کن)، داخل دکمه کد زیر رو بزار:

textBox2.Text = textBox1.Text.GetHashCode().ToString();
اینم تصویر:
88645

واسه نوشتن این برنامه احتیاجی به sql نیست ؟

afsonlab
دوشنبه 12 تیر 1391, 12:03 عصر
البته این برنامه فکر کنم با ویژوال 2010 نوشته شده باشه(اگه 2008 یا 2010 رو سیستم دارید امتحان کنید)،واسه اجرا شدن نیازی به ویژوال ندارید،میتونید فایل اجرایی برنامه ( HashingString ) رو از مسیر زیر اجرا کنید:
D:\HashingString\HashingString\bin\Debug
من پوشه برنامه رو تو درایو D کپی کردم.
موفق باشید.
ممنونم مرسی من میخوام کل برنامه رو با کد هاش ببینم میخوام با ویژوال بازش کنم.باید خودم کامل اجراش کنم واسه پروژه درس امنیت میخوام باید توضیحش بدم.

veniz2008
دوشنبه 12 تیر 1391, 12:07 عصر
نه نیازی به sql ندارید.
برای دیدن کدها هم میتونید روی فایل Form1.cs کلیک راست کنید و اونو با Notepad باز کنید(اگر ویژوال 2010 هم دارید که چه بهتر ولی اگر نداشتید با همون notepad باز کنید).

afsonlab
دوشنبه 12 تیر 1391, 12:11 عصر
نه نیازی به sql ندارید.
برای دیدن کدها هم میتونید روی فایل Form1.cs کلیک راست کنید و اونو با Notepad باز کنید(اگر ویژوال 2010 هم دارید که چه بهتر ولی اگر نداشتید با همون notepad باز کنید).

واقعا ممنونم خیلی خیلی لطف کردیییید 1 دنیا ممنون.اگه ویژوال 2010 رو نصب کنم 2005 رو چطوری حذف کنم .

veniz2008
دوشنبه 12 تیر 1391, 12:45 عصر
واقعا ممنونم خیلی خیلی لطف کردیییید 1 دنیا ممنون.اگه ویژوال 2010 رو نصب کنم 2005 رو چطوری حذف کنم .
البته اجباری به حذف 2005 ندارید ولی اگر خودتون مایلید خیلی راحت میتونید فایل setup ویژوال 2005 رو اجرا کنید،خودش اتوماتبک تشخیص میده که قبلا روی سیستم نصب شده،از بین گزینه های موجود گزینه remove رو انتخاب کنید.اگر قصد حذف کردن 2005 رو دارید بهتره که اول 2005 رو حذف کنید و بعدش 2010 رو نصب کنید.
موفق باشید.

afsonlab
سه شنبه 13 تیر 1391, 12:20 عصر
البته اجباری به حذف 2005 ندارید ولی اگر خودتون مایلید خیلی راحت میتونید فایل setup ویژوال 2005 رو اجرا کنید،خودش اتوماتبک تشخیص میده که قبلا روی سیستم نصب شده،از بین گزینه های موجود گزینه remove رو انتخاب کنید.اگر قصد حذف کردن 2005 رو دارید بهتره که اول 2005 رو حذف کنید و بعدش 2010 رو نصب کنید.
موفق باشید.

سلام خسته نباشید.من 2010 رو نصب کردم ولی وقتی میخوام برنامه رو کامل باش اجرا کنم این پیغامو میده.همون برنامه hashstring رو میگم.
one or more projects in the solution were not loaded correctly باید چکار کنم که باز بشه :گریه:

afsonlab
سه شنبه 13 تیر 1391, 12:40 عصر
نه نیازی به sql ندارید.
برای دیدن کدها هم میتونید روی فایل Form1.cs کلیک راست کنید و اونو با Notepad باز کنید(اگر ویژوال 2010 هم دارید که چه بهتر ولی اگر نداشتید با همون notepad باز کنید).

سلام خسته نباشید.من 2010 رو نصب کردم ولی وقتی میخوام برنامه رو کامل باش اجرا کنم این پیغامو میده.همون برنامه hashstring رو میگم.
one or more projects in the solution were not loaded correctly باید چکار کنم که باز بشه :گریه: هر پروژه ای هم که بنویسم بخوام اجرا کنم خطای فال exe میده لطفا کمکم کنید

afsonlab
سه شنبه 13 تیر 1391, 12:58 عصر
یه برنامه کوچیک واست نوشتم که قضیه کامل برات جا بیفته :)88642
سلام خسته نباشید.من 2010 رو نصب کردم ولی وقتی میخوام برنامه رو کامل باش اجرا کنم این پیغامو میده.همون برنامه hashstring رو میگم.
one or more projects in the solution were not loaded correctly باید چکار کنم که باز بشه :گریه: هر پروژه ای هم که بنویسم بخوام اجرا کنم خطای فال exe میده لطفا کمکم کنید

veniz2008
سه شنبه 13 تیر 1391, 16:00 عصر
گریه نکنید!!!!!!!،داره میگه بعضی قسمت ها توی قسمت solution بصورت کامل و صحیح بارگذاری نشدن!،آیا برنامه ای رو نصفه اجرا کردی؟یا چیزی رو دستکاری کردی؟،فایلی رو از پروژه حذف نکردی؟،اگه فایل زیپ برنامه رو داری یه بار از نو extract کن و این جدیده رو اجرا کن.

afsonlab
سه شنبه 13 تیر 1391, 16:07 عصر
گریه نکنید!!!!!!!،داره میگه بعضی قسمت ها توی قسمت solution بصورت کامل و صحیح بارگذاری نشدن!،آیا برنامه ای رو نصفه اجرا کردی؟یا چیزی رو دستکاری کردی؟،فایلی رو از پروژه حذف نکردی؟،اگه فایل زیپ برنامه رو داری یه بار از نو extract کن و این جدیده رو اجرا کن.

نه آخه چطوری گریه نکنم هر کاری میکنم نمیشه خووب :اشتباه:والا چیزی حذف نکردم . دارم خودم مینویسمش ولی بازم نمیشه اصلا hashing رو نمیشناسه .تورو خداااااااااا کمممممممک

veniz2008
سه شنبه 13 تیر 1391, 16:13 عصر
مگه میشه نشناسه؟؟!!، اون using مربوط به hash رو به بالای پروژه اضافه کردی؟
منظورم اینه :
using System.Security.Cryptography;

afsonlab
سه شنبه 13 تیر 1391, 16:16 عصر
مگه میشه نشناسه؟؟!!، اون using مربوط به hash رو به بالای پروژه اضافه کردی؟
منظورم اینه :
using System.Security.Cryptography;

آره اضافه کردم :افسرده: ولی نمیشه برنامه رو شما میتونین کامل باز کنید شاید اونی که اینجاس من دانلود میکنم ناقصه :عصبانی++: هااا

afsonlab
سه شنبه 13 تیر 1391, 16:42 عصر
برنامه ای که دارم مینویسم نمیشه.:افسرده: واااااااای بلاخره این باز شد شد خیلی خیلی ممنونم مرسییییییییییییی :لبخند: دیگه خوشحالم فقط چندتا سوال راجع به طراحی فرمش دارم
چطوری قسمت make رو از قسمت verify جدا کرده؟تو تنضیمات چیو زده؟ واینکه هر 4تا texbox هستند؟ممنونم

veniz2008
سه شنبه 13 تیر 1391, 16:48 عصر
من بدون هیچ مشکلی باهاش کار میکنم، البته دوستمون که این برنامه رو ساخته از کلاس ها برای پیاده سازی MD5 استفاده کرده واسه همینه که نمیشناسه،باید اول کلاس ها رو تعریف کنی، برنامه رو میتونی توی صفحه اول همین تاپیک و در پست 4 دانلود کنید.

afsonlab
سه شنبه 13 تیر 1391, 17:01 عصر
من بدون هیچ مشکلی باهاش کار میکنم، البته دوستمون که این برنامه رو ساخته از کلاس ها برای پیاده سازی MD5 استفاده کرده واسه همینه که نمیشناسه،باید اول کلاس ها رو تعریف کنی، برنامه رو میتونی توی صفحه اول همین تاپیک و در پست 4 دانلود کنید.

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