有感投票败北,浅谈《自动投票机原理》(限于WEB)【原 ...

来源:百度文库 编辑:超级军网 时间:2024/04/29 13:11:29
有感投票败北,浅谈《自动投票机原理》(限于WEB)【原创】

    通常,网友们在网站上投票,都需要首先登录。用户名、密码、IP、时间等等,都是必须或可能被服务端验证的对象。不黑掉对方网站或“有幸”得到需要的东西前提下,通常很难进行下去。

    然而,这类选秀投票,往往不需登录就能投票。按说,对会写JAVAScript之类程序者简直易如反掌。可事实上为何却不是那么回事呢?图形验证码!现在网站都采用的图形验证码,成了一道很难逾越的拦路虎。可以用任何语言,写一个定时向某网站发送既定要求的数据包,然而却很难让软件自动回答对方要求的图形验证码。

    “道高一尺魔高一丈”,也不是完全无法获取图形验证码,手写识别技术早在手写板、扫描器、手机上普及了。但是,为了这样的投票,让谁运用手写体、视网膜、指纹识别技术,真是大材小用了!可网上真有吃饱了撑得难受的人,写出了这类软件呢!虽不是100%准确,80%以上的识别率已经让人叹为观止了。很多User应该是找到了这类软件来作弊的。所以现在很多网站的图形验证码越来越难以辨识,有次我连续更新了20多张,硬是没一个能认出来,这不是坑爹嘛!一怒之下干脆放弃鸟。

    另一种途径就是穷举了。对方的图片验证码是随机生成的不假,但是绝对是有限资源。比方说,一个四字符的图形验证码,懒点的网站可能是连体图片,勤劳点的网站会是分体图片合成出来的。不管哪种方式,都不是无穷无限的。在有限基础之上,穷举是很好的方式了。

    不断向服务端索取图形验证码,就能穷举对方的有限资源了。穷举完对方这个有限资源库后,图形对比远比图像识别简单多了。(垃圾网站在客户端显露图形验证码的图片名称就不提了,那不堪一击)

    现在话归正题。拿这次投票来说,我们可以在点击了投票之后的投票页面里,找到这样的源代码中:

    <img  src="/code/GetCode.asp" alt="验证码,看不清楚?请点击刷新验证码" style="cursor : pointer;"  onclick="this.src='/code/GetCode.asp?t='+(new Date().getTime());">

    自然,GetCode.asp这个服务端本地执行的程序文件,就是提供图形验证码的负责者了。想看看?不能!除非网站管理人员太笨,否则取回来的这个文件也没任何意义。从这段代码中我们发现了两个函数:Date()和getTime()。很好!这就坚定了我们早先判定的、对方资源是有限的一说。
    查看验证码图片的属性会发现:bmp图像 http://xxx.yyy.com/code/GetCode.asp(友情提示:隐匿了原网站真实地址,点击此连接没有任何意义),并不显示该图片在服务端的文件名。不要懊恼,图片本身绝对已经在你电脑中了^_^(getTime()函数应该是限时的,验证码的时效性大家都遇到过吧)

    编写一段小程序,按照Http协议包不断向服务器索取图形验证码,会穷举出对方全部的验证码图片。保存在一个图片数据库中,重复的忽略掉(对比)。这个工作24小时内应该做完,需要您一一人工识别并注解出字符方式的识别码,不要偷懒。

    接下来,就是遵循Http协议,按照对方要求写程序模拟投票行为了。当服务端给出验证码图片,要求用户识别并输入时,与先前获得的图片数据库中的图片一一对比,就得到了字符方式的验证码了,应答服务端即可。

    当然,要遵守对方的一些规定,比如同一IP投票的时间间隔和每天多少次。对此,不黑掉服务端,还真不好打破,那翻墙技术就用上了,这话题表过不提。【记住一点:眼下国内因为IP资源有限,大多数私人用户或网吧终端用户都是内网网址。封杀服务端能得知的公网IP,会殃及众多无辜。所以,网站通常不会根据IP封杀用户,除非获得对方内网IP(木马技术,略过)】

    假如一个QQ群或者一个论坛的网友,都在自己电脑上后台运行这样一个程序,不用翻墙也能完胜对手。前提是相信发起人提供的程序绝对无毒,因为这属于外挂很可能被恶意内置了木马。

【写给没关心过此类问题的网友们,这不是病毒木马外挂的散播,并无具体之实现,绝对不违反国家任何规定。只希望读了鄙文的网友,不要因为投票败北而自输】

作者声明:本文版权归超大和作者所有(本可挣点稿费呢,俺义务献给亲爱的超大吧),未经超大许可,各媒体、网站和出版社不得以任何方式转发或引用。有感投票败北,浅谈《自动投票机原理》(限于WEB)【原创】

    通常,网友们在网站上投票,都需要首先登录。用户名、密码、IP、时间等等,都是必须或可能被服务端验证的对象。不黑掉对方网站或“有幸”得到需要的东西前提下,通常很难进行下去。

    然而,这类选秀投票,往往不需登录就能投票。按说,对会写JAVAScript之类程序者简直易如反掌。可事实上为何却不是那么回事呢?图形验证码!现在网站都采用的图形验证码,成了一道很难逾越的拦路虎。可以用任何语言,写一个定时向某网站发送既定要求的数据包,然而却很难让软件自动回答对方要求的图形验证码。

    “道高一尺魔高一丈”,也不是完全无法获取图形验证码,手写识别技术早在手写板、扫描器、手机上普及了。但是,为了这样的投票,让谁运用手写体、视网膜、指纹识别技术,真是大材小用了!可网上真有吃饱了撑得难受的人,写出了这类软件呢!虽不是100%准确,80%以上的识别率已经让人叹为观止了。很多User应该是找到了这类软件来作弊的。所以现在很多网站的图形验证码越来越难以辨识,有次我连续更新了20多张,硬是没一个能认出来,这不是坑爹嘛!一怒之下干脆放弃鸟。

    另一种途径就是穷举了。对方的图片验证码是随机生成的不假,但是绝对是有限资源。比方说,一个四字符的图形验证码,懒点的网站可能是连体图片,勤劳点的网站会是分体图片合成出来的。不管哪种方式,都不是无穷无限的。在有限基础之上,穷举是很好的方式了。

    不断向服务端索取图形验证码,就能穷举对方的有限资源了。穷举完对方这个有限资源库后,图形对比远比图像识别简单多了。(垃圾网站在客户端显露图形验证码的图片名称就不提了,那不堪一击)

    现在话归正题。拿这次投票来说,我们可以在点击了投票之后的投票页面里,找到这样的源代码中:

    <img  src="/code/GetCode.asp" alt="验证码,看不清楚?请点击刷新验证码" style="cursor : pointer;"  onclick="this.src='/code/GetCode.asp?t='+(new Date().getTime());">

    自然,GetCode.asp这个服务端本地执行的程序文件,就是提供图形验证码的负责者了。想看看?不能!除非网站管理人员太笨,否则取回来的这个文件也没任何意义。从这段代码中我们发现了两个函数:Date()和getTime()。很好!这就坚定了我们早先判定的、对方资源是有限的一说。
    查看验证码图片的属性会发现:bmp图像 http://xxx.yyy.com/code/GetCode.asp(友情提示:隐匿了原网站真实地址,点击此连接没有任何意义),并不显示该图片在服务端的文件名。不要懊恼,图片本身绝对已经在你电脑中了^_^(getTime()函数应该是限时的,验证码的时效性大家都遇到过吧)

    编写一段小程序,按照Http协议包不断向服务器索取图形验证码,会穷举出对方全部的验证码图片。保存在一个图片数据库中,重复的忽略掉(对比)。这个工作24小时内应该做完,需要您一一人工识别并注解出字符方式的识别码,不要偷懒。

    接下来,就是遵循Http协议,按照对方要求写程序模拟投票行为了。当服务端给出验证码图片,要求用户识别并输入时,与先前获得的图片数据库中的图片一一对比,就得到了字符方式的验证码了,应答服务端即可。

    当然,要遵守对方的一些规定,比如同一IP投票的时间间隔和每天多少次。对此,不黑掉服务端,还真不好打破,那翻墙技术就用上了,这话题表过不提。【记住一点:眼下国内因为IP资源有限,大多数私人用户或网吧终端用户都是内网网址。封杀服务端能得知的公网IP,会殃及众多无辜。所以,网站通常不会根据IP封杀用户,除非获得对方内网IP(木马技术,略过)】

    假如一个QQ群或者一个论坛的网友,都在自己电脑上后台运行这样一个程序,不用翻墙也能完胜对手。前提是相信发起人提供的程序绝对无毒,因为这属于外挂很可能被恶意内置了木马。

【写给没关心过此类问题的网友们,这不是病毒木马外挂的散播,并无具体之实现,绝对不违反国家任何规定。只希望读了鄙文的网友,不要因为投票败北而自输】

作者声明:本文版权归超大和作者所有(本可挣点稿费呢,俺义务献给亲爱的超大吧),未经超大许可,各媒体、网站和出版社不得以任何方式转发或引用。


第一次俺错发到了“畅谈”版,为了不麻烦斑竹和管理员们,俺自己删除了;
之后因为某些措辞需要修改,还不想被打上本贴被修改过的标识,又忍痛删除了三次
损失4分+8金钱呢!

PS:看懂看不懂的水友(看不懂绝对是俺的错{:soso_e110:} ),咋说也要给点鼓励或砖头不是?

第一次俺错发到了“畅谈”版,为了不麻烦斑竹和管理员们,俺自己删除了;
之后因为某些措辞需要修改,还不想被打上本贴被修改过的标识,又忍痛删除了三次
损失4分+8金钱呢!

PS:看懂看不懂的水友(看不懂绝对是俺的错{:soso_e110:} ),咋说也要给点鼓励或砖头不是?
投票去也,恐怕是截止前最后一次了。12点前难得再有空闲了。有机会当然还会再投


    补充:坑爹的方式是,服务端在发给客户端图形验证码前,对图片随机“喷雾”或"划伤",这...这...这...作为客户端的自动识别软件,就必须智能识别了。人家哪怕随机乱点个点点,靠图片对比就失败了(有小技巧可以解决,保密)。

    事实上,将随机字符转换成图片,非常简单。
    例如服务端:

    <?php
        $str = $_REQUEST["id"]."   "." ABCDEFG0123456789";
        $size = 10;
        $x = 3;
        $y = 15;
        $w = 1000;
        $h = 30;

        $img = ImageCreate ($w, $h) or die(" 对不起,创建图片失败!");
        $text_color = ImageColorAllocate($img, 0, 0, 0);
        $bg_color = ImageColorAllocate($img, 0, 0, 0);
        ImageFilledRectangle ($img, 0, 0, $w, $h, $bg_color);
        $bg_color_trans=ImageColorTransparent($img, $bg_color);
        Imagefttext($img, $size, 0, $x, $y, $text_color, "c:/windows/fonts/SIMSUN.TTC", iconv( "GB2312", "UTF-8", $str));
        header("Content-type: image/png");
        ImagePng($img);
        ImageDestroy($img);
    ?>


    这是把字符串“ABCDEFG0123456789”转换成一个png图像,红色部分是服务端电脑中的可选字体。自己安装的字体,文本方式聊天时根本没有用处。虽然自己可见,而对方不可见。文本在网上只传输编码,只有对方电脑中安装了同样字体才会显示出来,但图形则不同。

    转换成bmp、jpg、gif等一样原理。如果再加上之前所说的图像涂鸦变形(在确保用户能识别的基础上),穷举法基本无效,只能智能识别了,这可是真功夫。【原创,算是1楼文章的补充】

    补充:坑爹的方式是,服务端在发给客户端图形验证码前,对图片随机“喷雾”或"划伤",这...这...这...作为客户端的自动识别软件,就必须智能识别了。人家哪怕随机乱点个点点,靠图片对比就失败了(有小技巧可以解决,保密)。

    事实上,将随机字符转换成图片,非常简单。
    例如服务端:

    <?php
        $str = $_REQUEST["id"]."   "." ABCDEFG0123456789";
        $size = 10;
        $x = 3;
        $y = 15;
        $w = 1000;
        $h = 30;

        $img = ImageCreate ($w, $h) or die(" 对不起,创建图片失败!");
        $text_color = ImageColorAllocate($img, 0, 0, 0);
        $bg_color = ImageColorAllocate($img, 0, 0, 0);
        ImageFilledRectangle ($img, 0, 0, $w, $h, $bg_color);
        $bg_color_trans=ImageColorTransparent($img, $bg_color);
        Imagefttext($img, $size, 0, $x, $y, $text_color, "c:/windows/fonts/SIMSUN.TTC", iconv( "GB2312", "UTF-8", $str));
        header("Content-type: image/png");
        ImagePng($img);
        ImageDestroy($img);
    ?>


    这是把字符串“ABCDEFG0123456789”转换成一个png图像,红色部分是服务端电脑中的可选字体。自己安装的字体,文本方式聊天时根本没有用处。虽然自己可见,而对方不可见。文本在网上只传输编码,只有对方电脑中安装了同样字体才会显示出来,但图形则不同。

    转换成bmp、jpg、gif等一样原理。如果再加上之前所说的图像涂鸦变形(在确保用户能识别的基础上),穷举法基本无效,只能智能识别了,这可是真功夫。【原创,算是1楼文章的补充】
顶下,以后我家宝宝比赛,就雇佣你刷了
哇塞,楼主原来是码农啊,佩服佩服
  楼主原来是技术大牛。。
       楼主原来是干这个的,犀利
水区惊现技术派
网络投票的确不靠谱。和人大有的一比了
文科生看不懂,学习一下
学习一下....
午休时间,俺来了。
谢谢大家。

3483365 发表于 2012-5-22 07:05
顶下,以后我家宝宝比赛,就雇佣你刷了


惭愧,见4楼新增部分。智能识别,俺还得学习才行。象Hotmail那样的图片验证码,俺人眼盯半天都看不出来,电脑更傻眼。:D

PS:忘了说,仅仅是业余爱好。俺本职是泥瓦匠,装修找俺还行
3483365 发表于 2012-5-22 07:05
顶下,以后我家宝宝比赛,就雇佣你刷了


惭愧,见4楼新增部分。智能识别,俺还得学习才行。象Hotmail那样的图片验证码,俺人眼盯半天都看不出来,电脑更傻眼。:D

PS:忘了说,仅仅是业余爱好。俺本职是泥瓦匠,装修找俺还行
惭愧,见4楼新增部分。智能识别,俺还得学习才行。象Hotmail那样的图片验证码,俺人眼盯半天都看不出来 ...
码农一天赚个两三百,还要加班,装修的一天起码五百,有前途多了
华夏冉闵 发表于 2012-5-22 15:05
码农一天赚个两三百,还要加班,装修的一天起码五百,有前途多了

:D您家需要装修不?保质保量[:a15:]

PS:俺难道是两个250?{:soso_e109:}
{:150人才啊
cnnetspy2000 发表于 2012-5-22 15:14
您家需要装修不?保质保量

PS:俺难道是两个250?
我家新买了房子正在装修,工人NB大了,好难服侍,天天我炒菜做饭给他们吃,还不满意
楼主厉害,学习了
华夏冉闵 发表于 2012-5-24 12:32
我家新买了房子正在装修,工人NB大了,好难服侍,天天我炒菜做饭给他们吃,还不满意
不带这样吧?这。。。就麻烦了,谁装修还管吃管喝?这下,你继续好吃好喝好招待吧,不然质量可想而知。这还得您感动了他们:D
<img  src="/code/GetCode.asp" alt="验证码,看不清楚?请点击刷新验证码" style="cursor : pointer;"  onclick="this.src='/code/GetCode.asp?t='+(new Date().getTime());">

    自然,GetCode.asp这个服务端本地执行的程序文件,就是提供图形验证码的负责者了。想看看?不能!除非网站管理人员太笨,否则取回来的这个文件也没任何意义。从这段代码中我们发现了两个函数:Date()和getTime()。很好!这就坚定了我们早先判定的、对方资源是有限的一说。
    查看验证码图片的属性会发现:bmp图像 http://xxx.yyy.com/code/GetCode.asp(友情提示:隐匿了原网站真实地址,点击此连接没有任何意义),并不显示该图片在服务端的文件名。不要懊恼,图片本身绝对已经在你电脑中了^_^(getTime()函数应该是限时的,验证码的时效性大家都遇到过吧)


这一段我有不同意见
<img  src="/code/GetCode.asp"
从这里可以看出 有没有后面的参数 t  不影响验证码
这里的 Date()和getTime() 只是为了告诉浏览器这是一个新的地址
wwjjhh 发表于 2012-5-29 09:11
自然,GetCode.asp这个服务端本地执行的程序文件,就是提供图形验证码的负责者了。想看看?不能!除 ...
对asp没研究过,但是参数却是至关重要的。您仔细想,邮递员就一个,而信件无数封