PDA

Просмотр полной версии : Обход капчи и Visual C++


SHOOTER
15.01.2010, 23:18
Здрасте, вобщем так: учюсь обходить капчу :D вот фрагмент HTML-странички с капчой....

<form name="mform" action="index.phtml" method="post" onSubmit="sF()">

<input type=hidden name="s" value="Ob0o3fHbPmqLv5W8T7mGH1SLp5ZM7cw4"><input type="hidden" name="s_post" value="cjJfP4UPuGVSnAcSUWhv1YuvnLYPoqwx">
<input type=hidden name="tip" value="CheckCode">
<input type="hidden" name="tcurl" value=SomeRef>
<input type="hidden" name="tcontinue" value="yes">
<img id="CaptchaImg" width="150" height="47" border="0" align="left" src="/captcha.php?r=0&s=Ob0o3fHbPmqLv5W8T7mGH1SLp5ZM7cw4"/>
<input type="text" size="10" maxlength="10" value="" name="captcha" autocomplete="off" /><br><br><br>
Введите цифры, которые вы видите на картинке.
<br/>
Если вы не видите изображения нажмите
<a id="CaptchaLink" xonclick="wopen('/my/reg_code.phtml','code',380,160,'yes','yes',0);retu rn false;" target="code" href="?image=1">here</a>
<script>
jsLoader.require('{jQuery}jquery', function ()
{ // обновить капчу, при клике на неё
$("#CaptchaImg,#CaptchaLink")
.load(function (){ $(this).css('opacity', 1); })
.css('cursor', 'pointer')
.click(function ()
{
$RA($('#CaptchaImg').css('opacity', .3)[0], 'src', /\?r=\d/, '?r='+jsCore.getTimer());
return false;
})
;
});
</script>
<script language="JavaScript">
<!--
function sF()
{
document.forms.mform.elements.submit.value="Please wait...";
document.forms.mform.elements.submit.disabled="true";
}
-->
</script>
<div class="tab40"><input name="submit" type="submit" value="Continue"></div>
</form>


Допустим, я успешно расшифровал картинку на капче. Как мне используя MS VisualStudio 2003 ---> C++ ---> wininet.h отослать серваку цифри из картинки капчи, допустим ето 123456?

З.Ы. Сори если че не так, ето первая моя тема туД :rolleyes:

SHOOTER
16.01.2010, 01:26
ну имейте совесть... просмотров: 40, ответов: 0 =(((

gold-goblin
16.01.2010, 01:34
сделать пост или гет запрос к серверу.

SHOOTER
16.01.2010, 01:43
сделать пост или гет запрос к серверу.

желательно поподробней чуть...


интересует ссылка и параметры...

З.Ы. можт нужна доп. инфа?

gold-goblin
16.01.2010, 01:52
хм... http://www.daniweb.com/forums/thread43523.html# направление полета мысли получено? =)
яб помог но Си не знаю... А так это все основа основ.

-=chelovek=-
16.01.2010, 01:52
что то вроде етого http://www.cyberforum.ru/cpp-builder/thread23615.html

SHOOTER
16.01.2010, 02:02
что то вроде етого http://www.cyberforum.ru/cpp-builder/thread23615.html

общую структуру Get-запроса я зню.... вопрос был о параметрах url-строки в конкретном случае....

Dr1ver
16.01.2010, 02:10
Для этого есть снифферы

SHOOTER
16.01.2010, 02:10
хм... http://www.daniweb.com/forums/thread43523.html# направление полета мысли получено? =)
яб помог но Си не знаю... А так это все основа основ.
интересует какие параметры передавать... куда писать цифри из картинки? одним словом, что именно в конкретном случае сервер от меня хочет?

тада как ето реализовать на другом язике? я уже для себя переведу на Си сам...

SHOOTER
16.01.2010, 02:13
Для этого есть снифферы
о, ет ближе к делу... скачял я какота навароченый сниффер.... ток не могу с ним разобратся.... подскажи линк на простой сниффер и как с ним работать, можт инфа есть?

gold-goblin
16.01.2010, 02:37
плагины для фф есть (tamper data к примеру. Там ничего сложного нет + русский он).
ну может поможет: python пост запрос
# -*- coding: utf-8 -*-
import urllib,httplib

data = {"content":"import test; print test","language":"Python","title":"","poster":"","hold":""}
params = urllib.urlencode(data)
headers = {"http-equiv": "Content-Type", " content": "text/html","charset":"utf8"}
connection = httplib.HTTPConnection("www.dpaste.com:80")
connection.request("POST", "/", params)
otvet = connection.getresponse()
print otvet.status, otvet.reason
dataa = otvet.read()
print dataa
connection.close()

SHOOTER
16.01.2010, 02:41
а что передаешь в "params"??? ;)

gold-goblin
16.01.2010, 02:42
data = {"content":"import test; print test","language":"Python","title":"","poster":"","hold":""}

gold-goblin
16.01.2010, 02:43
тебе проще сниффером поработать. Может там вообще гет запрос =)

SHOOTER
16.01.2010, 02:43
ок... а где расшифрованная капча 123456?

Akum
16.01.2010, 15:35
тебе проще сниффером поработать. Может там вообще гет запрос =)
А это на что?
<form name="mform" action="index.phtml" method="post" onSubmit="sF()">

общую структуру Get-запроса я зню...
Так если знаешь почему не пишеш там же все в куске html что ты привел все есть!

Akum
16.01.2010, 15:42
вот что должно предаваться РОST запросом:

s=Ob0o3fHbPmqLv5W8T7mGH1SLp5ZM7cw4
s_post=cjJfP4UPuGVSnAcSUWhv1YuvnLYPoqwx
tip=CheckCode
tcurl=SomeRef
tcontinue=yes
captcha=капча
wininet.h - это я не знаю. Windows must die :D

В с++ с использованием libcurl это все решается за минуту! :)

Akum
16.01.2010, 16:19
Вот на с++:

#include <iostream>
#include <string.h>
#include <curl/curl.h>

using namespace std;

static int writer(char *data, size_t size, size_t nmemb,string *buffer)
{
int result = 0;
if (buffer != NULL)
{
buffer->append(data, size * nmemb);
result = size * nmemb;
}
return result;
}

int main()
{

CURL * curl;
CURLcode result;

curl_slist *slist = NULL;
string buffer;
curl_global_init(CURL_GLOBAL_ALL);

curl = curl_easy_init();

slist = curl_slist_append(slist, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
slist = curl_slist_append(slist, "Accept-Language: ru,en-us;q=0.7,en;q=0.3");
slist = curl_slist_append(slist, "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7");
slist = curl_slist_append(slist, "Keep-Alive: 300");
slist = curl_slist_append(slist, "Connection: keep-alive");

curl_easy_setopt(curl, CURLOPT_HEADER, 0);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);
curl_easy_setopt(curl, CURLOPT_ENCODING, "gzip,deflate");
curl_easy_setopt(curl, CURLOPT_COOKIELIST, "");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "s=Ob0o3fHbPmqLv5W8T7mGH1SLp5ZM7cw4&s_post=cjJfP4UPuGVSnAcSUWhv1YuvnLYPoqwx&tip=CheckCode&tcurl=SomeRef&tcontinue=yes&captcha=капча");

curl_easy_setopt(curl, CURLOPT_USERAGENT,"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
curl_easy_setopt(curl, CURLOPT_REFERER, "тут url страници где находиться форма");

curl_easy_setopt(curl, CURLOPT_URL, "тут URL страници обрабатывающий запрос!");

result = curl_easy_perform(curl);

//в buffer находиться страница ответа

return 0;
}

SHOOTER
16.01.2010, 17:00
Вот на с++:


Спасибки, интересовала ета строчка:


curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "s=Ob0o3fHbPmqLv5W8T7mGH1SLp5ZM7cw4&s_post=cjJfP4UPuGVSnAcSUWhv1YuvnLYPoqwx&tip=CheckCode&tcurl=SomeRef&tcontinue=yes&captcha=капча");


теперь попробую на wininet переписать...

З.Ы. последовательность параметров которые я передаю имеет значение для сервака?

Akum
16.01.2010, 17:25
З.Ы. последовательность параметров которые я передаю имеет значение для сервака?
Вроде нет а там хз :D

SHOOTER
21.01.2010, 01:45
Вроде нет а там хз :D

спс) тема закрыта)