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 9, Zwiadowca 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.

 

4 tygodni(e) temu 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.

3 tygodni(e) temu

Poziom 9, Zwiadowca 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ś!

 

3 tygodni(e) temu

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

3 tygodni(e) temu

Poziom 9, Zwiadowca 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.

 

3 tygodni(e) temu

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

3 tygodni(e) temu

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

3 tygodni(e) temu

Poziom 9, Zwiadowca Przestworzy

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

3 tygodni(e) temu

Poziom 9, Zwiadowca Przestworzy

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

 

 

orange.png

3 tygodni(e) temu

Poziom 11, Tropiciel Przestworzy

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

3 tygodni(e) temu

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

2 tygodni(e) temu

Poziom 9, Zwiadowca 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.

2 tygodni(e) temu