Программа с глазами Филипп Коряка Хакер, номер #073, стр. 073-120-4 foreach my $n (0..9){ my $count = 0; my $all=0; for ($j=0; $j<20; $j++){ for ($i=0; $i<9; $i++){ $count++ if ($num-> getPixel($i, $j) == $et[$n]-> getPixel($i, $j) && $num-> getPixel($i, $j) == 1); $all += $et[$n]-> getPixel($i, $j); } } print "$n - " . ($count*100/$all) . "\n"; } Следует заметить что иногда, при удалении шумов происходит удаление пикселов являющихся частью цифры и в определенных случаях это может привести к смещению цифры влево или вверх. После сравнения смещенной цифры с эталоном, скорее всего степень совпадения будет очень низкой. Бороться с этим можно смещением эталона на один пиксел влево и на один пиксел вверх. Вероятность одновременного смещения цифры и вверх и влево крайне низка. По крайней мере, в ходе экспериментов я не столкнулся с этим ни разу. Делаем выводы Безусловно, на сайте www.beelinegsm.ru применена довольно слабая защита. На других сайтах встречаются такие способы защиты, как поворот цифры и разноцветное изображение. Но и эти способы защиты легко преодолеваются. В случае с поворотом цифры, достаточно на этапе сравнения цифры с эталоном осуществлять вращение эталона. Таким образом, придется сделать большее число сравнений. Однако это число не очень велико потому что, как правило, поворот числа происходит на небольшой угол. С разноцветным изображением, как правило, можно бороться элементарным преобразованием его в монохромное. В заключение хотелось бы сказать, что существующие в данный момент степени защиты крайне низки и как показывает данная статья, легко преодолимы. Однако и усиление защиты видется легко осуществляемым. Это могут быть такие способы, как случайный выбор шрифта для цифры, переменный размер цифр и т.д. Данные способы значительно усиливают взломостойкость описанных систем. Кроме того, их реализация - это вопрос нескольких минут. Становится совершенно непонятно, почему они не были реализованы до настоящего момента. CD На компакт диске лежит пример программы, которая считывая изображение и эталоны, выдает степень соответствия цифр эталонам. Кроме того, там же лежат эталоны для цифр от 1 до 5. INFO Помни, что в новых версиях бибилиотеки GD не поддерживается формат GIF. Поэтому, либо используй старую бибилиотеку, где он поддерживается, либо позаботься о конвертации GIF <-> PNG WARNING Данная статья всего лишь демонстрирует слабость существующей защиты и дает рекомендации по ее усилению. Не следует использовать представленные в ней материалы как руководство к взлому. WWW Если ты покупаешь журнал без диска, то ищи на сайте www.xakep.ru исходные коды в разделе Х-релиз. БИБЛИОТЕКА GD Библиотека GD предназначена для работы с графикой в программах на языке perl. Она позволяет преобразовывать изображения из одного формата в другой, делать графические преобразования, наносить надписи и примитивы, накладывать на изображение фильтры. Преимуществом данной библиотеки является ее простота по сравнению с более серьезными продуктами, такими как Image::Magick. Библиотеку GD гораздо проще установить и она занимает гораздо меньше места, однако и набор функций у нее значительно меньше. |