diff options
| -rw-r--r-- | inc/ic-encrypt.php | 10 | ||||
| -rw-r--r-- | inc/imgcaptcha.php | 24 | ||||
| -rw-r--r-- | post.php | 8 |
3 files changed, 28 insertions, 14 deletions
diff --git a/inc/ic-encrypt.php b/inc/ic-encrypt.php index c0f499bd..5d73126b 100644 --- a/inc/ic-encrypt.php +++ b/inc/ic-encrypt.php @@ -1,8 +1,6 @@ <?php // Z internetow. class Encryption { - var $skey = $config["imgcaptcha_key"]; - public function safe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); @@ -18,21 +16,21 @@ class Encryption { return base64_decode($data); } - public function encode($value){ + public function encode($key, $value){ if(!$value){return false;} $text = $value; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv); + $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv); return trim($this->safe_b64encode($crypttext)); } - public function decode($value){ + public function decode($key, $value){ if(!$value){return false;} $crypttext = $this->safe_b64decode($value); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); + $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv); return trim($decrypttext); } } diff --git a/inc/imgcaptcha.php b/inc/imgcaptcha.php index 77441fce..ab6db68f 100644 --- a/inc/imgcaptcha.php +++ b/inc/imgcaptcha.php @@ -1,19 +1,25 @@ <?php // Wiem, ze ten kod to czysta ohyda. Coz. - require("ic-encrypt.php"); + require_once("inc/functions.php"); + require_once("inc/ic-encrypt.php"); + + global $config; + function getImages() { - $lines = split("\n",file_get_contents($config["imgcaptcha_list"])); - for($i=0;$i<count($lines);$i++) { $lines[$i] = split(",",$lines[$i]); } + global $config; + $lines = explode("\n",file_get_contents($config["imgcaptcha_list"])); + for($i=0;$i<count($lines);$i++) { $lines[$i] = explode(",",$lines[$i]); } return $lines; } function getIPath($img) { + global $config; return $config["imgcaptcha_images"] . "/" . $img; } function pickImage($lines) { $src = FALSE; while($src == FALSE) { $pick = rand(0,count($lines)-1); - $src = imagecreatefrompng(getIPath($lines[$pick][0])); + if($lines[$pick][0] != "") $src = imagecreatefrompng(getIPath($lines[$pick][0])); } imagedestroy($src); return $pick; @@ -33,16 +39,18 @@ return $str; } function generateCaptchaHash() { + global $config; $lines = getImages(); $pick = pickImage($lines); $enctext = $pick . ",," . time() . ",," . $_SERVER["REMOTE_ADDR"] . ",," . randString(12); $converter = new Encryption; - return $converter->encode($enctext); + return $converter->encode($config["imgcaptcha_key"],$enctext); } function ic_verifyHash($enctext, $output) { + global $config; //print "VERIFY: " . $enctext . " " . $output . "<br>"; $converter = new Encryption; - $dectext = split(",,",$converter->decode($enctext)); + $dectext = explode(",,",$converter->decode($config["imgcaptcha_key"],$enctext)); if(count($dectext)<4) return true; $lines = getImages(); $pick = $dectext[0]; @@ -56,14 +64,16 @@ } function getPick($enctext) { + global $config; $converter = new Encryption; - $dectext = split(",,",$converter->decode($enctext)); + $dectext = explode(",,",$converter->decode($config["imgcaptcha_key"],$enctext)); if(count($dectext)<=1) return; //SC $lines = getImages(); return $dectext[0]; } function generateImage($enctext) { + global $config; $lines = getImages(); $pick = getPick($enctext); if(!isset($lines[$pick])) return; //SC @@ -6,6 +6,7 @@ require 'inc/functions.php'; require 'inc/anti-bot.php'; +require 'inc/imgcaptcha.php'; // Fix for magic quotes if (get_magic_quotes_gpc()) { @@ -192,7 +193,12 @@ if (isset($_POST['delete'])) { error($config['error']['captcha']); } } - + if ($config['imgcaptcha']) { + if (!isset($_POST['imgcaptcha_verify']) || !isset($_POST['imgcaptcha_hash'])) + error($config['error']['bot']); + if (ic_verifyHash($_POST['imgcaptcha_hash'],$_POST['imgcaptcha_verify'])) + error($config['error']['captcha']); + } if ($post['mod'] = isset($_POST['mod']) && $_POST['mod']) { require 'inc/mod.php'; if (!$mod) { |
