Forum bloga technologicznego JDtech.pl i użytkowników bezpłatnego dostępu do internetu Aero2

Pełna wersja: HiLink API dla urządzeń Huawei
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3
Działa na nowym fw.

Ładny wsadzik z który z tego co widzę powinien działać poprawnie również na starym fw.
Dzięki za info, bardzo przydatna sprawa, dzięki tobie zmieniłem IP modemu. Ale niestety chyba chciałem za wiele. Próbując wyłączyć pytanie o pin wpisałem następujące polecenie i od tej chwili modem nie działa (logicznie wydaje się być wporządku, ale przestał działać dhcp oraz interfejs http, no i nie mam internetu). Wiesz może jak wycofać tę zmianę?
Kod:
curl -X POST -d "<request><OperateType>2</OperateType><CurrentPin>0000</CurrentPin><NewPin>0000</NewPin><PukCode></PukCode></request>" http://192.168.8.1/api/dhcp/settings -H "Content-Type: text/xml"
Ostatni post do wyłączenia do osobnego wątku. Temat wałkowany wiele razy. Wątpię, żeby to żądanie ubiło DHCP - raczej poprzednie, te dookoła DHCP - większość odradza zmiany IP w tym zakresie w routerach/HiLinkach Huawei i ZTE.
Ustaw sobie IP ręcznie na takie, żeby dało się kontaktować z routerem i jak uda się zrobić PING, podłącz się i przywróć ustawienia takie, jak dała fabryka i nie ruszaj DHCP Smile
Witam Panowie chciałem sobie zrobić bramkę sms i napotkałem na opór nie chce mi działać ;( Może ktoś bardziej obeznany w php znajdzie gdzie jest problem ...

Kod PHP:
<?php
error_reporting
(E_ALL);
$url = ('http://192.168.8.1/api/webserver/token');
$ch curl_init();
curl_setopt($chCURLOPT_URL,$url);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_HEADER,0);
$curl_scraped_page curl_exec($ch);
curl_close($ch);


preg_match('#<token>(.+?)</token>#si'$curl_scraped_page$matches);
$token = ($matches[1]);

$url = ("http://192.168.8.1/api/sms/send-sms");

$ch curl_init();
curl_setopt($chCURLOPT_URL,$url);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_HTTPHEADER, array("__RequestVerificationToken: ".$token));
curl_setopt($chCURLOPT_POSTFIELDS, ("<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>111222333</Phone></Phones><Sca></Sca><Content>Ala ma kota</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>");
curl_setopt($chCURLOPT_RETURNTRANSFER1));
curl_setopt($chCURLOPT_HEADER,0);
$curl_scraped_page curl_exec($ch);
curl_close($ch);


print_r ($curl_scraped_page);



?>
Wiesz, nie przesadzaj, że na forum telko będziemy ci debugować kod Smile
Napisz co przetestowałeś i co nie działa. Bo podstawowe testy typu co zwrócił CURL (czy właściwy token), a potem co się dzieje jak rozumiem zrobiłeś?
No i napisz, na jakim sprzęcie i z jakim SIMem to testujesz.
Kartę SIM mam z play modem hilink:
Device name: E3372
Hardware version: CL1E3372SM Ver.A
Software version: 22.286.53.01.161
Web UI version: 16.100.05.02.161

Skrypt php sam token pobiera prawidłowo. Przetestowałem go ręcznie przez putty łącząc się z RasberryPI i tam w konsoli wbiłem

Kod:
curl "http://192.168.8.1/api/sms/send-sms" -H "__RequestVerificationToken: 695328588" --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>xxxxxxxxx</Phone></Phones><Sca></Sca><Content>Ala ma kota</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"

Oczywiście wstawiając prawidłowy token. I sms dochodzą bez niczego. Ale jak to chcę załatwić skryptem w php to niestety coś nie działa i nie wiem co... Po prostu mam biały ekran i nic się nie dzieje. Żadnego komunikatu. Brak pomysłu co może być nie tak i jak to sprawdzić i dlatego mój post na tym forum.
No to szkoła debugowania:
Na każdym etapie wyświetlaj sobie za pomocą "echo ('zmienna1: '.$zmienna.'<br />')" zawartość krytycznych zmiennych i patrz, gdzie wyniki nagle stają się bez sensu.
No i zweryfikuj, czy na pewno rozszerzenie curl do php masz zainstalowane, bo nawet tego nie sprawdzasz w programie.
Oki odpaliłem to pod wamp'em i znalazłem co jest nie tak... nawiasy Wink w CURLOPT_POSTFIELDS brakuje jednego zamykającego a w CURLOPT_RETURNTRANSFER jeden za dużo Wink
Używaj do edycji czegoś, co formatuje kod kolorami - choćby Notepad++
Akurat Notepad++ używam ale już oczopląsów dostawałem bo nie wiedziałem co nie trybi... a w api nie mogłem zerknąć czy coś odbiera etc... I właśnie tak mnie po Twoim poście ruszyło debuger Wink i zainstalowałem sobie wampa który wysypuje się zawsze z błędami wszelakimi jeśli gdzieś jest kod niepoprawnie napisany. Także dzięki za podpowiedzi Wink

A tak już wracając do tematu czy można teoretycznie wysłać mms za pomocą tego api hilink z dongle ?? Wiadomo że trzeba by było zdefinować apn dla mms i resztę ustawień ale czy jest możliwość ?? Wink
Aż tak dokładnie na pamięć API nie znam.
Ale jeżeli nawiążesz połączenie normalne przez APN od MMSów i pogadasz z właściwymi serwerami w odpowiedni sposób, to bez problemu MMSa wyślesz, bo tak na prawdę to tylko kwestia komunikacji za pomocą odpowiedniego protokołu (coś na kształt HTTP i kodowania MIME).
Są jakieś nawet gotowe zabawki do tego: http://www.hellkvist.org/software/#MMSLIB
A jaką komendą mogę sprawdzić ID BTS-a z którym jestem aktualnie połączony??
poszukaj "Parametry sygnału (2)" na początku wątku
Witam,
ktoś próbował zalogować się do routera z najnowszym softem wymagającym użytkowania tokena, oraz podania hasła w wersji 4 czyli:
Kod:
base64encode(SHA256(name + base64encode(SHA256($('#password').val())) + token));
router cały czas odpowiada błędem 125002 lub 125003.
W pierwszym poście jest napisane.

"Niektóre wersje oprogramowania mogą wymagać podania aktualnego tokena do weryfikacji sesji (nie znalazłem żadnych informacji kiedy się token zmienia, token można wyłączyć, edytując pliki konfiguracyjne)"

Czy są na forum informacje jaki plik i w jaki sposób należy edytować aby wyłączyć sprawdzanie tokena?
Gotowych nie ma - token raczej nie przeszkadza specjalnie, jak możesz oprogramować końcówkę korzystającą z API. A jak musisz grzebać w plikach (co jest mało bezpiecznie - można uszkodzić sobie WebUI, więc trzeba mieć gotowy pakiet do jego ponownego sflashowania) to odpowiedni fragment kodu sprawdzający token znajdziesz jak wywalić.
Witam

Aby przetestować wysyłanie USSD pod Windows 10 przez Huawei B535-232, policzyłem ile znaków ma SesInfo i TokInfo, oraz gdzie się zaczynają.
Wykonałem skrypt
Kod:
curl -X GET http://192.168.8.1/api/webserver/SesTokInfo > wynik
set /p kody= < wynik
set ses=%kody:~57,128%
set tok=%kody:~204,32%
set ses=Cookie: %ses%
set tok=__RequestVerificationToken: %tok%
curl -X POST -d "<request><content>*121#</content></request>" http://192.168.8.1/api/ussd/send -H "%ses%" -H "%tok%" -H "Content-Type: text/xml"
ale zwraca błąd 100003, czyli brak uprawnień.
Co trzeba zrobić aby przy wykonywaniu takich skryptów mieć uprawnienia?

Wprawdzie nie ma na początku tego wątku (instrukcji API) specyfikacji logowania w module User, ale pewnie to wygląda tak jak poniżej. W powyższym skrypcie zastąpiłem ostatnie polecenie tym:
Kod:
curl -X POST -d "<request><Username>admin</Username><Password>HASLO</Password></request>" http://192.168.8.1/api/user/login -H "%ses%" -H "%tok%" -H "Content-Type: text/xml"
Jednak zwraca błąd 108006 (nieprawidłowa nazwa użytkownika lub hasło), a HASŁO zakodowałem base64.
Czy ktoś wie co jest nie tak?
Możesz sam zobaczyć co się dzieje (jakie REST requesty idą) za pomocą Inspectora, czy tam "Zbadaj" w przeglądarce. Odpal stronę modemu, uruchom inspectora, idź na kartę Network i tamże wyłącz opcję resetowania listy żądań przy każdej zmianie strony (w Firefox: śrubka->Trwałe dzienniki).
I znajdź żądanie, które pojawia się po wysłaniu USSD. Zobaczysz sobie nagłówki i wszystko inne.
Możesz też spróbować poszukać, może ktoś zrobił kolekcję do Postmana i wszystko sprawdzisz samodzielnie. A może sam zrobisz taką kolekcję? Smile
Bardzo dziękuję.
Próbowałem coś zrobić z Debugerem i znaleźć miejsce gdzie hasło jest kodowane i czy wygląda tak samo jak zakodowałem base64, ale nie udało się. Nie mogę się połapać jak to krokowo wykonywać i podglądać wartości zmiennych.

Natomiast z tym rejestrowaniem listy żądań, to ciekawe. Bardzo dziękuję. Na razie sprawdziłem co się dzieje przy logowaniu na router, ale chyba hasło nie jest wysyłane.
Przy logowaniu są tylko trzy żądania z POST z trzech plików:
  1. privacynoticeinfo
    Kod:
    <?xml version="1.0" encoding="UTF-8"?><request><language>pl_pl</language></request>
  2. challenge_login
    Kod:
    <?xml version="1.0" encoding="UTF-8"?><request><username>admin</username><firstnonce>[tu jakiś kod]</firstnonce><mode>1</mode></request>
  3. authentication_login
    Kod:
    <?xml version="1.0" encoding="UTF-8"?><request><clientproof>[tu jakiś inny kod]</clientproof><finalnonce>[tu jeszcze jeden kod]</finalnonce></request>
Przez przeglądarkę mogę wysłać chyba tylko http://192.168.8.1/api/ussd/send , bo całego żądania jakie jest w skrypcie przy curl, to nie wiem jak.
Na GitHub chyba są przedstawione funkcje używane do autoryzacji, albo bardzo zbliżone.
Trochę to skomplikowane.
Stron: 1 2 3
Przekierowanie