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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   HTTP/1.0 400 Bad Request (https://forum.antichat.xyz/showthread.php?t=173608)

RedFern.89 25.01.2010 15:28

HTTP/1.0 400 Bad Request
 
Пытаюсь отослать сообщение вконтакте. Снифером проверил все данные.

там было так

Код:

act=sent                     
ajax=1
chas=b0f7f128c260952e3d19962c2 
to_id=xxxxxx
title=
message=прива)                   
from_box=1

я так понел, что парметр Chas надо выдергивать из страницы. Я это сделал. и вот такая ошибка. В чем же дело? я отсылаю тоже самое, что и браузер о_О

RaX 25.01.2010 15:39

Может потому что параметр title пустой? Попробуй ввести что-нибудь.

RedFern.89 25.01.2010 15:40

всеравно тоже самое

RaX 25.01.2010 15:42

может тогда регистр параметров?

RedFern.89 25.01.2010 15:43

так все параметры я специально из сниффера копировал. Ошибок быть не может. я уже час сверяюсь

DiffiT 25.01.2010 15:45

Цитата:

Сообщение от RedFern.89
так все параметры я специально из сниффера копировал. Ошибок быть не может. я уже час сверяюсь

так может chas за это время устарел? :)
попробуй страниццо обновить для начала :)

RaX 25.01.2010 15:45

вручную пробовал вбивать? можт она Chas со страницы неправильно выдергивает.

RedFern.89 25.01.2010 15:50

DiffiT он не может устареть)) ведь он возникает, при открытии окна сообщений! а сообщение ты можешь хоть час печатать)

RaX Выдергивает правильно)) сравнивал. 25 совпадений из 25

RedFern.89 25.01.2010 15:52

он устареет, если ты заново откроешь окно сообщений, т.е. система этот хэш приведет в негодность и он якобы будет пренадлежать предыдущей сессии

RaX 25.01.2010 15:53

да вообще хрень какая-то) впринципе Bad Request, насколько я знаю, возникает только при неверном http-пакете, может где знак пропустил или ещё чего...

RedFern.89 25.01.2010 15:55

где я мог знак пропустить?))) а адресе?)) если бы в адересе, то я бы вылетел с 404й ошибкой)) в заголовках?)) там все скопированно со сниффера))

DiffiT 25.01.2010 15:56

Цитата:

Сообщение от RedFern.89
он устареет, если ты заново откроешь окно сообщений, т.е. система этот хэш приведет в негодность и он якобы будет пренадлежать предыдущей сессии

Дак пробовал поменять его? :)

RedFern.89 25.01.2010 15:57

пробовал)) тоже Bad Request)

RedFern.89 25.01.2010 15:58

ктонибудь поэксперементируйте у себя)) если что модуль могу дать)) там и авторизация и прочая херь

RedFern.89 25.01.2010 16:37

вот функции получения хэша и отправки:

Код:

function VK_OpenWriteBox(id: string): string;
var
 Str : string;
begin
 Str := HTTP.Get('http://vkontakte.ru/mail.php?act=a_write_box&to=' + id);
 str := Copy(str, Pos('decodehash', str) +12, Length(str));
 Delete(str, Pos(#39, str), Length(str));
 Result := str;
end;

procedure VK_SendMessage(id, hash, msg: string);
var
 Post : TStringList;
begin
 Post := TStringList.Create;
 Post.Add('act=sent');
 Post.Add('ajax=1');
 Post.Add('chas=' + hash);
 Post.Add('to_id=' + id);
 Post.Add('title=))');
 Post.Add('message=' + AnsiToUTF8(msg));
 Post.Add('from_box=1');

 HTTP.Request.Referer := 'http://vkontakte.ru/mail.php?act=a_write_box&to=' + id;
 HTTP.Post('http://vkontakte.ru/mail.php', Post);
 Post.Free;
end;


RedFern.89 25.01.2010 16:49

оказывается этот хэш нуно расшифровать)) как?

я напараолся на

http://forum.antichat.ru/thread166156.html
http://forum.antichat.ru/thread165956.html

но как?

RedFern.89 25.01.2010 16:56

Код:

<script type="text/javascript">
<!--



window.dec_hash = function(hash) {
  (function(_){window.decoded_hashes[_]=(function(__){var ___='';for(____=0;____<__.length;++____)___+=__.charAt(__.length-____-1);return ___;})(_.substr(_.length-5)+_.substr(4,_.length-12));})(hash);
}


window.decoded_hashes = {};
window.decodehash = function(hash) {
  window.dec_hash(hash);
  return window.decoded_hashes[hash];
}
window.decode_hash = window.decodehash;



bukas=decode_hash('46407aef5072f2d8ed9354d92');

alert(bukas);
document.write(bukas);
//-->

</script>

как это в delphi сделать то?))

RedFern.89 25.01.2010 17:45

щас все работает))) я долго разбирался, что за хэш и как его декодировать))) нашел вконтакте этот жава скрипт, вставил туда хэш и получил результат)) и взял закодированный хэш и раскодированный. начал сравнивать)) все просто))

вот функция на delphi, если кому надо)) 1.5 часа убил на все это говно

Код:

function DecChas(chas: string): string;
var
 Decchas : string;
 str : string;
 I : Integer;
 Len : integer;
begin

 str := Copy(chas, 6, 12);
 Len := Length(str);

 For I := 0 To Length(str) -1 do
 begin
  Decchas := Decchas + str[len];
  Inc(len, -1);
 end;

 str := Copy(chas, 21, Length(chas) -5);
 str := str + Copy(chas, 5, 1);

 Len := Length(str);

 For I := 0 To Length(str) -1 do
 begin
  Decchas := Decchas + str[len];
  Inc(len, -1);
 end;

 Result := Decchas;
end;


Shram-spb 25.01.2010 19:04

Вконтакте хитрая система безопастностию..
Надо уметь хорошо симулировать работу пользователя..
Попробуй указать рефферер "http://vkontakte.ru/mail.php" в хэдере запроса..
+ ты не забыл про куки?

RedFern.89 25.01.2010 19:06

та все работает уже)) referer стоит как видишь в коде))

cheater_man 25.01.2010 19:37

Цитата:

Сообщение от RedFern.89
та все работает уже)) referer стоит как видишь в коде))

В чем проблема то была?

RedFern.89 25.01.2010 19:51

в том, что хэш расшифровать надо было))) расшифровал елеле

eldar85 15.05.2010 23:07

а кто нить пробывал на С++ написать такую функцию декодирования хэша??? капец, меня вообще никак не допрет!!!)) если есть профи отзовитесь плиз!!!!

eldar85 15.05.2010 23:32

<script type="text/javascript">
window.init_dec_hash = function() {
window.decoded_hashes = {};
var dec_hash = function(hash) {
(function(_){window.decoded_hashes[_]=(function(__){var ___=ge?'':'___';for(____=0;____<__.length;++____)_ __+=__.charAt(__.length-____-1);return geByClass?___:'___';})(_.substr(_.length-5)+_.substr(4,_.length-12));})(hash);
}
window.decodehash = function(hash) {
dec_hash(hash);
return window.decoded_hashes[hash];
}
}
</script>
я так понимаю это же та самая функция декодирования??? вообще в нее не въеду...

Jingo Bo 16.05.2010 14:27

Проверь, декодируется ли хэш(chas), так же 400 вылезает если повторно отправить два одинаковых сообщения.

Jingo Bo 16.05.2010 14:29

Цитата:

а кто нить пробывал на С++ написать такую функцию декодирования хэша??? капец, меня вообще никак не допрет!!!)) если есть профи отзовитесь плиз!!!!
Я на делфи переносил - 5 строк кода:) Поищи в этом разделе.


Время: 02:53