Перейти к контенту

Изменяем код безопасности


Рекомендуемые сообщения

Данная статейка посвящена изменению кода безопасности IPB 2, выводимого при регистрации и предназначенного для предотвращения автоматических регистраций спам-ботов.

 

Мы будем изменять код безопасности, выводимый при помощи GD lib.

Для начала удостоверимся, что в Админцентре » Системных настройках » Безопасности опция Включить защиту от ботов? выставлена на "Продвинутый" режим. Как и указано, для корректной работы этого типа защиты от ботов необходима установленная на сервере библиотека GD. Если возникают проблемы с отображением кода безопасности в данном режиме - очевидно, на хостинге отсутствует GD lib. Трясите хостера в случае чего.

 

Итак, заменим стандартный шрифт на любой другой TTF-шрифт, сотни которых можно слить в инете, настроим его размер, угол наклона. :)

 

Для начала в папке с форумом, где лежит index.php, создадим директорию, к примеру, fonts, а в неё загрузим нужные TTF-шрифты. желательно дать им всем простые короткие имена файлов, маленькими буквами, чтобы потом не путаться с регистром.

 

Функция, отвечающая за вывод кода безопасности в GD-режиме называется show_gd_img и лежит в файле functions.php.

 

Начинаем копать functions.php. Вы ведь уже сделали его резервную копию? :D

1. Во-первых, сведём на нет последствия умышленного растягивания изображения скриптом.

Находим:

$tmp_x = 140;
$tmp_y = 20;

$image_x = 210;
$image_y = 65;

И сделаем, чтобы число попарно совпадали, например:

$tmp_x = 210;
$tmp_y = 65;

$image_x = 210;
$image_y = 65;

Это чтобы изображение не растягивалось и эстетический эффект от юзания кульного TTF шрифта не омрачался. Всё равно с таким количеством шума на картинке ни один спам-бот это несчастное число не распознает.

 

2. Теперь находим это:

imagestring($tmp, 5, 0, 2, $content, $black);

Теперь самое главное! Заменяем на:

//New sKool TTF Security Code:
imagettftext($tmp, SIZE, ANGLE, X, Y, $black, "/path/font.ttf", $content);

Вот тут начинается подгонка шрифта под картинку ;) Поясняю:

SIZE - заменяем на размер шрифта в пунктах

ANGLE - угол наклона строки в градусах

X - координата X нижнего левого угла первого символа в строке

Y - координата Y нижнего левого угла первого символа в строке

/path/font.ttf - путь относительно корневой директории форума до файла шрифта

Лично я путём недолгих мытарств подобрал такие подходящие мне значения:

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/mt.ttf", $content);

 

Что получилось, можете увидеть здесь

post-5780-1112426380_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • Ответы 58
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Вот такая схема работает, а приведенный выше рецепт нет. Почему ?

 

<? 
header("Content-type: image/png"); 
$im = @imagecreate (500, 500) 
  or die ("Cannot Initialize new GD image stream"); 
$background_color = imagecolorallocate($im, 0, 0, 255); 
$text_color = imagecolorallocate($im, 0, 255, 255); 
imagettftext($im, 20, 45, 200, 200,  $text_color, "/font/bt.ttf","1234567890"); 
imagepng($im); 
?>

 

[1115844467:1115847070]причина в этом

if ( $ibforums->vars['gd_version'] == 2 )

 

по умолчанию там стоит 1, а если специально ставилась GD 2.0.x, то могут быть проблемы

Ссылка на комментарий
Поделиться на других сайтах

К сожалению, не функционирует. Функция просто ничего не рисует.

 

replicant, можно подробнее про ваш фикс? Я не совсем понял.

[1116255642:1116260672]Провел серию тестов, не работает ни с GD1, ни с GD2. Кто-нибудь ещё пробовал менять шрифт?

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • 1 месяц спустя...
А для 1.3.1 можно? :D
Ссылка на комментарий
Поделиться на других сайтах

Я начал менять скины и у меня пропал код подверждения , воспользовался вашим методом , результатов нет ! Что могло случиться ! gd менял , ставил как 1 так и 2 !
Ссылка на комментарий
Поделиться на других сайтах

Так что нельзя?
Ссылка на комментарий
Поделиться на других сайтах

Дык так же и для 1.3 сделайте.

 

В админке включаем продвинутую защиту от ботов, лезем в functions.php Ищем функцию function show_gd_img($content="")

Там пишем совершенно такие же параметры для imagettftext. (подбираем для себя)

Ищем хороший шрифт, свои цвета - "чёрный", "белый" и "серый"

например $white = ImageColorAllocate($im, 19, 19, 19); радуемся красоте :D

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Шрифт изменил а вот красивую фигурку и наклон цифр в 1.3 никак немогу 8(

 

Какие шрифты более рагульны чтоб разбирать только в трезвом виде можно было? И где их скачать?

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

Не понял, а зачем тебе в 1.3.1 этот мод? Там же есть в админке поле для указания TTF-шрифта регистрации.

 

Что до мода — попробовал, под себя подогнал (проблемы были с локальным апачем — поборол). Единственный нюанс — путь к шрифту надо прописывать не /path/font.ttf, а ROOT_PATH."path/font.ttf". Так универсальнее. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

Сделал похитрее.

 

Вместо

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/font.ttf", $content);

Сотворил это

srand((double) microtime()*1000000);

	imagettftext($tmp, 22, rand(5 , 15),  rand(1 , 80),  rand(50 , 64), $black, "/font/font.ttf", $content);

Ссылка на комментарий
Поделиться на других сайтах

Zhezl а поподробнее, что именно ты добавил?
Ссылка на комментарий
Поделиться на других сайтах

Еще исхитрился

1. Делаем всё как в первом посте.

 

2. Случайно гоняем и крутим надпись по картинке:

 

Добавляем еще цветного шума:

$circles = 3;

Меняем на

$circles = 5;

 

Это

imagettftext($tmp, 22, 13, 1, 64, $black, "/font/font.ttf", $content);

 

Меняем на это:

		srand((double) microtime()*1000000);
	$angle_pn = rand (1,2);
		if ( $angle_pn == 1 )
	{
		imagettftext($tmp, 22, rand(5 , 15),  rand(1 , 80),  rand(50 , 64), $black, "/font/font.ttf", $content);

	}
	else {
		imagettftext($tmp, 22, (-1 * rand(5 , 15)),  rand(1 , 80),  rand(20 , 40), $black, "/font/font.ttf", $content);
	}

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
на 2.0.4 ни один из вариантов у меня не работает... loading image висит постоянно (были проделывал дикие манипуляции с путями и опробывано штук 10 разных шрифтов) :D
Ссылка на комментарий
Поделиться на других сайтах

OverHerz: Я всю тему перерыл, пробывал всё, что только можно. Надеюсь "защита от ботов - Продвинутая" в админке форума подразумевает gd2 ?
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.