PDA

View Full Version : خبر: قفل نرم افزاری با امنیت متوسط به بالا



mahziar
پنج شنبه 19 شهریور 1388, 16:30 عصر
با سلام خدمت دوستان عزیز .

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

moferferi
جمعه 20 شهریور 1388, 00:01 صبح
سلام.اقا دستت درد نکنه.
این برنامه 4 تا کد میده.کدومشون جز کد هایی که کاربر باید برای ارسال بفرسته.و کدومشون را ما باید واسه کاربر بفرستیم تا قفل باز بشه؟

belarak
جمعه 20 شهریور 1388, 05:57 صبح
سلام دوست عزیز
ممنون از برنامه تون
نمیدونم چرا مقدار null برای code2 بر می گردوونه و پیغام خطای Object reference not set to an instance of an object. میده
لطفا راهنمایی ممنون
http://img2.tinypic.info/files/spct8fbh3xuy7f295kel.jpg

debugger
جمعه 20 شهریور 1388, 14:54 عصر
روال نوشتن قفلتون اصلا درست نیست

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

کدی که برای یوزر تولید می کنی اصولا باید طوری باشه که کاربر سریع اونو برای شما پشت تلفن بخونه تا شما بهش کد بدی

بهتره کد فعالسازی تو رجیستری به صورت هش شده ذخیره بشه

اگر بخوای من یه مثال براتون بنویسم مقایسه کنید

Royce_Da
جمعه 20 شهریور 1388, 16:49 عصر
اگه کاربر بدبخت Cpu رو عوض کنه چی ؟؟؟؟

Sajjad.Aghapour
جمعه 20 شهریور 1388, 19:03 عصر
سلام دوست عزیز
ممنون از برنامه تون
نمیدونم چرا مقدار null برای code2 بر می گردوونه و پیغام خطای Object reference not set to an instance of an object. میده
لطفا راهنمایی ممنون


احتمالا هارد شما SATA نیست؟......
این روش برای IDE کارساز هست و برای SCSI عمل نمی کنه.دلیلش چیه نمی دونم !!!.....
شما می تونید از آدرس HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\S CSI اطلاعات درایوتون رو بخونید.....

atryad
جمعه 20 شهریور 1388, 19:15 عصر
دوستان به نظر شما اگه مثلا به جای گرفتن این کدهای سخت افزاری اگه مثلا تاریخ سیستمو بگیره با یه الگوریتم خاصی اونو به یه کد تبدیل کنه و بعد از رجیستری کردن برنامه یه فایل توی یه جای خواصی بسازه و در هنگام لو برنامه چک کنه که اون فایله هست یا نه(میتونه چندین فایل بسازه)
حال اگه روی سیستم دیگه نصب بشه چون اون فایلها وجود نداره صفحه رجیستری رو لود کنه
توی مثلا لود برنامه این بزاریم


string path1 = "C:\\WINDOWS\\system32\\";
if (!File.Exists(path1 + "msconfig.dll") | !File.Exists("C:\\WINDOWS\\Help\\help.chm"))
{
MessageBox.Show("This program is not free Please Call 090000000 atryad@gmail.com", "Register", MessageBoxButtons.OK, MessageBoxIcon.Warning);
active ac = new active();
ac.ShowDialog();
}

و توی فعال سازی این رو بزاریم



public string path = "C:\\WINDOWS\\system32\\msconfig.dll";
public string path1="C:\\WINDOWS\\Help\\help.chm";


public string Miladi2Shamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
textBox1.Text = pc.GetDayOfMonth(_date).ToString("00") + pc.GetMonth(_date).ToString("00") + pc.GetYear(_date).ToString("0000");
Double t;
t = Math.Round(((Convert.ToDouble(textBox1.Text) * 17) / 3) * 926);
textBox2.Text = t.ToString();
return sb.ToString();
}


private void button1_Click(object sender, EventArgs e)
{
try
{
if (Convert.ToDouble(textBox3.Text) == Convert.ToDouble(textBox2.Text))
{
File.Create(path);
MessageBox.Show("Sucsec");
}
else
MessageBox.Show("Invalid");
}
catch
{

}
try
{
if (Convert.ToDouble(textBox3.Text) == Convert.ToDouble(textBox2.Text))
{
File.Create(path1);
MessageBox.Show("Sucsec");
}
else
MessageBox.Show("Invalid");
}
catch
{
}
this.Close();
}




خواهشا نظرات خودتون رو بگین ایرادات این نوع کد کردن


راستی اگه لازم هست برنامه رو میزارم

Sajjad.Aghapour
جمعه 20 شهریور 1388, 19:35 عصر
حال اگه روی سیستم دیگه نصب بشه چون اون فایلها وجود نداره صفحه رجیستری رو لود کنه

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

atryad
جمعه 20 شهریور 1388, 20:16 عصر
خوب این فایل قراره کی و کجای برنامه ساخته بشه؟؟؟؟؟
برنامه شما قراره روی هر سیستمی نصب بشه و قرار هم نیست که اون فایل رو برداری بری روی سیستم کاربری که برنامه رو بهش فروختی کپی کنی.....

مثلا کاربر زنگ می زنه و با توجه به تاریخ اون روز یه کد بهش میدی که اونو توی قسمت فعال سازی وارد میکنه و مثلا اون فایل ساخته میشه و اگه مثلا یه روز دیگه کد بخواد باید یه کد دیگه مخصوص اون روز بهش بدی
خوب وقتی که کاربر کد رو بهش بده اون کارخواص(نوشتن توی رجیستر و یا فایل ) انجام میشه
من گفتم مثلا یه فایل بسازه میتونه یه کار دیگه ای انجام بده توی رجیستری بنویسه و یا توی دیتابیس و هر کار دیگه ای

Sajjad.Aghapour
جمعه 20 شهریور 1388, 20:35 عصر
اگه مثلا یه روز دیگه کد بخواد باید یه کد دیگه مخصوص اون روز بهش بدی

اگه از همون کدهای استاتیک هارد یا cpu یا ... استفاده کنید بهتر و معقول تر از این روش هست.لازم به ذکر هست که توسط بعضی از نرم افزار ها (که اسمشون تو ذهنم نیست) تغییراتی که برنامه شما در ویندوز داده قابل ردیابی هست....

atryad
جمعه 20 شهریور 1388, 20:39 عصر
اگه از همون کدهای استاتیک هارد یا cpu یا ... استفاده کنید بهتر و معقول تر از این روش هست.لازم به ذکر هست که توسط بعضی از نرم افزار ها (که اسمشون تو ذهنم نیست) تغییراتی که برنامه شما در ویندوز داده قابل ردیابی هست....

ممنون از راهنماییتونحالا این ضمیمه رو ببینین

debugger
شنبه 21 شهریور 1388, 11:20 صبح
برنامه بنده را دانلود کنید و 3 بار کد اشتباه بدهید

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

atryad
شنبه 21 شهریور 1388, 17:02 عصر
برنامه بنده را دانلود کنید و 3 بار کد اشتباه بدهید

اگر خواستید شماره سیستمتان را بنویسید تا کد فعالسازی هم بدم
برای سیستم من اینو داد
BFEBFBFF00000F49
ممنون میشم فعالسازیش و بدین
متشکرم

debugger
شنبه 21 شهریور 1388, 17:30 عصر
برای سیستم من اینو داد
BFEBFBFF00000F49
ممنون میشم فعالسازیش و بدین
متشکرم

اکتیو کد :

15149542516899443

mahziar
شنبه 21 شهریور 1388, 17:36 عصر
سلام.اقا دستت درد نکنه.
این برنامه 4 تا کد میده.کدومشون جز کد هایی که کاربر باید برای ارسال بفرسته.و کدومشون را ما باید واسه کاربر بفرستیم تا قفل باز بشه؟

سلام دوست عزیز ، مشتری باید تمام 4 کد رو برای شما بخونه ، تا شما بتونی بعدا با استفاده از 4 تا کدی که توی برنامت اونارو استخراج میکنی مقایسه کنی و روال برنامه رو اجرا کنی . البته میتونی از یکی یا دو تا یا همه اونا استفاده کنی

mahziar
شنبه 21 شهریور 1388, 17:42 عصر
اگه کاربر بدبخت Cpu رو عوض کنه چی ؟؟؟؟

سسلام دوست عزیز ، توی برنامت وقتی میخوای این کدها رو چک کنی اونارو با دیگه OR میکنی تا اگه یه وقت هارد یا سی پی یو عوض شد . برنامه بدون مشکل به کار خودش ادامه بده .

atryad
شنبه 21 شهریور 1388, 19:10 عصر
اکتیو کد :

15149542516899443
ممنون دوست عزیز میشه بگین با چه جور الگوریتمی کدهای دریافتی رو به این صورت درمیارین
آخه من چند تا الگوریتم روامتهان کردم همشون یه کدهای خیلی بلندی میدن
من فقط میخوام کدی که کاربر میخونه حدودا بین 5 تا 15 حرف باشه که برای کاربر راحت باشه و کمترین اشتباه بیش بیاد
کدی که من به دست میارم به این صورت هست که خیلی سخت هست یه کاربر اینو بخواد بخونه
kamwwiPzlYqZuNxUgUFJXSbjiNFgptJHLCMiavMNfJ6kYiqL3c pxiL1BbWe4Fn3F
ممنون میشم منو یه کم راهنمایی کنید
با تشکر

debugger
یک شنبه 22 شهریور 1388, 08:33 صبح
ممنون دوست عزیز میشه بگین با چه جور الگوریتمی کدهای دریافتی رو به این صورت درمیارین
آخه من چند تا الگوریتم روامتهان کردم همشون یه کدهای خیلی بلندی میدن
من فقط میخوام کدی که کاربر میخونه حدودا بین 5 تا 15 حرف باشه که برای کاربر راحت باشه و کمترین اشتباه بیش بیاد
کدی که من به دست میارم به این صورت هست که خیلی سخت هست یه کاربر اینو بخواد بخونه
kamwwiPzlYqZuNxUgUFJXSbjiNFgptJHLCMiavMNfJ6kYiqL3c pxiL1BbWe4Fn3F
ممنون میشم منو یه کم راهنمایی کنید
با تشکر

اول اينكه اصول قفل تلفني بايد مطابق برنامه من باشه

كد ها زياد طولاني نباشه

كد جواب طولاني نباشه

كد ها بايد از يك الگوريتم رمزنگاري استفاده كنند تا حدس زده نشود و امنيت داشته باشد

درخواست كد فعال سازي اصولا بايد در ابتدا سوال شود . و بعد از يكبار دادن كد ديگر اصلا نمايش داده نشود

بهتره براي رجيستر كردن برنامه از رجيستري استفاده كني

البته موارد زيادي هست ولي خب تا اينجا كافيه

================

خب اون رشته هشي كه بدست آوردي را به عنوان كد نبايد بدي به كاربر . مثلا شما شماره سيستم را هش مي كني به عنوان كد جواب ميدي به كاربر .

خب اگر طرف فقط يكمي برنامه نويسي بلد باشه . فورا ميفهمه اين هش شده يه چيزي ، 10 تا الگوريتم هش كه بيشتر نداريم يكي يكي مياد هش مي كنه ببينه كدوم يكي هست ؟؟ (البته اين يه مثال بود)

شما براي اينكه كد جواب كوتاه باشه اون رشته را در يه ارايه بريز و كد اسكي تك تك حروف را حساب كن و بعد با هم جمع كن . اگر بازم زياد شد يه راديكال هم ازش بگير

يا مي توني كد اسكي را حساب كني اونايي كه كد اسكي شون زوج هست را باهم جمع كني و در 2 ضرب كني و بعد منهاي مجموع كد هاي اسكي فرد بكني

يا مي توني از اون رشته هش فقط اعداد را بيرون بكشي و بعد اون اعداد را معكوس كني و بعد با هم جمع كني

و .............