ChatGuard + Capcha (0.9) (API1, API2)

Только готовые скрипты с описанием.
Аватара пользователя
ASPIRIN++
 
Сообщения: 69

ChatGuard + Capcha (0.9) (API1, API2)

Сообщение 29 авг 2009, 07:44

О скрипте:
Скрипт для блокировки чата, чтобы разблокировать чат необходимо ввести символы с картинки (капчи), которая автоматически генерируется php скриптом на веб сервере. Основа для скрипта lua взята из ChatGuard (так как велосипед изобретать не хочется).

Как это работает?
С помощью библиотеки md5 для PtokaX, есть возможность генерировать необратимые md5 хэши. Этим я и воспользовался, генерируется "пароль" из 3х случайных символов символов:
Код: Выделить всё
local pass = string.char(math.random (1, 255))..string.char(math.random (1, 255))..string.char(math.random (1, 255));


Далее получаем его md5 хэш по принципу md5(md5(pass)+salt), т.е. получаем хэш пароля, прибавляем к нему соль (salt), и получаем хэш всего этого, после берём 4 символы из серединки:
Код: Выделить всё
local hash1 = md5.sumhexa(md5.sumhexa(pass)..Salt);	
if string.len(hash1) ~= 4 then hash1 = string.sub(hash1, string.len(hash1)/2-3, string.len(hash1)/2); end;


Полученный результат (hash1) прогоняем ещё раз по такому же принципу и результат записываем в hash2:
Код: Выделить всё
local hash2 = md5.sumhexa(md5.sumhexa(hash1)..Salt);
if string.len(hash2) ~= 4 then hash2 = string.sub(hash2, string.len(hash2)/2-3, string.len(hash2)/2); end;


Теперь у нас 2 необратимых хэша. Первый (hash1) - хэш пароля, а второй (hash2) - хэш хэша пароля.
hash1 мы передаём php скрипту на веб сервере в строке с параметром h, а hash2 мы оставим у себя для проверки.

Скрипт генерирует из переданного ему хэша, хэш по нашему принципу и мы получаем опять же хэш хэша пароля, т.е. тоже самое что и hash2 в нашем скрипте, только на php:
Код: Выделить всё
$Hash = md5(md5($Pass).$Salt);
if (strlen($Hash) != 4) {$Hash = substr($Hash,strlen($Hash)/2-4,4);}


После этого скрипт генерирует картинку (капчу), со сгенерированным хэшем, а пользователь вводить его с картинки в чат:
Изображение

Если пользователь ввёл правельные 4 символы то блокировка снимается, иначе вопрос повторяется:
Изображение

Плюс всей системы в том что боты не смогут просканировать текст и получить число или слово для разблокировки, а получить символы с картинки с шумами не очень то и просто, да и некто не будет так изощрятся ради флуда.
Хэши необратимые а значит получить исходный текст нельзя, хэшировать повторно для получаения hash2 тоже нельзя незная соль (salt), а на подбор уйдут годы. *CRAZY*

Улучшения в генерации капчи:
  1. Отключение\включение 3х случайных картинок (ради красоты, интереса и сложности прибавит)
  2. Отключение\включение случайных смайлов в правом нижнем углу (ради красоты и сложности прибавит) (всего 10)
  3. Отключение\включение генераций линий на заднем плане
  4. Отключение\включение генераций случайных точек
  5. Отключение\включение генераций линий на переднем плане
  6. Теперь для каждого символа рандомно выбирается шрифт (всего 8, в папке fonts которые можно заменить по вкусу)
  7. Каждый символ рандомно сдвигается по вертикали
  8. Каждый символ рандомно наклоняется

Установка:
  1. Файлы из папки ptokax кинуть в папку с устан0вленн0й патахой
  2. Файлы из папки web кинуть на вебсервер
  3. Обязательно измените переменные Salt в ChatGuard_captcha_api1.lua и md5Hash_img.php (достаточнео замены 1го символа)

Скачать: *CRAZY*
API2.rar
Версия 0.9 для API2
(234.85 КБ) Скачиваний: 301

API1.rar
Версия 0.9 для API1
(235.7 КБ) Скачиваний: 248
Последний раз редактировалось ASPIRIN++ 31 авг 2009, 05:03, всего редактировалось 3 раз(а).

Аватара пользователя
ASPIRIN++
 
Сообщения: 69

Сообщение 29 авг 2009, 07:54

кстати тест самого скрипта пока поработает на dchub://89.178.56.206, так что если интересно на него поглазеть заходите :-)
Последний раз редактировалось ASPIRIN++ 31 авг 2009, 05:01, всего редактировалось 1 раз.

Аватара пользователя
Sunlight
 
Хаб: dchub://hub.pushkindc.ru
 
Сообщения: 30

Сообщение 29 авг 2009, 12:38

Хороший скрипт, если несложно, переведи на луа1 :-[
Там за основу взят скрипт ChatGuard, я так понял, который под луа1 есть.

Аватара пользователя
ASPIRIN++
 
Сообщения: 69

Сообщение 29 авг 2009, 13:24

Sunlight писал(а):если несложно, переведи на луа1

запросто)) только просплюсь 2е суток без сна %-)

Аватара пользователя
ASPIRIN++
 
Сообщения: 69

Сообщение 31 авг 2009, 04:48

всё всю ночь просидел ))) в результате весрия 0.9 под api1 и api2 *CRAZY* %-)

Аватара пользователя
Sunlight
 
Хаб: dchub://hub.pushkindc.ru
 
Сообщения: 30

Сообщение 31 авг 2009, 14:50

Респект, все работает =)
Исправил пару опечаток только и переделал под себя.

Аватара пользователя
Sunlight
 
Хаб: dchub://hub.pushkindc.ru
 
Сообщения: 30

Сообщение 25 сен 2009, 23:45

Что нужно подправить чтобы не учитывался регистр букв? Ато на капче большие буквы, а вводить в чат нужно обязательно маленькими. Путаются люди.

Аватара пользователя
Sunlight
 
Хаб: dchub://hub.pushkindc.ru
 
Сообщения: 30

Сообщение 30 сен 2009, 20:50

Связался с автором, помог решить проблему:
Под апи1:
if US[sUser.sName].hash==arg then изменить на if string.lower(US[sUser.sName].hash)==string.lower(arg) then
if sData==US[sUser.sName].hash then изменить на if string.lower(sData)==string.lower(US[sUser.sName].hash) then

Аватара пользователя
Prapor
 
Хаб: dchub://prapor.in
 
Сообщения: 249
Откуда: Москва

Сообщение 03 окт 2009, 17:43

Для api2:
Код: Выделить всё
if US[sUser.sNick].hash==arg then

изменить на
Код: Выделить всё
if string.lower(US[sUser.sNick].hash)==string.lower(arg) then

и
Код: Выделить всё
if sData==US[sUser.sNick].hash then

изменить на
Код: Выделить всё
if string.lower(sData)==string.lower(US[sUser.sNick].hash) then
Последний раз редактировалось Prapor 03 окт 2009, 17:44, всего редактировалось 1 раз.

Neolo
 

Verlihub

Сообщение 11 ноя 2009, 22:35

=-O А что-нить похожее под Verlihub есть??

XM
 

Сообщение 10 фев 2010, 23:44

товарищи, переведите это в луа для верлика, пожалуйста... вам столько народа спасибо скажет =)


Вернуться в Готовые скрипты и боты



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0