歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 23, 2024, 01:06:51 上午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
  列出文章
頁: [1] 2
1  開發 / 外掛程式 / 有這樣的回復外挂嗎? 於: 六月 16, 2007, 08:32:44 下午
http://blog.redv.com/shutra/entry/200701061

#

请回答这个简单的数学题

6 + 48 =

這樣就沒辦法spam了吧?
2  開發 / 外掛程式 / 使用Better Captch的authimage之后还是被spam了 於: 五月 23, 2007, 07:58:53 下午
根据twu2的这个文章做了Better Captcha的authimage,但是还是被spam了
http://forum.lifetype.org.tw/index.php?topic=2980.0

有什么办法吗?
可以看看这里
http://blog.xfocus.net/index.php?op=ViewArticle&articleId=2651&blogId=11#comments
我是去掉了一些容易混淆的字符,比如1和l和i,按道理也不那么容易spam啊,这个模糊程度很高了
分析应该分析不出来,难道还有别的spam办法?

不知道各位有遇到没?
3  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 12, 2007, 07:52:30 上午
不客气的
纯粹的体力活 :)
4  開發 / 外掛程式 / Re: 讓 authimage 顯示中文的數字 於: 三月 12, 2007, 07:51:33 上午
我有看到那篇, 不過, 我也是用 debian/etch, 並沒有自己重編 php, 都使用內建的模組, 並沒有與你一樣的問題.

apt装的lamp会装上很多php模块的,我的虽然是在debian下,但apache和php是自己编译的所以会遇到这个问题

希望twu2继续多出好东西啊 :)
5  開發 / 外掛程式 / Re: 讓 authimage 顯示中文的數字 於: 三月 11, 2007, 11:49:44 上午
我倒……我说难怪我输入老不对……
不过我现在用了模糊的数字了的,也是你写的patch,先用着吧
不过那个有点麻烦,要重新编译php支持ttf
6  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 11, 2007, 10:28:38 上午
这个是我改好的for 1.0的pluginauthimage.class.php文件,有需要的朋友可以直接拿来用了,数字1有时有点难看,我也去掉了
程式碼:
<?php

    
include_once( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/plugin/pluginmanager.class.php" );
include_once( PLOG_CLASS_PATH."class/dao/model.class.php" );
include_once( PLOG_CLASS_PATH."class/net/rawrequestgenerator.class.php" );
    include_once( 
PLOG_CLASS_PATH."class/misc/glob.class.php" );
    include_once( 
PLOG_CLASS_PATH."plugins/authimage/class/security/authimagefilter.class.php" );

    
define"AUTHIMAGE_FILE""/plugins/authimage/authimage.php" );
    
define"AUTHIMAGE_BACKGROUND_FOLDER"PLOG_CLASS_PATH."plugins/authimage/backgrounds/" );
   
// twu2 20061016 begin
    
define"AUTHIMAGE_FONT_FOLDER"PLOG_CLASS_PATH."plugins/authimage/fonts/" );
   
// twu2 20061016 end

    /**
     * Plugin that offers comment authentication image for current blog
     * Original Author: Gudlyf http://www.gudlyf.com/index.php?p=376
     * Modified by: Mark Wu
     */
    
class PluginAuthImage extends PluginBase
    
{
        var 
$pluginEnabled;
        var 
$default;
        var 
$cacheFolder;
        
        function 
PluginAuthImage()
        {
            
$this->PluginBase();
            
            
$this->id "authimage";
            
$this->author "Mark Wu";
            
$this->desc 'This plugin offers extra comment authentication for pLog. The idea is inspired by <a href="http://www.gudlyf.com/index.php?p=376">WordPress AuthImage Plugin</a> written by Gudlyf.';

            
$this->locales = Array( "en_UK" "zh_TW" "zh_CN""es_ES" );
            
            
$this->init();              
        }

function init()
{
// register the filter
$this->registerFilter"AuthImageFilter" );

            
$this->registerAdminAction"authimage""PluginAuthImageConfigAction" );
$this->registerAdminAction"updateAuthImageConfig""PluginAuthImageUpdateConfigAction" );
$this->registerBlogAction"AuthImageShow""PluginAuthImageShowAction" );

$menu =& Menu::getMenu();
if( !$menu->entryExists"/menu/controlCenter/manageAntiSpamPlugins" ))
$this->addMenuEntry"/menu/controlCenter""manageAntiSpamPlugins"""""truefalse );
            
$this->addMenuEntry"/menu/controlCenter/manageAntiSpamPlugins""AuthImage""?op=authimage""" );
}
 
function register()
{
            
$config =& Config::getConfig();
            
$this->cacheFolder $config->getValue('temp_folder');
$this->cacheFolder $this->cacheFolder.'/authimage/'.$this->blogInfo->getId();
if( !File::exists$this->cacheFolder )) {
File::createDir$this->cacheFolder );
}
    
    $blogSettings $this->blogInfo->getSettings();
$this->pluginEnabled $blogSettings->getValue"plugin_authimage_enabled" );
$this->length $blogSettings->getValue"plugin_authimage_length" );
$this->key $blogSettings->getValue"plugin_authimage_key" );
$this->default $blogSettings->getValue"plugin_authimage_default" );
}

    function isEnabled()
    {
        return $this->pluginEnabled;
    }

        function 
pluginTemplatePage$template )
        {
 
$rg = new RawRequestGenerator($this->blogInfo);
            
        
$rg->addParameter"op""AuthImageShow" );
            
$rg->addParameter"blogId"$this->blogInfo->getId());

            
$templatePage $rg->getIndexUrl().$rg->getRequest();

            return 
$templatePage;
        }

        function 
show() {
$authImageUrl $this->generateImageUrl();
        
$authImage $this->pluginTemplatePage"authimage" );
              if ( 
$authImageUrl )
  return '<img src="'.$authImageUrl.'" style="vertical-align:middle;" alt="authimage" />';
else 
  return ' you did not have gd support';
        }

        function 
showImage() {
// twu2 20061016 begin
            $code $this->generateCode();
            $encrypt $this->encrypt($code$this->key);
            if ( function_exists 'ImageGIF' ) )
       $image_format 'gif';
       else
       $image_format 'png';
           $tempFile $this->cacheFolder."/".$encrypt.".".$image_format;
       $this->captcha_createimage($code$image_format$tempFile);
        
/*    $code = $this->generateCode();
            $encrypt = $this->encrypt($code, $this->key);
            $background = AUTHIMAGE_BACKGROUND_FOLDER.$this->default;
           $tempFile = $this->cacheFolder."/".$encrypt.".gif";

            if(function_exists ( 'imagecreatefromgif' )){
                $image = @imagecreatefromgif($background) or die("Cannot Initialize new GD image stream");
}
else if(function_exists ( 'imagecreatefrompng' )){
                $image = @imagecreatefrompng($background) or die("Cannot Initialize new GD image stream"); 
            } else {
  die("Server doesn't support GIF or PNG creation. Sorry.");
            }           
            
            $textColor = imageColorAllocate($image, 0x00, 0x00, 0x00);
            ImageString($image, 5, 7, 2, $code, $textColor);

            if ( !function_exists ( 'ImageGIF' ) ) {
                ImagePNG($image, $tempFile);
            } else {
              ImageGIF($image, $tempFile);
            } */
            
$temp fopen($tempFile,"rb");
            
$buffer fread($temp,filesize($tempFile));
            
fclose($temp);
  
            
// Now zero-length the file. No need for its content anymore.
            
$temp fopen($tempFile,"w");
            
fwrite($tempNULL);
            
fclose($temp);

            
// Now chmod it so it can be deleted later by the user
            
chmod($tempFile0666);
            
// twu2 20061016 begin
            //header("Content-type: image/gif");
            header("Content-type: image/".$image_format);
// twu2 20061016 end

echo $buffer;
        }

        
// encrypt string
        
function encrypt($string$key) {
            
$plainText $string.$key;
            
$encodeText md5($plainText);
            return 
$encodeText;
        }
        

        function 
generateCode() {
            
$code "";
            
// twu2 20061016 begin
            //for($i=0; $i < $this->length; $i++) $code .= rand(0,9);
       //$hash = "0123456789";
      //$hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
       $hash "03456789ABCDEFGHKMNPQRWXYZ";
       $len strlen($hash) - 1;
            for($i=0$i $this->length$i++) $code .= $hash[rand(0,$len)];
// twu2 20061016 end

return $code;
        }        
        
        function 
deleteExpiredAuthImage$expiretime ) {
            
$path PLOG_CLASS_PATH $this->cacheFolder;
            if ( 
is_dir($path) ) 
            { 
                
$handle=opendir($path); 
                while (
false!==($file readdir($handle))) { 
                    if (
$file != "." && $file != ".." && $file != "index.htm") {  
                        
$diff time() - filectime("$path/$file");
                        if (
$diff $expiretimeunlink("$path/$file");
                    } 
                }
                
closedir($handle); 
            }
        }       

// twu2 20061016 begin
       function captcha_createimage($code$image_format$tempFile)
        {
            $breedte rand(256384);
            $hoogte rand(6496);
            $img imagecreatetruecolor($breedte,$hoogte);
            $achtergrond imagecolorallocate($img$this->captcha_color("bg"), $this->captcha_color("bg"), $this->captcha_color("bg"));

            imagefilledrectangle($img00$breedte-1$hoogte-1$achtergrond);
           $hash "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
           $hash_len strlen($hash);
            for($g 0;$g 30$g++)
            {
               $t $hash[rand(0$hash_len)];

                $ypos rand(0,$hoogte);
                $xpos rand(0,$breedte);

                $kleur imagecolorallocate($img$this->captcha_color("bgtekst"), $this->captcha_color("bgtekst"),
$this->captcha_color("bgtekst"));

                if (!($g 2))
               {
                     $scribx rand(0,($breedte*2));
                     $scriby rand(0,($hoogte*2));

                     $wibblex rand(0,($breedte*2));
                     $wibbley rand(0,($hoogte*2));

                     
imageline($imgrand(0$scribx-$xpos), rand(0$scriby+$ypos), rand(0$wibblex), rand(0$wibbley), $kleur+$g);
                     
imageellipse($imgrand(0$scribx+$xpos), rand(0$scriby-$ypos), rand(0$scriby), rand(0$scribx), $kleur-$g);    
               }

                imagettftext($img$this->captcha_size(), $this->captcha_move(), $xpos$ypos$kleur$this->captcha_font(), $t);
            }
            $stukje $breedte / (strlen($code) + 3);

            for($j 0;$j strlen($code); $j++)
            {
                $tek $code[$j];
                $ypos rand(32,$hoogte-8);
                $xpos $stukje * ($j+2);

                $kleur2 imagecolorallocate($img$this->captcha_color("tekst"), $this->captcha_color("tekst"),
$this->captcha_color("tekst"));

                
imagettftext($img$this->captcha_size(), $this->captcha_move(), $xpos$ypos$kleur2$this->captcha_font() , $tek);
            }

           if ($image_format == 'gif')
                imagegif($img$tempFile);
           else
                imagepng($img$tempFile);
            imagedestroy($img);
        }

        /**
          * Some functions :)
          * Also orginally written by mastercode.nl
          **/
        /**
          * Function to create a random color
          * @auteur mastercode.nl
          * @param $type string Mode for the color
          * @return int
          **/
        function captcha_color($type)
        {
            switch($type)
            {
                case "bg":
                    $kleur rand(224,255);
                break;
                case "tekst":
                   $kleur rand(0,127);
                break;
                case "bgtekst":
                    $kleur rand(200,224);
                break;
                default:
                    $kleur rand(0,255);
                break;
            }
            return $kleur;
        }
        /**
          * Function to ranom the size
          * @auteur mastercode.nl
          * @return int
          **/
        function captcha_size()
        {
            $grootte rand(24,32);
            return $grootte;
        }
        /**
          * Function to random the posistion
          * @auteur mastercode.nl
          * @return int
          **/
        function captcha_move()
        {
            $draai rand(-25,25);
            return $draai;
        }


 function generateImageUrl()
 {
    $rg = new RawRequestGenerator($this->blogInfo);
            $rg->addParameter"op""AuthImageShow" );
            $rg->addParameter"blogId"$this->blogInfo->getId());
$imageUrl $rg->getIndexUrl().$rg->getRequest();
                if ( !
function_exists ('gd_info') ) {
              
// We don't have gd support compiled in, lets
// inform the user about it
             
return false;
            }
            return
$imageUrl;
 }

        /**
          * Function to return a ttf file from fonts map
          * @auteur mastercode.nl
          * @return string
          **/
        function captcha_font()
        {
            $f = @opendir(AUTHIMAGE_FONT_FOLDER);
            $ar = array();
            while(($file = @readdir($f)) !== false)
            {
                if(!in_array($file,array('.','..')) && eregi('.ttf',$file))
                {
                    $ar[] = $file;
                }
            }
            if(count($ar))
            {
                shuffle($ar);
                $i rand(0,(count($ar) - 1));
                return AUTHIMAGE_FONT_FOLDER $ar[$i];
           }
        }
// twu2 20061016 end


    }
        
?>

7  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 11, 2007, 10:19:59 上午
编译php的时候加如下参数就好了

--with-gd
--enable-gd-native-ttf
--with-png
--with-zlib-dir=/usr/
--with-ttf
--with-jpeg-dir=/usr/
--with-freetype-dir=/usr/
--with-xpm-dir=/usr/X11R6/

这个是debian里的,其他发行版估计位置会不一样

感谢twu2的插件
8  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 11, 2007, 09:39:58 上午
补上缺少的函数后,还是有问题
Fatal error: Call to undefined function: imagettftext() in
十分奇怪
我下载了authimage 1.1 plugin和lt 1.1.6的代码包回来搜索,没有搜索到这个函数。
google搜索了一下,发现是php内置的函数,继续解决中……
9  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 11, 2007, 09:16:26 上午
1.0的貌似还真用着有问题
我手动patch了一下
之后发现下面错误
Call to undefined function: generateimageurl() in pluginauthimage.class.php on line 89

看来得下个1.1的imageauth回来把这个函数抠出来才行
10  開發 / 外掛程式 / Re: 讓 authimage 顯示中文的數字 於: 三月 11, 2007, 08:15:20 上午
我应用了一下,发现有下面的问题:
Error  对不起,您所要进行的操作无法执行。
您的回复验证码输入有误,请检查后重试。

我的确正确的输入了汉字,但是还是出现上述错误,有什么调试的办法吗?或者问题大概出在哪里?
我的是lifetype 1.0.3的
下载的这个包
http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_authimage_chinese.tgz
11  開發 / 外掛程式 / Re: 修改 LifeType 的 AuthImage, 使用 Better Captcha 的圖形 於: 三月 11, 2007, 07:53:34 上午
不错的东西
现在spam真的很烦
12  開發 / 外掛程式 / Re: 讓 authimage 顯示中文的數字 於: 三月 11, 2007, 07:49:51 上午
整好解了燃眉之急
顶一下
13  支援 / 使用與操作 / Re: 无法输入\字符的问题 於: 十一月 12, 2006, 08:12:03 下午
多谢了
twu2你的blog的code标签是怎么做的啊?
能否告知?
我那边的blog估计也要经常帖代码,这个挺爽的。
14  支援 / 使用與操作 / 无法输入\字符的问题 於: 十一月 12, 2006, 12:57:56 下午
这也不是一个老问题了,在以前就一直有,后来lifetype 1.1换掉了htmlarea编辑器,还是不行
要打八个"\"才可以显示一个"\"

http://blog.xfocus.net/index.php?op=ViewArticle&articleId=2213&blogId=9

新版的测试在
http://perlish.cnplog.com/post/28/228
15  開發 / 外掛程式 / Re: admin.php登陆authimage 於: 九月 17, 2006, 08:41:37 下午
http://bugs.lifetype.net/view.php?id=1050

多谢lss指点。

不过我到希望是在plugin里,因为我前几天把我的1.0.3升级到1.1失败了……
sigh,回头我把我整个过程写下来象各位求教,现在是勉强用一些安全模块掩盖了安全问题。
不过1.1换了那个编辑器,应该挺爽的
1.0.3的编辑器会吃掉一些特殊字符。
頁: [1] 2