Annotation of botnow/captcha.png, Revision 1.1
1.1 ! bountyht 1: <?php
! 2:
! 3: $hash = explode("/", $_SERVER["REQUEST_URI"])[1];
! 4: $fpr{"hash"} = $hash;
! 5: $fpr{"remoteaddr"} = $_SERVER['REMOTE_ADDR'];
! 6: $fpr{"httpxforwarded"} = $_SERVER['HTTP_X_FORWARDED_FOR'];
! 7: $fpr{"time"} = date("Y-m-d H:i:s");
! 8: foreach (getallheaders() as $key => $value) {
! 9: if ($key == "User-Agent") {
! 10: $fpr{"useragent"} = $value;
! 11: } elseif ($key == "Upgrade-Insecure-Requests") {
! 12: $fpr{"upgradeinsecure"} = $value;
! 13: } elseif ($key == "Host") {
! 14: $fpr{"host"} = $value;
! 15: } elseif ($key == "Dnt") {
! 16: $fpr{"dnt"} = $value;
! 17: } elseif ($key == "Connection") {
! 18: $fpr{"connection"} = $value;
! 19: } elseif ($key == "Cache-Control") {
! 20: $fpr{"cachecontrol"} = $value;
! 21: } elseif ($key == "Accept-Language") {
! 22: $fpr{"acceptlanguage"} = $value;
! 23: } elseif ($key == "Accept-Encoding") {
! 24: $fpr{"acceptencoding"} = $value;
! 25: } elseif ($key == "Accept") {
! 26: $fpr{"accept"} = $value;
! 27: }
! 28: }
! 29:
! 30: class wwwdb extends SQLite3 {
! 31: function __construct() {
! 32: $this->open('/botnow/botnow.db');
! 33: }
! 34: }
! 35: $wwwdb = new wwwdb();
! 36: if(!$wwwdb) {
! 37: echo $wwwdb->lastErrorMsg();
! 38: } else {
! 39: foreach ($fpr as $key => $value) {
! 40: $keys[] = $key;
! 41: $values[] = $value;
! 42: }
! 43: $keystr = '"'.implode('","', $keys).'"';
! 44: $valstr = '"'.implode('","', $values).'"';
! 45: $sql =<<<EOF
! 46: INSERT INTO www ($keystr)
! 47: VALUES ($valstr);
! 48: EOF;
! 49:
! 50: if (!$wwwdb->exec($sql)) {
! 51: echo $db->lastErrorMsg();
! 52: return;
! 53: }
! 54:
! 55: $sql =<<<EOF
! 56: SELECT * from bnc;
! 57: EOF;
! 58: $ret = $wwwdb->query($sql);
! 59: while($row = $ret->fetchArray(SQLITE3_ASSOC)) {
! 60: // echo "hash: $hash, row['hashid']: ".$row['hashid']."<br>\n";
! 61: if ($hash == $row['hashid']) {
! 62: $captcha = $row['captcha'];
! 63: // echo $captcha;
! 64: }
! 65: }
! 66: $wwwdb->close();
! 67: // echo "Records created successfully\n";
! 68: }
! 69: session_start();
! 70:
! 71: // The capcha will be stored
! 72: // for the session
! 73: $_SESSION["captcha"] = $captcha;
! 74:
! 75: // Generate a 50x24 standard captcha image
! 76: $im = imagecreatetruecolor(250, 120);
! 77:
! 78: // Blue color
! 79: $bg = imagecolorallocate($im, 22, 86, 165);
! 80:
! 81: // White color
! 82: $fg = imagecolorallocate($im, 255, 255, 255);
! 83:
! 84: // Give the image a blue background
! 85: imagefill($im, 0, 0, $bg);
! 86:
! 87: // Print the captcha text in the image
! 88: // with random position & size
! 89: //imagestring($im, 5, rand(1, 40), rand(1, 40), $captcha, $fg);
! 90: imagettftext($im , 96, 0, rand(0,130), 120-rand(0,60), $fg , 'intuitive.ttf', $captcha);
! 91: //imagettftext($im , 96, 0, rand(20, 50), rand(20, 50), $fg , 'eczar.ttf', $captcha);
! 92:
! 93: // VERY IMPORTANT: Prevent any Browser Cache!!
! 94: header("Cache-Control: no-store,
! 95: no-cache, must-revalidate");
! 96:
! 97: // The PHP-file will be rendered as image
! 98: header('Content-type: image/png');
! 99:
! 100: // Finally output the captcha as
! 101: // PNG image the browser
! 102: imagepng($im);
! 103:
! 104: // Free memory
! 105: imagedestroy($im);
! 106: ?>
CVSweb