如何找回存儲在ssh客戶端中的密碼

最近碰到一件蠢事兒,有個服務器的ssh密碼給忘記了,找來找去後來發現只有在一臺電腦的ssh客戶端mobaxterm裏存儲了,找了一圈發現客戶端裏存儲的都是加密後的密碼,沒法顯示明文(mobaxterm比較奇葩付費就可以獲得明文)。後來想來想去自己寫了個fake ssh-server專門用來打印登錄時的用戶名密碼,用go也就幾行,分享一下

package main

import (
	"github.com/gliderlabs/ssh"
	gossh "golang.org/x/crypto/ssh"
	"io/ioutil"
	"log"
)

func homeHandler(s ssh.Session) {

}

func passwordHandler(ctx ssh.Context, password string) bool {
	log.Printf("username:%s, password:%s\n", ctx.User(), password)
	return true
}

func main() {
	keyPath := "id_rsa"
	keyData, err := ioutil.ReadFile(keyPath)
	if err != nil {
		log.Fatal(err)
		return
	}
	key, err := gossh.ParsePrivateKey(keyData)
	if err != nil {
		log.Fatal(err)
		return
	}

	s := &ssh.Server{
		Addr:    "127.0.0.1:8099",
		Handler: homeHandler, //
		//PublicKeyHandler:
		PasswordHandler: passwordHandler,
	}
	s.AddHostKey(key)
	log.Fatal(s.ListenAndServe())
}

這代碼很簡單,一目瞭然,這裏就不詳細解釋了,需要的同學自取

需要注意的一點是,需要改host把原來的域名地址解析到127.0.0.1,否則沒辦法用原來的用戶名密碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章