Как узнать NetBios имена через C#?
Приветствую! Решил начать изучение шарпа сразу с нелегкой задачи, в ходе разработки программы дошел до момента, когда мне надо узнать нетбиос имя хоста, ip которого опрашивает Ping. Делаю все в консольном приложении. Адреса берет из файла (если нет, создает по умолчанию), далее пингует пул адресов, нужно, чтобы параллельно пингу возвращал имя хоста. Заодно очень был бы благодарен за ссылки на разные статейки или примеры кода, в которых c# используется для работы по сети и для разных административных задач.
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 11 апр 2011 в 5:37
1 1 1 серебряный знак 1 1 бронзовый знак
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Ответы Сергея и Алексея чуточку неточны: они ведут речь по DNS -имена, которые, во-первых, могут отсутствовать, во вторых — могут отличаться от NetBIOS -имени.
Далее, насколько помню, в .net отсутствует прямая возможность резолвить netbios -имена по IP. Связано это с тем, что Microsoft активно старается уйти от netbios -имен в сторону DNS (и это в какой-то степени правильно). Но, по старой памяти (давно не пишу под винды), весь функционал NetBIOS сосредоточен в netapi32.dll . Думаю, изучение интерфейса этой библиотеки Вам поможет. Там буквально одна функция, которая за все команды и отвечает.
Ну и заодно — ссылка про то, как устроен и работает NetBIOS Name Service: http://www.protocolbase.net/protocols/protocol_NBNS.php
P.S. А вот имя текущей машины NetBIOS доступно по проперте System.Environment.MachineName .
P.P.S. Еще, если не путаю, посмотрите System.Net.Dns.GetHostName() — возвращает, кажется, DNS -имя текущего хоста — вдруг понадобится.
P.P.P.S. К сожалению, нет под рукой ни Винды, ни дотнета — не могу проверить. Потом скажете, получилось или нет 😉
Как узнать netbios имя компьютера
При использовании уникального имени NetBios проверяет сеть и адаптеры для исключения конфликтов. Группое имя может быть использованно различными адаптерами. Ресурсы идентифицируются именами динамически когда пользователь запускает компьютер или входит в сеть.
Длинна имени NetBios не должна быть больше 16 символов. Windows NT позволяет отпределять первые 15 символов. Последний символ зарезервирован для типа ресурса.
Для работы с именами предусмотрены следующие команды:
NCBADDGRNAME (добавить груповое имя) NCBADDNAME (добавить имя) NCBDELNAME (удалить имя) NCBFINDNAME (найти имя)
Для получения информации по именам используется структура NAME_BUFFER:
typedef struct _NAME_BUFFER < UCHAR name[NCBNAMSZ]; UCHAR name_num; UCHAR name_flags; >NAME_BUFFER;
Посмотреть зарегистрированные имена можно используя утилиту nbtstat. Она входит в состав поставки Windows NT, вот пример результата её работы.
В Книге — «Сетевые средства Windows NT Server 4.0» издательства ВНV — Санкт Петербург. 1998 год. На странице 367 говорится вот что:
Для идентификации имен зарегистрированных на вашем локальном компьютере 1. Нажмите кнопку Start и выбирите опцию Run 2. В поле Open введите команду nbstat -n
Программы nbstat нет в поставке Windows NT, а есть программа nbtstat. Но вот в чем дело. nbtstat использует NetBIOS над TCP/IP — NBT. Если протокол TCP/IP не установлен, то вы получите сообщение —
Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. D:\>nbtstat -n Failed to access NBT driver > :Unknown error number D:\>
И в приложении G написано, что утилита nbstat выдает информацию о именах NetBios.
Кроме того упоминание о nbstat в перемешку с nbtstat(. ) можно найти в MSDN. Если кто знает в чем дело пишите !
Как узнать NETBIOS имена в локальной сети.
В рамках тестирования на проникновение часто приходится искать что-то интересное в сети, особенно если мы находимся в сегменте рабочих станций. Например поискать АРМ конкретных пользователей, которые занимают должности подразумевающие повышенные привелегии. Зачем это делать? Например для проведения узконаправленной MITM атаки или поиска уязвимостей у конкретных рабочих станций или серверов.
В поисках нам могут помочь имена ПК. Узнать имена большинства ПК и других устройств можно с помощью протокола NETBIOS и утилиты nbtscan.
Использование утилиты очень простое:
nbtscan 192.168.1.0/24
где, 192.168.1.0/24 это интересующая нас подсеть.
На выходе мы получим список IP адресов и NETBIOS имен.
Так же есть пара полезных ключей:
-v подробный вывод всех найденных имен ПК с указанием сервиса, от которого было получено имя (Workstation Service, File Server Service, Master Browser,Browser Service Elections и т.д.)
-h написать читаемое имя сервиса (используется только с параметром -v)
Остальные ключи касаются формата вывода полученной информации и в основном нужны для формирования списков для дальнейшего использования и их можно посмотреть запустив nbtscan без параметров.
Например командой:
nbtscan -v -s : 192.168.1.0/24
мы получим вывод через двоеточие.
А дальше уже каждый сам решит, какую информацию и в каком формате ему потребуется дальше использовать.
Как узнать netbios имя компьютера
Рекомендуется включить проверку имен доменов, чтобы обеспечить корректное применение правил обработки трафика, а также критериев принадлежности пользователей к рабочим областям. Вы можете отключить проверку имен доменов, если в вашей организации доменные имена пользователей сохранены в параметрах браузеров с пустой доменной частью или в формате, не поддерживаемом программой.
Разные форматы доменных имен получаются из комбинаций следующих элементов учетной записи:
- NETBIOS-имя – уникальное имя домена, представляющее собой 16-байтовый адрес для идентификации в локальной сети.
- DNS-имя – имя домена, которое включает в себя имена всех родительских доменов иерархии DNS, разделенные точкой.
- sAMAccountName – имя учетной записи пользователя в формате pre-Windows 2000.
- UPN-имя (User Principal Name) – имя учетной записи пользователя, которое состоит из UPN-префикса (имени входа) и UPN-суффикса (имени домена), разделенных символом @. По умолчанию в качестве UPN-суффикса используется DNS-имя. Вы можете указать альтернативные UPN-суффиксы и выбрать их в свойствах учетной записи вместо DNS-имени.
В оснастке Active Directory этим элементам соответствуют поля, представленные на примере ниже, где:
- name – UPN-Preffix;
- test.local – DNS-имя;
- TEST – NETBIOS-имя;
- lastname – sAMAccountName;
- test.com – альтернативный UPN-суффикс.
Свойства домена и учетной записи в оснастке Active Directory
Если проверка имен доменов отключена, аутентификация пользователей осуществляется согласно таблице, представленной ниже.
Аутентификация при отключенной проверке имен доменов