Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> расшифровка MAC 
:(
    Опции темы
zss
Дата 14.7.2006, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



на одном из сайтов слил расшифровку первых 3 байт MAC-адресов устройств с его названиями,
производителем и т.п.

их количество огромное и писать самому конвертер - упаришся 
может кто видел какую-нибудь библиотеку по расшифровке ?

P.S. нужно простое соответствие 
например
XX:XX:XX - ZCOM  
PM MAIL ICQ   Вверх
Step
Дата 16.7.2006, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



а сайт скажи ? 


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vint
Дата 17.7.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.7.2006
Где: Россия, Москва

Репутация: нет
Всего: нет



Есть собственный перечень и конвертер
Если еще это актуально, могу выложить 
PM MAIL WWW ICQ   Вверх
zss
Дата 18.7.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Step @  16.7.2006,  04:43 Найти цитируемый пост)
а сайт скажи ?  

сайт не помню, но могу сюда бросить


Цитата(Vint @  17.7.2006,  12:33 Найти цитируемый пост)
Есть собственный перечень и конвертер
Если еще это актуально, могу выложить  

буду признателен smile 
PM MAIL ICQ   Вверх
Vint
Дата 18.7.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.7.2006
Где: Россия, Москва

Репутация: нет
Всего: нет



Сегодня (18.07.2006) ближе к вечеру
Надо выдернуть код из большого проекта и причесать его - иначе швахт! 
PM MAIL WWW ICQ   Вверх
Vint
Дата 18.7.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.7.2006
Где: Россия, Москва

Репутация: нет
Всего: нет



Файл netmanuf (прикреплен) должен находится в \system32\drivers\etc

Код

//==============================================================================
// Get manufactured network card from MAC address
//
// PARAMETERS:
//
// IN  szMacNumber - first 3 bytes from MAC (12:34:56 or 123456 or 12 34 56 or ...
//
// OUT lpManufInfo - pointer to MANUFINFO
//
// Sample:
// ...
// MANUFINFO miManufInfo;
// char szMac[] = "12:34:56";
// DWORD dwRet = GetManufByMac( szMac, &miManufInfo );
//  if ( dwRet )
//  {
//      printf("MAC: %s  - %s (%s)", szMac, miManufInfo.szShortName, miManufInfo.szAlias);
//  }
//
// Popov A.V. Russia, Moskow, 2001-2006
// email: [email protected]
//        [email protected]
//
// PAV PopoffSoft: SystemUTL, CheckDB, Pron32, FastTest, PCList, PopovOCX, ...
//==============================================================================

#include <Windows.h>
#include <Shlwapi.h>
#include <string.h>
#include <stdio.h>

#pragma comment(lib, "Kernel32.lib")
#pragma comment(lib, "Shlwapi.lib")


//-------------------------------------
#define MAC_MANUF_LEN    7
#define MAC_ALIAS_LEN    20
#define MAC_DESCR_LEN    128

#define DEF_MANUF_FILE_NAME    "\\drivers\\etc\\netmanuf"

//-------------------------------------
typedef struct _ManufInfo{
    char szShortName[MAC_MANUF_LEN];
    char szAlias[MAC_ALIAS_LEN];
    char szDescription[MAC_DESCR_LEN];
} MANUFINFO, *PMANUFINFO;




//==============================================================================
//==============================================================================
DWORD      WINAPI GetManufByMac(char * szMacNumber, PMANUFINFO lpManufInfo)
//==============================================================================
{
DWORD            dwRetVal = 0;
char            szMacNum[MAC_MANUF_LEN];
char            szFName[MAX_PATH+1];    
struct _stat    buf;
HANDLE            hFile;
DWORD            dwFileSize;
HANDLE            hFileMap;
PVOID            pvFile;

char    seps[]        = " \t\n\r";
char    *token, *pszDup1;

__try
{

    if ( szMacNumber == NULL  ||
         *szMacNumber == '\0' ||
         strlen(szMacNumber) < (MAC_MANUF_LEN-1) ) __leave;

    ZeroMemory(szMacNum, MAC_MANUF_LEN);

    int iChar, i = 0;
    while ( i < (MAC_MANUF_LEN-1)  && *szMacNumber )
    {
        iChar = (int) *szMacNumber++;
        if ( isalnum(iChar) )
        {
            szMacNum[i++] = (char) iChar;
        }
    }


    GetSystemDirectory(szFName, MAX_PATH+1);
    strcat(szFName, DEF_MANUF_FILE_NAME);


    if ( _stat(szFName, &buf) != 0 ) __leave;
    

    hFile = CreateFile(szFName,    
                        GENERIC_WRITE | GENERIC_READ,
                        0,
                        NULL,
                        OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,
                        NULL);
 
    if (hFile == INVALID_HANDLE_VALUE) 
    { 
            __leave; 
    }

    dwFileSize = GetFileSize(hFile, 0);

    hFileMap = CreateFileMapping(hFile, 
                                NULL,
                                PAGE_WRITECOPY,
                                0,
                                0,
                                NULL);

    if (!hFileMap) __leave;

    pvFile = MapViewOfFile(hFileMap, 
                         FILE_MAP_COPY, 
                         0, 
                         0, 
                         0); 

    PSTR pchANSI = (PSTR) pvFile;
    pchANSI[dwFileSize] = 0;

    char *pdest0    = NULL;
    char *pdest        = StrStrI(pchANSI, szMacNum);

    while ( pdest )
    {

        pdest0 = pdest + 1;

        while( pdest != pchANSI && *pdest != '\n' )
        {
            pdest--;
        }

        if (*pdest == '\n' ) pdest++;

        if (*pdest == '#' )
        {
            pdest = StrStrI(pdest0, szMacNum);
        }
        else
        {
            break;
        }
    }

    if ( pdest == NULL ) __leave;

    pdest0 = strchr(pdest, '\r');

    if (pdest0) *pdest0 = '\0';

    if (lpManufInfo == NULL) 
    {
        lpManufInfo = (PMANUFINFO) HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, sizeof(MANUFINFO));
    }
    else
    {
        ZeroMemory(lpManufInfo, sizeof(MANUFINFO));
    }


    pszDup1 = _strdup(pdest);

    token = strtok(pszDup1, seps);

    if ( token ) 
    {
        strcpy(lpManufInfo->szShortName, token);

        token = strtok(NULL, seps);

        if(token)
        {
            token = strtok(NULL, seps);
            if ( token ) 
            {
                if(*token == '#')
                {
                    pdest0 = strchr(pdest, '#');
                    strcpy(lpManufInfo->szDescription, (pdest0 + 1));
                }
                else 
                {
                    strcpy(lpManufInfo->szAlias, token);

                    token = strtok(NULL, seps);

                    if ( token && *token == '#') 
                    {
                        pdest0 = strchr(pdest, '#');
                        strcpy(lpManufInfo->szDescription, (pdest0 + 1));
                    }
                }
            }
        }

        dwRetVal = 1;
    }
}
__finally
{
    if (hFile != INVALID_HANDLE_VALUE)    CloseHandle(hFile);
    if (hFileMap)                        CloseHandle(hFileMap);
    if (pvFile)                            UnmapViewOfFile(pvFile);

    if (pszDup1)                        free(pszDup1);
}
    return dwRetVal;
}



 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0814 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.