Skip to content

Conversation

@AndyMeusel
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant