ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 22.01.2008, 20:00
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

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

это socks5 без авторизации, он не проверяет ошибок как следует и вообще прост как двери. Но он работает. Я его писал на делфи под винду, компилится и фри паскалем
 

  #22  
Старый 22.01.2008, 20:09
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
Да все всё понимают, просто нет охоты сидеть и разбирать код сквида в свободные пол часа
Да я вообще-то подумал, что ты хочешь размер бинарника маленький, что бы следуя манифестам хэкеров, вырезать нахер CRT, использовать осенблерные вставки в самых неподходящих местах (для понта), и т.п. А зачем тебе нужен маленький исходник - это ещё более неясно. Какая разница какой будет размер исходного кода, если он будет расширяем, правильно работать, будут средства отладки и тп?*
 

  #23  
Старый 22.01.2008, 22:03
reversys
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме:
732568

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

Цитата:
А зачем тебе нужен маленький исходник - это ещё более неясно. Какая разница какой будет размер исходного кода, если он будет расширяем, правильно работать, будут средства отладки и тп?*
по-чи-та-ть в свободные 30 минут на работе.

PS мне показалось или я это уже написал?

PPS а если тебе интересны ещё какиелибо причины моих действий добро пожаловать ко мне в аську

Последний раз редактировалось reversys; 22.01.2008 в 22:10..
 

  #24  
Старый 23.01.2008, 00:22
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

Исходник простейшего прокси от мя
Код:
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>

#pragma comment(lib,"ws2_32")

#define SLISTEN_PORT         8080 //ïîðò
#define MESSAGE_BYF			 2048 
#define LISTEN_BACKLOG       5   


////////////////////////////////////////////////////////////////////////
int GetHeader(int socket, char *buf, int maxlen)  // ÷èòàåì  õåäåð áåç ïîñòà. (äî \n\n èëè \r\n\r\n )
{
	int len, i=0, f=0;
	char c;
	while(f != 2 && i < maxlen)
	{
		len = recv(socket, &c, 1, 0);
		if(len==0 || len==-1) 
			break;	
		if(c == '\n')
			f++;
		else if(c != '\r')
			f=0;
		buf[i] = c;
		i++;	
	}
	buf[i]='\0';
	
	char *p = strstr(buf, "HTTP/1.0"); 
	if(p != NULL)
	*(p+7)='1';
	
	return i;
}

////////////////////////////////////////////////////////////////////////

int GetHost(char *buf, char *host, int maxlen)  /// ïàðñèì èìÿ õîñòà ñ õåäåðà
{
	char *p = strstr(buf, "Host: ");

	if( p == NULL )
		return 0;

	p+=6;
	int i;
	for(i=0; *(p+i)!='\0' && *(p+i)!='\n' && *(p+i)!='\r' && *(p+i)!=':' && *(p+i)!=' ' && i<maxlen; i++)
		host[i] = *(p+i);

	if( i == maxlen )
		return 0;
	host[i] = '\0';
	return i;
}

////////////////////////////////////////////////////////////////////////

int GetContLeng(char *buf)       /// ïàðñèì äëèííó POST äàííûõ
{
	char *p = strstr(buf, "Content-Length: ");
	if( p == NULL )
		return 0;

	p+=16;
	char len[8];
	int i;
	for(i=0; *(p+i)!='\0' && *(p+i)!='\n' && *(p+i)!='\r' && *(p+i)!=' ' && i<8; i++)
		len[i] = *(p+i);

	if( i == 8 )
		return 0;
	len[i]='\0';
	return atoi(len);
}

////////////////////////////////////////////////////////////////////////

SOCKET SocketConnect(char *host)   /// ïîäñîåäåíÿåìñÿ ê ñåðâåðó
{
		SOCKET ksocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
		struct hostent *Ip;
		Ip = gethostbyname(host);

		sockaddr_in clientService; 
		clientService.sin_family = AF_INET;
		clientService.sin_addr.s_addr = inet_addr(inet_ntoa(*((struct in_addr *)Ip->h_addr)));
		clientService.sin_port = htons(80);

		if(connect( ksocket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)
			 return SOCKET_ERROR;

		 return ksocket;
}

//////***************************************************************************************************/////

DWORD  WINAPI SocketListen(LPVOID AcceptSocket)
{
		int len;
		char recvbuf[MESSAGE_BYF], host[256];

		if( GetHeader((int)AcceptSocket, recvbuf, MESSAGE_BYF) == SOCKET_ERROR )  //ïîëó÷àåì õåäåð îò áðàóçåðà
			return false;

		//printf("%s", recvbuf);

		if( !GetHost(recvbuf, host, 256) )  /// ïàðñèì õîñò èç õåäåðà
		{
			char message[]="Proxy error. Host not found in header.";
			send((int)AcceptSocket, message, strlen(message), 0);	
			closesocket((int)AcceptSocket);	
			return false;
		}
		 
		SOCKET ConnectSocket = SocketConnect(host);  // ïäñîåäåíÿåìñÿ ê ñåðâåðó	
		if(ConnectSocket == SOCKET_ERROR)                               
		{
			char message[]="Proxy error.Cannot connect to host.";
			send((int)AcceptSocket, message, strlen(message), 0);	
			closesocket((int)AcceptSocket);	
			return false;
		}

		if( send((int)ConnectSocket,recvbuf,strlen(recvbuf),0) == SOCKET_ERROR) // îòïðàâëÿåì äàííûé íà ñåðâåð
		{
			char message[]="Proxy error. Cannot send data to host.";
			send((int)AcceptSocket, message, strlen(message), 0);	
			closesocket((int)AcceptSocket);	
			return false;
		}

		len = GetContLeng(recvbuf);  // ïàðñèì ðàçìåð POST äàííûõ
		char contbuf[128];
		int recvlen;

		while(len > 0)  /// ïîëó÷àåì îò áðàóçåðà è îòïàâëÿåì POST äàííûå íà ñåðâåð
		{
			recvlen = recv((int)AcceptSocket, contbuf, 128, 0);	
			if(recvlen == SOCKET_ERROR) 
				break;
			send((int)ConnectSocket,contbuf,recvlen,0);
			len-=recvlen;
		}

		while(1) ///  ïîëó÷àåì äàííûå îò ñåâåðà è îòïðàâëÿåì áðàóçåðó                                                    
		{
			len = recv((int)ConnectSocket, recvbuf, MESSAGE_BYF, 0);	
			if(len == 0 || len == SOCKET_ERROR) 
				break;
			send((int)AcceptSocket,recvbuf,len,0);
		}

		closesocket((int)AcceptSocket);	
		return true;
}

//***************************************************************************************************************************//

int main()
{

	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR)
	{
		printf("Error at WSAStartup()\n");
		return 0;
	}

	SOCKET ListenSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
	if (ListenSocket == INVALID_SOCKET) 
	{
		printf("Error at socket(): %ld\n", WSAGetLastError());
		WSACleanup();
		return 0;
	}


	SOCKADDR_IN sa = {0};
	int len = sizeof(sa);

	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = INADDR_ANY;
	sa.sin_port = htons( SLISTEN_PORT );


	if( bind( ListenSocket, (sockaddr*)&sa, len ) == SOCKET_ERROR )
	{
		printf("bind() failed.\n");
		closesocket(ListenSocket);
		return 0;
	}

	if( listen( ListenSocket, LISTEN_BACKLOG ) == SOCKET_ERROR )
	{
		printf("Error listening on socket.\n");
		closesocket(ListenSocket);
		return 0;
	}

	printf("Server start at port: %d \nWaiting...\n",SLISTEN_PORT );
	SOCKET AcceptSocket;
	DWORD thID;

	while( (AcceptSocket = accept( ListenSocket, (sockaddr*)&sa, &len )) != -1 )
	{
		printf("Connection from %s:%d AcceptID=%d\n", inet_ntoa(sa.sin_addr), htons(sa.sin_port), AcceptSocket );
		CreateThread(0, 0, SocketListen, (LPVOID)AcceptSocket, 0, &thID); 
	}

	return 1;
}
 

  #25  
Старый 23.01.2008, 03:24
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
по-чи-та-ть в свободные 30 минут на работе.
на работе надо читать Пушкина, а не исходники сокс-серверов, написаные кое-как
 

  #26  
Старый 10.03.2009, 02:43
Alexsis f
Новичок
Регистрация: 11.02.2009
Сообщений: 15
Провел на форуме:
23122

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

Цитата:
Сообщение от Ky3bMu4  
У меня ещё больше года назад появилась идея написать нечто вроде 3proxy, но только попроще и с более понятный кодом, но руки дошли только месяц назад. По функциональности конечно не сравнится с 3proxy, но...
+socks4
+socks5(с авторизацией)
+http
+логгирование трафика
Я писал с использованием классов, поэтому можно будет легко поднимать несколько серваков.
В будующем можеь быть непепишу под *nix(старался использовать только стандартные типы\функции).

slil.ru/25377557
webfile.ru/1695911

P.S.
Пожайлуста, не надо всяких стёбов про '_', оутпост и анхук sst(темболее что я с этим завязал). Писал я всё сам - копипаста нет.
На slil.ru и webfile.ru файлов уже нет, что не удивительно(((. Может новую ссылку дадите?
 
 





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


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




ANTICHAT.XYZ