Warung Bebas

Thursday, September 10, 2009

簡化 IT 工作——八個 Windows 7 進階技巧


這篇文章原為 HKEPC 09 年活動「Windows 7 新功能、新發現」的參賽作品,後來加多四個技巧便成這篇文章。




1. 資源監視器 - Resource Monitor




Windows 7 的資源監視器被大幅增強,整合了同門 Sysinternals Process Explorer 不少進階功能。例如以往檔案如因被某些程式佔用而不能刪除,因不知道是哪個程式,我們非透過第三方軟體解決不可;現在可透過「搜尋控制代碼」(Associated Handles) 找出真凶。



Resource Monitor in Windows 7, Search Handle

技巧:在開始搜尋輸入「perfmon /res」或「resmon」可執行資源監視器





2. 電源設定工具 - PowerCfg



PowerCfg 是進階的電源設定工具,因指令煩多和沒需要,以往較少會用到,但 Windows 7 的 PowerCfg 新增有用的電源效率報告功能,主要用以分析軟硬體和周邊裝置能否配合省電模式運作 (如 Selective Suspend),以節省電費或提高手提電腦的續航力。例如報告中可以找到防礙 CPU 進入省電模式的裝置和驅動程式、在系統閒置時佔用資源過多的程式的詳細資料、所支援的睡眠模式等,但最有用的功能可能就是偵測電池充電足不足所標示的容量 - 隔一段時間再執行便可比較前後來得知電池的耗損情況。


Power Efficiency Report in Windows 7, PowerCfg Energy

技巧:存取功能的指令為「powercfg -energy」




3. 啟動修復選項 - Startup Repair



很多時就算知道只是小問題,當遇上電腦開機失敗的話 IT 人員都不得不走到用家電腦面前,因為電話中指示太麻煩。「啟動修復選項」是自 Vista 就有的一系列自動修復作業,放入安裝光碟執行程式後它便懂得診斷和解決。現在再不用光碟,這麼實用的功能終於首次內建於 Windows 的新安裝!以後當入不到 Windows,程式便自動執行,IT人員終於無須再「無事東奔西走或者講到口水乾了」。



Startup Repair in Windows 7


技巧 1:如欲停用功能,可用「bcdedit /deletevalue {current} recoveryenabled」

技巧 2:如欲將系統修復工具燒錄成可開機光碟片,可用「recdisc」





4. 開機選項設定工具 - BCDBoot



自 Vista 以來,Windows 改用 BCD 作為系統開機選項的格式,因為不再是純文字,要用 BCDEdit 工具才可編輯,不過並不簡單,例如以往若要將作業系統由一台機移到另一台作多重開機便要用 BCDEdit 輸入一大堆指令,但現在 Windows 7 新的 BCDBoot 工具只需一行指令,而且就算目的地完全沒有開機檔案,它也能一併將所需檔案抄過去並設定好。


BCDBoot


技巧:在 PE 用 ImageX 部署後,用「bcdboot /s」安裝開機檔在指定磁區





5. 部署影像維護和管理工具 - DISM


DISM (Deployment Image Servicing and Management) 是結合舊版 WAIK (Windows Automated Installation Kit) 內多種工具再把離線及在線設置 Windows 的功能大幅加強後的一體化管理工具,首次內建於 Windows。以往慣常使用 Ghost 的我們若要更新 .gho 影像檔內 Windows 的 Service Pack 或者安裝驅動程式等,我們都必須將影像檔內容完全「倒」出來,登入其 Windows 才能進行設置,現在我們只需使用 DISM 掛載 ImageX 的 .wim 影像檔,利用其離線設置功能便可達成更改版本/授權碼、新增移除驅動程式/補丁/Windows 元件、設置無人值守安裝、設置介面語言/時區等等。完成後,只需卸載 .wim 並指示儲存變更即可。


除了.wim 外亦可使用其它離線 Windows 作來源,亦可使用 Diskpart 掛載 VHD,只要其中的 Windows 為 Vista SP1 或以上便可。(但 Windows 7 或 Server 2008 R2 才能支援 DISM 的所有功能)




PEImg, DISM

技巧:可使用 DISM /Online /Add-Package /PackagePath 指令
在非旗艦版或企業版下安裝語言包。(詳情)


Tuesday, September 8, 2009

又一破解 Windows 密碼保護 - Sneaky Win Intruder


Sneaky Win Intruder in Windows 7 PESneakyWinIntruder 在 Windows PE 3.0 下的運行畫面。






做電腦維修的,其中一樣常做的就是向客人查詢 Windows 密碼,因為 Windows 內的事件檢視器、當機報告 (Minidump) 等都是很有用的除錯工具。例如當見到事件編號 (Event ID) 為 7 的紅色交叉,硬碟編號是 0 (Harddisk0) 又顯示有錯誤區塊 (bad block) 的話便已可以確診有壞磁區 (如果之後又沒有了壞磁區,可能是硬碟自己修復了,但始終曾經出現問題)。另一方面,有不少有名的系統診斷軟體例如 Sysinternals Autorun 都是要 Windows 在登入後才能運作的 (如果 Windows 不能進入,其實仍可以用 Paraglider's Runscanner 在非登入時模擬登入狀態使用該些軟體,這個下次再談)。那是否表示如果聯絡不上客人維修便要延誤了嗎?客人的電話錯了怎辦?除了等他再打過來,其實可以主動點 - 強行登入 Windows!





坊間破解 Windows 密碼的方法和軟體破多,有窮舉法 (brute force attack),但不能準確知道所花時間,例如 Elcomsoft 便有能使用 CUDA GPU 加速的產品;一類是重設密碼的,例如使用 ERDCommander LockSmith 或 NTPWEdit 重設 Windows 密碼,這方法個人從沒有使用,因為密碼重設後難保不會讓客人懷疑或帶來麻煩,例如若客人有 EFS (Encrypting File System) 加密了的檔案,不用回本來的密碼是開不了的;另一類則不會更改密碼,直接進入 Windows,例如 Konboot、WindowsGate;一類則可製作一個新帳戶,用它來「為所欲為」也不怕。小弟常用最後一種,因為很重視個人私隱;使用客人的帳戶應可免則免。完成後只要刪除新建的帳戶便可消除大部份足印



這一種方法的代表者有「將 sethc.exe/utilman.exe 換成 cmd.exe」技巧。不知道大家有沒有試過在登入時碰下 shift 鍵太多次之後 Windows 出現啟動相粘鍵的訊息?sethc.exe 就是那時執行的程式。而 utilman.exe 則是 Vista/7 登入畫面左下角的輕鬆存取功能。只要將它們換成 cmd.exe 就可以在登入畫面喚出由系統身份 (NT Authority\System) 執行的「命令提示字元」,然後在那裡輸入 lusrmgr.msc 或用 net user 指令就可以新增帳戶然後進入 Windows 了。



由於小弟偏好這個技巧,但坊間的軟體好像沒有一種是完全利用這種技巧 (近似的雖有 WindowsGate、Sala's Password Renew、Dc-PASS,但都不是利用 sethc.exe),所以小弟編寫了一些指令檔,在令自己對工作生厭之前將這堆刻板的步驟自動化... 接下來會介紹 Sneaky Win Intruder Type 1,以下簡稱 Swi 1。







注意:執行 Swi 前請確定它所依賴的程式已經放在 Swi 資料夾或者系統資料夾 (System32)。請參閱 Readme.txt。



Swi 1 所做的可以簡單分成三部份:



1 - 置換 sethc.exe



因客人 Windows 受密碼保護,首要是用另一個作業系統起機 (e.g. Windows PE),進入後執行 Swi1.bat。跟著指示做。過程中如果它偵測到目標 Windows 為 Vista/7,而且 UAC (User Account Control) 狀態為開啟,便需輸入「y」關上 UAC 以確保後期運作無誤。成功後可關機然後啟動目標 Windows,進入第二部份。




Sneaky Win Intruder in Windows 7在 Windows 7 下搜尋 Windows 的畫面;可輸入「s」進入此選單





Sneaky Win Intruder in NoName XPE在 NoName XPE 下的 Part 1 完成畫面

(在 Windows PE 1.x 下執行前需先從 XP 補回 attrib.exe 和 find.exe,放在 Swi 資料夾)





2 - 新增帳戶



在目標 Windows 的登入畫面按下 shift 鍵五次,在彈出的「命令提示字元」輸入「adduser1」便會自動建成帳戶。過程中它會問是否重新載入歡迎畫面,如新增帳戶後歡迎畫面仍未出現新帳戶,可輸入「y」。最後用以下的帳戶資料登入:



  • 用者:temp

  • 密碼:Password12! (區分大小寫)




Windows 7 logon screen, sethc.exe hacked


Windows 7 下的 Part 2 過程動畫


(可見 Windows 7 下些訊息未能正常顯示,但不影響運作,按任何鍵繼續便可)




※ 3 -
還原系統



電腦修好,是時候刪除帳戶、「抹掉足印」了!先打開命令提示字元 (cmd.exe),輸入「clean1」。(注意不要經 shift 鍵技巧打開,否則恢復過程可能失敗。)



至目前為止,帳戶已刪除,sethc.exe 已恢復,上次登錄用戶記憶已刪除 (僅在 AutoAdminLogon 項目沒有設定時)。這時候其實您的部分已經完成,餘下的將在客人取回電腦後首次登入時在背景繼續執行。但是,若該用戶沒有系統管理員權限,作業便會失敗 (透過 RunOnce 執行的原故)。儘管真的失敗了,
其實普通用戶也不會輕易察覺到剩餘的痕跡;若成功,UAC 將重新啟用 (若最初是開的),用者設置檔 (user profile) 和其餘遺留下來的程式將被刪除。



已試過能用在中文或英文的 Windows XP、2003、Vista、7,基礎系統為 Windows PE 1.x 的 (NoName XPE,Hiren's Boot CD),PE 2.0 (VistaPE),PE 3.0 (C7PE)。不過仍有一點 bugs,請參閱 Readme.txt。



最後,按此下載。(請注意 Part 2 指令錯寫為「adduser」,要知道應為「adduser1」。下一版本會修正。)








歡迎用以下方式儲存或分享本文:

















Share

















Saturday, September 5, 2009

增強「命令提示字元」綠色版

Click here for English version of this article

您是否在 USB 隨身碟存放了很多命令列工具?


Command-line tools

作為系統管理員,您可能要隨身備用一堆有用的命令列工具。每當使用時,您首先要插入 USB 隨身碟,在目標電腦啟動命令提示字元,然後瀏覽磁區,確定程式位置後「CD」進去,最後啟動它。但您無時無刻都在使用,而且當程式數量、子資料夾不斷增加,您開始想會否有更簡單的方法 - 那就是命令提示字元綠色版 



命令提示字元綠色版 (Command Prompt Portable) 是又一個來自 PortableApps.com 的綠色軟體,它給我們一個可隨意自訂的命令提示字元;其中一種最有用的應用是設置 PATH 路徑到任何需要的位置。我們只需編輯在 CommandPromptPortable\Data\Batch 一個名為 commandprompt.bat 的批次檔,把 PATH 路徑設置為 e.g. %~d0\CommandPromptPortable\Exe、Sysinternals 等等我們把程式所存放的地方,%~d0 將自動成為 USB 隨身碟的根目錄。那麼,無論在哪台電腦,只要一打開命令提示字元,我們就可以立刻使用所有指令了!所以,與其對其它電腦的設置感沮喪,我們其實可以把命令提示字元和其設置隨身。



再進一步,這是小弟的增強型命令提示字元便攜版 (配合 PStart 作為啟動器)。




Enhanced Command Prompt Portable, ECPP 1.0, PStart
放在 CommandPromptPortable\Exe 根目錄的可執行檔 (.exe .bat .cmd .vbs...) 顯示為 file1.exe file2.bat ... 而資料夾顯示為 [dir1] [dir2] ... 因為量多的關係,小弟喜歡把程式分組 - 放進不同的資料夾。而用了這個指令檔後,只需記得程式的名稱 (在任何一個資料夾內) 便可以直接輸入並執行它,避免了要先進入子資料夾,而且再不用編輯 commandprompt.bat 來增加新 PATH 路徑;這指令檔實現了為所有包含程式的子資料夾動態設置 PATH 的功能。



一個可自選的功能是,只有當資料夾包含程式時才附加到路徑;這意味著 PATH 總長較短,消耗較少的記憶體,搜尋速度更快,但缺點是需要額外處理,啟動速度較慢。如要啟用它,請參閱 "commandprompt.bat /?"。



下圖顯示資料夾和路徑的關係。請特別留意綠線;雖然 UnxUtils 內有很多資料夾,但唯有 bin 和 wbin 被追加到 PATH 中。那是因為只有該兩個資料夾包含程式。



Command-line, Path


程式地點可不用理會,但假若不記得指令的名稱連要輸入甚麼都不知道該怎辦?可以首先用 DirC 或 ListC 命令看看子資料夾裡面有什麼。



這例子輸出 [Microsoft] 和 [PnP] 裡面有什麼 - "listc microsoft pnp"




ListC, ECPP

或者,以 DirC 輸出 Dir /w 風格 - "dirc microsoft netcat"

預設情況下,只有可執行檔 (定義為 .exe .bat .cmd .vbs...) 會被顯示。




DirC, ECPP



功能概要:


  • 隨運行時顯示歡迎訊息,同時列出放在 USB 隨身碟 CommandPromptPortable\Exe 內的程式;根目錄的 (.exe .bat .cmd .vbs) 顯示為 file1.exe file2.bat... 資料夾顯示為 [folder1] [folder2]...


  • PATH 路徑隨每次運行自動更新 (以檢測新程式)

  • 再不用編輯 commandprompt.bat 來增加新路徑


  • 只有包含可執行檔的資料夾會附加到 PATH,以節省空間 (可自訂)


  • 把不同命令列程式分類,放到不同資料夾 (以避免溢位)

  • 運用 DirC.bat 和 ListC.bat 列出指定子資料夾 [folder] 內的可執行檔,從而簡單地得知有甚麼程式名稱能輸入,e.g. "listc linux windows" (或 dirc) 將顯示所有在 [Linux] 和 [Windows] 內的程式

  • 指令檔不依賴特定位置;可把命令提示字元放在任何地方使用。




設置範例:


ECPP sample setup

(註:只有在 "Data\Batch" 內的 scripts 是小弟製作的)



您可以下載我的「Enhanced Command Prompt Portable」指令檔連同幾個免費的命令列工具一起使用。






※ 從「這裡」下載 | MD5: 3930227f85901741c7c20911a92dca3c






歡迎用以下方式儲存或分享本文:

















Share

















 

wander-sick Copyright © 2012 Fast Loading -- Powered by Blogger