[C#][WinForm]擺脫密碼透視小工具

[C#][WinForm]擺脫密碼透視小工具

由於現在很簡單就可以下載到免費的密碼透視小工具

而在開發WinForm使用PasswordChar也是稀鬆平常的事

但也因為我們的疏忽導致密碼很容易讓有心人看光光

為了防止這樣的情況出現,就必須在開發時用點心思。

這裡我簡單自訂義一個myPassbox來達到保護的效果(當然建議還是使用加密較安全)

 

一般情況下,使用spy++,大多可以很輕鬆取得密碼

image 

 

為了不讓上述情形發生,我們用點心來防止。


class myPassBox : System.Windows.Forms.TextBox
    {
        #region Initialize myPassBox
        public myPassBox()
        {
            base.Multiline = false;
            this.UseSystemPasswordChar = true;
        }
        #endregion

        #region override method
        //大多小工具都使用SendMessage Function來取得密碼
        //所以覆寫WndProc並加入相關判斷
        private const Int32 WM_SETTEXT = 0x000C;
        private const Int32 WM_GETTEXT = 0x000D;
       
        protected override void WndProc(ref Message m)
        {            
                if (m.Msg == WM_GETTEXT || m.Msg == WM_SETTEXT)
                    return;            
            base.WndProc(ref m);
        }
        #endregion
    }

加入myPassbox


private void Form1_Load(object sender, EventArgs e)
        {
            myPassBox passbox = new myPassBox();
            passbox.Location = new Point(10, 10);
            passbox.Text = "123456";
            TextBox textbox = new TextBox();
            textbox.PasswordChar = '*';
            textbox.Text = "123456";
            textbox.Location = new Point(passbox.Width + 20, passbox.Location.Y);
            this.Controls.Add(passbox);//自訂義
            this.Controls.Add(textbox);//預設
        }  

再度使用spy++觀察兩者結果

image image