PDA

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



davidrobert
چهارشنبه 08 فروردین 1397, 15:20 عصر
سلام و خسته نباشید.
دوستان کسی برنامه نوشته با قفل سخت افزاری که به وسیله ریموت برنامه اجرا بشه.
یعنی یه قفل روی سرور باشه و وقتی قفل از روی سرور در آمد برنامه روی کلاینت ها از کار بیفتن.
دانشگاه ها و هلو این کار رو انجام دادن و به وسیله یه قفل برنامه مدیریت میکنن چند نفر به برنامه متصل هستن و وقتی قفل در میارن برنامه به صورت کلی میخوابه و وقتی قفل وصل میکنن برنامه کار میکنه.
بنده قفل منشور سیمین نسخه ARM رو خریدم و به صورت یک قفل با یک نرم افزار کار میکنم و وقتی قفل در میارم برنامه کار نمیکنه ولی نمی خوابم یک برنامه رو روی یک سیستم مشتری نصب میکنم 4 تا قفل به مشتری بدم یک قفل میدم و و 4 تا سیستم با یک قفل مدیریت کنم ممنون میشم راهی سراغ دارید به بنده بگید چیکار کنم با یک قفل وقتی از سرور خارج شد کلاینت ها هم از کار بیفتن و وقتی وصل شد کلاینت ها هم کار کنن و معلوم باشه چند تا سیستم به برنامه متصل هستش.

رامین مرادی
چهارشنبه 08 فروردین 1397, 23:12 عصر
سلام و خسته نباشید.
دوستان کسی برنامه نوشته با قفل سخت افزاری که به وسیله ریموت برنامه اجرا بشه.
یعنی یه قفل روی سرور باشه و وقتی قفل از روی سرور در آمد برنامه روی کلاینت ها از کار بیفتن.
دانشگاه ها و هلو این کار رو انجام دادن و به وسیله یه قفل برنامه مدیریت میکنن چند نفر به برنامه متصل هستن و وقتی قفل در میارن برنامه به صورت کلی میخوابه و وقتی قفل وصل میکنن برنامه کار میکنه.
بنده قفل منشور سیمین نسخه ARM رو خریدم و به صورت یک قفل با یک نرم افزار کار میکنم و وقتی قفل در میارم برنامه کار نمیکنه ولی نمی خوابم یک برنامه رو روی یک سیستم مشتری نصب میکنم 4 تا قفل به مشتری بدم یک قفل میدم و و 4 تا سیستم با یک قفل مدیریت کنم ممنون میشم راهی سراغ دارید به بنده بگید چیکار کنم با یک قفل وقتی از سرور خارج شد کلاینت ها هم از کار بیفتن و وقتی وصل شد کلاینت ها هم کار کنن و معلوم باشه چند تا سیستم به برنامه متصل هستش.

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

davidrobert
پنج شنبه 09 فروردین 1397, 09:50 صبح
متاسفانه نحوه ساختار قفلش به این صورت نیست به وسیله IP باشه چون با IP بود قشنگ میشود روی سرور مرکزی بررسی کرد این ساختارش داخلی هستش چون دستورات و کوئری های که قفل ARM داره به کل داخلی هستش

hamidrezax1
پنج شنبه 09 فروردین 1397, 10:18 صبح
سلام دوست عزیز شما بایستی ساختار برنامه خودتون رو تغییر بدین به نحوی که برنامه ها با یکدیگر در ارتباط باشن و برنامه ای که قفل نرم افزاری بر روی اون نصب میشه خاصیت سروی و سایر سیستم ها خاصیت کلاینت داشته باشن و به صورت مستمر این ارتباط چک بشه.به نحوی که برنامه سرور قطع شد برنامه های کلاینت نیز قطع بشن.موفق باشید

رامین مرادی
پنج شنبه 09 فروردین 1397, 12:54 عصر
متاسفانه نحوه ساختار قفلش به این صورت نیست به وسیله IP باشه چون با IP بود قشنگ میشود روی سرور مرکزی بررسی کرد این ساختارش داخلی هستش چون دستورات و کوئری های که قفل ARM داره به کل داخلی هستش

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

davidrobert
پنج شنبه 09 فروردین 1397, 21:14 عصر
سلام دوست عزیز شما بایستی ساختار برنامه خودتون رو تغییر بدین به نحوی که برنامه ها با یکدیگر در ارتباط باشن و برنامه ای که قفل نرم افزاری بر روی اون نصب میشه خاصیت سروی و سایر سیستم ها خاصیت کلاینت داشته باشن و به صورت مستمر این ارتباط چک بشه.به نحوی که برنامه سرور قطع شد برنامه های کلاینت نیز قطع بشن.موفق باشید
سلام و خسته نباشید ممنون بابت جواب دادن امکانش هستش یه نمونه سورس بابت این موضوع در اختیار بنده قرار بدید تا این عمل رو پیاده سازی کنم با تشکر

danialafshari
جمعه 10 فروردین 1397, 03:21 صبح
سلام و خسته نباشید.
دوستان کسی برنامه نوشته با قفل سخت افزاری که به وسیله ریموت برنامه اجرا بشه.
یعنی یه قفل روی سرور باشه و وقتی قفل از روی سرور در آمد برنامه روی کلاینت ها از کار بیفتن.
دانشگاه ها و هلو این کار رو انجام دادن و به وسیله یه قفل برنامه مدیریت میکنن چند نفر به برنامه متصل هستن و وقتی قفل در میارن برنامه به صورت کلی میخوابه و وقتی قفل وصل میکنن برنامه کار میکنه.
بنده قفل منشور سیمین نسخه ARM رو خریدم و به صورت یک قفل با یک نرم افزار کار میکنم و وقتی قفل در میارم برنامه کار نمیکنه ولی نمی خوابم یک برنامه رو روی یک سیستم مشتری نصب میکنم 4 تا قفل به مشتری بدم یک قفل میدم و و 4 تا سیستم با یک قفل مدیریت کنم ممنون میشم راهی سراغ دارید به بنده بگید چیکار کنم با یک قفل وقتی از سرور خارج شد کلاینت ها هم از کار بیفتن و وقتی وصل شد کلاینت ها هم کار کنن و معلوم باشه چند تا سیستم به برنامه متصل هستش.
با سلام
دانگل منشور سیمین خودش قابلیت شبکه رو داره و نیازی به ریموت نیست، نمونه سورس،Manager و فایل های مورد نیاز حتی Help هم در سایتش و CD که بهمراه محصول میفرسته موجوده


خب منم به قفل کاری ندارم که. شما برنامت به صورت کلاینت سرور باشه. هر وقت تو سرورت قفل برداشته شد به کاربرات به وسیله سوکت پروگرمینگ پیام ارسال کن که برنامه کلاینت اون پیام رو دریافت کرد به صورت خودکار بسته بشه.
اصلاً نیازی به Socket Programming نداره
شیوه کار رو توضیح میدم
شما 2 تا نرم افزار میسازید یک سرور و یک کلاینت
تنها فرق کلاینت این هست که متدی برای کنترل قفل وجود نداره و از طریق IP به سرور متصل میشه
وقتی قفل از سرور جدا بشه و نرم افزار اجرا نشه قطعاً نرم افزار کلاینت هم نمیتونه به نرم افزار سرور Login کنه
به همین راحتی مشکلتون حل میشه
موفق باشید

davidrobert
جمعه 10 فروردین 1397, 09:48 صبح
با سلام
دانگل منشور سیمین خودش قابلیت شبکه رو داره و نیازی به ریموت نیست، نمونه سورس،Manager و فایل های مورد نیاز حتی Help هم در سایتش و CD که بهمراه محصول میفرسته موجوده


اصلاً نیازی به Socket Programming نداره
شیوه کار رو توضیح میدم
شما 2 تا نرم افزار میسازید یک سرور و یک کلاینت
تنها فرق کلاینت این هست که متدی برای کنترل قفل وجود نداره و از طریق IP به سرور متصل میشه
وقتی قفل از سرور جدا بشه و نرم افزار اجرا نشه قطعاً نرم افزار کلاینت هم نمیتونه به نرم افزار سرور Login کنه
به همین راحتی مشکلتون حل میشه
موفق باشید

سلام و خسته نباشید دوست عزیز من تو Manager قفل از کی دارم دنبال همچین ویژگی میگیردم چیزی گیر نیاوردم فقط یه دونه این زده برای شبکه
147857 که کار خواصی انجام نمیده و من به وسیله IP وصل هستم به دیتابیس چطور برای قفل بگم سمت سرور اگه قفل ندیدی یا برنامه که سمت سرور اجرا میشه که قفل داره باز نبود برنامه بسته بشه این مسئله رو گیر کردم من. ممنون میشم نمونه یا راه روشی دارید بگید تا بتوانم ازش استفاده کنم تا یه نمونه ساده بسازم جواب گرفتم ببرم روی پروژه اصلی ام.
اگه بتوانید یه Sample ساده تحت شبکه و کلاینت بدید ممنون میشم برنامه به شهرستان فروش رفته باید بهشون تحویل بدم و شدیدا نیاز دارم این مشکل حل نکنم با بهشون چند تا قفل بدم ولی نمیخوام بهشون چندیدن قفل بدم یه قفل میخوام بدم.
با تشکر

danialafshari
دوشنبه 13 فروردین 1397, 09:35 صبح
سلام و خسته نباشید دوست عزیز من تو Manager قفل از کی دارم دنبال همچین ویژگی میگیردم چیزی گیر نیاوردم فقط یه دونه این زده برای شبکه
که کار خواصی انجام نمیده و من به وسیله IP وصل هستم به دیتابیس چطور برای قفل بگم سمت سرور اگه قفل ندیدی یا برنامه که سمت سرور اجرا میشه که قفل داره باز نبود برنامه بسته بشه این مسئله رو گیر کردم من. ممنون میشم نمونه یا راه روشی دارید بگید تا بتوانم ازش استفاده کنم تا یه نمونه ساده بسازم جواب گرفتم ببرم روی پروژه اصلی ام.
اگه بتوانید یه Sample ساده تحت شبکه و کلاینت بدید ممنون میشم برنامه به شهرستان فروش رفته باید بهشون تحویل بدم و شدیدا نیاز دارم این مشکل حل نکنم با بهشون چند تا قفل بدم ولی نمیخوام بهشون چندیدن قفل بدم یه قفل میخوام بدم.
با تشکر
با سلام
ببخشید مدتی نبودم
لازم نیست اینقدر خودتون رو گیج کنید فقط سرور رو کنترل کنید و برای برنامه شبکه فقط یک قفل بدید ، باقی کلاینت ها نیازی به قفل نیست
درون سایت و CD ارسالی که Sample هست! من TinyPlus داشتم و توسط کد زیر Authentication میکردم امیدوارم بدردتون بخوره

private void HardwareLock(string Key, string strSafeKey1, string strSafeKey2)
{
TINYLib.TinyPlusCtrl axTinyPlusCtrl1 = new TINYLib.TinyPlusCtrl();
axTinyPlusCtrl1.FindFirstTPlus(Key, strSafeKey1, strSafeKey2);
string error = "";
//---------------------get error code--------------------------------------
error = axTinyPlusCtrl1.GetTPlusErrorCode().ToString();
//---------------if tiny+ error code is 0, mean TRUE else FALSE------------
if (error == "0")
{
Application.Run(new Form1());
}
else if (error == "1")
{
MessageBox.Show("قفل سخت افزاری یافت نشد", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
else
{
MessageBox.Show("اشکال در قفل سخت افزاری کد " + error.ToString(), "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}


در Main.cs متد بالا رو فراخوانی کنید
راستی وقتی dll رو Add Refrence میکنید یک خصوصیت داره بنام Isolated حتماً True کنید که بدون دردسر روی سیستم کاربر اجرا بشه و نیازی به رجیستر کردن نداشته باشه
موفق باشید

davidrobert
دوشنبه 13 فروردین 1397, 19:57 عصر
با سلام
ببخشید مدتی نبودم
لازم نیست اینقدر خودتون رو گیج کنید فقط سرور رو کنترل کنید و برای برنامه شبکه فقط یک قفل بدید ، باقی کلاینت ها نیازی به قفل نیست
درون سایت و CD ارسالی که Sample هست! من TinyPlus داشتم و توسط کد زیر Authentication میکردم امیدوارم بدردتون بخوره

private void HardwareLock(string Key, string strSafeKey1, string strSafeKey2)
{
TINYLib.TinyPlusCtrl axTinyPlusCtrl1 = new TINYLib.TinyPlusCtrl();
axTinyPlusCtrl1.FindFirstTPlus(Key, strSafeKey1, strSafeKey2);
string error = "";
//---------------------get error code--------------------------------------
error = axTinyPlusCtrl1.GetTPlusErrorCode().ToString();
//---------------if tiny+ error code is 0, mean TRUE else FALSE------------
if (error == "0")
{
Application.Run(new Form1());
}
else if (error == "1")
{
MessageBox.Show("قفل سخت افزاری یافت نشد", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
else
{
MessageBox.Show("اشکال در قفل سخت افزاری کد " + error.ToString(), "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}


در Main.cs متد بالا رو فراخوانی کنید
راستی وقتی dll رو Add Refrence میکنید یک خصوصیت داره بنام Isolated حتماً True کنید که بدون دردسر روی سیستم کاربر اجرا بشه و نیازی به رجیستر کردن نداشته باشه
موفق باشید

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

public void ChackLock()
{
uint Rand1;
byte bteRes = 0;
object obj = new object();
byte[] bte1 = new byte[16];
byte bb = 0;
byte[] bteRand = new byte[16];
string read = "";
string AESKEY = "";
string strSafeKey1 = "";
string strSafeKey2 = "";
StringBuilder label1 = new StringBuilder();
for (int i = 0; i < 16; i++)
bteRand[i] = (byte)Rand.Next(255);

while (bteRes != 1 && bteRes != 101 && bteRes != 106 && bteRes != 113)
{
Rand1 = (uint)Rand.Next(2147483647);
obj = ARM1.Authenticate(Rand1);
bteRes = clsArms.CheckAuthenticate(obj, Rand1);
}

if (bteRes == 1)
{
KeyAES = Encoding.Default.GetBytes(AESKEY);
bte1 = clsArms.CreateUserKey(read, KeyAES);
ARM1.FindFirstARM(bte1, strSafeKey1, strSafeKey2);
obj = ARM1.GetARMErrorCode(bteRand);
bb = clsArms.GenerateErrorCode(obj, KeyAES, bteRand);
//label1.Text = bb.ToString();
//if (bb == 100)
//EnabledControls();
//else
//EnabledControls();
}
else if (bteRes == 113)
{
MessageBox.Show("خطا!");
}
else if (bteRes == 101)
{
MessageBox.Show("قفل سخت افزاری یافت نشد");
Application.Exit();
}
else if (bteRes == 106)
{
MessageBox.Show("خطای ارسال نشد!");
bteRes = 0;
}
}

به به این صورت هستش ولی برای سرور و کلاینت مشکل دارم که بتوانم یه قفل روی سرور پیاده کنم همه شون قفل از سرور بخونه اینجا دستوری نداره که من قفل رو از روی سرور بخونم اگه IP داشت IP سرور میدادم و قفل رو از روی سرور میخوندم و بابت Isolated که بنده راهنمایی کردید ممنون بله این گزینه فعال کردم چون خیلی آزار و اذیت داره قفل ولی کمی بیش تونستم با کارکدش آشنا بشم ولی برنامه من قفل رو از سیستم کلاینت که بهش قفل هستش میشناسه نه سرور مرکزی مشکل من سر این که چطور بهش بگم این قفل رو از سرور چک کن نه کلاینت.

davidrobert
سه شنبه 14 فروردین 1397, 12:18 عصر
دوستان از کمکتان ممنون بلخره به جوابم رسیدم این هم سورس هستش.
http://s9.picofile.com/file/8322859184/Sample_Csharp.rar.html

این دستورات هم برای دوستان برنامه نویس که از قفل ARM استفاده میکنن

public void ChackLock()
{
byte bb;
Random Rand = new Random();
string AESKEY = "رمز قفل قرار میدهید";
string Key = "سترینگ کی که اول برنامه میده قرار میدهید";
uint Rand1;
byte bteRes = 0;
object obj = new object();
byte[] bte1 = new byte[16];
byte[] bteRand = new byte[16];
for (int i = 0; i < 16; i++)
bteRand[i] = (byte)Rand.Next(255);
Rand1 = (uint)Rand.Next(2147483647);
KeyAES = Encoding.Default.GetBytes(AESKEY);

while (bteRes != 1 && bteRes != 101 && bteRes != 106 && bteRes != 113)
{
Rand1 = (uint)Rand.Next(2147483647);
obj = ARM1.NetAuthenticate("محل قرار گیری IP", Rand1);
bteRes = clsArms.CheckAuthenticate(obj, Rand1);
}
if (bteRes == 1)
{
obj = clsArms.CreateUserKey(Key, KeyAES);
ARM1.FindNetARM(obj);
obj = ARM1.GetARMErrorCode(bteRand);
bb = clsArms.GenerateErrorCode(obj, KeyAES, bteRand);
//MessageBox.Show ( bb.ToString());
}
else if (bteRes == 113)
{
MessageBox.Show("خطا!");
}
else if (bteRes == 101)
{
MessageBox.Show("قفل یافت نشد!");
Application.Exit();
}
else if (bteRes == 106)
{
MessageBox.Show("اشکال در ارسال و دریافت!");
}
}