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

  #11  
Старый 17.04.2007, 07:27
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

Помогите отыскать сорцы простого http прокси, реализованного на WinSock. Или документацию о протоколе прокси, сам напишу...
 
Ответить с цитированием

  #12  
Старый 17.04.2007, 08:19
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
Провел на форуме:
2869410

Репутация: 925


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

Цитата:
LEE_ROY
Не забивай форум тупыми мессагами =\
Цитата:
EST a1ien
Вот,самый простой http://slil.ru/24247196 Зыыыы Плюсеги мне ))
 
Ответить с цитированием

  #13  
Старый 17.04.2007, 12:11
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

zl0y, премного благодарен. Все же хотелось бы где то почитать о работе прокси, самому интересно
 
Ответить с цитированием

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

Репутация: 2726


По умолчанию

ну почитай

берешь слушаешь какой-нибудь порт, получаешь туда коннект и http-запрос читаешь
берешь поле Host: из него и резольвишь айпи. коннектишься туда.
передаешь весь запрос как он был. получаешь ответ и передаешь его обратно.
только при получение коонекта надо создавать отдельный поток, который будет обслужить клиентский запрос.

сокс - получаешь запрос в виде структуры - там команда, адрес и данные
все это описано, как ни странно =\
коннектишься, передаешь
 
Ответить с цитированием

  #15  
Старый 18.04.2007, 09:23
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


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

Цитата:
Сообщение от KEZ  
ну почитай

берешь слушаешь какой-нибудь порт, получаешь туда коннект и http-запрос читаешь
берешь поле Host: из него и резольвишь айпи. коннектишься туда.
передаешь весь запрос как он был. получаешь ответ и передаешь его обратно.
только при получение коонекта надо создавать отдельный поток, который будет обслужить клиентский запрос.

сокс - получаешь запрос в виде структуры - там команда, адрес и данные
все это описано, как ни странно =\
коннектишься, передаешь
Что самое странное, описание ВСЕХ протоколов есть в RFC. Народ ленится читать?
 
Ответить с цитированием

  #16  
Старый 24.04.2007, 03:29
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

Не, не ленюсь. Просил лишь помочь - подсказать хде эт найти.
 
Ответить с цитированием

  #17  
Старый 28.04.2007, 18:28
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

zl0y, а есть такой же, консольный, но тока сокс?
 
Ответить с цитированием

  #18  
Старый 28.04.2007, 18:40
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


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

сложно переписать да?
 
Ответить с цитированием

  #19  
Старый 30.04.2007, 06:13
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

Пишу курсовик по сетям, неохота переключаться на другой код. Думал, мож есть у кого-нибудь велосипед...

З.Ы. Ладно, будет время, перепишу и выложу.
 
Ответить с цитированием

  #20  
Старый 30.04.2007, 14:06
А®ТеS
Участник форума
Регистрация: 25.11.2006
Сообщений: 291
Провел на форуме:
1537850

Репутация: 536
Отправить сообщение для А®ТеS с помощью ICQ
По умолчанию

Цитата:
Сообщение от Joker-jar  
zl0y, а есть такой же, консольный, но тока сокс?
Вот те на делфях исходники сокс4. Нашел в нете, на работоспособность не тестил:
Код:
program dproxy;

uses
  windows,
  WinSock;

type TSOCKS4_REQUEST=record
       ucVersion : byte;
       ucCommand : byte;
       wDestPort : word;
       dwDestIp  : dword;
     end;

var
  wsaData : TWSADATA;
  sport   : string;
  iport   : word;
  l_sock  : TSocket;
  sock4   : SOCKADDR_IN;
  Client  : TSockAddr;
  Size    : integer;
  h1      : THandle;


procedure FlushRecvBufferUntil(s:TSOCKET;condition:Char);
var
  iReceiveRes : integer;
  cDummy      : char;
begin
  repeat
    iReceiveRes := recv(s, cDummy, sizeof(cDummy), 0);
  until NOT ((iReceiveRes<>SOCKET_ERROR) and (iReceiveRes<>0) and (cDummy<>condition));
end;

procedure SocksHandlerTreadProc(pParam:pointer); stdcall;
var
  s              : TSocket;
  tunnelSock     : TSocket;
  iConnectResult : integer;
  iReceiveRes    : integer;
  iSocketsSet    : integer;
  socks4Request  : TSOCKS4_REQUEST;
  socks4Response : TSOCKS4_REQUEST;
  remoteAddr     : SOCKADDR_IN;
  fds_read       : TFDset;//fd_set;
  tv             : TTimeval;
  cSocksVersion  : byte;
  iSelectResult  : integer;
  loop           : integer;
  ulVal          : u_long;
  swapBuffer     : array[0..4096*16-1] of char;
  iRecvResult    : integer;
begin
  s              := TSOCKET(pParam);
  tunnelSock     := 0;
  loop           := 0;
  while loop=0 do
  begin
    inc(loop);
    iConnectResult := 0;
    iReceiveRes    := 0;
    iSocketsSet    := 0;
    FD_ZERO(fds_read);
    FD_SET(s, fds_read);
    tv.tv_sec     := 30;
    cSocksVersion := 0;
    iSelectResult := select(0, @fds_read, nil, nil, @tv);
    if (iSelectResult=SOCKET_ERROR) or (not iSelectResult>0) then break;
    ulVal := 0;
    ioctlsocket(s, FIONBIO , ulVal);
    iReceiveRes := recv(s, cSocksVersion, 1, MSG_PEEK);
    if cSocksVersion=4 then // 3333333333333333333
    begin
      iReceiveRes := recv(s, socks4Request, sizeof(socks4Request), 0);
      if iReceiveRes=SOCKET_ERROR then break;
      ulVal := 1;
      ioctlsocket(s, FIONBIO , ulVal);
      FlushRecvBufferUntil(s, #0);
      if socks4Request.ucCommand = 1 then
      begin // 2222222222222222222
    ulVal := 0;
    ioctlsocket(s, FIONBIO, ulVal);
    remoteAddr.sin_family := AF_INET;
    move(socks4Request.dwDestIp,remoteAddr.sin_addr,sizeof(remoteAddr.sin_addr));
    remoteAddr.sin_port := socks4Request.wDestPort;
    tunnelSock := socket(AF_INET, SOCK_STREAM, 0);
    iConnectResult := connect(tunnelSock, remoteAddr, sizeof(remoteAddr));
    if (iConnectResult<>SOCKET_ERROR) then
    begin // 1111111111
      socks4Response.ucCommand := 90;
      socks4Response.ucVersion := 0;
      send(s, socks4Response, sizeof(socks4Response), 0);
    end else break; // 1111111111
      end else break;// 2222222222222222222
    end else break;// 3333333333333333333
    ulVal := 0;
    ioctlsocket(tunnelSock, FIONBIO, ulVal);
    ioctlsocket(s, FIONBIO, ulVal);
    fillchar(swapBuffer,sizeof(swapBuffer),0);
    tv.tv_sec := 2;
    while true do // 4444444444444444
    begin
      FD_ZERO(fds_read);
      FD_SET(s, fds_read);
      FD_SET(tunnelSock, fds_read);
      iSocketsSet := select(0, @fds_read, nil, nil, @tv); //if (iSocketsSet == SOCKET_ERROR) _leave;
      if iSocketsSet > 0 then // 5555555555555555
      begin
    if FD_ISSET(s, fds_read) then
    begin
      iRecvResult := recv(s, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
      if (iRecvResult=0)
        then break
        else iRecvResult := recv(s, swapBuffer, sizeof(swapBuffer), 0);
      if (iRecvResult <> SOCKET_ERROR) and (iRecvResult > 0)
        then send(tunnelSock, swapBuffer, iRecvResult, 0)
        else BREAK;
    end;

    if (FD_ISSET(tunnelSock, fds_read)) then
    begin
      iRecvResult := recv(tunnelSock, swapBuffer, sizeof(swapBuffer), MSG_PEEK);
      if iRecvResult = 0
        then break
        else iRecvResult := recv(tunnelSock, swapBuffer, sizeof(swapBuffer), 0);
      if (iRecvResult <> SOCKET_ERROR) and (iRecvResult > 0)
        then send(s, swapBuffer, iRecvResult, 0)
        else break;
    end;
      end;  // 5555555555555555
    end; // 4444444444444444
  end; // while loop=0 do
  closesocket(s);
  closesocket(tunnelSock);
end;

begin
  WSAStartup(MAKEWORD(2,0), wsaData);
  l_sock                := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  sock4.sin_family      := AF_INET;
  sock4.sin_port        := htons(1080);
  sock4.sin_addr.s_addr := INADDR_ANY;
  Size                  := SizeOf(Client);
  if (Bind(l_sock,sock4,SizeOf(sock4))=0) and (Listen(l_sock,$FF)=0) then
    while true do CreateThread(nil,0,@SocksHandlerTreadProc,Pointer(accept(l_sock, @Client, @Size)),0,h1);
end.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proxy FAQ iv. Анонимность 75 01.05.2010 13:24
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
Дайте исходники простейшего прокси (Delphi) Sharky С/С++, C#, Delphi, .NET, Asm 15 25.04.2007 10:32
Прокси: Как вас вычислить если вы под анонимным прокси Geveres Статьи 0 19.11.2005 17:02
ПРокси Чаты 6 25.01.2003 00:04



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


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




ANTICHAT.XYZ