程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 如何獲取屏幕保護程序的密碼

如何獲取屏幕保護程序的密碼

編輯:關於C++

大家都知道,windows9x只是一個桌面操作系統,它的穩定性和保密性一直受大家的批評。現在,我就通過介紹提取windows98的屏幕保護程序的密碼的算法來說明windows98的保密性是怎樣的差! 

一、屏幕保護程序(以下簡稱屏保)密碼的加密算法

通常,評價一個加密算法,就要看密鑰怎麼產生,加密算法是否強大。windows98的屏保密碼的明文是有限制的,它的長度最大為128個字符,它的字符集是字母表,數字,和一些標點符號,也就是可視的ascii字符集。windows98密碼密文的長度是明文長度的兩倍,它保存在注冊表子鍵的hkey_current_user\control panel\desktop的一個名為screensave_data的二進制值裡。

加密算法:

首先,windows98把密碼明文中小寫字母全轉換為大寫字母,其他字符不變。然後,windows98按順序把明文的每一個ascii值與對應的一個8bits的密鑰進行異或(xor),這樣會得到與明文同樣長度的數值串,把這些每一個數值轉換為十六進制,再把這些十六進制的數值轉換為字符串,按順序連接起來,就成為一個兩倍長度於明文的密文。密鑰總是固定的,共有128bytes。 最後,算法把這個密文字符串以十六進制ascii碼值的形式加上00h為結束標志保存在注冊表裡。

下面通過例子說明這個算法:

例如:屏幕保護程序的密碼是visual basic,轉換成大寫是visual basic。相應的十六進制ascii碼值是: 密碼明文 v i s u a l space b a s i c ascii值 56 49 53 55 41 4c 20 42 41 53 49 43 密鑰 48 ee 76 1d 67 69 a1 1b 7a 8c 47 f8 xor 1e a7 25 48 26 25 81 59 3b df 0e bb 把異或後的結果(十六進制值)當作字符串(數值abcdef以大寫表示):1ea72523262581593bdf0ebb。共二十四個字符,把字符再以十六進制值ascii碼值表示為: 字符 1 e a 7 2 5 4 8 2 6 2 5 16進制數 31 45 41 37 32 35 34 38 32 36 32 35 字符 8 1 5 9 3 b d f 0 e b b 16進制數 38 31 35 39 33 42 44 46 30 45 42 42 而注冊表裡screensave_data的值為 "screensave_data"=hex:31,45,41,37,32,35,34,38,32,36,32,35,38,31,35,39,33,42, 44,46,30,45,42,42,00 l 獲取密鑰 windows98的屏保密碼的密鑰共有128bytes,怎樣才能知道全部的密鑰呢?其實很簡單,加密算法已知道,想知道密鑰並不困難。像我在前面分析屏保密碼那樣做,設一個128bytes長的屏保密碼(千萬要記住哦*o*)。然後,取出加密後的密文,共256bytes,把這256個ascii碼數值表示為字符,按兩個一對再合成一個十六進制的數值,共128個。你現在只要用計算器,逐個把明文的ascii碼值(記得把小寫字母轉換成大寫字母)與剛才所得的128個數值進行異或,你就可以得到全部128個密鑰了。下面是我測出來的128 bytes 密鑰: 密鑰:48,ee,76,1d,67,69,a1,1b, 7a,8c,47,f8,54,95,97,5f, 78,d9,da,6c,59,d7,6b,35, c5,77,85,18,2a,0e,52,ff, 00,e3,1b,71,8d,34,63,eb, 91,c3,24,0f,b7,c2,f8,e3, b6,54,4c,35,54,e7,c9,49, 28,a3,85,11,0b,2c,68,fb, ee,7d,f6,6c,e3,9c,2d,e4, 72,c3,bb,85,1a,12,3c,32, e3,6b,4f,4d,f4,a9,24,c8, fa,78,ad,23,a1,e4,6d,9a, 04,ce,2b,c5,b6,c5,ef,93, 5c,a8,85,2b,41,37,72,fa, 57,45,41,a1,20,4f,80,b3, d5,23,02,64,3f,6c,f1,0f.

二、 程序實現提取屏保密碼

知道了屏保密碼得秘密,我們可以用vb6寫一個程序來提取程序的密碼。由於篇幅的關系,程序代碼不便列出.

三、 屏幕保護程序

很多講vb的書都會教大家怎樣寫屏幕保護程序,無非是windwos98怎樣調用屏保,怎樣響應鍵盤、鼠標的事件,怎樣設置屏保啟動參數,怎樣屏蔽alt+ctrl+del的熱啟動,怎樣令屏保always on top等。但很少書介紹屏保密碼的響應。其實也很容易,只要你在鼠標和鍵盤的響應事件裡加上密碼的確認就可以了。 在注冊表子鍵的hkey_current_user\control panel\desktop裡還有幾個有關屏保的參數,字符串 "screensavetimeout"="840" 是屏保的等待時間,字符串”screensaveactive"="1" 是否啟動屏幕保護程序的標志,“1”為是,“0”為否dword值"screensaveusepassword"=dword:00000001 是屏幕保護程序是否用密碼保護,00000001為是,00000000為否。你可以根據screensaveusepassword的值來確認是否使用密碼保護你的屏保。

四、忠告

大家使用密碼時一定要小心,盡量不要使用相同的密碼。如果你用銀行存折的密碼來設置屏保的密碼,那別人來取你的密碼是多麼容易的事情!這篇文章只是給大家介紹屏保的加密算法,希望大家有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved