我有一个使用phpseclib connect cisco和H3C Swtich设备的项目。
这些设备' passowrd没有什么不同。所以当我第一次登录这些设备时,我必须尝试测试这些密码。
我写了一些代码来在密码列表中找到正确的密码,但正确的密码只有在首次登录时才会生效。
function loginssh_keybo(){
$user = user::find()->all();
$ssh = new SSH2($this->ip);
if (@$ssh->login($user[$this->i]->username, $user[$this->i]->password)) {
return $ssh;
}else{
return false;
}
}
function loginssh_pass(){
$user = user::find()->all();
$ssh = new SSH2($this->ip);
if (@$ssh->login($user[$this->i]->username, $user[$this->i]->password, $user[$this->i]->password)) {
return $ssh;
}else{
return false;
}
}
function loginssh()
{
$user = user::find()->all();
$max = 3;
$this->i = 0;
do {
if (@$ssh=$this->loginssh_keybo()) {
$this->islogin = True;
break;
} elseif (@$ssh=$this->loginssh_pass()) {
$this->islogin = True;
break;
} elseif
($this->i > $max) {
return false;
}
$this->i += 1;
} while (!$this->islogin);
$this->user = $user[$this->i]->username;
$this->password = $user[$this->i]->password;
return $ssh;
}
答案 0 :(得分:0)
来自https://github.com/phpseclib/phpseclib/issues/1144:
if ($ssh->login('username', 'password1')) {
return true;
}
if ($ssh->login('username', 'password2')) {
return true;
}
if ($ssh->login('username', 'password3')) {
return true;
}
return false;