إيجاد الرقم التسلسلي لكارت الشبكة adressMac
#1
السلام عليكم ورحمة الله وبركاته ،
للحصول على الرقم التسلسلي لكارت الشبكة   delphi adresse mac، استعمل الكود التالي :
كود :
uses NB30;


كود :
function GetAdapterInfo(Lana: Char): String; var     Adapter: TAdapterStatus;     NCB: TNCB;   begin     FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBRESET);     NCB.ncb_lana_num := Lana;     if Netbios(@NCB) <> Char(NRC_GOODRET) then     begin       Result := 'mac not found';       Exit;     end;       FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBASTAT);     NCB.ncb_lana_num := Lana;     NCB.ncb_callname := '*';       FillChar(Adapter, SizeOf(Adapter), 0);     NCB.ncb_buffer := @Adapter;     NCB.ncb_length := SizeOf(Adapter);     if Netbios(@NCB) <> Char(NRC_GOODRET) then     begin       Result := 'mac not found';       Exit;     end;     Result :=       IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +       IntToHex(Byte(Adapter.adapter_address[5]), 2);   end;     function GetMACAddress: string; var     AdapterList: TLanaEnum;     NCB: TNCB;   begin     FillChar(NCB, SizeOf(NCB), 0);     NCB.ncb_command := Char(NCBENUM);     NCB.ncb_buffer := @AdapterList;     NCB.ncb_length := SizeOf(AdapterList);     Netbios(@NCB);     if Byte(AdapterList.length) > 0 then       Result := GetAdapterInfo(AdapterList.lana[0])     else       Result := 'mac not found';   end;
الدالة تشتغل بشكل رائع .
لكن المشكلة إذا كان كابل الشبكة غير موصول   ، فلا يمكن حين إذن الحصول على الرقم التستسلي.
هل من فكرة بارك الله فيكم؟
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#2
السلام عليكم

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

PHP كود :
Internet  192.168.200.3           3   0007.dddd.abc2  ARPA   Vlan4
Internet  192.168.200.10          6   000a
.bbbb.a5ba  ARPA   Vlan4
Internet  192.168.200.17          
-   0014.cccc.6c7b  ARPA   Vlan5
Internet  192.168.200.25        208   0005.aaaa.3b5a  ARPA   Vlan5 


هناك منفذ  ILO في الخوادم من نوع HP حتى ولو كان الخادم  في حالة توقف ممكن أن تلج إليه..
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
[-] كل من 1 user says قال شكرا ل لؤي على المشاركة المفيدة
  • أبو معاذ
الرد
#3
السلام عليكم ورحمة الله وبركاته ،
شكرا أخي لؤي على متابعة ، Blush 
لكن طلبي هو : عل بالإمكان قراءة رقم كروت الشبكة في حالة عدم اتصال الجهاز بأي شبكة ،
بمعنى disconnected.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
الرد
#4
السلام عليكم ورحمة الله وبركاته ،
أظنني بعد البحث وجدت الحل Tongue 
لمن يهمه الأمر هذا هو الكود.


كود :
//----------------------------------------------------------------------------------------------------- //     This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.350 //     http://code.google.com/p/wmi-delphi-code-creator/ //     Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/ //     Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015 //----------------------------------------------------------------------------------------------------- // //     LIABILITY DISCLAIMER //     THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. //     YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS, //     DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE. // //---------------------------------------------------------------------------------------------------- program GetWMI_Info;   {$APPTYPE CONSOLE}   uses   SysUtils,   ActiveX,   ComObj,   Variants; // La classe Win32_NetworkAdapter représente une carte réseau sur un système Win32.   procedure  GetWin32_NetworkAdapterInfo; const   WbemUser            ='';   WbemPassword        ='';   WbemComputer        ='localhost';   wbemFlagForwardOnly = $00000020; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; begin;   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL','WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   while oEnum.Next(1, FWbemObject, iValue) = 0 do   begin     Writeln(Format('Caption       %s',[String(FWbemObject.Caption)]));// String     Writeln(Format('MACAddress    %s',[String(FWbemObject.MACAddress)]));// String       Writeln('');     FWbemObject:=Unassigned;   end; end;     begin  try     CoInitialize(nil);     try       GetWin32_NetworkAdapterInfo;     finally       CoUninitialize;     end;  except     on E:EOleException do         Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));     on E:Exception do         Writeln(E.Classname, ':', E.Message);  end;  Writeln('Press Enter to exit');  Readln;       end.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
[-] كل من 3 users say قال شكرا ل أبو معاذ على المشاركة المفيدة
  • لؤي, bassem_43, wadoud
الرد
#5
وعليكم السلامة ورحمة الله وبركاته،
هل يمكن قراءة مخرجات تعليمة arp ؟
شيء مثل:
كود :
arp -a
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم