Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Разборки с НОСКАМИ!

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Разборки с НОСКАМИ!
Имя
Сообщение << Старые топики   Новые топики >>
Разборки с НОСКАМИ! - 2005-07-13 12:40:19   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
Писал соксификатор(чето типа SocksChain), компиляция прошла успешно, первый
же запуск выдал мне, что типа переменная wsd(WSADATA wsd) повреждена.
В чем косяк даже не могу прикинуть.Вот мой код:

#include "stdafx.h"
#include <winsock2.h>
#include <iostream.h>

#pragma comment(lib,"ws2_32.lib")

typedef struct _server
{
DWORD ip;
u_short port;
} server;
typedef struct _req
{
BYTE ver;
BYTE cmd;
BYTE rsv;
BYTE type;
DWORD addr;
u_short port;
} req;


DWORD resolve(char shost[256]);
int connectbysocks(server *socks, int iSocks, SOCKET s, server dest);
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsd;
WSAStartup(MAKEWORD(2,2), &wsd);

server socks[1];
server dest;

socks[0].ip=resolve("www.proxy4free.com");
socks[0].port=htons(1080);
socks[1].ip=resolve("www.proxy4free.com");
socks[1].port=htons(1080);

dest.ip=resolve("www.xakep.ru");
dest.port=htons(80);

SOCKET servname;
servname=socket(AF_INET, SOCK_STREAM, 0);
int conn=connectbysocks((server*)&socks[0], 2, servname, dest);
if (conn!=0)
{
cout<<"Connect error\n";
return 0;
}


return 0;
}
DWORD resolve(char shost[256])
{
HOSTENT* host;
host=gethostbyname(shost);
return inet_addr((char *)host);
}
int connectbysocks(server *socks, int iSocks, SOCKET s, server dest)
{
SOCKADDR_IN serv;
char* request="\x05\x01\x00";
int r=0;
BYTE request_ans[2];
req temp;
serv.sin_family=AF_INET;
serv.sin_addr.s_addr=socks[0].ip;
serv.sin_port=socks[0].port;
int ret=connect(s, (struct sockaddr *)&serv, sizeof(serv));
for(int i=1; i<=2; ++i)
{
send(s, (char *)request, 3,0);
r=recv(s, (char*)request_ans, 2,0);
if((r==SOCKET_ERROR)||(request_ans[1]==0xFF)||(request_ans[0]=0x05))
return 1;
temp.ver=0x05;
temp.cmd=temp.type=0x01;
temp.rsv=0x00;
if(i==2)
{
temp.addr=dest.ip;
temp.port=dest.port;
} else
{
temp.addr=socks.ip;<BR> temp.port=socks.port;<BR> }<BR> if(!temp.addr) continue;<BR> send(s, (char *)&amp;temp, sizeof(temp), 0);<BR> r=recv(s, (char *)&amp;temp, sizeof(temp), 0);<BR> if ((r==SOCKET_ERROR)||(temp.rsv!=0)||(temp.cmd!=0))<BR> return 1;<BR> }<BR> return 0;<BR>}<BR><BR>#include &quot;stdafx.h&quot;<BR>#include &lt;winsock2.h&gt;<BR>#include &lt;iostream.h&gt;<BR><BR>#pragma comment(lib,&quot;ws2_32.lib&quot;)<BR><BR>typedef struct _server<BR>{<BR> DWORD ip;<BR> u_short port;<BR>} server;<BR>typedef struct _req<BR>{<BR> BYTE ver;<BR> BYTE cmd;<BR> BYTE rsv;<BR> BYTE type;<BR> DWORD addr;<BR> u_short port;<BR>} req;<BR> <BR><BR>DWORD resolve(char shost[256]); <BR>int connectbysocks(server *socks, int iSocks, SOCKET s, server dest);<BR>int _tmain(int argc, _TCHAR* argv[])<BR>{<BR> WSADATA wsd;<BR> WSAStartup(MAKEWORD(2,2), &amp;wsd);<BR> <BR> server socks[1];<BR> server dest;<BR> <BR> socks[0].ip=resolve(&quot;www.proxy4free.com&quot;);<BR> socks[0].port=htons(1080);<BR> socks[1].ip=resolve(&quot;www.proxy4free.com&quot;);<BR> socks[1].port=htons(1080);<BR><BR> dest.ip=resolve(&quot;www.xakep.ru&quot;);<BR> dest.port=htons(80);<BR><BR> SOCKET servname;<BR> servname=socket(AF_INET, SOCK_STREAM, 0);<BR> int conn=connectbysocks((server*)&amp;socks[0], 2, servname, dest);<BR> if (conn!=0)<BR> {<BR> cout&lt;&lt;&quot;Connect error\n&quot;;<BR> return 0;<BR> }<BR><BR><BR> return 0;<BR>}<BR>DWORD resolve(char shost[256])<BR>{<BR> HOSTENT* host;<BR> host=gethostbyname(shost);<BR> return inet_addr((char *)host);<BR>}<BR>int connectbysocks(server *socks, int iSocks, SOCKET s, server dest)<BR>{<BR> SOCKADDR_IN serv;<BR> char* request=&quot;\x05\x01\x00&quot;;<BR> int r=0;<BR> BYTE request_ans[2];<BR> req temp;<BR> serv.sin_family=AF_INET;<BR> serv.sin_addr.s_addr=socks[0].ip;<BR> serv.sin_port=socks[0].port;<BR> int ret=connect(s, (struct sockaddr *)&amp;serv, sizeof(serv));<BR> for(int i=1; i&lt;=2; ++i)<BR> {<BR> send(s, (char *)request, 3,0);<BR> r=recv(s, (char*)request_ans, 2,0);<BR> if((r==SOCKET_ERROR)||(request_ans[1]==0xFF)||(request_ans[0]=0x05))<BR> return 1;<BR> temp.ver=0x05;<BR> temp.cmd=temp.type=0x01;<BR> temp.rsv=0x00;<BR> if(i==2)<BR> {<BR> temp.addr=dest.ip;<BR> temp.port=dest.port;<BR> } else<BR> {<BR> temp.addr=socks.ip;<BR> temp.port=socks.port;<BR> }<BR> if(!temp.addr) continue;<BR> send(s, (char *)&amp;temp, sizeof(temp), 0);<BR> r=recv(s, (char *)&amp;temp, sizeof(temp), 0);<BR> if ((r==SOCKET_ERROR)||(temp.rsv!=0)||(temp.cmd!=0))<BR> return 1;<BR> }<BR> return 0;<BR>Мож кто уже встречался с такой бедой?<BR><BR>Буду очень признателен!!!
Post #: 1
Разборки с НОСКАМИ! - 2005-07-13 20:35:25   
MrBlack

Сообщений: 268
Оценки: 0
Присоединился: 2004-05-24 00:02:27
quote:

—————-<BR>Цитата: Дата:13.07.2005 12:40:19, Автор: Kill_em_all ::
<BR><BR> server socks[1];<BR><BR> ….<BR><BR> socks[0].ip=resolve(&amp;amp;quot;www.proxy4free.com&amp;amp;quot;);<BR> socks[0].port=htons(1080);<BR> socks[1].ip=resolve(&amp;amp;quot;www.proxy4free.com&amp;amp;quot;);<BR> socks[1].port=htons(1080);<BR><BR>


Индекс за границей массива
Post #: 2
Разборки с НОСКАМИ! - 2005-07-14 00:45:58   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
Я уже разобрался, но все равно спасибо[sm=hi.gif]
Post #: 3
Разборки с НОСКАМИ! - 2005-07-14 00:46:50   
Kill_em_all

Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
Я уже разобрался, но все равно спасибо[sm=hi.gif]
Post #: 4
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Разборки с НОСКАМИ!







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.