#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include "Winsock2.h"
#define DEFAULT_BUFFER_SIZE 40960L
int main(int argc, char* argv[])
{
WSADATA WsaData;
int err = WSAStartup (0x0101, &WsaData);
if (err == SOCKET_ERROR)
{
printf ("WSAStartup() failed: %ld\n", GetLastError ());
return 1;
}
SOCKET s = socket(AF_INET,SOCK_STREAM ,IPPROTO_TCP);
SOCKADDR_IN sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(9999);//порт на который коннектится клиент
sin.sin_addr.s_addr = INADDR_ANY;
err = bind( s, (LPSOCKADDR)&sin, sizeof(sin) );
err = listen( s, SOMAXCONN);
SOCKADDR_IN from;
int fromlen=sizeof(from);
SOCKET s1 = accept(s,(struct sockaddr*)&from, &fromlen);//принимает клиент
printf("accepted connection from %s, port %d\n", inet_ntoa(from.sin_addr), htons(from.sin_port));
SOCKADDR_IN anAddr;
anAddr.sin_family = AF_INET;
anAddr.sin_port = htons(2595);//порт коннекта к серверу
anAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//адрес сервера
SOCKET s2 = socket(AF_INET,SOCK_STREAM ,IPPROTO_TCP);
connect(s2, (struct sockaddr *)&anAddr, sizeof(struct sockaddr));// коннектимся к серверу
char *RecvBuffer = (char*)malloc(DEFAULT_BUFFER_SIZE);
DWORD size = DEFAULT_BUFFER_SIZE;
DWORD ret;
while(recv(s1,RecvBuffer,size,0)!=ERROR_SUCCESS)//SOCKET_ERROR)//получаем буффер от клиента
{if(ret == ERROR_MORE_DATA)
{
// buffer size was too small, increase allocation size
size += DEFAULT_BUFFER_SIZE;
RecvBuffer = (char*)realloc(RecvBuffer, size);
}
send(s2,RecvBuffer,size,0); //отсылаем буфер серверу
free(RecvBuffer);
RecvBuffer = (char*)malloc(DEFAULT_BUFFER_SIZE);
}
getch();
return 0;
}
Фильтр пакетов(help)
1)Она отлавливает все пакеты от программы клиента идущие к серверу
2)Изменяет пакеты(это не главное) можно хотябы просто очтавлять их не меняя
3)И потом эта прога сама отсылает серверу исправленные пакеты.
я бонально пробывал сделать это через сокеты
Код:
объясните что не так? или может есть другие пути?
я не очень понимаю почему сервер не воспринимает эти пакеты... ведь даже если инкрип и есть то ведь я же ловлю пакеты от самого клиента(тоесть уже криптованные) и отсылаю их серверу...
Очень прошу помогите