Nie można wyświetlić tego widżeta.
Nie można wyświetlić tego widżeta.
Nie można wyświetlić tego widżeta.
Poziom 11, Tropiciel Przestworzy

SNMP lub inna metoda na wyciąganie danych z Funbox 6

Większość firm korzysta z różnych systemów monitorowania urządzeń i systemów - Zabbix, Nagios, etc

 

Urządzenie i system na nim są tak zamknięte, że w zasadzie nie ma żadnej sensownej metody na automatyczne wyciąganie z niego informacji o parametrach połączenia optycznego , stanu połączenia czy uptime urządzenia.

Przydało by się SNMP lub SSH z ograniczonymi uprawnieniami bądź dowolne API.

 

maj w Pomysły

  • 1

    Otwarty

  • 2

    Realizowany

  • 3

    Zrealizowany

Komentarze
Poziom 11, Tropiciel Przestworzy

Nie mam dostępu do Funboxa 6, ale w Funbox 3 da się pewne dane wyciągnąć przez http bez uwierzytelnienia. Odpowiedzi zwracane są w formacie json.

 

 

http://192.168.1.1/sysbus/DeviceInfo?_restDepth=-1

 

 

Tutaj dane na temat połączenia internetowego, wersja pod linuxa:

 

curl --silent "http://192.168.1.1/sysbus/NMC:getWANStatus" --data-raw '{"parameters":{}}' 

 

 

Pojedyncze dane można wyciągnąć z odpowiedzi przez program jq, np. publiczny adres IP:

 

curl --silent "http://192.168.1.1/sysbus/NMC:getWANStatus" --data-raw '{"parameters":{}}' | jq -r .data.IPAddress

 

 
Daj znać czy działa to pod Funbox 6.

maj

Poziom 11, Tropiciel Przestworzy

Łał, faktycznie DeviceInfo działa jako ładny json, choć zwraca mało przydatne rzeczy (MAC, Serial, wersja softu).

 

Pozostałe które byłyby istotne (parametry połączenia optycznego) zwracają już niestety 504-kę:

root@iot:~# curl --silent "http://192.168.1.1/sysbus/NMC:getWANStatus" --data-raw '{"parameters":{}}'
<html><head><title>Gateway Timeout</title></head><body><h1>504 - Gateway Timeout</h1></body></html>

 

root@iot:~# curl --silent "http://192.168.1.1/sysbus/NMC:getWANStatus"
{"error":196618,"description":"Object or parameter not found","info":"NMC:getWANStatus"}

 

Niemniej - dzięki za to co podrzuciłeś!

 

maj

Poziom 11, Tropiciel Przestworzy

A jest dostępna taka strona na Funbox 6, po zalogowaniu: http://192.168.1.1/supportSystemInformationGeneral.html 
Może jest pod innym adresem.

 

Bez-nazwy-1.jpg

maj

Poziom 11, Tropiciel Przestworzy

Nie, zwraca 404.
Mam wrażenie, że odkąd wrzucili nowy soft to zmieniło się prawie wszystko.
Teraz wszystko jest jakby generowane dynamicznie (jakieś JSy?), URL w przegladarce zawsze zostaje na http://192.168.1.1, narzędzia deweloperskie pokazuja tylko że to co w środku wczytywane jest jako iframe.

Niby dotarłem na przykład do http://192.168.1.1/internal/systemInformation/index.html (wlasnie w konsoli, wczytywany jest jako iframe), ale wywołując go curlem dostaję 307-mke

root@iot:~# curl http://192.168.1.1/internal/systemInformation/index.html
<html><head><title>Temporary Redirect</title></head><body><h1>307 - Temporary Redirect</h1><p>This page has moved to <a href="/">/</a></body></html>

Czyli zapewne żeby w ogóle się do tego dobrać, trzeba by zapewnić obsługę logowania, sesji i... kto wie jeszcze czego.

 

maj

Poziom 11, Tropiciel Przestworzy

W narzędziach deweloperskich masz możliwość skopiowania dokładnego żądania dla curla. Później większość nagłówków jak i ciasteczka można z tego zapytania usunąć i sprawdzić czy dostaniesz odpowiedź.

Bez-nazwy-2.jpg

maj

Poziom 11, Tropiciel Przestworzy

Żądanie DeviceInfo?_restDepth=-1 zwraca dużo więcej informacji po zalogowaniu. Ten skrypt działa na Funbox 3. Wymaga jq do parsowania json.
Trzeba wpisać tam poprawne hasło do funboxa. Pewnie na Funbox 6 nie zadziała, jeżeli tak jak piszesz zmienili mocno oprogramowanie.

 

#!/bin/sh
contextID=`curl --silent 'http://192.168.1.1/authenticate?username=admin&password=hasloFunbox' -X 'POST' -c /tmp/cookies | jq -r .data.contextID`
curl -v 'http://192.168.1.1/sysbus/DeviceInfo?_restDepth=-1' -H "X-Context: $contextID" -b /tmp/cookies
rm /tmp/cookies

 

U mnie zwraca takie dane:
json.PNG

maj

Poziom 11, Tropiciel Przestworzy

No niestety, niezależnie przy symuluję logowanie i sesję czy nie DeviceInfo zwraca tyle samo informacji 😞

maj

Poziom 11, Tropiciel Przestworzy

Mniej więcej tak to wygląda na nowym sofcie

 

 

orange.png

maj

Poziom 11, Tropiciel Przestworzy

Tak jak pisałem, nie mam dostępu do Funboxa 6, więc nie pomogę.

maj

Poziom 16, Badacz Przestworzy

Funbox6 ma wystawiony endpoint /ws który zwraca wszystkie dane wyświetlane w webowym GUI (i prawdopodobnie umożliwia też zarządzanie funboxem czyli zmianę ustawień ale tego nie testowałem).

 

Najpierw trzeba się autoryzować podając w requeście hasło i pobrać tzw contextID:

 

 

curl 'http://192.168.1.1/ws' \
  -H 'Authorization: X-Sah-Login' \
  --data-raw '{"service":"sah.Device.Information","method":"createContext","parameters":{"applicationName":"webui","username":"admin","password":"TWOJE_HASLO_DO_GUI_FUNBOXA"}}' \
  --insecure

 

 

 Response i pożądany contextID:

TheMagPie_0-1716244742194.png

 

Teraz możemy swobodnie odpytywać o konkretne dane np. informacje o WAN podając w headerze contextID (należy go podać w 2 miejscach):

 

 

curl 'http://192.168.1.1/ws' \
  -H 'Authorization: X-Sah TUTAJ_PODAJ_SWOJ_CONTEXTID' \
  -H 'Content-Type: application/x-sah-ws-4-call+json' \
  -H 'X-Context: TUTAJ_PODAJ_SWOJ_CONTEXTID' \
  --data-raw '{"service":"NMC","method":"getWANStatus","parameters":{}}' \
  --insecure

 

 

 Response:

TheMagPie_1-1716245196866.png

 

EDIT: screeny są z Postmana, natomiast jak odpaliłem curl ręcznie to danych czasem było trochę mniej niż w Postmanie nie mam pojęcia czemu

maj

Poziom 11, Tropiciel Przestworzy

Rzeczywiście - w ten sposób (2x contex) da sie zautoryzować przez CURLa, natomiast jedyne co mi się udało wyciągnac to podstawowe informacje takie jak IP czy status połączenia.
Poległem na wyciągnieciu istotnych danych (siła sygnału optycznego, czas trwania sesji PPPoE itp) 😞


Niewykluczone, że wynika to z mojego braku doświadczenia z analizą działania webgui i budową tego typu requestów. Podtrzymuję to co napisałem - te parametry powinny być we w miarę łatwy sposób dostępne do wyciągniecia z FB6 dla każdego zainteresowanego.

maj

Poziom 20, Odkrywca Przestworzy

Takie rzeczy po http? A ze względów bezpieczeństwa blokują zmianę DNS. Techniczna patologia. SNMP read only powinno być dostępne do skonfigurowania, np. w wersji 3 z wymuszonymi poświadczeniami i tyle.

czerwiec