當前位置:首頁 » 操作系統 » 反推演算法

反推演算法

發布時間: 2023-06-14 03:05:06

『壹』 破譯普通密碼的方法

工作中常遇到忘記了計算機的開機密碼,以至於啟動不了電腦,或者有需要破譯開機密碼的情況。目前常用的方法是打開機箱,對CMOS進行放電處理,清空CMOS中的內容。如果在某些特殊場合需要保留其內容,或者在機箱不便打開的情況下,能否用其它途徑來破譯開機密碼呢?

目前主流計算機的BIOS均為AWARD公司生產的,CMOS開機密碼最長為8個字元,採用窮舉法看似有非常多的鍵盤組合,但經過加密運算後的有效「密文」只有16位,即65536種,因此有大量「重復」的密碼,即雖然輸入的鍵盤組合不一樣,但CMOS中的密文是一樣的,實際效果是一樣的。對應這65536種密文,每個密文只需找出一種鍵盤組合即可。本文講述如何用單片機來計算出這65536種鍵盤組合,並輸給計算機,採用窮舉法來破譯CMOS密碼。

一、CMOS密碼加密運算方法

CMOS加密運算是:從低位到高位每一位的ASCII碼左移2(n-1)位之後相加,其中n為位數,相加結果即為密文,存入CMOS。如果密碼位數較多,運算結果超過16位,則將超出16位的部分再與低16位相加,保留此結果。

以4位密碼「abcd」為例,計算機內部是將「d」的ASCII碼64H保留,「c」的ASCII值63H向左移2位,b的ASCII值62H向左移4位,a的ASCII值61H左移6位,然後將這四個數相加得到一個16位數,此數2050H即為運算後的密文,存入CMOS。用十進制數表示此過程即為:100+99�4+98�16+97�64=8272轉為十六進制為2050H。

二、密文向密碼反推演算法

由加密演算法可知,肯定會存在多個密碼運算後形成的密文相同的情況,因此用一個密文,可以反推出很多組密碼來,我們只需要其中一組即可。

從10進制的角度出發,密碼的ASCII碼與密文的關系符合如下方程:

X1×1+X2×4+X3×16+X4×64+X5×256… …=密文

其中X1,X2,X3,X4等分別為密碼從低到高位的ASCII碼。這是一個不定方程,所有符合下列兩個條件的解都滿足要求:

1. X1,X2,X3,X4……為整數。

2. X1,X2,X3,X4……的值大於等於32,小於等於126(鍵盤向計算機輸入的字元ASCII值最小為32,最大126)。

求出任意一組符合要求的解後,每一個數字查ASCII碼表,換成對應的字元,即可作為計算機開機密碼。以剛才密碼為「abcd」為例,運算後密文十進制數為8272,用湊數的辦法可知以下等式也成立:104+98�4+98�16+97�64=8272,查ASCII碼表可知�97�98�98�104對應的字元為a,b,b,h,因此「abbh」也可以做為開機密碼開啟電腦。用程序來求解這個方程有多種計算方法。最簡單的採用幾個變數累加的辦法求解,但收斂速度慢,有其它收斂速度非常快的演算法,本文不再贅述。

三、鍵盤介面原理

PC系列鍵盤採用行列掃描法識別按下的鍵,鍵盤的掃描控制電路的核心是8048單片機,執行固化在ROM中的鍵盤掃描程序,當有鍵按下時,產生接通掃描碼,而該按鍵松開時,產生斷開掃描碼。鍵盤向計算機發送的數據為掃描碼,與該鍵的ASCII碼並不相同,其關系如下表所示,計算機接收到此掃描碼可求出按鍵的ASCII碼:

鍵的接通掃描碼用上表所示一個位元組表示,斷開掃描碼由接通掃描碼加上80H而得。例如,「D」鍵按下後又松開,則鍵盤控制器先輸出23H,再輸出A0H。

目前主機板上鍵盤的插座主要有兩種介面,一種為老式的大五芯介面:其介面定義為:1�Clock 2�Data 3�Not connected 4�GND 5�Vcc+5V

目前較常見為小的六芯介面:其介面定義:1:Data 2�not connected 3� GND 4�VCC+5V 5�CLOCK 6�NOT CONNECTED,鍵盤掃描碼經8048單片機通過data和clock兩根信號線進行串列移位輸出,串列序列發送時以clock信號的上升沿為准。四、用單片機來實現

單片機硬體很簡單,從鍵盤插頭中的data與clock信號接至單片機的兩個I/O口,鍵盤介面中的VCC與GND信號直接向單片機供電,通過對單片機I/O口編程,控制data與clock的動作,實現向計算機傳輸數據。單片機內部從0開始,一直到65535,每一個密文經過程序反推出一組「鍵盤密碼」,查出對應的鍵盤掃描碼,依次發向計算機,然後發回車鍵。計算機接收到密碼和回車後,開始校驗密碼,若密碼不能通過驗證,計算機會提示用戶密碼錯誤,單片機再發送下一組密碼,依次循環。每秒種計算機可校驗約10組密碼,65536組密碼兩個小時可全部校驗完畢,對於5位以下的密文,幾分鍾即可通過校驗。

操作方法:按正常順序打開計算機,在計算機提示輸入密碼的時候,將鍵盤插頭撥下,把單片機上的鍵盤插頭插在主機上,單片機上電後自動向計算機發送各組數據,直到其中有一組數據通過密碼校驗,計算機載入操作系統。此時將單片機電路撥下,將鍵盤插上即可正常操作。操作系統載入成功後,可用其它軟體獲取CMOS密碼,下次啟動計算機時即可用獲取的密碼進入操作系統。

本方法已採用AT89C51單片機上,用Franklin C編程實現,在多台BIOS為AWARD公司生產的計算機上試驗通過

『貳』 在密碼和 HASH 已知的情況下反推加密演算法可行嗎

假設你想要查看從外部源來的數據包(可能已用幾個方法加密),並且想用正確的解密工具來解密數據包。第一種答案是「可以」,第二種答案是「這可能是一個非法的活動。」在許多國家,逆向工程保護機制(如加密)是非法的。

熱點內容
寬頻賬號密碼忘記怎麼辦 發布:2025-03-29 21:12:52 瀏覽:879
nodejs編譯內存需求 發布:2025-03-29 21:08:20 瀏覽:554
編程必讀的 發布:2025-03-29 21:08:19 瀏覽:220
安卓圖片如何提取頭像 發布:2025-03-29 21:08:15 瀏覽:426
中專編程遠 發布:2025-03-29 21:06:09 瀏覽:313
怎麼自學學編程 發布:2025-03-29 20:38:29 瀏覽:208
汽車音響安卓系統怎麼調重低音 發布:2025-03-29 20:37:52 瀏覽:391
遺傳演算法與粒子群演算法 發布:2025-03-29 20:15:51 瀏覽:753
信訪問問 發布:2025-03-29 20:12:12 瀏覽:533
java創建臨時文件 發布:2025-03-29 20:02:06 瀏覽:31