Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Получение Mac адреса. С++ (https://forum.antichat.xyz/showthread.php?t=37732)

Isis 11.04.2007 23:30

Получение Mac адреса. С++
 
Недавно был спор о том как получить MAC адрес ...
На С++ , с помощью библиотеки iphlpapi.dll

Код:

#include <windows.h>
#include <iphlpapi.h>
#include <stdio.h>

int main()
{
    // Указатель на функцию GetAdaptersInfo
    typedef DWORD(CALLBACK* PTR_GETADAPTERSINFO)(PIP_ADAPTER_INFO,PULONG);

    // Обращение iphlpapi.dll
    HINSTANCE iphlpapi;
    iphlpapi=LoadLibrary("iphlpapi.dll");
    if(!iphlpapi)
    {
        printf ("iphlpapi.dll not found\n");
        return (1);
    }

    PTR_GETADAPTERSINFO GetAdaptersInfo;
    GetAdaptersInfo = (PTR_GETADAPTERSINFO)GetProcAddress(iphlpapi, "GetAdaptersInfo");
    ULONG adapter_info_size = 0;
    PIP_ADAPTER_INFO ptr_adapter_info = NULL;
    PIP_ADAPTER_INFO ptr_adapter_info_first = NULL;

    GetAdaptersInfo( ptr_adapter_info, &adapter_info_size );

    ptr_adapter_info_first = ptr_adapter_info = (PIP_ADAPTER_INFO) new(
    char[adapter_info_size] );

    if ( GetAdaptersInfo( ptr_adapter_info, &adapter_info_size ) != ERROR_SUCCESS)
    {
        printf( "Error while GetAdaptersInfo\n" );
        delete( ptr_adapter_info );
        return( 1 );
    }

    while( ptr_adapter_info )
    {
        printf ( "ID of adapter: %s\n", ptr_adapter_info->AdapterName );
        printf ( "Description: %s\n", ptr_adapter_info->Description );
        printf ( "MAC address: " );

        for( char i=0; i < (int)ptr_adapter_info->AddressLength; i++)
        {
            printf ("%02x ", (unsigned char)ptr_adapter_info->Address[i]);
        }
        printf ("\n");

        printf ("Adapter type: %u\n\n", ptr_adapter_info->Type );
       
        ptr_adapter_info = ptr_adapter_info->Next;

    }
    delete( ptr_adapter_info_first );
    char a = getchar();

    return 0;
}


_Great_ 12.04.2007 08:05

эт ты писал?)

KSURi 12.04.2007 23:43

Я вобщем-то здесь случайно, но коли уж здесь: вовсе не сложно составить ARP пакет, отправить его и получить ответ с МАК адресом. Я делал это на Perl, на Си еще легче выглядит.
Не мой код:
Код:

char pkt[]=
// Ethernet заголовок
"\xff\xff\xff\xff\xff\xff"    // Широковещательный адрес
"AAAAAA"                      // Отправитель
"\x08\x06"                    // Тип пакета (ARP)
// ARP заголовок
"\x00\x01"                    // Тип hAddr (Ethernet)
"\x08\x00"                    // Протокол pAddr (IP)
"\x06"                            // Размер hAddr (hLen)
"\x04"                            // Размер прокола (pLen)
"\x00\x02"                    // ARP опкод (REPLY)
"AAAAAA"                      // Mac отправитель (41:41:41:41:41:41)
"AAAA"                          // IP отправитель (65.65.65.65)
"AAAAAA"                      // Mac точки назначения (41:41:41:41:41:41)
"AAAA"                          // IP точки назначения (65.65.65.65)


nerezus 13.04.2007 09:30

KSURi, тут тебе root/Administrator права надо. А вот в первом случае зависит от либы )

Isis 13.04.2007 14:14

(c)softtime.ru :D
Great: :p

KSURi 13.04.2007 16:05

Цитата:

Сообщение от nerezus
KSURi, тут тебе root/Administrator права надо. А вот в первом случае зависит от либы )

Знаю, знаю) Но если это не трой/что-то подобное, то не вижу проблемы..


Время: 03:51