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

[Вопрос по Си] MRIM авторизация
  #1  
Старый 01.04.2010, 20:56
f0rward
Новичок
Регистрация: 26.10.2008
Сообщений: 15
Провел на форуме:
126398

Репутация: 6
По умолчанию [Вопрос по Си] MRIM авторизация

Код:
int mrim_test() {
	SOCKET hSock;
	struct sockaddr_in hAddr;
	char buf[1024], req[256];
	int res;
	struct _MRIM_ADDR mrim_addr;
	struct mrim_packet_header_t cs, sc;

	if((hSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
		printf("[-] create socket\n");
		return -1;
	}
	printf("[+] create socket\n");
	hAddr.sin_family = AF_INET;
	hAddr.sin_port = htons(MRIM_PORT);
	hAddr.sin_addr.s_addr = inet_addr(MRIM_HOST); // ip mrim.mail.ru
	if(connect(hSock, (struct sockaddr*)&hAddr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
		printf("[-] connect 2 mrim.mail.ru:443\n");
		closesocket(hSock);
		return -1;
	}
	printf("[+] connect 2 mrim.mail.ru:443\n");
	sprintf(req, "CONNECT mrim.mail.ru:443 HTTP/1.0\r\n\r\n");
	if(send(hSock, req, strlen(req), 0)==SOCKET_ERROR) {
		printf("[-] send packet 2 mrim.mail.ru:443\n");
		closesocket(hSock);
		return -1;
	}
	printf("[+] send packet 2 mrim.mail.ru:443\n");
	if(recv(hSock, buf, sizeof(buf)-1, 0)==SOCKET_ERROR) {
		printf("[-] recv answer from mrim.mail.ru:443\n");
		closesocket(hSock);
		return -1;
	}
	printf("[+] recv answer from mrim.mail.ru:443\n");
	strtok(buf, "\r\n");
	strtok(buf, ":");
	strcpy(mrim_addr.host, buf); 
	mrim_addr.port = atoi(strtok(NULL, ":"));
	printf("[+] get connection server: %s:%d\n", mrim_addr.host, mrim_addr.port);
	printf("\nrecreating socket...\n\n");
	closesocket(hSock);
	hSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if((hSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
		printf("[-] create socket\n");
		return -1;
	}
	printf("[+] create socket\n");
	hAddr.sin_family = AF_INET;
	hAddr.sin_port = htons(mrim_addr.port);
	hAddr.sin_addr.s_addr = inet_addr(mrim_addr.host);
	if(connect(hSock, (struct sockaddr*)&hAddr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
		printf("[-] connect 2 %s:%d\n", mrim_addr.host, mrim_addr.port);
		closesocket(hSock);
		return -1;
	}
	printf("[+] connect 2 %s:%d\n", mrim_addr.host, mrim_addr.port);
	cs.magic = CS_MAGIC;
	cs.proto = PROTO_VERSION;
	cs.msg = MRIM_CS_HELLO;
	if(send(hSock, (unsigned char*)&cs, PACKET_SIZE, 0) == SOCKET_ERROR) {
		printf("[-] send MRIM_CS_HELLO\n");
		closesocket(hSock);
		return -1;
	}
	printf("[+] send MRIM_CS_HELLO\n");
	if (recv(hSock, (char *)&sc, PACKET_SIZE, 0) == SOCKET_ERROR) {	printf("[-] recv MRIM_CS_HELLO\n");
		closesocket(hSock);
		return -1;
	}
	printf((sc.msg == MRIM_CS_HELLO_ACK ? "[+] recv MRIM_CS_HELLO_ACK\n": "[+] recv %d\n"), sc.msg);

	closesocket(hSock);
	return 0;
}
Собственно в выделенном месте серв должен возвращать MRIM_CS_HELLO_ACK на сколько я понимаю, но у меня этого не происходит, скорее всего что-то напутал.
Прошу помощи, нужно дойти до авторизации.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение софта от M_script M_script_ Социальные сети 149 17.06.2010 20:51
GIF авторизация SoftLive Болталка 22 21.01.2010 00:50
Webmoney. Enum авторизация и файлы ключей. m0le[x] Платежные системы: Webmoney, Yandex Деньги, РБК Деньги и т. д. 4 12.01.2010 12:13
MAIL.ru авторизация на perl rdrule PHP, PERL, MySQL, JavaScript 5 17.04.2009 20:31



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


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




ANTICHAT.XYZ