Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Работаем с anti-captcha.com на ассемблере (https://forum.antichat.xyz/showthread.php?t=119976)

d_x 10.05.2009 15:24

Работаем с anti-captcha.com на ассемблере
 
По просьбе некоторых участников форума написал на ассемблере несколько процедур для работы с сервисом anti-captcha.com, спроектировал процедуры так, чтобы они могли в несколько потоков одновременно работать.
Для теста написал программу, которая может распознавать капчи в несколько потоков:

http://kaimi.ru/wp-content/uploads/2009/05/ac.png

Скачать исходники + exe

Подробное описание кода

Hellsp@wn 10.05.2009 15:35

мне кажется, лучше бы было сделать dll, в экспорт вывести пару функций и приложить подробное описание, чтобы можно было бы заюзать в любом софте. было бы полезнее :)

d_x 10.05.2009 17:21

Цитата:

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

Описание функций, экспортируемых dll:
AntiCaptchaInit - вызывается для инициализации работы с антикапчей, ей не надо передавать параметры, вернет 0 в случае успеха.

AntiCaptcha - вызывается для отправки изображения на сервер. Вернет 0 в случае успеха или код ошибки.
Параметры:
Код:

AntiCaptcha PROC,
[указатель на память, куда записывать ID капчи - буфер не менее 30 байт, туда будет записана строка],
[указатель на строку с ключом антикапчи],
[1 или 0 - состоит ли капча из нескольких слов],
[1 или 0 - регистрозависима ли капча],
[1 или 0 - состоит ли капча только из цифр],
[минимальная длина капчи],
[максимальная длина капчи],
[указатель на строку с расширением, например, "jpg"],
[указатель на строку с типом, например "image/jpeg"],
[размер картинки в байтах],
[указатель на память, где загружена картинка]

Все параметры - DWORD.

AntiCaptchaAnswer - вызывается для получения распознанного варианта или статуса распознавания. Вернет 0 в случае успеха или код ошибки.
Параметры:
Код:

AntiCaptchaAnswer PROC,
[указатель на память, куда записать ответ],
[указатель на память с ID капчи, полученный с помощью предыдущей функции],
[указатель на строку с ключом антикапчи]

Все параметры - DWORD.

Коды возвращаемых функциями ошибок:
Код:

1 - ошибка при создании сокета
2 - ошибка при подключении
4 - ошибка при создании запроса
5 - ошибка при отправке данных
6 - ошибка при получении данных
7 - слишком большой ответ сервера
10 - капча пока не распознана
11 - неверный ключ
12 - все работники пока заняты
13 - нулевой баланс на аккаунте
14 - несуществующий ID капчи
20 - неопределенная ошибка

Еще две функции - SocketInit и SocketCleanup (им не надо передавать параметры) - это простые переходники для функций Win32api WSAStartup и WSACleanup, на всякий случай.


Скачать можно по той же ссылке в первом посте.

Cuko 10.05.2009 17:45

извините за оффтоп но можно сделать автособиратель на http://rublik.ru ?

Gar|k 11.05.2009 01:28

опиши что вообще делает эта программа? для чего она?

d_x 11.05.2009 01:35

Есть ресурс такой, anti-captcha.com, достаточно известный, для распознавания капч. У них есть свое api, и я написал несколько процедур для работы с ним. Программа - просто для теста их работы, зато прилагается еще dll, которая может работать с любым языком.
Для чего нужно распознавать капчи - догадайся сам-)

Вообще, код с описанием в образовательных целях хорошо пойдет - там мьютексы, потоки, сокеты...

Gar|k 11.05.2009 10:05

перечитал стаью в поисках ошибок... вроде ничего кроме непонятного мне цикла с virtualAlloc в самом начале. дааа d_x ты маньяк!!! :D у меня конечно тоже есть программы в ~1000 строк кода на winAPI (помню делал собственную прорисовку всего интерфейса - скин, кнопочки цвет меняют все в общем крута

http://zona-chat.narod.ru/skin.gif
exe )

но чтобы такое да на асме вай верх ппц :)
теперь научись делать UNICODE версии прог, потомучто все операции со строкам выше win9X ядро венды производит в UNICODE,а функции с дополнением *A (MessageBoxA...) затрачивают время на выделение памяти и конвертирование строк в UNICODE

я вот думаю если извращатся то уж по полной ! не юзать invoke, констант, описывать все нужные экспортируемые функции и тд :) изучаю fasm хех

разницы между размером exe миимальной winAPI проги в masm32 и VS2008 я не заметил (ну конечно надо с бубном танцевать там долго чтобы получить результат)... дело вкуса! ;)

Gar|k 13.05.2009 00:04

2 d_x : я тебя сделаю! :) я накатал ща на masm-е пакетный сниффер в 3,5 кило хехе (правда функциональности в нем пока ноль, но уже уммет скидывать дамп входящего - исходнящего траффика на диск)

вопрос в асме есть указатели? или придется вот таким тупым макаром структуры разбирать
mov eax,offset buf
mov eax,[eax+2]

??? а то я как бе не знаю ) хех

d_x 13.05.2009 00:24

Ну я как бы ни с кем не соревнуюсь, я просто ради интереса и практики софт писал, недавно изучив асм.
Цитата:

вопрос в асме есть указатели? или придется вот таким тупым макаром структуры разбирать
mov eax,offset buf
mov eax,[eax+2]
Что ты здесь подразумеваешь под указателями? Они там конечно есть, они постоянно используются, offset buf - это указатель.
Насчет структур - можно так (привожу кусок своего кода):
Код:

.data?
    AC_SocketAddress sockaddr_in <>
;...

.code
    MOV AC_SocketAddress.sin_addr,EAX

    invoke htons,80
    mov AC_SocketAddress.sin_port,AX

    MOV AC_SocketAddress.sin_family,AF_INET


Gar|k 13.05.2009 00:51

ну я имею ввиду нечто вроде

Код:

  typedef struct gg
{
    unsigned long      a;               
    unsigned long      b;               
    unsigned char      c[16];       
}
gg;

gg *ukaz;

ukaz=(gg *)(buffer);

printf("%d",ukaz->a);

чтобы как бы удобненько пользоватся. для снифака это особено актуально структуры пакетов, заголовки и тд

такое можно реализовать на асме?


Время: 08:12