На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Как определить MAC адресс,имя ,рабочюю группу удалённого компа?
    Я знаю, что через NetBIOS, но на асме у меня не получается!!!!
    Помогите!
      Как, говоришь?...
      А хрен его знает!
        У меня есть исходничек на C++, но когда я его перевёл он у меня не рабоал(он у меня и на C++ не работал)
        так что люди ПОМОГИТЕ!!!
          Можно через NetBIOS, однако этот сервис может и не работать. Метод определения MAC-адреса де бест это чтение из ARP-таблицы. (SenfARP() под 9х не работает). Т.е. если ты вообще каким-бы то нибыло образом можешь достучаться до хоста, то и MAC вытащишь.
          Есть работающий исход на C. Могу намылить или выложить завтра.
            OK!
            Vukladuvay
              Итак, если ты достучался до хоста любым протоколом основаном на IP (например ICMP он же ping) то его MAC-адрес (или MAC шлюза к нему) будет неизбежно помещён в таблицу соотв. MAC<->IP. Записи уничтожаются системой через некоторое время, если нет обращений к этому IP. Посмотреть её можно командой arp -a. Програмно доступ к этой таблице организуется так:
              //Функция пытается получить MAC хоста 2-мя способоми:
              //--Вытягивает из ARP если известен IP
              //--Спрашивает через NetBIOS если есть HostName
              bool GetHostMAC(void *MAC, const char *HostName, DWORD _ip)
              {
              if(_ip!=0)
              {
              MIB_IPNETTABLE * pIpNetTable = (MIB_IPNETTABLE *) new char[0xFFFF];
              ULONG cbIpNetTable = 0xFFFF;
              if (NO_ERROR == GetIpNetTable (pIpNetTable, &cbIpNetTable, TRUE))
              {
              for (DWORD i = 0; i < pIpNetTable->dwNumEntries; i++)
              {
              if(pIpNetTable->table[i].dwAddr==_ip&&pIpNetTable->table[i].dwType!=2)
              {
              memcpy(MAC,pIpNetTable->table[i].bPhysAddr,6);
              delete[] pIpNetTable;
              return true;
              }
              }
              delete[] pIpNetTable;
              }
              }
              //Если из ARP вытянуть не удалось
              //Пытаемся через NetBios
              NCB SNcb;
              UCHAR rc = 0;
              UCHAR Status[256];

              memset( &SNcb, 0, sizeof(SNcb) );
              SNcb.ncb_command = NCBRESET;
              SNcb.ncb_lana_num = 0;
              rc=Netbios( &SNcb );
              char Name[255];
              strcpy(Name,HostName);
              while( lstrlen(Name) - 15)
              lstrcat(Name, " ");
              memset(&SNcb, 0, sizeof(NCB));
              SNcb.ncb_command = NCBASTAT;
              SNcb.ncb_buffer = (unsigned char*)Status;
              SNcb.ncb_length = 256;
              lstrcpy((char*)SNcb.ncb_callname, Name);
              SNcb.ncb_lana_num = 0;//lana_num;
              rc = Netbios( &SNcb );
              if(rc==NRC_GOODRET)
              {
              memcpy(MAC,Status,6);
              return true;
              }
              else return false;
              }

              /*
              Следует понимать, что если хост находится в другой подсети, то ты получишь в лучшем случае MAC-адрес шлюза к нему (роутера, прокси, свича, и т.д.).
              Header: Declared in Iphlpapi.h.
              Library: Use Iphlpapi.lib.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0245 ]   [ 15 queries used ]   [ Generated: 25.04.24, 04:23 GMT ]