вторник, 21 апреля 2015 г.

Мониторинг блока индикации и контроля с модулем управления питанием QFC-PBIC

Попалось под руку устройство QFC-PBIC - надо мониторить состояние подключенных датчиков по локальной сети.
Вроде бы производитель вот тут http://www.qtech.ru/catalog/control/154/info.htm - но почему-то не хочет в этом признаваться, видно - давно было дело, никто не помнит...
Ну да ладно - ищем правду сами. Находим техописание и инструкцию для монтажника. Ага - есть поддержка SNMP, значит должен быть открыт 161 порт, а какой же IP адрес?
Натравливаем nmap

- после нескольких неудачных попыток - выясняем, что IP по умолчанию 192.168.0.3.

Натравливаем snmpwalk ( c молитвой, что community никто не удосужился поменять) откуда-нибудь поближе к корню

>snmpwalk -c public -v 1 192.168.0.3 iso

SNMPv2-MIB::sysDescr = STRING: QTECH GuardBox
SNMPv2-MIB::sysObjectID = OID: SNMPv2-SMI::enterprises.27514.101
SNMPv2-MIB::sysUpTime = Timeticks: (2959774) 8:13:17.74
SNMPv2-SMI::enterprises.27514.101.1.1 = STRING: "2.4"
SNMPv2-SMI::enterprises.27514.101.1.2 = Hex-STRING: 00 08 DC 16 28 33
SNMPv2-SMI::enterprises.27514.101.1.3 = IpAddress: 192.168.1.7
SNMPv2-SMI::enterprises.27514.101.1.4 = IpAddress: 255.255.255.0
SNMPv2-SMI::enterprises.27514.101.1.5 = IpAddress: 192.168.0.1
SNMPv2-SMI::enterprises.27514.101.1.6 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.7 = IpAddress: 0.0.0.0
SNMPv2-SMI::enterprises.27514.101.1.8 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.9 = INTEGER: 5
SNMPv2-SMI::enterprises.27514.101.1.10 = IpAddress: 0.0.0.0
SNMPv2-SMI::enterprises.27514.101.1.11 = INTEGER: 60
SNMPv2-SMI::enterprises.27514.101.1.12 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.13 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.14 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.15 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.16 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.17 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.18 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.19 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.20 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.21 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.22 = INTEGER: 3
SNMPv2-SMI::enterprises.27514.101.1.23 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.24 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.25 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.26 = INTEGER: 100
SNMPv2-SMI::enterprises.27514.101.1.27 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.28 = INTEGER: 50
SNMPv2-SMI::enterprises.27514.101.1.29 = INTEGER: 5
SNMPv2-SMI::enterprises.27514.101.1.30 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.31 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.32 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.33 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.34 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.35 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.36 = INTEGER: 2
SNMPv2-SMI::enterprises.27514.101.1.37 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.38 = INTEGER: -1
SNMPv2-SMI::enterprises.27514.101.1.39 = Hex-STRING: 00 00 00 00 00 00
SNMPv2-SMI::enterprises.27514.101.1.40 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.41 = INTEGER: 5063
SNMPv2-SMI::enterprises.27514.101.1.42 = INTEGER: 100
SNMPv2-SMI::enterprises.27514.101.1.43 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.44 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.45 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.46 = INTEGER: 255
SNMPv2-SMI::enterprises.27514.101.1.47 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.48 = INTEGER: 1
SNMPv2-SMI::enterprises.27514.101.1.49 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.50 = INTEGER: 0
SNMPv2-SMI::enterprises.27514.101.1.51 = INTEGER: 0
SNMPv2-MIB::sysDescr = STRING: QTECH GuardBox
Error: OID not increasing: SNMPv2-SMI::enterprises.27514.101.1.51
 >= SNMPv2-MIB::sysDescr

Конечно - никакого MIB-файла нет, но он нам и не нужен.


Теперь находим  QNMS в пробной версии, которая видит наше устройство и с помощью сопоставления snmpget/snmpset и оной программы выясняем назначение OID. Получается так.
Но тут есть проблема. OID, который содержит IP устройства - только для чтения. Как использовать устройство в другой подсети, да ещё и в нескольких экземплярах? Que faire?
Коробка открыта, имя мезонина прочитано, GOOGLE FOREVER!
Находим Configuration Tools.Это работает по UDP через порты 48714 и 48715 (WireShark с нами).

Всё - осталось написать свою программу.