Hi Forum !!!.
For several days I’m trying to get connected with api using Alaska (xBase Programming language)… after reading and reading the examples, wiki tutorials, api docs and finally several post in forum I don’t have a clue how to be connected ..
Up to now I can send the first /login command… receive the ret challenge but Seems to be that I have a black hole about the answer I have to create using the Password and ret challenge with md5 …mikrotik never answer my last send message (response)
I’d like to show you guys a Little parte of the code I’m using and maybe someone can tell me where is my error …
// Sending Initial Login Command. WORKS FINE
nSend1:= SocketSend( LNSOCKET, chr(6) + “/login”+ chr(0) )
sleep(400)
// Receiving Initial Login Answer
cBuffer := Space( 300 ) ; nBytes := SocketRecv( LNSOCKET, @cBuffer, 300, @LNERROR )
MSGBOX("Answer Initial Login: " + cBuffer)
// Console Output: !done%=ret=25ad12e81cd7b6bd2011d3ae732cd0af - WORKS FINE
cWork := cBuffer ; cFrom:=“=ret=” , nPos:=At(cFrom, cWork)+LEN(cFrom) ; cNew:=SubStr(cWork, nPos, )
msgbox("ret Challegene without =ret= " + cNew ) // Console OutPut: 25ad12e81cd7b6bd2011d3ae732cd0af
msgbox("to string " + HexToStr(cNew) ) // Console OutPut: %è×¶½ Ó®s,Ð
cSend:=“=response=00”+ Str2Md5Hex( “51092” + HexToStr(cNew) )
msgbox("response to send: ") + cSend
// Console OutPut: =response=00722207153321495723851e6f45a5a976
nSend2:= SocketSend( LNSOCKET, nLength(“/login”) + bData(“/login”) ) // WORKS FINE
nSend3:= SocketSend( LNSOCKET, nLength(“=name=admin”) + bData(“=name=admin”) ) // WORKS FINE
nSend4:= SocketSend( LNSOCKET, nLength(cSend) + bData(cSend) ) // MKTK NEVER ANSWER !
cBuffer := Space( 300 )
nBytes := SocketRecv( LNSOCKET, @cBuffer, 300, @LNERROR )
MSGBOX(“Final Answer " + cBuffer )
// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
FUNCTION nLength(cText)
LOCAL cReturn:=”"
cReturn:=AL(STR( LEN(cText) )) + “0” + al(str( LEN(AL(STR(LEN(cText)))) ))
RETURN (cReturn)
FUNCTION bData(cText)
LOCAL cReturn:=“”
cReturn:=ReturnAsciiCode(cText) + “0” + AL(STR( LEN(cText) ))
RETURN (cReturn)
FUNCTION ReturnAsciiCode(cText)
LOCAL cReturn:=“”
FOR A=1 TO LEN(cText)
cReturn:=cReturn+AL(STR(ASC(SubStr(cText, A, 1))))
NEXT A
RETURN (cReturn)