الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن الإستفادة من توليد مفتاح سر للبرنامج

مغلق
بدأه فواز الشمري في 21 مارس 2007 · 6 رد · 880 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بعد التحية :

وجدت الفئة System.Guid بعد ان القراءة عليها :

عرفت انها تولد مفتاح منتج يمكن عن طريقة استخدامه ليكون مفتاح للبرنامج الخاص بك كما هوا الحال في سيديات Microsoft عند تحميل البرنامج يطلب منك مفتاح المنتج لهذا البرنامج ..

هناك بعض الشركات تقوم بعمل مفتاح توليد زي هذا المفتاح المتولد من System.Guid ...

بعد ذلك عند ذضهور هذا المفتاح للمستخدم يقوم بالإتصال بالشركة مزودة البرنامج وإعطاهم هذا الكود او المفتاح .. وتقوم الشركة بإرسال كلمة تتكون من خمسة مقاطع عن طريقها يمكن لصاحب البرنامج ان يقوم بفتحة واستخدامه في حاسوبه على الرغم من انه لو قام بعمل نسختين مثلا من النضام لن يعمل البرنامج في الكمبيوتر الأخر بالكلمة التي ارسلت له من الشركة لأنها لا تعمل إلا على النسخة التي هي محملة على الكمبيوتر الأول مثلا ..

سؤالي هوا عند ما اقوم بتوليد المفتاح عن طريق System.Guid كيف لي ان استفيد منه في هذه الحالة لعمل مفتاح منتج للبرنامج لا يمكن ان يتكرر هذا المفتاح ابدا ....

#2

- المبرمجين بشكل عام والشركات لاتستخدم الـ GUID كمفتاح للمنتج لأنهم لايمكنهم التحكم بالقيم الناتجة عنه بالإضافة إلى أنه له وظيفة مختلفة تماما وستحتاجه في الغالب عندما تقوم بتطوير مكتبات أو تحكمات خاصة بحيث يكون معرفا عالميا وحيدا في سجل النظام خاص بتلك المكتبة أو ذاك التحكم

الـ GUID ليس الهدف منه استخدامه كمفتاح منتج إنه رقم تعريف عام للمجمعات والمكتبات بحيث يكون معرفا وحيدا لها انظر هذا التعريف المقتبس من مكتبة MSDN المرفق مع فيجول ستوديو

اقتباس
Represents a globally unique identifier (GUID).

A GUID is a 128-bit integer (16 bytes) that can be used across all computers and networks wherever a unique identifier is required. Such an identifier has a very low probability of being duplicated.

وإذا كنت تعمل على الـ 2005 افتح خصائص My Project ثم اضغط زر Assembly Information ستجد الـ GUID الخاص بتطبيقك إنه رمز عام وحيد وهو خاص بتطبيقك

ثم أن توليد مفتاح المنتج مثل مفتاح برامج مايكروسوفت له خوارزميات خاصة كل شخص يقوم بكتابتها حسب ما يراه مناسبا

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 22 مارس 2007 في 02:17

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

وهذا مثال عن إحدى الخوارزميات المستخدمة لتوليد مفتاح المنتج - طبعا يمكنك تعديلها بالشكل الذي ترغبه

- ستحتاج للاستيراد

Imports VB6 = Microsoft.VisualBasic

وهذه هي الاجرائية

	Public Function KeyGen(ByVal username As String, ByVal var1 As Object, ByVal var2 As Object, ByVal var3 As Object, ByVal var4 As Object) As String
		Dim v1, v2, v3, v4
		Dim p1, p2, p3, p4
		Dim length
		REM Acquiring some data from the username
		REM these data will be used to generate a unique serial number

		REM El nombre de usuario sera utilizado para crear un serial unico
		length = Len(username)
		v1 = Asc(VB6.Left(username, 1))
		v2 = Asc(VB6.Right(username, 1))
		v3 = Asc(VB6.Left(username, (length / 2)))
		v4 = Asc(VB6.Right(username, (length / 2)))

		REM Codes to generate the serial
		REM However, restrictions are being applied that 
		REM each serial may not exceed 5 character long

		p1 = VB6.Right(Hex(v1 * v2 + (v3 + v4) * var1 * 100), 5)
		p2 = VB6.Left(Hex(v2 * v4 + (v1 + v2) * var2 * 100), 5)
		p3 = VB6.Right(Hex(v1 * v3 + (v2 + v4) * var3 * 100), 5)
		p4 = VB6.Left(Hex(v2 * v4 + (v3 + v1) * var4 * 100), 5)

		REM The 4 serials are assembled into the format:
		REM = @@@@@-@@@@@-@@@@@-@@@@@

		KeyGen = p1 + "-" + p2 + "-" + p3 + "-" + p4

		REM Returns the serial number in a string format
	End Function

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

شكرا لك اخي محمد :

انا اعمل على نسخة 2003 وأيضا الأن اعمل على نسخة 2005 , وكان استغرابي من وجود الرقم المتولد هذا في الـ Assembly Information .. ففكرت انه يستخدم لعمل مفتاح لكل برنامج بعد ذلك يمكن مقارنته مع مفتاح اخر ليكون هوا كلمة السر ...

اشكرك على معلوماتك الرائعة .. لكن لدي استفسار بسيط وهوا ما الفائدة ان يحمل تطبيقي رقم وحيد عالمي وهل لهذه الدرجة لا يمكن ان يتكرر ...

ام ان الخوارزميات المبني بها Gui تعتمد على حسابات ما على الحاسوب الشخصي مثل رقم الهارد او الماذربورد لتفادي التكرار العالمي .. وما هي اصلا الفائدة منه اذا كان كذا ...

استفسار اخر :

لنفرض اننا قمنا بتوليد مفتاح معين وضهر لنا هذا المفتاح مكون من 4 خانات ....

افرض اني بعت النظام الخاص بي لجهة معينة ... هذه الجهة بعد فتره قامت بعمل فورمات للكمبيوتر الموجود فيه هذا النظام ....فما العمل ... ستتصل بك هذه الجهة تريد منك ان تقوم بتحميل البرنامج انت إليها هذه هي الأليه المتبعة في بعض الشركات حفاضا على حقوق مكلية البرنامج من الإستعمال غير المصرح ..

افرض ان هذه الجهة ليست في نفس المدينة الذي فيها شركتك او الذي فيها انت سوف تضطر للسفر من محافضة إلى اخرى حتى تقوم بتحميل البرنامج .....

انا اريد ان اعطي هذه الجهة التي سوف ابيع لها النظام النسخة بالكامل مع التحميل بعد ذلك بمجرد تنصيب البرنامج على الحاسوب الخاص بهم يضهر لهم رقم مفتاح سوف اسمية كود التفعيل .... يقوموا بإرسالة لي وانا اقوم بإرسال كلمة بناء على المفتاح المعطي لي من البرنامج الخاص بي على حاسوبهم وبعد ذلك تقوم الجهة التي اخذت مني النظام بوضع الكلمة التي ارسلت لهم بها فيه ليعمل بعد ذلك ....

مع العلم انه لو قامت الجهة مثلا بعمل نسخة من البرنامج او استخدمته غير شرعي لن يعمل البرنامج حتى ولوا قاموا بإدخال نفس الرقم الذي ارسلت انا لهم به ... فكيف يمكن عمل هذه الفكرة .....

تحياتي لك اخي محمد مره اخرى ... وا شكرك على معلوماتك التي استفدت منها ...

#5

كما قلت سابقا

اقتباس
الـ GUID ليس الهدف منه استخدامه كمفتاح منتج إنه رقم تعريف عام للمجمعات والمكتبات بحيث يكون معرفا وحيدا لها

لنفرض أنني أنا قمت بتطوير مكتبة باسم samer.dll وقمت أيضا بتطوير مكتبة اخرى بنفس الاسم لغرض مختلف فهذا الرقم بما أنه معرف وحيد يجعل من الممكن التفريق بينهما من قبل البرامج التي تستخدمهما حسب الـ GUID الخاص بكل مكتبة أي أنه معرف وحيد لكل مكتبة Library أو مجمع Assembly

اقتباس
افرض اني بعت النظام الخاص بي لجهة معينة ... هذه الجهة بعد فتره قامت بعمل فورمات للكمبيوتر الموجود فيه هذا النظام ....فما العمل ... ستتصل بك هذه الجهة تريد منك ان تقوم بتحميل البرنامج انت إليها هذه هي الأليه المتبعة في بعض الشركات حفاضا على حقوق مكلية البرنامج من الإستعمال غير المصرح ..

هذا عائد للبارامترات التي تقوم أنت بتمريرها للإجرائية

في العادة عندما تعطي مفتاح التسجيل يرسل لك مستثمر البرنامج معلومات معينة أنت تظهرها في البرنامج لترشده لكيفية الاتصال بك للحصول على مفتاح المنتج وهذه المعلومات بالإضافة إلى معلومات ثابتة أخرى تدخلها للإجرائية لتعطي المفتاح فإن كان أحد هذه البارمترات يحتوي على معلومات خاصة بالجهاز مثل رقم القرص الصلب أو مفتاح الويندوز عندها ستضطر لعمل مفتاح جديد وارساله بالبريد الالكتروني إن كنت مرنا كفاية لترك إمكانية إدخال المفتاح من قبل المستخدم

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

أكرر شكري لك اخي محمد ..

هي فكرة جيدة بالفعل بالنسبة للـ Library فهي بذلك كما فهم لي تخلص المبرمج من مشاكل الأسماء الفيزيائية ..

لكن للأسف الشديد لم اجد بعد ضالتي فقد بحثت كثيرا عن اي معلومات حول هذا الموضوع لكن دون الوصول الى الهدف ..

كيف لي ان اولد المفتاح بحيث المفتاح الناتج من البرنامج لدى المستثمر ان يرسل لي وانا بذلك سوف اولد مفتاح اخر سوف ارسله له ليقوم بعد ذلك بادخاله للبرنامج للعمل ..

المفتاح الذي سوف ارسله له يتم توليده بناء على المفتاح المرسل لي من قبل المستثمر .. وبذلك سوف اضمن انه لن يتكرر هذا المفتاح , بمعنى ان من امتلك نسخة البرنامج بشكل غير شرعي لن يعمل لديه البرنامج حتى لو قام بادخال نفس الرقم الي ارسلت انا به للمستثمر الاول .. لانه يعتمد على بيانات خاصة بالمستثمر الشرعي والذي قمت انا بإعطائة الترخيص ...

اكرر شكري لك اخي محمد ..

#7

إذا أخذنا الإجرائية المثال التي وضعتها لك

KeyGen(ByVal username As String, ByVal var1 As Object, ByVal var2 As Object, ByVal var3 As Object, ByVal var4 As Object)

سنلاحظ أننا نمرر لها خمسة بارامترات الأولى اسم المستخدم

وباقي البارمترات تكون معلومات يرسلها لك المستثمر وأنت تولد المفتاح بناء عليها

مثلا:

- اسم الشركة

- رقم الشركة المصتعة للقرص الصلب - الكود موجود في المنتدى -

- الرقم التسلسلي للوحة الأم لديه

- الرقم التسلسلي للمعالج الموجود في جهازه

- رقم اصدار البرنامج

- معلومات أخرى كما ترغب

وهذه المعلومات ستكون محفوظة بشكل ما لدى المستثمر وفي نسخته من البرنامج ستكون نفس الاجرائية موجودة لمطابقة المفتاح الذي أرسلته له مع البيانات الواقعية حيث تقوم بإعادة توليد المفتاح لديه عند التأكد من صحة المفتاح المرسل له

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…