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

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

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

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

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

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

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


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

my $input = '(x+9)∙5+4=64';
$input =~ s|||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. И кстати, возвращаясь к теме заработка в интернете – чтобы попробовать зарабатывать в сети, совсем не обязательно искать хостинг и делать блог с нуля. Можно купить готовый сайт, зачастую достаточно недорого, и не тратить время и силы на освоение сайтостроения!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *