mikronode
mikronode copied to clipboard
Resolves #78
Just sending the new format login string before the old style (not elegant admittedly, but) works
Tested against RouterOS v6.42.3 and v6.45.1
challenge=>{
stream.write([
"/login",
"=name=" + user,
"=password=" + password
]);
const md5=crypto.createHash('md5');
md5.update(Buffer.concat([Buffer.from(nullString+password),Buffer.from(challenge)]));
stream.write([
"/login",
"=name="+user,
"=response=00"+md5.digest("hex")
]);
},{resolve,reject}
Connecting to [IP_ADDRESS]
SocketStream::new [ 5, 8 ]
SocketStream::setTimeout [ 5 ]
SocketStream::Connect { family: 4, host: '[IP_ADDRESS]', port: 8728 }
SocketStream::Connected [] { family: 4, host: '[IP_ADDRESS]', port: 8728 }
Connected. Waiting for login.
Logging in
SocketStream::write: [ '/login' ]
SocketStream::write: sending /login
Packet received: [ '\u0005!done%=ret=986b5c57bec4648a6c4a686b7b22bdc5', '' ]
Got done_ret, building response to { type: 'done_ret', data: '986b5c57bec4648a6c4a686b7b22bdc5
' }
Challenge length:16
SocketStream::write: [ [ '/login', '=name=[USERNAME]', '=password=[PASSWORD]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =password=[PASSWORD]
SocketStream::write: [ [ '/login',
'=name=[USERNAME]',
'=response=[PASSWORD_HASH]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =response=[PASSWORD_HASH]
Packet received: [ '\u0005!done%=ret=986b5c57bec4648a6c4a686b7b22bdc5',
'\u0005!done',
'' ]
Got done_ret, building response to { type: 'done_ret', data: '986b5c57bec4648a6c4a686b7b22bdc5
' }
Challenge length:16
SocketStream::write: [ [ '/login', '=name=[USERNAME]', '=password=[PASSWORD]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =password=[PASSWORD]
SocketStream::write: [ [ '/login',
'=name=[USERNAME]',
'=response=[PASSWORD_HASH]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =response=[PASSWORD_HASH]
Login complete: Connected
Creating channel 1563788976251
Channel 1563788976251 Created
Writing on channel 1563788976251 /system/routerboard/print {}
SocketStream::write: [ [ '/system/routerboard/print', '.tag=1563788976251-1' ] ]
SocketStream::write: sending /system/routerboard/print
SocketStream::write: sending .tag=1563788976251-1
Packet received: [ '\u0005!done%=ret=986b5c57bec4648a6c4a686b7b22bdc5', '' ]
Login stream complete
Packet received: [ '\u0005!trap\u0016=message=cannot log in',
'\u0005!done',
'\u0003!re\u0014.tag=1563788976251-1\u0011=routerboard=true\u0014=model=CCR1009-8G-1S\u001b=s
erial-number=66C405BC61AE\u0015=firmware-type=tilegx\u0016=factory-firmware=3.27\u0018=current-
firmware=6.42.3\u0018=upgrade-firmware=6.42.3',
'\u0005!done\u0014.tag=1563788976251-1',
'' ]
Channel (1563788976251)::data flatMap
Channel (1563788976251)::data flatMap
Channel (1563788976251)::done_ret flatMap
oldFirmware "v6.42.3"
Clearing command cache for # 1
Channel (1563788976251)::CLOSED
Closing channel 1563788976251
Closing Socket undefined
Connecting to [IP_ADDRESS]
SocketStream::new [ 5, 8 ]
SocketStream::setTimeout [ 5 ]
SocketStream::Connect { family: 4, host: '[IP_ADDRESS]', port: 8728 }
SocketStream::Connected [] { family: 4, host: '[IP_ADDRESS]', port: 8728 }
Connected. Waiting for login.
Logging in
SocketStream::write: [ '/login' ]
SocketStream::write: sending /login
Packet received: [ '\u0005!done%=ret=5f0c2e61543ccbfae524b8d9845f148b', '' ]
Got done_ret, building response to { type: 'done_ret', data: '5f0c2e61543ccbfae524b8d9845f148b
' }
Challenge length:16
SocketStream::write: [ [ '/login', '=name=[USERNAME]', '=password=[PASSWORD]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =password=[PASSWORD]
SocketStream::write: [ [ '/login',
'=name=[USERNAME]',
'=response=[PASSWORD_HASH]' ] ]
SocketStream::write: sending /login
SocketStream::write: sending =name=[USERNAME]
SocketStream::write: sending =response=[PASSWORD_HASH]
Packet received: [ '\u0005!done',
'\u0005!trap*=message=invalid user name or password (6)',
'\u0005!done',
'' ]
Login complete: Connected
Login stream complete
Creating channel 1563788986351
Channel 1563788986351 Created
Writing on channel 1563788986351 /system/routerboard/print {}
SocketStream::write: [ [ '/system/routerboard/print', '.tag=1563788986351-1' ] ]
SocketStream::write: sending /system/routerboard/print
SocketStream::write: sending .tag=1563788986351-1
Packet received: [ '\u0003!re\u0014.tag=1563788986351-1\u0011=routerboard=true\r=model=2011iL\
u001b=serial-number=419A027EA4B9\u0015=firmware-type=ar9344\u0016=factory-firmware=3.10\u0018=c
urrent-firmware=6.45.1\u0018=upgrade-firmware=6.45.1',
'\u0005!done\u0014.tag=1563788986351-1',
'' ]
Channel (1563788986351)::data flatMap
Channel (1563788986351)::data flatMap
Channel (1563788986351)::done_ret flatMap
newFirmware "v6.45.1"
Clearing command cache for # 1
Channel (1563788986351)::CLOSED
Closing channel 1563788986351
Closing Socket undefined