干扰码
编辑:dnawo 日期:2007-01-07
以前54master博客里加了干扰码,正常复制粘贴文字时会出一堆乱七八糟的文字,后来觉得满有趣再去看时却没了这个功能,就无从查起。再后来无意中听说Discuz里头有干扰码这一功能开关,却又一直没有时间去看,这个周末又想了起来,决定好好研究下其个中究竟。
安装调试好PHP+Mysql环境后下载了Discuz! 5.0.0简体中文版,在后台添加了一新版块并在其修改页中看到了干扰码的设置项,开启该功能,退出后台随便发表了一篇贴子后退出登录(管理员看不到干扰码),再看贴子时终于见到了久违的干扰码^_^
经过一番追踪,最终将目标锁定于archiver/include/thread.inc.php,关键是里边的一个自定义函数jammer(),代码如下:
调用该函数将结果输出到页面:
就是它了。
其实原理并不是很复杂:将一些随机生成的ASCII值转换成字符并组成字符串,再将这些字符串插入贴子之中就可以了。知道了这个原理我们就可以在HTML、ASP等页面中利用它,下边自定义了一个VBScript干扰码产生函数:
干扰码应放在什么地方呢?有两种做法。常见的是放在每个段落后面,将"<br/>"替换成"干扰码+<br/>",这也是为什么要用style="font-size:0px;color:bgcolor";另一种方法是随机的在文章中放置,此时必须用style="display:none"。
示例一:
HTML代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
示例二:
HTML代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
后记:仔细看上边几个函数产生的干扰码,它们的位置是有规律的:为了不影响阅读就必须将干扰码置于font或span标签中。这样有规律很容易就能用正则表达式将其替换,干扰效果也随之打了个折扣。
附:干扰码转贴助手
HTML代码
安装调试好PHP+Mysql环境后下载了Discuz! 5.0.0简体中文版,在后台添加了一新版块并在其修改页中看到了干扰码的设置项,开启该功能,退出后台随便发表了一篇贴子后退出登录(管理员看不到干扰码),再看贴子时终于见到了久违的干扰码^_^
经过一番追踪,最终将目标锁定于archiver/include/thread.inc.php,关键是里边的一个自定义函数jammer(),代码如下:
复制内容到剪贴板
程序代码

<?php
function jammer() {
$randomstr = '';
for($i = 0; $i < mt_rand(5, 15); $i++) {
$randomstr .= chr(mt_rand(0, 59)).chr(mt_rand(63, 126));
}
return mt_rand(0, 1) ? '<font style="font-size:0px;color:'.ALTBG2.'">'.$randomstr.'</font><br />' :
'<br /><span style="display:none">'.$randomstr.'</span>';
}
?>
function jammer() {
$randomstr = '';
for($i = 0; $i < mt_rand(5, 15); $i++) {
$randomstr .= chr(mt_rand(0, 59)).chr(mt_rand(63, 126));
}
return mt_rand(0, 1) ? '<font style="font-size:0px;color:'.ALTBG2.'">'.$randomstr.'</font><br />' :
'<br /><span style="display:none">'.$randomstr.'</span>';
}
?>
调用该函数将结果输出到页面:
复制内容到剪贴板
程序代码

<?php
function jammer() {
$randomstr = '';
for($i = 0; $i < mt_rand(5, 15); $i++) {
$randomstr .= chr(mt_rand(0, 59)).chr(mt_rand(63, 126));
}
return mt_rand(0, 1) ? '<font style="font-size:0px;color:'.ALTBG2.'">'.$randomstr.'</font><br />' :
'<br /><span style="display:none">'.$randomstr.'</span>';
}
echo jammer();
?>
function jammer() {
$randomstr = '';
for($i = 0; $i < mt_rand(5, 15); $i++) {
$randomstr .= chr(mt_rand(0, 59)).chr(mt_rand(63, 126));
}
return mt_rand(0, 1) ? '<font style="font-size:0px;color:'.ALTBG2.'">'.$randomstr.'</font><br />' :
'<br /><span style="display:none">'.$randomstr.'</span>';
}
echo jammer();
?>
就是它了。
其实原理并不是很复杂:将一些随机生成的ASCII值转换成字符并组成字符串,再将这些字符串插入贴子之中就可以了。知道了这个原理我们就可以在HTML、ASP等页面中利用它,下边自定义了一个VBScript干扰码产生函数:
复制内容到剪贴板
程序代码

<script language="VBScript">
function getcode(icolor)
Dim iLen,i
randomize
iLen = int(31*rnd+20) '设置干扰码长度,范围[20,50]
for i = 1 to iLen
randomize
getcode = getcode & chr(int(127*rnd+1))
next
getcode = replace(getcode,"<","")
getcode = replace(getcode,">","")
getcode = "<span style=""font-size:0px;color:bgcolor"">" & getcode & "</span>" '只能置于段尾
'getcode = "<span style=""display:none"">" & getcode & "</span>" '可置于任意位置
end function
</script>
function getcode(icolor)
Dim iLen,i
randomize
iLen = int(31*rnd+20) '设置干扰码长度,范围[20,50]
for i = 1 to iLen
randomize
getcode = getcode & chr(int(127*rnd+1))
next
getcode = replace(getcode,"<","")
getcode = replace(getcode,">","")
getcode = "<span style=""font-size:0px;color:bgcolor"">" & getcode & "</span>" '只能置于段尾
'getcode = "<span style=""display:none"">" & getcode & "</span>" '可置于任意位置
end function
</script>
干扰码应放在什么地方呢?有两种做法。常见的是放在每个段落后面,将"<br/>"替换成"干扰码+<br/>",这也是为什么要用style="font-size:0px;color:bgcolor";另一种方法是随机的在文章中放置,此时必须用style="display:none"。
示例一:

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
示例二:

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
后记:仔细看上边几个函数产生的干扰码,它们的位置是有规律的:为了不影响阅读就必须将干扰码置于font或span标签中。这样有规律很容易就能用正则表达式将其替换,干扰效果也随之打了个折扣。
附:干扰码转贴助手

评论: 3 | 引用: 0 | 查看次数: 6489





请参考我在PJ官方论坛上传的文件:http://bbs.pjhome.net/viewthread.php?tid=13493&highlight=%2Bdnawo
发表评论
请登录后再发表评论!