Алгебраическая captcha в виде линейного уравнения и ее взлом

Система компьютерной алгебры Maxima

Система компьютерной алгебры Maxima

Наткнулся на просторах интернетов на любопытную реализацию технологии captcha — пользователю предлагается решить линейное уравнение с одним корнем и ввести решение в качестве проверочного кода.

Я, когда себе на блог искал капчу, много разных перепробовал, но с таким любопытным подходом не сталкивался. Решил посмотреть на неё поближе, открыл код страницы и разочаровался — задание для капчи выводится текстом, а не картинкой.
В общем из любопытства решил её поломать 🙂

В общем случае данная captcha представляет собой линейное алгебраическое уравнение (ax + b = 0). Для решения воспользовался бесплатной системой компьютерной алгебры Maxima. (Эх, почему же я не знал о ней на 1-3 курсах института?! Она даже на КПК способна работать!).

Строка с задчей для капчи получается из html-кода страницы примерно в таком виде:
<b>(<i>x</i>+9)∙5+4=64</b>.
От тегов <b> можно избавиться на этапе получения нужной строки, но большого вреда от них нет, так что для наглядности оставил.

Дальше строка немного обрабатывается для приведения к виду, пригодному для решения в Maxima, затем следует собственно решение и далее — обработка вывода для вычленений из него нужного проверочного кода (вывод у Maxima достаточно подробный, даже если применить опцию --quiet):

#!/usr/bin/perl
use warnings;
use strict;
use encoding 'utf8';

my $input = '<b>(<i>x</i>+9)∙5+4=64</b>';
$input =~ s|</?[b,i]>||ig;
$input =~ s/∙/*/ig;
$input =~ s/−/-/ig;
print $input,"\n";

my $out = qx/maxima --quiet --batch-string=solve"($input);"/;
my $x = $1 if $out =~ m#\[x = (-?\s?\d+)\]#gi;

print $x,"\n";

exit 0;

Вот так мне повезло за один вечер познакомиться с интересной идеей для механизма captcha и узнать о прекрасной системе компьютерной алгебры Maxima.

Желаю и вам побольше новых приятных открытий!

P.S. И кстати, возвращаясь к теме заработка в интернете — чтобы попробовать зарабатывать в сети, совсем не обязательно искать хостинг и делать блог с нуля. Можно купить готовый сайт, зачастую достаточно недорого, и не тратить время и силы на освоение сайтостроения!



Category Рубрики: *NIX | Tag Метки: , , , | Comments Комментариев нет »

Добавить комментарий