dvbbs
收藏本页
联系我们
论坛帮助
dvbbs

>> 电脑网络管理、网页制作、免费素材、经验交流、软硬件......
搜一搜更多此类问题 
肿瘤咨询在线论坛站务服务『 电脑网络 』 → 对付论坛群发软件的方法

您是本帖的第 1595 个阅读者
树形 打印
标题:
对付论坛群发软件的方法
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
楼主
 

发贴心情
对付论坛群发软件的方法(050614最后更新)!!
对付论坛群发软件的方法(050614最后更新)!!

现在已有不少动网用户受到了一种称为“暴力营销”(168BBS)软件的骚扰。

该软件可以自动注册一个随机的新用户,并且发广告帖。根据作者声称:该软件可以在一小时内在2——5万个论坛群发广告。

官方似乎暂时还没有公布解决方案,于是我总结了几条解决的方法,供大家参考。

希望大家把自己改后的效果反馈一下,以便更好地对付群发。同时也希望大家把自己比较好的方法和大家分享。
不是每条都要挨着执行,也不是每条都一定有效,你可选用其中的几种方法。

根据大家的反馈,发现第二和第五两种方法最有效果,推荐使用。尤其是二!

一、更正验证码的易破解性

之前不论在7.0和7.1中,验证码都存在着缺陷,可以通过程序自动识别出验证码上的数字,于是没有真正起到验证码的作用。我们可以在注册时设置使用验证码,再按照以下方法修改。

验证码文件是Dv_GetCode.asp(7.1中)

找到这段代码:

     If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点
      Response.BinaryWrite vColorData(0)
     Else

将其改为

     If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点
       If Mid(vNumberData(vCode(ii)), i * 10 + iii, 1) Then
         Response.BinaryWrite vColorData(0)
       Else
          Response.BinaryWrite vColorData(1)
       End If

     Else

另外,找到以下代码

Const cOdds = 2 ' 杂点出现的机率

把2设置的稍大一些,建议设置为5~10。

以上部分的修改已经被很多实践证明效果很不明显。假如你有耐心,可以再试用手工修改验证码图片的方法(因麻烦故不推荐),这个一定有效果!如下:

这里我给出了一个自己做验证码的方法,里面有说明。
点击浏览该文件

这个是另一个朋友提供的验证码工具:http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=958224&page=1

使用7.0的用户可以用7.1的这个文件覆盖原来的。如果你修改了验证码的图片,可以不再考虑杂点的问题。

二、更改提交表单的元素属性

此方法为“研究动网”朋友提出来的。它可以在不用验证码系统的条件下对付群发软件。

在论坛注册页面,用户名,密码文本框的 name属性分别默认为name和psw。我们可以修改其属性达到限制软件注册的效果。

具体方法如下,7.0和7.1均适用:

进入后台,风格界面模板总管理 / 分页面模板(page_login)  / 界面风格 / template.html(13)

找到 <INPUT maxLength="{$NameMaxLength}" size=30 name=name>

将粉色的name改为其他值,比如改成 “name1”

然后打开reg.asp,以关键词Request.form("name")进行搜索

将其全部替换为Request.form("name1")

当然那个name1就是刚才你在风格模板里改的值

三、设置注册延时

设置新注册用户不能发帖,要一分钟或更多的时间后才能发帖。这样可以在一定程度上抵制非注册软件的攻击。但是对注册了的软件没有作用。

四、设置至少要有一个中文字符注册

这个方法并不太好,因为很多人实际上都比较喜欢用纯英文名。但是有不少朋友提出这个想法,这里还是列出在7.0和7.1里面的修改方法吧:

reg.asp文件,在蓝色代码

If Instr(username,"=")>0 or Instr(username,"%")>0 or Instr(username,chr(32))>0 or Instr(username,"?")>0 or Instr(username,"&")>0 or Instr(username,";")>0 or Instr(username,",")>0 or Instr(username,"'")>0 or Instr(username,",")>0 or Instr(username,chr(34))>0 or Instr(username,chr(9))>0 or Instr(username,"")>0 or Instr(username,"$")>0 or Instr(username,"|")>0 Then
  Dvbbs.AddErrCode(19)
  Exit sub
End If

下添加以下红色代码

Dim IsCHName
IsCHName = False
For i = 1 To Len(UserName)
  If Asc(Mid(UserName, i, 1)) < 0 Then
   IsCHName = True
   Exit For
  End If
Next
If Not IsCHName Then
  Response.redirect "showerr.asp?ErrCodes=<li>请至少输入一个中文字符。&action=OtherErr"
  
End If

五、修改注册页面的地址

首先将论坛根目录下的reg.asp改名,比如改成reg1.asp,然后进入后台 / 风格界面模板总管理

在main_Style,Page_Login的“界面风格”中搜索“reg.asp”(注意7.0中不要把chkreg.asp替换了),全部替换成比如“reg1.asp”

===========================================================

几点补充(2005-06-14):

1、第一种方法前半部分关于修改论坛杂点的方法已证明无用。

2、第二种方法中,当用户注册一个已经存在的用户名时,检测帐号时提示"可以正常注册",而实际上却不能。
这是个比较小的问题。
可以修改inc/Mymodify.js。找到document.theForm.name.value,将其改成document.theForm.name1.value(假设你以前是将“name”改成“name1”。要注意的是这个改后的名字比如name1只能是字母数字和下划线的组合且首字符必须是字母)。

3、第五种方法需要修改的分页面模板除了Main_Style,page_login以外,还有page_index,page_paper_even_toplist,page_showerr,page_post。

4、对付“群发王”,“论坛狂帖”等利用已注册的用户来发帖的软件。

后台 / 风格界面模板总管理 / page_dispbbs / 界面风格
后台 / 风格界面模板总管理 / page_post / 界面风格

搜索name="Body",全部替换成比如name="Body1",然后打开savepost.asp,将Request.Form("body")替换成比如Request.Form("Body1")

5、几个供参考的链接:

以理论的角度论对抗群发软件,兼论OCR
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=968567

群发软件“论坛狂帖”v2.0的工作原理
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=994194

“QBQ战鹰”重新修改过的验证码生成程序
http://bbs.dvbbs.net/dispbbs.asp?BoardID=8&ID=956875&replyID=1596692&skin=1


--------------------------------------

编辑下楼主的贴,方便其他朋友阅读。

另外,还要感谢一下楼主的热心 :)

改变验证码的颜色的用处是有限的,OCR会先将图片转为灰色再进行识别,那么原图片是红色或者蓝色灰度以后区别都不大,而加杂点或者干扰线就能起到比较好的效果,

                                                                                         帆若无 050429


ip地址已设置保密
2005-6-24 6:57:42
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
2
 

发贴心情
http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=956875&page=1
ip地址已设置保密
2005-6-24 6:58:26
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
3
 

发贴心情

不过自己总结了一种方法,与楼主的某个差不多,但要简单的多。

一。将reg.asp改名为reg888.asp

二。用记事本新建一文本:写入以下代码:

<meta http-equiv="refresh" content="1;url=http://您的论坛目录/reg888.asp">

存为reg.asp上传到论坛根目录。

三。然后进后台,到风格模板总管理,修改page_login的界面风格,template.html(12)里将reg.asp改为reg888.asp

四。template.html(13)里将reg.asp改为reg888.asp

就OK了。

ip地址已设置保密
2005-6-30 18:44:01
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
4
 

发贴心情

以下是引用“QBQ战鹰”给我的短信:

重新修改过的验证码生成程序

下面的程序是我修改过的验证码生成程序,需要AspJpeg支持,不过可以灵活的修改字体和背景干扰线,能够比较有效次对付OCR

<%

Option Explicit
Response.buffer=true
Call Com_CreatValidCode("GetCode")
Sub Com_CreatValidCode(pSN)
    'Author: 战鹰
    'QQ: 280147559
    'E-mail: zhanying At QBQ Dot CN
    ' 禁止缓存
    Response.Expires = -9999
    Response.AddHeader "Pragma","no-cache"
    Response.AddHeader "cache-ctrol","no-cache"
    ''Response.ContentType = "Image/BMP"
    Randomize    

    Dim i, ii, iii
    dim vCodes
    For i = 0 To 3 '生成4位数字
      vCodes = vCodes &Int(Rnd * 10)
    Next
    Session(pSN) = vCodes
    'response.write vCodes
    Dim Jpeg
    Set Jpeg = Server.CreateObject("Persits.Jpeg")
    'response.write vCodes
    Jpeg.New 50,20,"&H000000"        '设置图片的宽,高背景颜色
    Jpeg.Canvas.Font.Color = "&HFFFFFF" '设置字体颜色
    Jpeg.Canvas.Font.Family = "Arial Bold"    '设置字体
    Jpeg.Canvas.Font.Bold = True    '是否是粗体
    Jpeg.Canvas.Font.Size = 24    '字号
    Jpeg.Canvas.print 3,-2,vCodes    '输出的初始位置
    Jpeg.Canvas.Pen.Color="&HFFFFFF"    '背景格线的颜色
    Jpeg.Canvas.Pen.Width=1    '格线的粗细
    '绘制格线
    for i=-3 to 7
        Jpeg.Canvas.DrawLine i*10,0,(i*10)+40,40
  next
    for i=-3 to 7
        Jpeg.Canvas.DrawLine i*10,40,(i*10)+40,0
  next
  '输出图片
    Response.ContentType = "Image/jpeg"
    Response.BinaryWrite Jpeg.Binary
End Sub
%>

ip地址已设置保密
2005-6-30 18:46:02
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
5
 

发贴心情

无组件生成BMP验证码

Call Com_CreatValidCode("ValidCode")

Sub Com_CreatValidCode(pSN)

     'Author: Layen
     'QQ: 84815733
     'E-mail: support@ssaw.net

     ' 禁止缓存
     Response.Expires = -9999
     Response.AddHeader "Pragma","no-cache"
     Response.AddHeader "cache-ctrol","no-cache"
     Response.ContentType = "Image/BMP"

     Randomize

     Dim i, ii, iii

     Const cOdds = 8 ' 杂点出现的机率
     Const cAmount = 36 ' 文字数量
     Const cCode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

     ' 颜色的数据(字符,背景)
     Dim vColorData(1)
     vColorData(0) = ChrB(0) & ChrB(0) & ChrB(0)  ' 蓝0,绿0,红0(黑色)
     vColorData(1) = ChrB(250) & ChrB(236) & ChrB(211) ' 蓝250,绿236,红211(浅蓝色)

     ' 随机产生字符
     Dim vCode(4), vCodes
     For i = 0 To 3
           vCode(i) = Int(Rnd * cAmount)
           vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)
     Next

     Session(pSN) = vCodes  '记录入Session

     ' 字符的数据
     Dim vNumberData(35)
     vNumberData(0) = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
     vNumberData(1) = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
     vNumberData(2) = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"
     vNumberData(3) = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"
     vNumberData(4) = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"
     vNumberData(5) = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"
     vNumberData(6) = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111"
     vNumberData(7) = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111"
     vNumberData(8) = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111"
     vNumberData(9) = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111"
     vNumberData(10) = "1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011"
     vNumberData(11) = "1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111"
     vNumberData(12) = "1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111"
     vNumberData(13) = "1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111"
     vNumberData(14) = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111"
     vNumberData(15) = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111"
     vNumberData(16) = "1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111"
     vNumberData(17) = "1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011"
     vNumberData(18) = "1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111"
     vNumberData(19) = "1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111"
     vNumberData(20) = "1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011"
     vNumberData(21) = "1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011"
     vNumberData(22) = "1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011"
     vNumberData(23) = "1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111"
     vNumberData(24) = "1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111"
     vNumberData(25) = "1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111"
     vNumberData(26) = "1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011"
     vNumberData(27) = "1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011"
     vNumberData(28) = "1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111"
     vNumberData(29) = "1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111"
     vNumberData(30) = "1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111"
     vNumberData(31) = "1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111"
     vNumberData(32) = "1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111"
     vNumberData(33) = "1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011"
     vNumberData(34) = "1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111"
     vNumberData(35) = "1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011"

     ' 输出图像文件头
     Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(10) & ChrB(0) &_
           ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)

     ' 输出图像信息头
     Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_
           ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) &_
           ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_
           ChrB(0) & ChrB(0)

     For i = 9 To 0 Step -1  ' 历经所有行
           For ii = 0 To 3  ' 历经所有字
                 For iii = 1 To 10 ' 历经所有像素
                 ' 逐行、逐字、逐像素地输出图像数据
                       If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点
                             Response.BinaryWrite vColorData(0)
                       Else
                             Response.BinaryWrite vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
                       End If
                 Next
           Next
     Next
End Sub

作者Blog:http://blog.csdn.net/Layen/
ip地址已设置保密
2005-6-30 19:36:24
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
6
 

发贴心情
对付论坛群发-验证码工具


点击浏览该文件
这是我在修改自己网站注册码时写的小工具,希望对大家也有用处,我的注册码已经被修改了,大家可以到这里看看http://forum.easydigi.com/reg.asp?action=apply  。

使用方法:
首先要自已制作出10x10大小的单色BMP图片,里面是你想要的字母或数字。
然后用这个软件打开,选择解码,就会自动转换成dv_getcode.asp里面需要的010101之类的代码。

关于对付论坛群发工具可以看这里:http://bbs.dvbbs.net/dispbbs.asp?boardid=8&replyid=956875&id=956875&page=1&skin=0&Star=1

ip地址已设置保密
2005-6-30 19:42:45
web
帅哥哟,离线,有人找我吗?
头衔:半人半兽
等级:管理员
文章:2831
积分:13654
注册:2003年12月25日
7
 

发贴心情

以下是我用ASP做的

发送图片到手机点击浏览该文件

把GetAll.asp和IMG.asp放到论坛根目录。
假设你的论坛地址是http://***/bbs
在浏览器地址栏里输入
http://***/bbs/GetAll.asp
就能得到一个10位数的图片,在图片上点右键,保存在论坛根目录下,命名为“GetAll.bmp”。
然后用Photoshop等图象处理该图片,把那些文字改成自己的。
需要特别特别注意的是整个图片只允许出现两种颜色!!前景色和背景色。
你甚至可以改成中文字符。但改后必须在Dv_GetCode.asp里修改“Const cCode =”。
然后在地址栏里输入http://***/bbs/IMG.asp,就能得到一些代码。
如:
vNumberData(0) ="1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"
将其全部拷贝到Dv_GetCode.asp的相应部分覆盖即可。

ip地址已设置保密
2005-6-30 19:43:03

 7   7   1/1页      1    
网上贸易 创造奇迹! 阿里巴巴 Alibaba
Copyright ©2000 - 2002 chinaonco.net
Powered By Dvbbs Version 7.1.0 Sp1
页面执行时间 0.10986 秒, 4 次数据查询