Разборки с НОСКАМИ!
Пользователи, просматривающие топик: 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 *)&temp, sizeof(temp), 0);<BR> r=recv(s, (char *)&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 "stdafx.h"<BR>#include <winsock2.h><BR>#include <iostream.h><BR><BR>#pragma comment(lib,"ws2_32.lib")<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), &wsd);<BR> <BR> server socks[1];<BR> server dest;<BR> <BR> socks[0].ip=resolve("www.proxy4free.com");<BR> socks[0].port=htons(1080);<BR> socks[1].ip=resolve("www.proxy4free.com");<BR> socks[1].port=htons(1080);<BR><BR> dest.ip=resolve("www.xakep.ru");<BR> dest.port=htons(80);<BR><BR> SOCKET servname;<BR> servname=socket(AF_INET, SOCK_STREAM, 0);<BR> int conn=connectbysocks((server*)&socks[0], 2, servname, dest);<BR> if (conn!=0)<BR> {<BR> cout<<"Connect error\n";<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="\x05\x01\x00";<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 *)&serv, sizeof(serv));<BR> for(int i=1; i<=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 *)&temp, sizeof(temp), 0);<BR> r=recv(s, (char *)&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>Буду очень признателен!!!
|
|
|
Разборки с НОСКАМИ! - 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;quot;www.proxy4free.com&amp;quot;);<BR> socks[0].port=htons(1080);<BR> socks[1].ip=resolve(&amp;quot;www.proxy4free.com&amp;quot;);<BR> socks[1].port=htons(1080);<BR><BR>
Индекс за границей массива
|
|
|
Разборки с НОСКАМИ! - 2005-07-14 00:45:58
|
|
|
Kill_em_all
Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
|
Я уже разобрался, но все равно спасибо[sm=hi.gif]
|
|
|
Разборки с НОСКАМИ! - 2005-07-14 00:46:50
|
|
|
Kill_em_all
Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
|
Я уже разобрался, но все равно спасибо[sm=hi.gif]
|
|
|
|
|