MAC rauslesen und ändern



  • Hallo!

    Ich wollte ein kleines Tool schreiben, welches meine aktuelle MAC-Adresse ausliest und bei Wunsch ändert.
    Aber wie? Jemand eine Idee?



  • So ist eine Funktion für das Auslesen

    #include <nb30.h>
    bool __fastcall TForm1::ReadMacAddr(AnsiString &MacAddr)
    {
        NCB ncb;
        UCHAR RetCode;
        char NetName[50];
        struct    {    ADAPTER_STATUS adapt;
                    NAME_BUFFER NameBuff [30];
                } Adapter;
    
        // Adapter Reset
        memset(&ncb, 0, sizeof(ncb));
        ncb.ncb_command=NCBRESET;
        ncb.ncb_lana_num=0;
        if((RetCode=Netbios(&ncb))!=0)
        {    MacAddr.sprintf("Fehler %d beim Reset des Adapters", RetCode);
            return(false);
        }
    
        // Adapter Status
        memset(&ncb, 0, sizeof(ncb));
        ncb.ncb_command=NCBASTAT;
        ncb.ncb_lana_num=0;
    
        memset(ncb.ncb_callname, ' ', NCBNAMSZ);
        *(ncb.ncb_callname)='*';
        ncb.ncb_buffer=(char*)&Adapter;
        ncb.ncb_length=sizeof(Adapter);
    
        if((RetCode=Netbios(&ncb))==0)
        {   MacAddr.sprintf("%02X-%02X-%02X-%02X-%02X-%02X",
                    Adapter.adapt.adapter_address[0],
                    Adapter.adapt.adapter_address[1],
                    Adapter.adapt.adapter_address[2],
                    Adapter.adapt.adapter_address[3],
                    Adapter.adapt.adapter_address[4],
                    Adapter.adapt.adapter_address[5] );
            return(true);
        }
        else
        {    MacAddr.sprintf("Fehler %d beim Bestimmen der MacAdrese", RetCode);
            return(false);
        }
    }
    

    Das Auslesen machst du dann so:

    String a;
    ReadMacAddr(a);
    

    Hoffe konnte dir helfen



  • ^^und mit dem ändern ist das so'ne sache. bei mancher hardware geht's, bei anderer nicht. mit 'netbios'-befehlen wirds vermutlich eh nix.
    🙂



  • http://devices.natetrue.com/macshift/
    Sourcen und Binary verfügbar.
    Simon



  • Die Lösung von mac_adrr würde ich nicht nehmen.

    [Netbios is not available for use on Windows Vista, Windows Server 2008, and subsequent versions of the operating system]

    Ich glaube GetAdaptersInfo aus der IP Helper API ist die beste Lösung um an die MAC-Adresse zu kommen.


Anmelden zum Antworten