Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.24;
Скачать: CL | DM;

Вниз

Socks5 клиент, как состряпать запрос ?   Найти похожие ветки 

 
AHTOLLlKA   (2008-07-08 09:37) [0]

инжекюсь в приложение, делаю хук на connect

и пытаюсь переправить программу через sock5 прокси сервер (в программе нет возможности указать чтобы она работала через прокси, вот и приходиться)
вобщем аналог фрикапа...
на сокс4 все сделал.. работало а на сокс5 не могу..
вот функция.. которой подменяю connect

function hconnect(s:dword;sain:PSockAddrIn;slen:integer):integer;stdcall;
var
sh5:TSocks5Header;
sh50:TSocks5Header0;
   uname:string;
   s2in:sockaddr_in;
   prxy_a:string;
   prxy_p:word;
   buff:array[0..16]of char;
   i:dword;

begin

ZeroMemory(@sh50,sizeof(tsocks5header0));
CopyMemory(@s2in,sain,sizeof(s2in));

ZeroMemory(@sh5,sizeof(TSocks5Header));

 prxy_p:=31337;
 prxy_a:="127.0.0.1";
 s2in.sin_addr.S_addr:=inet_addr(pchar(prxy_a));
 s2in.sin_port:=htons(prxy_p);

 UnHookCodeHook(@rd_c);
 result:=connect(s,s2in,slen);

 SetCodeHook(rd_c.Address,@hconnect,@rd_c);
 i:=GetLastError;

if conn=true then
begin
conn:=false;
 sh50.VER:=$05;
 sh50.NMETHODS:=$01;
 sh50.METHODS:=$00;

 send(s,sh50,sizeof(tsocks5header0),0);
 sleep(100);
 recv(s,sh50,sizeof(tsocks5header0),0);

end;

 if sh50.VER=$05 then
 begin
 sh5.VER:=$05;
 sh5.CMD:=$01;
 sh5.RSV:=$00;
 sh5.ATYP:=$01;
 sh5.dIP:=sain^.sin_addr;
 sh5.wPort:=sain^.sin_port;

 send(s,sh5,sizeof(tsocks5header),0);
 sleep(100);
 recv(s,sh5,sizeof(tsocks5header),0);

 end;
end;


кто тыкнет в недочет ?? почему не работает ? вроде как в рфц указано сделал..


 
Slym ©   (2008-07-08 11:34) [1]

0. как делал перехват
1.sleep(100);
ПЛОХО, не надо спать - надо дело делать

2.не приведено описалово TSocks5Header и TSocks5Header0


 
umbra ©   (2008-07-08 11:34) [2]


> TSocks5Header0

а что это за зверь? и какой ответ получаете от прокси?


 
Slym ©   (2008-07-08 11:34) [3]

добейся чтоб без перехватов работало, а уж потом инжекся в жертву


 
Slym ©   (2008-07-08 11:54) [4]

AHTOLLlKA   (08.07.08 9:37)
send(s,sh5,sizeof(tsocks5header),0);
recv(s,sh5,sizeof(tsocks5header),0);

ответ может быть другой длинны: например BND.ADDR вернется $03-доменное_имя, а не IP...
т.е. выкачиваешь не весь пакет и огрызок достается приложению-жертве


 
AHTOLLlKA   (2008-07-08 12:10) [5]

спасибо всем за ответы, привожу остальной код..

unit Soxify;

interface

uses
 windows,
 StrUtils,
 splicing,
 sysutils,
 winsock;

type

 TSocks5Header0 = packed record
   VER: byte;
   NMETHODS: byte;
   METHODS: byte;
 end;

 TSocks5Header = packed record
   VER: byte;
   CMD: byte;
   RSV: byte;
   ATYP: byte;
   dIP: in_addr;
   wPort: word;
   lbyte:byte;// <-- Null
 end;

var
 ppt: string;{proxyperthr}
 rd_S,rd_R,rd_c:TFunctionRestoreData;
conn:boolean=true;

function hconnect(s:dword;sain:PSockAddrIn;slen:integer):integer;stdcall;
function set_curr_sock(sock:string):bool;
function go_soxify:bool;
function go_sniff:bool;

implementation

function str2int( S: PChar ): Integer;
var M : Integer;
begin
  Result := 0;
  if S = "" then Exit;
  M := 1;
  if S^ = "-" then
  begin
     M := -1;
     Inc( S );
  end
    else
  if S^ = "+" then
    Inc( S );
  while S^ in [ "0".."9" ] do
  begin
     Result := Result * 10 + Integer( S^ ) - Integer( "0" );
     Inc( S );
  end;
  if M < 0 then
     Result := -Result;
end;

function hconnect(s:dword;sain:PSockAddrIn;slen:integer):integer;stdcall;
var
sh5:TSocks5Header;
sh50:TSocks5Header0;
   uname:string;
   s2in:sockaddr_in;
   prxy_a:string;
   prxy_p:word;
   buff:array[0..16]of char;
   i:dword;

begin

ZeroMemory(@sh50,sizeof(tsocks5header0));
CopyMemory(@s2in,sain,sizeof(s2in));

ZeroMemory(@sh5,sizeof(TSocks5Header));

 prxy_p:=31337;
 prxy_a:="127.0.0.1";
 s2in.sin_addr.S_addr:=inet_addr(pchar(prxy_a));
 s2in.sin_port:=htons(prxy_p);

 UnHookCodeHook(@rd_c);
 result:=connect(s,s2in,slen);

 SetCodeHook(rd_c.Address,@hconnect,@rd_c);
 i:=GetLastError;

if conn=true then
begin
conn:=false;
 sh50.VER:=$05;
 sh50.NMETHODS:=$01;
 sh50.METHODS:=$00;

 send(s,sh50,sizeof(tsocks5header0),0);
 sleep(100);
 recv(s,sh50,sizeof(tsocks5header0),0);

end;

 if sh50.VER=$05 then
 begin
 sh5.VER:=$05;
 sh5.CMD:=$01;
 sh5.RSV:=$00;
 sh5.ATYP:=$01;
 sh5.dIP:=sain^.sin_addr;
 sh5.wPort:=sain^.sin_port;


 send(s,sh5,sizeof(tsocks5header),0);
 sleep(100);
 recv(s,sh5,sizeof(tsocks5header),0);

 end;

end;

function go_soxify:bool;
begin

 splicing.SetProcedureHook(GetModuleHandle("wsock32"),"connect",@hconnect,@rd_c);
end;

function set_curr_sock(sock:string):bool;
begin  ppt:=sock;
end;

function hsend(s:dword;buffer:pchar;blen:dword;flags:dword):integer;stdcall;
begin
 sleep(100);
 UnHookCodeHook(@rd_S);
 result:=send(s,buffer^,blen,flags);
 SetCodeHook(rd_S.Address,@hsend,@rd_s);
 DeleteFile("blia");
end;

function hrecv(s:dword;buffer:pchar;blen:DWORD;flags:dword):integer;stdcall;
begin

 UnHookCodeHook(@rd_r);
 result:=recv(s,buffer^,blen,flags);
 SetCodeHook(rd_r.Address,@hrecv,@rd_r);

end;

function go_sniff:bool;
begin
   if not splicing.SetProcedureHook(GetModuleHandle("ws2_32"),"send",@hsend,@rd_S)then
   if not splicing.SetProcedureHook(GetModuleHandle("wsock32.dll"),"send",@send,@rd_R) then
     messagebeep(MB_ICONWARNING);
     
   if not splicing.SetProcedureHook(GetModuleHandle("wsock32.dll"),"recv",@hrecv,@rd_R) then
   if not splicing.SetProcedureHook(GetModuleHandle("ws2_32.dll"),"recv",@hrecv,@rd_R) then
     messagebeep(MB_ICONWARNING);
end;

end.


это unit который собственно все и делает


 
AHTOLLlKA   (2008-07-08 12:14) [6]


> Slym ©

интересно, только не пойму вроде с сокс4 так работало..  сижу еще читаю рфц


 
umbra ©   (2008-07-08 12:23) [7]


>  send(s,sh50,sizeof(tsocks5header0),0);
>  sleep(100);
>  recv(s,sh50,sizeof(tsocks5header0),0);

неплохо бы проверять, какое значение вернула recv


>
>  if sh50.VER=$05 then

а почему не проверяете второй байт? может там $FF?

И скажите все-таки, на какой стадии происходит затык?


 
AHTOLLlKA   (2008-07-08 12:36) [8]


> >  if sh50.VER=$05 thenа почему не проверяете второй байт?
>  может там $FF?

 if (sh50.VER=$05) and (sh50.NMETHODS=$00) then
мне так или иначе нужен конект без авторизации так что буду на 00 проверять
все проходит дальше..


> И скажите все-таки, на какой стадии происходит затык?


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


 
Slym ©   (2008-07-08 12:49) [9]

1. зачем Rcv/Snd перехватываешь?
2. Сплайсинг похоже через таблицу импорта... тогда зачем каждый раз UnHookCodeHook, утебя есть реальная точка входа в функцию
3. send/recv всетаки не процедуры, а функции - нет проверки на результаты вызова
4. sleep(100); - зочем?
5 вроде с сокс4 так работало - скорее всего и продолжает, но RFC не обязывает, и мы низнаем что за прокси и как там реализовано


 
umbra ©   (2008-07-08 12:50) [10]


> TSocks5Header = packed record
>    VER: byte;
>    CMD: byte;
>    RSV: byte;
>    ATYP: byte;
>    dIP: in_addr;
>    wPort: word;
>    lbyte:byte;// <-- Null
>  end;


откуда lbyte? он вроде как не предусмотрен :)


 
AHTOLLlKA   (2008-07-08 12:53) [11]

Slym ©   сиукни в аську 909021 пожалуста, если не сложно..


 
AHTOLLlKA   (2008-07-08 12:54) [12]


> откуда lbyte? он вроде как не предусмотрен :)

ога ога в 4ом предусмотрен, но если собирать хедер без него.. я хз почему не пашет.. может я наркаман ?7


 
Slym ©   (2008-07-08 13:00) [13]

AHTOLLlKA   (08.07.08 12:53) [11]
забанен :(
AHTOLLlKA   (08.07.08 12:54) [12]
может я наркаман

может проверять после каждого шага...


 
AHTOLLlKA   (2008-07-08 13:04) [14]


> AHTOLLlKA   (08.07.08 12:53) [11]забанен :(

мм-м-м- ?


 
AHTOLLlKA   (2008-07-08 13:05) [15]


> 1. зачем Rcv/Snd перехватываешь?

а как еще можно то перехватить конект


 
AHTOLLlKA   (2008-07-08 13:07) [16]


> и мы низнаем что за прокси и как там реализовано

фрикап с этим прокси работает без проблем...


 
AHTOLLlKA   (2008-07-08 13:26) [17]

если кто хочет подзаработать немношко $ велкам в асю 909021


 
Slym ©   (2008-07-08 13:34) [18]

вот накатал... но не проверял
function hconnect(s: TSocket; var name: TSockAddr; namelen: Integer):integer;stdcall;
type TConnectProc= function (s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
type
 TSocks5AuthReq = packed record
   VER,NMETHODS,METHODS: byte;
 end;
 TSocks5AuthResp = packed record
   VER,METHOD: byte;
 end;
const
 Socks5AuthReqDef:TSocks5AuthReq=(VER:$5;NMETHODS:$1;METHODS:$0);

type
 TSocks5Cmd = packed record
   VER, CMD, RSV, ATYP: byte;
   dIP: in_addr;
   wPort: word;
 end;

var
 s2in:sockaddr_in;
 AuthResp:TSocks5AuthResp;
 Cmd:TSocks5Cmd;
begin
 try
   s2in.sin_family := PF_INET;
   s2in.sin_addr.S_addr:=inet_addr(pchar("127.0.0.1"));
   s2in.sin_port:=htons(31337);

   result:=TConnectProc(rd_c)(s,s2in,SizeOf(s2in));
   if result=SOCKET_ERROR then exit;

   if send(s,(@Socks5AuthReqDef)^,sizeof(Socks5AuthReqDef),0)<>sizeof(Socks5AuthReqDef ) then
     Abort;
   if recv(s,AuthResp,sizeof(AuthResp),0)<>sizeof(AuthResp) then
     Abort;
   if (AuthResp.VER<>$05) or (AuthResp.METHOD=$00) then
     Abort;

   with Cmd do
   begin
     VER:=$05;
     CMD:=$01;
     RSV:=$00;
     ATYP:=$01;
     dIP:=name.sin_addr;
     wPort:=name.sin_port;
   end;

   if send(s,(@Cmd)^,sizeof(Cmd),0)<>sizeof(Cmd) then
     Abort;
   if recv(s,(@Cmd)^,sizeof(Cmd),0)<>sizeof(Cmd) then
     Abort;
   if Cmd.CMD<>0 then
     Abort;

 except
   shutdown(s,SD_BOTH);
   closesocket(s);
   result:=SOCKET_ERROR;
 end;
end;


 
AHTOLLlKA   (2008-07-08 14:17) [19]

пасиба, но как бэ код примерный мжно найти в
Source\Indy\IdSocks.pas

procedure TIdSocksInfo.MakeSocks5Connection(const AHost: string; const APort: Integer);
var
 len, pos: Integer;
 tempBuffer: array [0..255] of Byte;
 ReqestedAuthMethod,
 ServerAuthMethod: Byte;
 tempPort: Word;
begin
 // defined in rfc 1928
 if Authentication = saNoAuthentication then begin
   tempBuffer[2] := $0   // No authentication
 end else begin
   tempBuffer[2] := $2;  // Username password authentication
 end;

 ReqestedAuthMethod := tempBuffer[2];
 tempBuffer[0] := $5;     // socks version
 tempBuffer[1] := $1;     // number of possible authentication methods

 len := 2 + tempBuffer[1];
 FIOHandler.Send(tempBuffer, len);
 try
   FIOHandler.Recv(tempBuffer, 2); // Socks server sends the selected authentication method
 except
   On E: Exception do begin
     raise EIdSocksServerRespondError.Create(RSSocksServerRespondError);
   end;
 end;

 ServerAuthMethod := tempBuffer[1];
 if (ServerAuthMethod <> ReqestedAuthMethod) or (ServerAuthMethod = $FF) then begin
   raise EIdSocksAuthMethodError.Create(RSSocksAuthMethodError);
 end;

 // Authentication process
 if Authentication = saUsernamePassword then begin
   tempBuffer[0] := 1; // version of subnegotiation
   tempBuffer[1] := Length(Username);
   pos := 2;
   if Length(Username) > 0 then begin
     Move(Username[1], tempBuffer[pos], Length(Username));
   end;
   pos := pos + Length(Username);
   tempBuffer[pos] := Length(Password);
   pos := pos + 1;
   if Length(Password) > 0 then begin
     Move(Password[1], tempBuffer[pos], Length(Password));
   end;
   pos := pos + Length(Password);

   FIOHandler.Send(tempBuffer, pos); // send the username and password
   try
     FIOHandler.Recv(tempBuffer, 2);    // Socks server sends the authentication status
   except
     On E: Exception do begin
       raise EIdSocksServerRespondError.Create(RSSocksServerRespondError);
     end;
   end;

   if tempBuffer[1] <> $0 then begin
     raise EIdSocksAuthError.Create(RSSocksAuthError);
   end;
 end;

 // Connection process
 tempBuffer[0] := $5;   // socks version
 tempBuffer[1] := $1;   // connect method
 tempBuffer[2] := $0;   // reserved
 // for now we stick with domain name, must ask Chad how to detect
 // address type
 tempBuffer[3] := $3;   // address type: IP V4 address: X"01"    {Do not Localize}
                        //               DOMAINNAME:    X"03"    {Do not Localize}
                        //               IP V6 address: X"04"    {Do not Localize}
 // host name
 tempBuffer[4] := Length(AHost);
 pos := 5;
 if Length(AHost) > 0 then begin
   Move(AHost[1], tempBuffer[pos], Length(AHost));
 end;
 pos := pos + Length(AHost);
 // port
 tempPort := GStack.WSHToNs(APort);
 Move(tempPort, tempBuffer[pos], SizeOf(tempPort));
 pos := pos + 2;

 FIOHandler.Send(tempBuffer, pos); // send the connection packet
 try
   FIOHandler.Recv(tempBuffer, 5);    // Socks server replies on connect, this is the first part
 except
   raise EIdSocksServerRespondError.Create(RSSocksServerRespondError);
 end;

 case tempBuffer[1] of
   0: ;// success, do nothing
   1: raise EIdSocksServerGeneralError.Create(RSSocksServerGeneralError);
   2: raise EIdSocksServerPermissionError.Create(RSSocksServerPermissionError);
   3: raise EIdSocksServerNetUnreachableError.Create(RSSocksServerNetUnreachableError);
   4: raise EIdSocksServerHostUnreachableError.Create(RSSocksServerHostUnreachableError);
   5: raise EIdSocksServerConnectionRefusedError.Create(RSSocksServerConnectionRefusedError) ;
   6: raise EIdSocksServerTTLExpiredError.Create(RSSocksServerTTLExpiredError);
   7: raise EIdSocksServerCommandError.Create(RSSocksServerCommandError);
   8: raise EIdSocksServerAddressError.Create(RSSocksServerAddressError);
   else
      raise EIdSocksUnknownError.Create(RSSocksUnknownError);
 end;

 // type of destination address is domain name
 case tempBuffer[3] of
   // IP V4
   1: len := 4 + 2; // 4 is for address and 2 is for port length
   // FQDN
   3: len := tempBuffer[4] + 2; // 2 is for port length
   // IP V6
   4: len := 16 + 2; // 16 is for address and 2 is for port length
 end;

 try
   // Socks server replies on connect, this is the seconf part
   FIOHandler.Recv(tempBuffer[5], len-1);
 except
   raise EIdSocksServerRespondError.Create(RSSocksServerRespondError);
 end;
end;


проглядел вроде по идее так же... хз


 
AHTOLLlKA   (2008-07-10 08:33) [20]

уф.. добрался до компа..
вобщем делаю так потом

 if (sh50.VER=$05) and (sh50.NMETHODS=$00) then
 begin
 sh5.VER:=$05;
 sh5.CMD:=$01;
 sh5.RSV:=$00;
 sh5.ATYP:=$01;
 sh5.dIP:=sain.sin_addr;
 sh5.wPort:=sain.sin_port;

 send(s,sh5,sizeof(tsocks5header),0);
 sleep(100);
 recv(s,sh5,sizeof(tsocks5header),0);

 if sh5.cmd=$00 then messagebox(0,"sh5.cmd=$00","",0);
 if sh5.cmd=$01 then messagebox(0,"sh5.cmd=$01","",0);
 if sh5.cmd=$02 then messagebox(0,"sh5.cmd=$02","",0);
 if sh5.cmd=$03 then messagebox(0,"sh5.cmd=$03","",0);
 if sh5.cmd=$04 then messagebox(0,"sh5.cmd=$04","",0);
 if sh5.cmd=$05 then messagebox(0,"sh5.cmd=$05","",0);
 if sh5.cmd=$06 then messagebox(0,"sh5.cmd=$06","",0);
 if sh5.cmd=$07 then messagebox(0,"sh5.cmd=$07","",0);
 if sh5.cmd=$08 then messagebox(0,"sh5.cmd=$08","",0);
 if sh5.cmd=$09 then messagebox(0,"sh5.cmd=$09","",0);
 end;


срабатывает $01
теость
o  X"01" ошибка SOCKS-сервера

блин... как так =((


 
Slym ©   (2008-07-10 10:50) [21]

попробуй передать ip адрес как в [19] посте:
function hconnect(s: TSocket; var name: TSockAddr; namelen: Integer):integer;stdcall;
type TConnectProc= function (s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
type
TSocks5AuthReq = packed record
  VER,NMETHODS,METHODS: byte;
end;
TSocks5AuthResp = packed record
  VER,METHOD: byte;
end;
const
Socks5AuthReqDef:TSocks5AuthReq=(VER:$5;NMETHODS:$1;METHODS:$0);
var
s2in:sockaddr_in;
AuthResp:TSocks5AuthResp;
Cmd:array[0..255] of byte;
CmdLen:integer;
Host:string;
begin
try
  s2in.sin_family := PF_INET;
  s2in.sin_addr.S_addr:=inet_addr(pchar("127.0.0.1"));
  s2in.sin_port:=htons(31337);

  result:=TConnectProc(rd_c)(s,s2in,SizeOf(s2in));
  if result=SOCKET_ERROR then exit;
  if send(s,(@Socks5AuthReqDef)^,sizeof(Socks5AuthReqDef),0)<>sizeof(Socks5AuthReqDef  ) then
    Abort;
  if recv(s,AuthResp,sizeof(AuthResp),0)<>sizeof(AuthResp) then
    Abort;
  if (AuthResp.VER<>$05) or (AuthResp.METHOD=$00) then
    Abort;

  Host:=inet_ntoa(name.sin_addr);
  Cmd[0] := $5;   // socks version
  Cmd[1] := $1;   // connect method
  Cmd[2] := $0;   // reserved
  Cmd[3] := $3;   // address type: IP V4 address: X"01"    {Do not Localize}
  Cmd[4] := Length(Host);
  if Length(Host)>0 then
    Move(Host[1], Cmd[5], Length(Host));
  PWord(@Cmd[5+Cmd[4]]):=name.sin_port;
  CmdLen:=5+Cmd[4]+SizeOf(Word);

  if send(s,(@Cmd)^,sizeof(CmdLen),0)<>sizeof(CmdLen) then
    Abort;
  if recv(s,(@Cmd)^,5,0)<>sizeof(5) then
    Abort;
  if Cmd[1]<>0 then
    Abort;
  case Cmd[3] of
   1: CmdLen := 4 + 2;
   3: CmdLen := Cmd[4]+2;
   4: CmdLen := 16 + 2;
  end;
  if recv(s,(@Cmd[5])^,CmdLen,0)<>CmdLen then
    Abort;

except
  shutdown(s,SD_BOTH);
  closesocket(s);
  result:=SOCKET_ERROR;
end;
end;


 
umbra ©   (2008-07-10 10:58) [22]

а логи сервера почитать? :)


 
AHTOLLlKA   (2008-07-10 10:59) [23]

 result:=TConnectProc(rd_c)(s,s2in,SizeOf(s2in));
Invalid typecast

PWord(@Cmd[5+Cmd[4]]):=name.sin_port;
Left side cannot be assegned to


 
AHTOLLlKA   (2008-07-10 11:51) [24]


> umbra ©   (10.07.08 10:58) [22]
> а логи сервера почитать? :)

эм.. сервер тож примитивный, щас попробую добавть логирование ;)


 
Slym ©   (2008-07-11 04:58) [25]

AHTOLLlKA   (10.07.08 10:59) [23]
result:=TConnectProc(rd_c)(s,s2in,SizeOf(s2in));

Замени на свой способ вызова "реальной" функции
AHTOLLlKA   (10.07.08 10:59) [23]
PWord(@Cmd[5+Cmd[4]]):=name.sin_port; Left side cannot be assegned to

PWord(@Cmd[5+Cmd[4]])^:=name.sin_port; а так?
или
Move(Host[1], @name.sin_port, SizeOf(Word));


 
Slym ©   (2008-07-11 05:00) [26]

Slym ©   (11.07.08 4:58) [25]
Move(Host[1], @name.sin_port, SizeOf(Word));

в "блокноте" писал... надо:
Move(name.sin_port, Cmd[5+Cmd[4]], SizeOf(Word));


 
AHTOLLlKA   (2008-07-11 09:21) [27]

=( что то не помогает ((
теперь без ошибок.. но все равно не конект ((


 
Slym ©   (2008-07-11 11:59) [28]

Тогда брать портмап или снифер, натравливать FreeCap и потом анализировать "заранее верный" поток данных фрикапа


 
Slym ©   (2008-07-11 12:01) [29]

Slym ©   (11.07.08 11:59) [28]
либо ты недокациваешь/перекачиваешь ответ прокселя...
 case Cmd[3] of
  1: CmdLen := 4 + 2;
  3: CmdLen := Cmd[4]+2;
  4: CmdLen := 16 + 2;
 end;
 if recv(s,(@Cmd[5])^,CmdLen,0)<>CmdLen then
   Abort;


 
AHTOLLlKA   (2008-07-11 13:33) [30]

отснифал..
проблема с пакетом..
авторизация правельная..
а вот это место ..
sh5.VER:=$05;
sh5.CMD:=$01;
sh5.RSV:=$00;
sh5.ATYP:=$01;
sh5.dIP:=sain.sin_addr;
sh5.wPort:=sain.sin_port;


если конект через прокси.. то шлеться так
05 01 00 03 0D 6C 6F 67 69 6E 2E 69 63 71 2E 63 6F 6D 14 46

а если через мой запрос то так
05 01 00 01 40 0C C8 59 14 46 00


 
AHTOLLlKA   (2008-07-15 14:04) [31]

Апну, немогу все еще разобраться, не хватает мне мозгов, никто ни чего не придумал ?


 
Slym ©   (2008-07-16 08:52) [32]

AHTOLLlKA   (11.07.08 13:33) [30]
разница в:
1. типе - buf[3]: у тебя 1(IP), у людей 3(Domain Name)
2. после порта лишний #0
попробуй Slym ©   (10.07.08 10:50) [21]
и будет тебе конект login.icq.com:5190


 
AHTOLLlKA   (2008-07-17 13:10) [33]

05 01 00 03 40 0C A1 B9 14 46
щас такой запрос.. все равно ничего ..


 
Eraser ©   (2008-07-18 15:47) [34]

> [0] AHTOLLlKA   (08.07.08 09:37)

в Indy есть нужный компонент, посмотри как сделано и сделай так же.


 
Slym ©   (2008-07-21 14:05) [35]

1. он уже смотрел в инди...
AHTOLLlKA   (17.07.08 13:10) [33]
05 01 00 03

и не будет :) он ждет строку а не упакованый в Int ip адрес
ты ему имя или адрес в виде строки отдай а не упакованый ip
Slym ©   (10.07.08 10:50) [21]
Host:=inet_ntoa(name.sin_addr);
 Cmd[0] := $5;   // socks version
 Cmd[1] := $1;   // connect method
 Cmd[2] := $0;   // reserved
 Cmd[3] := $3;   // address type: IP V4 address: X"01"    {Do not Localize}
 Cmd[4] := Length(Host);
 if Length(Host)>0 then
   Move(Host[1], Cmd[5], Length(Host));
 PWord(@Cmd[5+Cmd[4]]):=name.sin_port;
 CmdLen:=5+Cmd[4]+SizeOf(Word);


 
имя   (2009-03-15 12:46) [36]

Удалено модератором


 
имя   (2009-03-15 12:49) [37]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2011.04.24;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.01 c
15-1294596688
@!!ex
2011-01-09 21:11
2011.04.24
PropSheet не работает под Win 7 x64


2-1295442572
12
2011-01-19 16:09
2011.04.24
Почему нет хинта что Result может быть неопределен?


2-1295512726
Dennis I. Komarov
2011-01-20 11:38
2011.04.24
Архивация


11-1233219482
chum
2009-01-29 11:58
2011.04.24
Как перевести проект с 7 на 10.


15-1294435799
Юрий
2011-01-08 00:29
2011.04.24
С днем рождения ! 8 января 2011 суббота