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

قراءة السريال الخاص باللوحة الام كنوع من ال Security على برنامجى -

مغلق
بدأه bnitt في 23 فبراير 2007 · 14 رد · 3,053 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة / المبرمجين العرب

السلام عليكم ورحمة الله

اريد منكم مساعدتى فى كود c# لقراءة رقم اللوحة الام فى الــ Client ومقارنتها بالبيانات المخزنة فى قاعدة البيانات فى السرفر Server حيث لايستطيع احد استخدام هذا البرنامج على جهاز اخر ( بيانات اللوحة الام غير مخزنة لديا فى السرفر ).

ارجو منكم المساعدة العاجلة .

بسام القاضي

مبرمج مبتدءي

#2

السلام عليكم

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

bool __cdecl CPUInfo::RetrieveProcessorSerialNumber ()
{
	int SerialNumber[3];

	// Check to see if the processor supports the processor serial number.
	if (!Features.HasSerial) return false;

		// Use assembly to detect CPUID information...
	__try {
		_asm {
#ifdef CPUID_AWARE_COMPILER
 		; we must push/pop the registers <<CPUID>> writes to, as the
		; optimiser doesn't know about <<CPUID>>, and so doesn't expect
		; these registers to change.
			push eax
			push ebx
			push ecx
			push edx
#endif
		; <<CPUID>>
		; eax = 3 --> ebx: top 32 bits are the processor signature bits --> NB: Transmeta only ?!?
		;			  ecx: middle 32 bits are the processor signature bits
		;			  edx: bottom 32 bits are the processor signature bits
			mov eax, 3
			CPUID_INSTRUCTION
			mov SerialNumber[0 * TYPE int], ebx
			mov SerialNumber[1 * TYPE int], ecx
			mov SerialNumber[2 * TYPE int], edx

#ifdef CPUID_AWARE_COMPILER
			pop edx
			pop ecx
			pop ebx
			pop eax
#endif
		}
	}

	// A generic catch-all just to be sure...
	__except (1) {
		return false;
	}

	// Process the returned information.
	sprintf (ChipID.SerialNumber, "%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x-%.2x%.2x",
			 ((SerialNumber[0] & 0xff000000) >> 24),
			 ((SerialNumber[0] & 0x00ff0000) >> 16),
			 ((SerialNumber[0] & 0x0000ff00) >> 8),
			 ((SerialNumber[0] & 0x000000ff) >> 0),
			 ((SerialNumber[1] & 0xff000000) >> 24),
			 ((SerialNumber[1] & 0x00ff0000) >> 16),
			 ((SerialNumber[1] & 0x0000ff00) >> 8),
			 ((SerialNumber[1] & 0x000000ff) >> 0),
			 ((SerialNumber[2] & 0xff000000) >> 24),
			 ((SerialNumber[2] & 0x00ff0000) >> 16),
			 ((SerialNumber[2] & 0x0000ff00) >> 8),
			 ((SerialNumber[2] & 0x000000ff) >> 0));

	return true;
}

والله أعلم

System_Information_src.zip

#3

اشكرك اخى على هذا الكود ساجربة وساتواصل معك بمشيئة الله .

#4

اشكرك على الرد السريع....................

لكن اخى هل هناك كود c# يمكنى استخدامة فى قراءة الرقم التسسلى للمعالج cpu

#5

السلام عليكم

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

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

هل يناسبك هذا الحل؟

#6

الأخ الفاضل ...

راجع الموضوع: الرقم المسلسل لـمكونات الكمبيوتر من داخل البرامج, أمثلة بـ 5 لغات مختلفة (VB - VC - ASP - MS-Access - VBS)

إذا لم تستطع تحميل الملف المرفق حاول تحميله من: HWInfoEx.zip

أما بخصوص رقم البروسيسور، فغالباً لا يعمل مع P4 فى معالجات أنتل: http://www.intel.com/support/processors/sb/cs-001511.htm

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 26 فبراير 2007 في 13:33

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#7
using System;
using System.Data;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
using System.Runtime.InteropServices;


namespace serial
{	public partial class Form1 : Form
	{   
		[DllImport("CPUSerialNumber.dll")]
		public static extern IntPtr CPUSN();

		public Form1()
		{InitializeComponent();}

		private void Form1_Load(object sender, EventArgs e)
		{
			IntPtr ptrCPUSerialNumber = CPUSN();
			string strCPUSerialNumber = Marshal.PtrToStringBSTR(ptrCPUSerialNumber);
			Marshal.FreeBSTR(ptrCPUSerialNumber);
			label1.Text = "CPU Serial Number :" + strCPUSerialNumber;
		}
	}
}

السلام عليكم

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

والله أعلم

CPUSerialNumber.zip

post-91400-1172491430_thumb.jpg

#8

اشكرك اخى

لقد عملت Import للملف CPUSerialNumber لكن اظهر لى الاتى

CPU Serial Number:0000-0000-0000-0000-0000-0000

جربت كود vb6 أظهر لى

CPU Serial Number:0000-0F43-0000-0000-0000-0000

#9

الأخ الفاضل ...

أولاً لابد من ملاحظة أن كود اللوحة الأم يختلف عن كود البروسيسور.

ثانياً: ما نوع المعالج الذى تستخدمة؟ أهو P3 أم P4 ؟؟؟

إذا كان P4 فلا تستطيع الحصول على رقمه المسلسل (PSN) أو (Processor Serial Number) لمزيد من التفاصيل: http://www.intel.com/support/processors/sb/cs-001511.htm

وحيث أن أغلب الأجهزة الحديثة (أو التى فى طريقها للتحديث) P4 ولن تستطيع أن تشرط على العميل استخدام (P3) وعدم ترقيتة ، لذا حاول حماية برنامجك بأشياء أخرى مثل (رقم كارت الشبكة "NIC MAC Address"، رقم مسلسل الهارد ديسك، رقم البيوس الموجود على اللوحه الأم "لا تعتمد عليه فقط"، ID الخاص بنسخة الويندوز)، أو كلها مجتمعة.

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#10

أخى ممكن تعطينا كود قراءة الماك ادرس MAC ADRESS او الرقم التسلسي للقرص الصلب

بلغة C#

#11

الأخ الفاضل ...

انا حاليا أقوم بإعداد اصدار جديد من البرنامج HWInfoEx.zip بإذن الله تعالى سيتضمن مثال بالـ #C - أما البرنامج الحالى فهو فيه 5 أمثله ، ويحتوى ملف (DLL) به الدوال المستخدمة (API) يمكن أستدعائها بسهولة، كذلك ملف أخر (COM) يمكن استخدامه بعد تسجيله، ويمكن استخدام الملفين بأى لغة، والامثله توضح طريقة استخدامهم

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 28 فبراير 2007 في 07:50

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#12

ميزة حلوة فى اعظاء ArabTeam ......

التجاوب السريع ........... أشكرك اخى على تجاوبك معي

وارجو منك ان ترد لى حين تكمل اعداد الاصدار الجديد

#13

السلام عليكم

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

private string Lister()
		{	//== OS version and platform
			OperatingSystem os = Environment.OSVersion;
			PlatformID pid = os.Platform;
			// get computer properties nad NICs
			IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
			NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
			// retreive host name and domain
			String HostDomain = "Interface information for " + computerProperties.HostName + "." + computerProperties.DomainName;
			//Init MACList
			string MACList = string.Empty;
			// s is temporal variable to store each MAC adress
			String s;

			foreach (NetworkInterface adapter in nics)
			{   
				s = string.Empty; //init MAC adress container

				IPInterfaceProperties properties = adapter.GetIPProperties(); 
				// retreive MAC adress
				PhysicalAddress address = adapter.GetPhysicalAddress();
				// get bytes of MAC@
				byte[] bytes = address.GetAddressBytes();

				for (int i = 0; i < bytes.Length; i++)
				{//Convert Byte to Hex
				  s = s + bytes.ToString("X2");
				  if (i != bytes.Length - 1)
					{//define separater
					  s = s + ":";
					}
				}
				// store MAC@ in a single string 
				MACList += s + "\n";			   
			}
			return MACList;
		}

(عذرا على شرح الكود بالغة الأنجليزية)

ربما من الأفضل أن أعرف جملة العناوين في شكلArrayList عوضArray of String ولكن ذلك لا يهم لأنك تريد فقط الإطلاع عليهم

إستعمال إحدى هذه العناوين كوسيلة حماية يمكن أن يكون حل ولكنها ليست بالنجاعة التي تتصورها و الدليل هنا :P

لك الآن الكود الذي يمكنك من الإطلاع على بعض التفاصيل حول القرص الصلب

والله أعلم

hard_disk_serialNo_src.zip

#14

الأخ الفاضل ...

شكراً على المثال الجميل ... أود أن أوضح الفرق بين الرقم المسلسل للهاد ديسك (Harddisk Serial Number) والرقم المسلسل للدريف (Logic Drive Serial Number) ، فالأخير يمكن تغيره ويتم توليده (يدخل فى توليدة الوقت والتاريخ) أثناء عملية التهيئة للدريف (Formatting) وعند عمل تهيئة جديدة (Format) يتم توليد رقم جديد، أما الرقم المسلسل للهارد ديسك فلا يتغير بالفورمات (وهذا أضمن)، راجع:

/index.php?showtopic=47807

/index.php?showtopic=57817

كذلك يوجد مثال فى: http://www.thescripts.com/forum/thread325530.html

أنتبه فبعض الطرق لا تعمل على الهارد SATA

أما بالنسبة للـ MAC فالعديد من البرامج القديمة تقوم يتغيره مثل e-amac ، لذا أكرر ما قلته فى المشاركة السابقة أستخدم أكثر من طريقة أو كلها مجتمعة

يوجد مثال بسيط للحصول على MAC فى منتدى مايكروسوفت: http://forums.microsoft.com/MSDN/ShowPost....58&SiteID=1

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 1 مارس 2007 في 17:34

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#15

الأخوة الأعزاء لماذا لا تستخدمون WMI (Windows managment Interface)

يمكنكم الحصول على أكوادها من مايكروسوفت إم إس دي إن و هي توفر معلومات عن جميع الهاردوير في كمبيوترك في بيئة دوت نت من غير API

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

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

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

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

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

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