修改PuTTY實現儲存密碼自動登入
關於自動登入(auto-login password),當然需要儲存密碼的功能,官方的迴應是記住密碼會帶來顯著的安全問題:任何能使用你的裝置的人都能輕而易舉的得到你的密碼,使用它,甚至濫用他。建議通過SSH的公鑰驗證來自動登入,它更加方便和安全。詳細迴應參看這裡。
關於Tab支援,官方的迴應是需要重構windows相關的程式碼,代價比較大,再者並不是所有人都喜歡tab...,詳細迴應
PuTTY是開源的,我們可以很容易得到它的原始碼,這是能夠修改PuTTY功能的前提。在PuTTY的Connection->Data選項中有Auto-login username這一項,我們可以在原始碼中定位到插入點,檔案為Config.c ,Auto-login password就是要插入的密碼文字框項(Line5-9)。事實上,username是修改整個程式碼的參照系,從以下程式碼片段中也可以看出。
ctrl_editbox(s, "Auto-login username", 'u', 50, HELPCTX(connection_username), dlg_stdeditbox_handler, I(offsetof(Config,username)), I(sizeof(((Config *)0)->username))); c = ctrl_editbox(s, "Auto-login password", 'w', 50, HELPCTX(connection_password), dlg_stdeditbox_handler, I(offsetof(Config,password)), I(sizeof(((Config *)0)->password))); c->editbox.password = 1; //password type, do not display directly
定位HELPCTX函式,檔案為windows/
#define WINHELP_CTX_connection_username "connection.username:config-username"
#define WINHELP_CTX_connection_password "connection.password:config-password"
定位Config變數,得知其為config_tag型別的結構體,定位到putty.h,在該結構體中加入password的宣告(Line2):
char username[100];
char password[100];
接下來就是對password的處理了,在ssh連線的auto login時,會處理username,同理在該函式中,新增對password的處理。ssh連線有兩種方式:ssh1和ssh2,所以對應的兩個函式都要修改。檔案為Ssh.c。對ssh1的修改如下(位於do_ssh1_login()中)(Line8-18):
/*
* Show password prompt, having first obtained it via a TIS
* or CryptoCard exchange if we're doing TIS or CryptoCard
* authentication.
*/
{
int ret; /* need not be kept over crReturn */
if (strlen(ssh->cfg.password) == 0) {
ret = get_userpass_input(s->cur_prompt, NULL, 0);
while (ret < 0) {
ssh->send_ok = 1;
crWaitUntil(!pktin);
ret = get_userpass_input(s->cur_prompt, in, inlen);
ssh->send_ok = 0;
}
} else {
ret = 1;
strcpy(s->cur_prompt->prompts[0]->result, ssh->cfg.password);
}
對ssh2的修改如下(位於do_ssh2_authconn()中)(Line17-27):
/*
* Plain old password authentication.
*/
int ret; /* not live over crReturn */
int changereq_first_time; /* not live over crReturn */
ssh->pkt_actx = SSH2_PKTCTX_PASSWORD;
s->cur_prompt = new_prompts(ssh->frontend);
s->cur_prompt->to_server = TRUE;
s->cur_prompt->name = dupstr("SSH password");
add_prompt(s->cur_prompt, dupprintf("%[email protected]%.90s's password: ",
s->username,
ssh->savedhost),
FALSE, SSH_MAX_PASSWORD_LEN);
if (strlen(ssh->cfg.password) == 0) {
ret = get_userpass_input(s->cur_prompt, NULL, 0);
while (ret < 0) {
ssh->send_ok = 1;
crWaitUntilV(!pktin);
ret = get_userpass_input(s->cur_prompt, in, inlen);
ssh->send_ok = 0;
}
} else {
ret = 1;
strcpy(s->cur_prompt->prompts[0]->result, ssh->cfg.password);
}
至此,ssh的Auto-login password已實現。但是還需要就password的儲存繫結到load和save功能上,這兩個功能的實現位於在Settings.c檔案中。在函式save_open_settings()中新增(Line2):
write_setting_s(sesskey, "UserName", cfg->username);
write_setting_s(sesskey, "PassWord", cfg->password);
在函式load_open_settings()中新增(Line2):
gpps(sesskey, "UserName", "", cfg->username, sizeof(cfg->username));
gpps(sesskey, "PassWord", "", cfg->password, sizeof(cfg->password));
至此,所有程式碼修改完成,根據README檔案的提示,我使用MinGW編譯了一下,MinGW可以在這裡得到。編譯方法如下:
$cd putty-src/windows $make -f makefile.cyg
在該windows目錄下生成所有的可執行檔案。如果你不想修改編譯,可以直接下載我編譯好的,下載地址在這裡。
Update: 修改後的原始碼已經放在Github上:putty-improvement。
相關推薦
修改PuTTY實現儲存密碼自動登入
一直鍾情於PuTTY的小巧精悍,是我SSH連線之必選。雖然喜歡這款軟體的小巧,但亦要承受其不方便之苦。最希望PuTTY新增的兩個功能是自動登入和Tab支援。這也是眾多使用者的wishlist,但官方已明確的斷了大家的念想。關於自動登入(auto-login password
第5天sp儲存案例:記住密碼+自動登入
第5天sp儲存案例:記住密碼+自動登入 記住密碼+自動登入 記住密碼+自動登入 (1)xml佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro
java實現密碼自動登入,記住密碼
<pre name="code" class="java"><span style="font-size:18px;">1.身份加密 2.存入cookie 3.下次登入先判斷c
利用expect + sftp 實現遠端主機自動登入及下載
利用expect + sftp 實現遠端主機自動登入及下載: (ssh是一樣的) #!/usr/bin/expect -f ## Create by Cyril. ## "Usage:./downFilesFromStation USER PWD RemoteIP SourcePat
JSP實現網頁的自動登入(session+cookie)實現
1、session的作用 使用者用瀏覽器訪問web伺服器時,會為每個使用者建立一個session(會話),session在使用者關閉瀏覽器之前都是有效的,所以我們可以在session中儲存使用者的一些資訊,以供使用。這裡我們用session儲存使用者的賬號名
七、記住密碼自動登入
1.activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c
SharedPreferences實現記住密碼的登入介面-Android
最近在學習Android的資料儲存,便將自己的理解寫下來。新手淺顯望理解。 在Android中,儲存資料主要採用了3種方案,分別為檔案儲存, SharedPreferences儲存以及資料庫儲存,當然,資料也可以儲存在sd卡里,但相比上面這幾種,可能就要麻煩點了,而且安全性
linux ssh 不用密碼自動登入的幾種方法
2. 控制n個機器如上所述自動登入 那就需要n對鑰匙(金鑰和公鑰), ssh-keygen 命令可以隨意更改鑰匙對的名字, 比如: # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save
spring boot結合spring security實現註冊後自動登入
spring boot結合spring security實現使用者註冊後自動登入 在開發過程中,有些頁面只有使用者登入之後才能訪問,比如使用者的個人中心,但是按道理使用者註冊之後也應該有許可權進入了個
htmlunit模擬瀏覽器實現163郵箱自動登入
對於表單隱藏在js內,需要解析js並動態載入網頁,找了很多元件,包括httpunit,後來試驗htmlunit通過。感覺httpunit還是比htmlunit差點,所以建議用htmlunit來解析js動態載入的網頁並自動提交表單。對於模擬瀏覽器的htmlunit元件還是有很
C#實現遠端桌面自動登入
問題:A電腦登入B電腦 1,設定B電腦允許遠端登入 2,用A手動通過“遠端登入軟體”登入B,生成Default.rdp檔案 3.C#程式設計實現自動登入。 具體操作 1.設定B電腦允許遠端登入 http://jingyan.baidu.com/article/49711c
實現linux的自動登入--命令列模式啟動 .
linux的登入主要是由兩個檔案在控制,/usr/sbin/getty來獲得使用者名稱,並進行檢查使用者名稱是否存在,然後將使用者名稱傳遞給/usr/bin/login來獲取使用者輸入密碼和檢查密碼是否正確. 所以要實現linux的自動登入,就要改動這兩個檔案. 1.getty實現的主要功能是: 1)開
Ubuntu/fedora 設定禁止自動鎖屏、設定免密碼自動登入、免密碼執行sudo操作
虛擬機器使用 Ubuntu的時候 過段時間 就會自動鎖屏有點不方便,特總結一下解決方法禁止自動鎖屏 首先宣告:該文雖以Ubuntu 13.04為例,同樣適用於Fedora 17(已測試),但在較低版本的Ubuntu下可能有所差異,具體看後面的注意事項。技巧目錄:解決Ubunt
Linux系列:Ubuntu/fedora實用小技巧—禁止自動鎖屏、設定免密碼自動登入、免密碼執行sudo操作
首先宣告:該文雖以Ubuntu 13.04為例,同樣適用於Fedora 17(已測試),但在較低版本的Ubuntu下可能有所差異,具體看後面的注意事項。 技巧目錄:解決Ubuntu下每隔幾分鐘自動鎖屏,需要重新輸入密碼的問題無須輸入使用者名稱密碼讓Ubuntu自動登入到桌面
OkHttp3.0(結合Retrofit2/Rxjava)利用攔截器實現全域性超時自動登入、新增統一引數
應用場景:1.服務端為了統計各個平臺、版本的使用情況,有時在介面中要求傳遞統一的諸如version(客戶端版本)、os(客戶端平臺android/iOS)、userId等引數,這時如果在介面中一一新增就比較繁瑣了,考慮做全域性處理;另外,一次登入成功後,
【Android】【功能設計】儲存帳號密碼,自動登入,離線登入實現方案
勾選【記住密碼】【自動登入】複選框時: 什麼也不做,所有操作放在點選【登入】按鈕時執行 點選【登入】按鈕時: 為了簡化程式碼和實現邏輯,不管密碼對錯,登入資訊統一儲存到【上次登入帳號】【上次登入密碼】【是否儲存密碼】【是否自動登入】配置 登入成功
mstsc儲存使用者名稱和密碼,實現自動登入遠端桌面
MSTSC引數說明 首先可以使用mstsc /?來檢視關於mstsc的引數說明 根據上述的命令說明,我這裡實現的bat檔案為 mstsc C:/a.rdp /console /v: xxx.xxx.xxx.xxx:3389 rdp檔案生成方法 最近由
Android 記住密碼和自動登入介面的實現(SharedPreferences 的用法)
SharedPreferences介紹: SharedPreferences是Android平臺上一個輕量級的儲存類,主要是儲存一些常用的配置引數,它是採用xml檔案存放資料的,檔案存放在"/data/data<package name>/shared_pref
XAMPP 修改MySQL資料庫密碼+取消自動登入phpMyAdmin
點選Admin 進入phpMyAdmin 點選賬戶後選擇root localhost,點選修改許可權 選擇修改密碼,輸入新密碼,點選執行即可。這裡有一個生成密碼的功能,是將你的密碼生成為一串字串,以後密碼就是該字串,可自行選擇 密碼到這裡就修改完畢了,但還要修改配置檔案才能在
登入介面如何實現記住使用者名稱和密碼 且實現自動登入
最近在一次練習中遇到了一個問題,如何在登入介面實現記住使用者名稱和密碼,並且可以進行勾選是否自動登入。 首先,給大家看下我的登陸介面。 很顯然,我佈置了checkbox,一個用於記住密碼,一個用於自動登入。 <label> <input type