
HiLink API Huawei - Dyskusja
Moderator: Moderatorzy
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja

- YaHooo
- Guru bezprzewodowy
- Posty: 17761
- Rejestracja: 2008-01-02, 14:38
- Lokalizacja: Białystok
Re: HiLink API Huawei - Dyskusja


> FAQ < > Limitowanie TTL < > Filtrowanie MAC < > Limit - miniFAQ <
> Udostępnianie połączenia internetowego iPlus w trybie Ad-hoc < > Połączenie Ad-hoc <
(iPlus7GB-30%) + (Sierra Wireless AC881) + (HP Compaq nx7300) + (200m od BTS'a) = (600kB/s)
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja

-
- Początkujący użytkownik forum
- Posty: 11
- Rejestracja: 2015-01-30, 06:17
- Lokalizacja: Poznań
Re: HiLink API Huawei - Dyskusja
Do wersji 16 klasa api w pythonie:VipeRsan pisze:Spokojnie będą zmianyA raczej dodatki bo wraz z WebUI 17 m.in. API tokena się zmienił, a z tego co wstępnie widziałem to jest też moduł bluetooth.
API
Działa na wszystkim, na czym można Pythona odpalić

Wczesne stadium - wymaga polerki

Aplikacja (AppIndicator dla Unity) jeszcze w powijakach ..... Jak cza spozwoli to wrzucę coś działającego
Pozdrawiam
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja


- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja

EDIT:
Ok doczytałem wg rusta nie działa na fw od 22.491.03.*
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
-
- Początkujący użytkownik forum
- Posty: 1
- Rejestracja: 2015-02-26, 13:53
- Lokalizacja: Rzeszów
Re: HiLink API Huawei - Dyskusja
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
Taka drobna próba. Pisane w Lazarusie (chciałem coś prostego, darmowego i nie mulącego całego systemu jak Visualja.michal pisze:Patrząc na to wszystko rozumiem, że nie powinno być problemu z napisaniem aplikacji dla modemów hilink na Windowsa, która w trayu pokazywałaby zasięg sieci, informacje czy są jakieś wiadomości; ewentualnie na pasku adresu dokładne parametry połączenia, LAC, CID, itd?



Program pokazuje dymek z parametrami sygnału sieci LTE tj: RSSI, RSRP, RSRQ, SINR wraz ze wskaźnikami jakości w postaci bargrafu (zna ktoś jakiś fajny komponent tego typu z możliwością ustawienia 4 kolorów?), PCI oraz CellID. Tak więc nie nadaje się do połączeń 3G (może jedynie RSSI będzie coś wtedy pokazywało)

Wszystkie ustawienia są "z ręki" w pliku ini. Plik ten też trzeba wyedytować jeżeli ma się modem pod adresem innym niż 192.168.8.1.
Chciałem dorobić jeszcze przyciski do restartu modemu i rozłączania/nawiązywania połączenia, ale coś zaczęło się sypać


-
- *Mistrz bezprzewodowy*
- Posty: 22036
- Rejestracja: 2006-08-14, 17:59
- Lokalizacja: Polska
Re: HiLink API Huawei - Dyskusja

Niestety modem mam już od dawna w opcji nie-hilink wsadzony do routera więc osobiście nie mam jak sprawdzić aplikacji.
-
- Stary wyga bezprzewodowy
- Posty: 890
- Rejestracja: 2011-11-02, 13:50
- Lokalizacja: Łódzkie
Re: HiLink API Huawei - Dyskusja
-
- Specjalista bezprzewodowy-junior
- Posty: 292
- Rejestracja: 2012-03-24, 14:00
- Lokalizacja: inąd
Re: HiLink API Huawei - Dyskusja
Przełączanie modemu HiLink w zwykły tryb (port diag i pc ui)
Jeżeli modem po wejściu na poniższe adresy nie zmienia trybu pracy i nie pokazują się nowe urządzenia
Kod: Zaznacz cały
project mode:
http://192.168.1.1/html/switchProjectMode.html
http://192.168.8.1/html/switchProjectMode.html
debug mode:
http://192.168.1.1/html/switchDebugMode.html
http://192.168.8.1/html/switchDebugMode.html
Instrukcja:
- zacznij od instalacji sterowników stąd: http://www.bez-kabli.pl/viewtopic.php?p=501323#501323
- instalujemy Mobile Broadband HL Service (ta usługa przełącza HiLinka w systemach windows w tryb karty sieciowej RNDIS) znajduje się na napędzie instalowanym przez modem lub link: http://www.mediafire.com/download/6n64k ... BrServ.zip
- Pobieramy skrypt: http://www.mediafire.com/download/c3cfv ... itcher.zip (lub z załącznika)
- Uruchamiamy plik switcher.bat
- Podłączamy modem i czekamy aż otworzy się przeglądarka. Zapamiętujemy adres modemu.
- Wracamy do skryptu i wybieramy adres modem (wpisujemy liczbę 1 dla 192.168.1.1 lub 2 dla 192.168.8.1). Enter.
- Wybieramy tryb przełączenia (liczba 1 lub 2):
1 - DEVICE_MODE_PROJECT_MODE
2 - DEVICE_MODE_DEBUG_MODE
Enter.
Enter jeżeli widać token (ciąg liczb) - Zainstalują się nowe urządzenia (niżej przykład dla project mode):
Kod: Zaznacz cały
FC - PC UI Interface - USB\VID_12D1&PID_1442&MI_00 FC - Application Interface - USB\VID_12D1&PID_1442&MI_01
Trzeba wysłać polcenie AT na port com urządzenia o nazwie :
Kod: Zaznacz cały
AT^U2DIAG=0
Kod: Zaznacz cały
AT^U2DIAG=119
W trybie hilink debug można wgrywać oprogramowanie od zwykłego modemu (TCPU) oraz dasboard (UTPS) do obsługi zwykłego modemu. Potrzebne będą sterowniki dostępne wyżej.
źródła:
wget: http://users.ugent.be/~bpuype/wget/
informacje o trybach pracy modemów HiLink: http://tjworld.net/wiki/Huawei/E3131UsbHspa
api webui hilink: http://forum.jdtech.pl/Watek-hilink-api ... zen-huawei
przełączanie w tryb modemu: http://forum.jdtech.pl/Watek-huawei-e31 ... u-na-stale
modyfikacja sterowników: http://4pda.ru/forum/index.php?showtopi ... ry28148805
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
VipeRsan pisze:[ Dodano: 2015-01-30, 10:37 ]
EDIT
Hmmm... ciekawe. Na nowszym E3372h nie działają ponoć API. Ruski rozwiązali to w sposób dość prosty, ale nie do końca zrozumiały. Wysyłają requesty w których odwołują się do funkcji JavaScriptu i ich zmiennymi do adresu 192.168.8.1/CGI.
Request ma budowę (na przykłądzie przełącznika modemu w tryb debug):Plik wsadowy w Windowsie wygląda tak:Kod: Zaznacz cały
<?xml version="1.0" encoding="UTF-8" ?> <api version="1.0"> <header> <function>switchMode</function> </header> <body> <request> <switchType>0</switchType> </request> </body> </api>
W przekazywanym pliku sw_debug_mode.xml jest powyżej pokazany request.Kod: Zaznacz cały
@curl -X POST -d @sw_debug_mode.xml http://192.168.8.1/CGI @pause
Z jednej strony duże uproszczenie (nie musimy się martwić o tokeny bo funkcje JS same o niego zadbają), ale z drugiej strony nie wiem jeszcze jak pobrać (GET) parametry
EDIT:
Ok po koślawej rozmowie z rustem i forthem wycjhodzi na to że CGI obsługuje tylko switchMode, a wiec przełączanie w tryb debug
- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Re: HiLink API Huawei - Dyskusja

- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja

Droga trudniejsza... pfff nie testowana, ale o ile dobrze zrozumiałem to co jest na 4pda dla modemu E3372s (dla innych modemów może być inaczej, a na pewno jest inaczej dla E3372h) polega na:
!!!UWAGA!!!: metoda nie testowana i nie odpowiadam, jak modem po zastosowaniu niniejszej instrukcji zostanie cegiełką!!!
- Odblokować powłokę linuxową "A" (istnieje jeszcze powłoka "C" systemu VxWorks) za pomocą:
Gdzie hasło to kod wygenerowany algorytmem 201 z odwrotnego IMEI (wpisanego od ostatniej do pierwszej cyfry). Powinno to odblokować 6 portów szeregowych w linuxie widzianych jako ttyUSB0 do ttyUSB5, gdzie 0 - to konsola AT, 1 - konsola VxWorks, 2 - konsola Linuxa, 5 - log DSP(?)
Kod: Zaznacz cały
AT^SPWORD="hasło" AT^SHELL=2 AT^RESET
Do tych komend może być potrzebne odblokowane najpierw zaawansowanych funkcji AT za pomocą:gdzie hasło1 to kod wygenerowany za pomocą algorytmu 201 z IMEI.Kod: Zaznacz cały
AT^DATALOCK="hasło1"
- W konsoli Linuxa odpalamy ADB:
Kod: Zaznacz cały
/sbin/adbd
- Teraz możemy połaczyć się z modemem po ADB:
Kod: Zaznacz cały
adb connect 192.168.8.1 adb remount adb shell
- I edytujemy plik /system/etc/autorun.sh robimy to za pomocą edytora vi uruchamiając go w sposób:
i dodajemy na końcu pliku:
Kod: Zaznacz cały
busybox vi /etc/autorun.sh
lub nie znajac vi możemy użyć:Kod: Zaznacz cały
/sbin/adbd &
W tym miejscu można również od razu uruchomić demona telnet dodając do autoruna:Kod: Zaznacz cały
echo "/sbin/adbd &" >>/system/etc/autorun.sh
Kod: Zaznacz cały
busybox telnetd -l /system/bin/sh
Kod: Zaznacz cały
mount
Kod: Zaznacz cały
rootfs / rootfs rw,relatime 0 0
/dev/block/mtdblock12 /modem_log yaffs2 rw,relatime 0 0
/dev/block/mtdblock17 /online yaffs2 rw,relatime 0 0
/dev/block/mtdblock3 /mnvm2:0 yaffs2 rw,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock15 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock16 /data yaffs2 rw,relatime 0 0
/dev/block/mtdblock13 /app yaffs2 ro,relatime 0 0
/dev/block/mtdblock14 /app/webroot jffs2 ro,relatime 0 0
/dev/block/mtdblock18 /root yaffs2 rw,relatime 0 0
Robimy więc przemontowanie do zapisu:
Kod: Zaznacz cały
mount -o remount,rw /dev/block/mtdblock15 /system
Kod: Zaznacz cały
mount -o remount,ro /dev/block/mtdblock15 /system
Wpisania pierwszych komend AT trzeba modem przełączyć w tryb debug za pomocą wejścia pod adres modemu: http://192.168.8.1/html/switchDebugMode.html
Co również odblokuje parę portów szeregowych, z czego jeden będzie portem AT.
Oczywiście instrukcja jest dla modemu E3372s typu HiLink.
-
- Stały użytkownik forum
- Posty: 92
- Rejestracja: 2014-06-12, 06:30
- Lokalizacja: G-cko
Re: HiLink API Huawei - Dyskusja
czy skrypty JS przy korzystaniu z API HiLink nie wysyłają po cichu referer URL (adresu strony, która wykonuje zapytanie)?
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
-
- Stały użytkownik forum
- Posty: 92
- Rejestracja: 2014-06-12, 06:30
- Lokalizacja: G-cko
Re: HiLink API Huawei - Dyskusja
Kod: Zaznacz cały
wget --referer http://adres_routera/ścieżka_strony_wywołującej --user Nazwa_Użytkownika --password Hasło_Uzytkownika http://adres_routera/ścieżka_polecenia
"http://adres_routera/ścieżka_strony_wywołującej" -pełny adres strony, na której nastąpiło np. kliknięcie na przycisk/łącze połącz/rozłącz/reset.
Jeśli już kolega rozpisał API HiLink-ów, dobrze by było zerknąć czy właśnie dodatkowo nie lecą do modemu jakieś adresy referer z JS w nagłówku zapytania (może tu tkwić problem z uzyskaniem tokena z konsoli w nowszych wersjach API).
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
Niestety nie mam modemu który używa nowszego oprogramowania (chodzi o firmware, a nie WebUI), więc nie sprawdzę co jest problemem.
Zresztą poniżej masz kod JS z API WebUI w wersji 17 pobierający dane:
Kod: Zaznacz cały
// urlstr : URL of the Restful interface.
// callback_func : Callback function to handle response, this callback function
// have one parameter
// callback_func($xml) - $xml : a jQuery XML object which is successfully get
// from getAjaxData.
// options.sync
// options.timout
// options.errorCB
function getAjaxData(urlstr, callback_func, options) {
var myurl = AJAX_HEADER + urlstr + AJAX_TAIL;
var isAsync = true;
var nTimeout = AJAX_TIMEOUT;
var errorCallback = null;
if (options) {
if (options.sync) {
isAsync = (options.sync == true) ? false : true;
}
if (options.timeout) {
nTimeout = parseInt(options.timeout, 10);
if (isNaN(nTimeout)) {
nTimeout = AJAX_TIMEOUT;
}
}
errorCallback = options.errorCB;
}
var headers = {};
if(!($.isArray(g_requestVerificationToken))) {
headers['__RequestVerificationToken'] = g_requestVerificationToken;
}
$.ajax({
async: isAsync,
headers: headers,
//cache: false,
type: 'GET',
timeout: nTimeout,
url: myurl,
//dataType: ($.browser.msie) ? "text" : "xml",
error: function(XMLHttpRequest, textStatus) {
try {
if (jQuery.isFunction(errorCallback)) {
errorCallback(XMLHttpRequest, textStatus);
}
log.error('MAIN : getAjaxData(' + myurl + ') error.');
log.error('MAIN : XMLHttpRequest.readyState = ' + XMLHttpRequest.readyState);
log.error('MAIN : XMLHttpRequest.status = ' + XMLHttpRequest.status);
log.error('MAIN : textStatus ' + textStatus);
} catch (exception) {
log.error(exception);
}
},
success: function(data) {
log.debug('MAIN : getAjaxData(' + myurl + ') sucess.');
log.trace(data);
var xml;
if (typeof data == 'string' || typeof data == 'number') {
if((-1 != this.url.indexOf('/api/ussd/get') )&&( -1 != data.indexOf("content"))) {
data = smsContentDeleteWrongChar(data);
}
if (!window.ActiveXObject) {
var parser = new DOMParser();
xml = parser.parseFromString(data, 'text/xml');
} else {
//IE
xml = new ActiveXObject('Microsoft.XMLDOM');
xml.async = false;
xml.loadXML(data);
}
} else {
xml = data;
}
var ret = xml2object($(xml));
if('error' == ret.type) {
if(ERROR_WRONG_SESSION_TOKEN == ret.error.code) {
log.error('Main: getajax'+ this.url +'session token error');
gotoPageWithoutHistory(HOME_PAGE_URL);
return;
}
if(ERROR_WRONG_SESSION == ret.error.code) {
log.error('Main: getajax'+ this.url +'session error');
gotoPageWithoutHistory(HOME_PAGE_URL);
return;
}
}
if('error' == ret.type && ERROR_WRONG_TOKEN == ret.error.code) {
getAjaxToken();
getAjaxData(urlstr, callback_func, options);
} else if (typeof callback_func == 'function') {
callback_func($(xml));
} else {
log.error('callback_func is undefined or not a function');
}
}
});
}
Kod: Zaznacz cały
// urlstr : URL of the Restful interface.
// xml: xml string to be submit to server.
// callback_func : Callback function to handle response, this callback function
// have one parameter
// callback_func($xml) - $xml : a jQuery XML object which is successfully get
// from getAjaxData.
// options.sync
// options.timout
// options.errorCB
function saveAjaxData(urlstr, xmlDate, callback_func, options) {
var myurl = AJAX_HEADER + urlstr + AJAX_TAIL;
var isAsync = true;
var nTimeout = AJAX_TIMEOUT;
var errorCallback = null;
if (options) {
if (options.sync) {
isAsync = (options.sync == true) ? false : true;
}
if (options.timeout) {
nTimeout = parseInt(options.timeout, 10);
if (isNaN(nTimeout)) {
nTimeout = AJAX_TIMEOUT;
}
}
errorCallback = options.errorCB;
}
var headers = {};
if($.isArray(g_requestVerificationToken)) {
if(g_requestVerificationToken.length > 0) {
headers['__RequestVerificationToken'] = g_requestVerificationToken[0];
g_requestVerificationToken.splice(0, 1);
} else {
setTimeout( function () {
saveAjaxData(urlstr, xmlDate, callback_func, options);
}, 50);
return;
}
} else {
headers['__RequestVerificationToken'] = g_requestVerificationToken;
}
$.ajax({
async: isAsync,
headers: headers,
//cache: false,
type: 'POST',
timeout: nTimeout,
url: myurl,
// dataType: ($.browser.msie) ? "text" : "xml",
data: xmlDate,
error: function(XMLHttpRequest, textStatus) {
try {
if("12030" == XMLHttpRequest.status || "12031" == XMLHttpRequest.status || "12019" == XMLHttpRequest.status || "400" == XMLHttpRequest.status) {
saveAjaxData(urlstr, xmlDate, callback_func, options);
return;
} else if(jQuery.isFunction(errorCallback)) {
errorCallback(XMLHttpRequest, textStatus);
}
log.error('MAIN : saveAjaxData(' + myurl + ') error.');
log.error('MAIN : XMLHttpRequest.readyState = ' + XMLHttpRequest.readyState);
log.error('MAIN : XMLHttpRequest.status = ' + XMLHttpRequest.status);
log.error('MAIN : textStatus' + textStatus);
} catch (exception) {
log.error(exception);
}
},
success: function(data) {
log.debug('MAIN : saveAjaxData(' + myurl + ') success.');
log.trace(data);
var xml;
if (typeof data == 'string') {
if (-1 != this.url.indexOf('/api/sms/sms-list') && -1 != data.indexOf('Messages')) {
data = smsContentDeleteWrongChar(data);
}
if (!window.ActiveXObject) {
var parser = new DOMParser();
xml = parser.parseFromString(data, 'text/xml');
} else {
//IE
xml = new ActiveXObject('Microsoft.XMLDOM');
xml.async = false;
xml.loadXML(data);
}
} else {
xml = data;
}
var xml_ret = xml2object($(xml));
if(typeof xml_ret.error != 'undefined' && -1 == this.url.indexOf('/api/user/session')) {
if(xml_ret.error.code == ERROR_SYSTEM_NO_RIGHTS && current_href != "home") {
gotoPageWithoutHistory(HOME_PAGE_URL);
return;
}
if(ERROR_VOICE_BUSY == xml_ret.error.code) {
gotoPageWithoutHistory(VOICE_BUSY_URL);
return;
}
if(ERROR_WRONG_TOKEN == xml_ret.error.code) {
getAjaxToken();
saveAjaxData(urlstr, xmlDate, callback_func, options);
return;
}
if(ERROR_WRONG_SESSION_TOKEN == xml_ret.error.code) {
log.error('Main: saveAjaxDate'+ this.url +'session token error');
gotoPageWithoutHistory(HOME_PAGE_URL);
return;
}
if(ERROR_WRONG_SESSION == xml_ret.error.code) {
log.error('Main: saveAjaxDate'+ this.url +'session error');
gotoPageWithoutHistory(HOME_PAGE_URL);
return;
}
} else if(isAjaxReturnOK(xml_ret) && -1 != this.url.indexOf('/api/user/login')) {
log.debug('Main: login success, empty token list');
if($.isArray(g_requestVerificationToken)) {
g_requestVerificationToken = [];
}
}
if (typeof callback_func == 'function') {
callback_func($(xml));
} else {
log.error('callback_func is undefined or not a function');
}
},
complete: function(XMLHttpRequest, textStatus) {
var headers = XMLHttpRequest.getAllResponseHeaders();
if(headers.indexOf('__RequestVerificationTokenone') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationTokenone'));
if(headers.indexOf('__RequestVerificationTokentwo') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationTokentwo'));
}
} else if(headers.indexOf('__requestverificationtokenone') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtokenone'));
if(headers.indexOf('__requestverificationtokentwo') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtokentwo'));
}
} else if(headers.indexOf('__RequestVerificationToken') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationToken'));
} else if(headers.indexOf('__requestverificationtoken') > 0) {
g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtoken'));
} else {
log.error('MAIN: saveAjaxData can not get response token');
}
}
});
}
Kod: Zaznacz cały
function getAjaxToken() {
var meta = $("meta[name=csrf_token]");
var i = 0;
if(meta.length > 0) {
g_requestVerificationToken = [];
for(i; i < meta.length; i++) {
g_requestVerificationToken.push(meta[i].content);
}
} else {
getAjaxData('api/webserver/token', function($xml) {
var ret = xml2object($xml);
if ('response' == ret.type) {
g_requestVerificationToken = ret.response.token;
}
}, {
sync: true
});
}
}
Kod: Zaznacz cały
function switch_mode(value)
{
var request = {
mode: value
};
var xmlstr = object2xml("request", request);
saveAjaxData("api/device/mode", xmlstr, function($xml){
var ret = xml2object($xml);
if (isAjaxReturnOK(ret))
{
closeWindow();
}
});
}
Ja tu nigdzie nie widzę potrzeby referera, ale mogę się mylić tym bardziej, że nie zagłębiałem się w dokumentację jquery.
CGI jest zaimplementowane, ale da się wykorzystać tylko jedną funkcję switch_mode, gdzie wykorzystywana jest powyższa funkcja Send, która jak widać sama troszczy się o token.
-
- Stały użytkownik forum
- Posty: 92
- Rejestracja: 2014-06-12, 06:30
- Lokalizacja: G-cko
Re: HiLink API Huawei - Dyskusja
1) ciekawe co zawiera zmienna: AJAX_HEADER
2) ciekawe z czym się je tokeny :__RequestVerificationTokenone i __RequestVerificationTokentwo
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
Nic ciekawego. Zdefiniowana jest jako:penknife pisze:czytając powyższy kod:
1) ciekawe co zawiera zmienna: AJAX_HEADER
Kod: Zaznacz cały
var AJAX_HEADER = '../';
Najstarsi górale nie wiedząpenknife pisze:2) ciekawe z czym się je tokeny :__RequestVerificationTokenone i __RequestVerificationTokentwo

Z tego co udało mi się zorientować pobranie tokena na nowym oprogramowaniu wskazuje na nowy błąd nr 125002, która to wartość wskazuje na zmienną ERROR_WRONG_SESSION co wskazywałoby znowu pfff... utratę logowania (przynajmniej jedynie co i się kojarzy to api/user/session, ale tego nie sprawdzi na starszym oprogramowaniu)? I jeśli tak to jaki miałby być ten login? Na pewno część tego nowego API to /api/user/login, ale na razie nie zagłębiałem się aż tak bardzo w zmiany. Może kiedyś jak znajdę trochę więcej wolnego czasu

Kolejną nową zmienną błędu nr 125003 jest ERROR_WRONG_SESSION_TOKEN... ciekawe czym się to miałoby różnić od błędu nr 125001 - ERROR_WRONG_TOKEN.
-
- Stały użytkownik forum
- Posty: 92
- Rejestracja: 2014-06-12, 06:30
- Lokalizacja: G-cko
Re: HiLink API Huawei - Dyskusja
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
-
- Początkujący użytkownik forum
- Posty: 16
- Rejestracja: 2009-10-27, 20:00
- Lokalizacja: szczecin
Re: HiLink API Huawei - Dyskusja
Jak wygenerować kod algorytmem 201?
ja akurat bawie się modemem e8278s-602, ale zasada taka sama pewnie jak tu.
Ogólnie chcę uruchomić ussd. uruchomiłem funkcje typu diagnostyka, zapisywanie configa, język, ale niestety ussd nie jest w stanie wysłać zapytania,każde z błędem. Operuje na firmwarze z otwartym juz telnetem, przerobionym przez rosjan,ale chciałbym spróbować na firmwarze i webui od anglikow. Może tam jest mniej namieszane...
Chyba ,ze ktoś wie jak dobrać się do firmware , tak jak robią to Rosjanie.
edit:
czy to nie przez przypadek nowy algorytm dla huawei, tylko ,ze imei wpisujemy od konca ?
- VipeRsan
- Specjalista bezprzewodowy-junior
- Posty: 174
- Rejestracja: 2014-11-19, 14:24
- Lokalizacja: Tarnów
Re: HiLink API Huawei - Dyskusja
Co do algorytmu v201 to kalkulator stworzył forth32@4pda ew na moim dropie.
v201 z odwrotnego IMEI (wpisanego od końca) służy w E3372s do odblokowania konsoli A. v201 z normalnie wpisanego IMEI służy w E3372s do odblokowania zaawansowanych komend AT.
-
- Początkujący użytkownik forum
- Posty: 16
- Rejestracja: 2009-10-27, 20:00
- Lokalizacja: szczecin
Re: HiLink API Huawei - Dyskusja
AT^DATALOCK="hasło1" wchodzi numer v2 z komunikatem ok, AT^SPWORD="hasło" zas kazdy z errorem. AT^SHELL=2 nie wchodzi , ale za to wchodzi 0 i 1. tez czytam rosyjskie fora ,ale w zasadzie wszystko wraca do ww komend i http://192.168.1.1/html/switchDebugMode.html , ktore zamyka mi przegladarke (IE i firefoxa, ale opery nie zamyka) bez komuniaktu. ech , jakies pomysly ?
rozlozenie firmware- poleglem

-
- Stały użytkownik forum
- Posty: 90
- Rejestracja: 2008-12-03, 20:06
- Lokalizacja: Gdańsk
Re: HiLink API Huawei - Dyskusja
-
- Początkujący użytkownik forum
- Posty: 2
- Rejestracja: 2015-05-01, 15:08
- Lokalizacja: pakistan
Re: HiLink API Huawei - Dyskusja
tosiek pisze:VipeRsan, dziękuję za dokumentację API! Przydała mi się do przełączania opornego modemu HiLink i zmianie go na zwykły.
Przełączanie modemu HiLink w zwykły tryb (port diag i pc ui)
Jeżeli modem po wejściu na poniższe adresy nie zmienia trybu pracy i nie pokazują się nowe urządzeniato WEBUI nie wysyła tokena, który jest wymagany do zmiany tych ustawień. (webui nie współpracuje z obecna wersją oprogramowania). Napisałem skrypt, który pobiera token i przełącza w odpowiedni tryb.Kod: Zaznacz cały
project mode: http://192.168.1.1/html/switchProjectMode.html http://192.168.8.1/html/switchProjectMode.html debug mode: http://192.168.1.1/html/switchDebugMode.html http://192.168.8.1/html/switchDebugMode.html
Instrukcja:W trybie project mode możemy przełączyć na tryb pracy jak zwykły modem.
- zacznij od instalacji sterowników stąd: http://www.bez-kabli.pl/viewtopic.php?p=501323#501323
- instalujemy Mobile Broadband HL Service (ta usługa przełącza HiLinka w systemach windows w tryb karty sieciowej RNDIS) znajduje się na napędzie instalowanym przez modem lub link: http://www.mediafire.com/download/6n64k ... BrServ.zip
- Pobieramy skrypt: http://www.mediafire.com/download/c3cfv ... itcher.zip (lub z załącznika)
- Uruchamiamy plik switcher.bat
- Podłączamy modem i czekamy aż otworzy się przeglądarka. Zapamiętujemy adres modemu.
- Wracamy do skryptu i wybieramy adres modem (wpisujemy liczbę 1 dla 192.168.1.1 lub 2 dla 192.168.8.1). Enter.
- Wybieramy tryb przełączenia (liczba 1 lub 2):
1 - DEVICE_MODE_PROJECT_MODE
2 - DEVICE_MODE_DEBUG_MODE
Enter.
Enter jeżeli widać token (ciąg liczb)- Zainstalują się nowe urządzenia (niżej przykład dla project mode):
Kod: Zaznacz cały
FC - PC UI Interface - USB\VID_12D1&PID_1442&MI_00 FC - Application Interface - USB\VID_12D1&PID_1442&MI_01
Trzeba wysłać polcenie AT na port com urządzenia o nazwie :powrót do HiLink:Kod: Zaznacz cały
AT^U2DIAG=0
Kod: Zaznacz cały
AT^U2DIAG=119
W trybie hilink debug można wgrywać oprogramowanie od zwykłego modemu (TCPU) oraz dasboard (UTPS) do obsługi zwykłego modemu. Potrzebne będą sterowniki dostępne wyżej.
źródła:
wget: http://users.ugent.be/~bpuype/wget/
informacje o trybach pracy modemów HiLink: http://tjworld.net/wiki/Huawei/E3131UsbHspa
api webui hilink: http://forum.jdtech.pl/Watek-hilink-api ... zen-huawei
przełączanie w tryb modemu: http://forum.jdtech.pl/Watek-huawei-e31 ... u-na-stale
modyfikacja sterowników: http://4pda.ru/forum/index.php?showtopi ... ry28148805