Обчислення ip адрес через snmp або як отримати доступ до таблиці маршрутизації, різний, графіка,

Отже, є одна річ, яка об'єднує всі перераховані вище утиліти IPCONFIG, NETSTAT, ROUTE і ARP. Всі вони використовують DLL під назву INETMIB1.DLL.

У документації Microsoft сказано, що це розширення для SNMP агента. Якщо правильно звертатися до цієї DLL-ке, то ми зможемо отримати всю, необхідну нам інформацію, а так само багато чого іншого. Все, що нам потрібно зробити - це с'емуліровать расширяемого агента Windows і викликати DLL з правами OID.

Давайте розберемося, що ж таке SMNP, розширюваний агент і OID.

Що таке SNMP

SNMP розшифровується як Простий Протокол Управління мережею (Simple Network Management Protocol). SNMP був розроблений з метою вирішити складну проблему управління мережею. На сьогоднішній день практично всі пристрої так чи інакше пов'язані з мережею: принтери, маршрутизатори, репітери, мости, багатофункціональні сервера і настільні комп'ютери. (Єдине, що поки ще не включили в мережу - це кавоварки, холодильники і пилососи, але думаю, що скоро настане і їх час :) Кожне з цих пристроїв має свої параметри, свої настройки і може надавати різну інформацію про себе.

SNMP дозволяє безпосередньо через мережу обробляти інформацію від будь-яких пристроїв, що знаходяться в мережі. Це потужний і, в той же час гнучкий інструмент, що підтримує різні типи структур даних і запитів сумісних з будь-якими пристроями в мережі.

У моделі SNMP є таке поняття, як програмний агент, який постійно пов'язаний з мережевим пристроєм. До завдань агента входить збирати всю інформацію, пов'язану з цим пристроєм. До всього іншого, саме агент займається обробкою прийшов запиту з мережі.

Структура даних SMNP

Дані, оброблені SNMP агентом розбиті на частини, які називаються "management information bases" або скорочено MIB. MIB-и описані через мову визначень під назвою "Abstract Syntax Notation". Будь-яка програма може спілкуватися з агентом і обробляти отриману від нього інформацію тільки якщо вона має MIB агента.

Інформація, що міститься в MIB може описувати необмежену кількість об'єктів. Кожен об'єкт має унікальний ідентифікатор, званий OID. Простіше кажучи OID - це послідовність чисел, які ідентифікують об'єкт. Кожен об'єкт, який може бути оброблений через SNMP, має свій унікальний OID. Всі існуючі в світі OID-и організовані в одну велику деревоподібну структуру. Послідовності чисел, які представляють собою OID-и - це ідентифікатори гілок дерева. Кожне поддерево в дереві призначається IETF, щоб гарантувати унікальність кожної гілки дерева.

Кожна гілка має ім'я і номер, пов'язані з ним. Відповідно всі об'єкти SNMP мають приблизно таке ім'я: iso.org.dod.internet яке відповідає числу 1.3.6.1.

Всі основні TCP / IP об'єкти, що містяться всередині піддерев basic, називаються "засновані на MIB-II". Визначення MibII можна прочитати в RFC1213. Читаючи файл MibII, ми можемо побачити, що для того, щоб отримати інформацію від системи, нам необхідно вважати значення з iso.org.dod.internet.mgmt.mib-2.system.sysDescr (1.3.6.1.2.1.1.1.0 )

Щоб отримати IP маски, необхідно використовувати 1.3.6.1.2.1.4.20.1.3 як стартовий OID.

SMNP і Windows

Отже, повернемося до нашої DLL-ке. Ця DLL-ка спілкується з агентом через API за коштами трьох функцій:
  • SnmpExtensionInit - Функція ініціалізації агента.
  • SnmpExtensionQuery - Основна функція запиту.
  • SnmpExtensionTrap - обробник пасток.
Dll так само може підтримувати
  • SnmpExtensionInitEx () - Це розширена версія SnmpExtensionInit, яка надає великі можливості, ніж SnmpExtensionInit.

SNMP команди

SNMP має три основних команди - Get, Set, And GetNext. У кожному виклику SnmpExtensionQuery міститься пристойну кількість даних. В цю функцію передається структура типу RFC1157VarBindList. Ця структура - список елементів VarBind, які визначені в такий спосіб:

Структура VarBind містить як ім'я елемента (OID). так і його значення.

Get і Set використовуються для доступу до даних об'єктів, і ми не потребуємо них, для отримання інформації, якою ми зацікавлені.

GetNext трохи відрізняється від Get і Set. Він використовується для путешевствіе по довгому дереву OID, які підтримує агент. Якщо зробити запит в SnmpExtensionQuery через GetNext, то функція поверне перше значення, яке підтримує агент, і воно буде лексикографічно більше того, яким забезпечений OID.

Як спілкуватися з inetmib1.dll