Создание картинки со случайным кодом

Ямерт

The Old One
Создание картинки со случайным кодом

Привет!

Для того, чтобы усложнить жизнь потенциальным кульхацкерам, вчера в приступе ожесточённой паранои решил к форме логина прикрутить дополнительное поле, куда пользователь должен будет ввести код авторизации, изображённый на картинке, которую я генерю средствами gd.

Однако ж прослышал я, что существуют программы, которые пытаются угадывать записи на картинках; соответственно, надо эти картинки как-то случайным образом размывать/запутывать.
Я в gd салага, только вчера написал первый скрипт с функциями этой либы. Пока научился только менять размер дефолтных шрифтов и рисовать линии поверх изображения.

Посему прошу поделиться профессионалов рецептами "случайного запутывания" изображения.

Спасибо!
 

Кром

Новичок
Программы такие есть, но работают они обычно на самых примитивных вариантах. Или пишутся под конкретные сайты.
А чтобы изображение было трудно распознаваемым, нужно
1. Менять шрифты.
2. Наклонять их случайным образом.
3. Менять их расцветку случайным образом.
 

sergadm

Новичок
Менять их расцветку случайным образом.
но главное не перестаратся. А то на некоторые сайты зайдёш а белеберду на картинке вооще невозможно прочитать
 

Vinny

Guest
Ямерт
Сделай фон картинки заполненный случайными серыми точкам разной интенсивности... Этого вполне должно хватить...
 

confguru

ExAdmin
Команда форума
Прочитай про белый шум.. т.е. накладывай его уже на прорисованную картинку
+ смещай буквы верх и вниз (чтоб были не на обной строке)
 

voodoo

Новичок
вот еще примитивный вариант:
http://cvs.sourceforge.net/viewcvs.py/voc/voc/chat/impro.php?view=markup

запутывание состоит из трех частей:
1. выбор цветов
2. заполнение фона (точки, линии или окружности)
3. наложение сверху "дэшед" линий (выкусывают куски цифр).
 

Ямерт

The Old One
Спасибо, хорошие советы!
Про различные расцветки и смещение букв даже и не подумал :)

-~{}~ 19.02.04 12:23:

>> Прочитай про белый шум
где?
 

Vinny

Guest
Ямерт

Белый шум - это фоновый шум... Например, в эфире помимо самих передач присутствует белый шум... По сути говоря - это случайный шум... В твоем случае случайное заполнение рисунка точками и будет белым шумом...
 

confguru

ExAdmin
Команда форума
Ямерт

А лучше спроси у Антонио приватом .. он как раз написал алгоритм как обходить
подобную защиту :)))
 

dok™

Guest
admin, а что, на ПХП есть OCR распознаватели? Хотелось бы посмотреть...
 

metton

Guest
Vinny
Хех... Ты не совсем прав... Белый шум - шум на всех частотах, насколько помню из курса фонологии :rolleyes:
 

Vinny

Guest
metton

А я писал о том что белый шум присутствует только на определенных частотах?
 

metton

Guest
Хм... Лана, сорри, не буим вдаваться в терминологию.
 

f1

formula 1
Автор оригинала: dok™
admin, а что, на ПХП есть OCR распознаватели? Хотелось бы посмотреть...
очень часто задачу "распознования" можно привести к более простой, что и продемонстрировано по ссылке.

Кстати, задача распознования цифр не отягощенных "изватами" с цветами и фонами не является сложной. Есть простой алгоритм основанный на модели одного нейрона, в этом случае он хорошо работает.
 

clever

Guest
Можно поверх картинки горизонтальных и вертикальных полос нарисовать.
 

-=GogA[qwe]=-

Guest
Методы распознавания есть разные, для начала надо удалить шумы...
Ну а как усложноть жизнь распознователю? Можно использовать несколько различных шрифтов, наклоны и смещения. Пример моего скрипта:
PHP:
$d=dir("fonts");
$i=0;
while ($entry=$d->read())
 {
  if (substr($entry,strlen($entry)-3,strlen($entry))=="ttf")
   {
    $names[$i]=$entry;
    $i++;
   }
 }
$d->close();
А далее каждую букву рандомным шрифтом:
PHP:
for ($i=0;$i<4;$i++)
{
$size=32+rand(-8,8);
ImageTTFText($im, $size, rand(-10,10), $i*20+10+rand(5,10), rand(25,30), $color[$i], $names[rand(0,count($names))] , $codechar[$i]);
}
Да, на счёт шумов, можно их создовать как на фоне, так и поверх написанного:)
Ну а для полной радости можно взять подложку под код, сам ещё не написал, но идея есть: взять пекоторую картинку (подходящую под дизайн сайта) и "выризать" из неё фон (разумеется) рандомом...
 

clever

Guest
А можно код в анимированный flash вставить.
PHP умеет работать с flash.
 

baldman

Новичок
лучше всего - это откусывание кусков от цифр, так как это сильно усложняет алгоритм распознавания и обязательно фон аляпистый.
 
Сверху