• XSS.stack #1 – первый литературный журнал от юзеров форума

Прокси-сервер на удаленных Windows-машинах

Sanchous

(L3) cache
Пользователь
Регистрация
28.08.2005
Сообщения
220
Реакции
1
В общем-с. Трабл такой. Имеется удаленная машинка. И крутится на ней не что иное как Windows (Server 2003, если кому интересно). И есть к ней удаленный доступ с правами системы (web-шелл, почему права системы - перечитай 3-е предложение :) ). Только не спрашивайте, как я получил удаленный доступ - я начинаю нервничать, глубоко дышать и поминутно оглядываться на дверь. Но это все лирика. А вот проблемка такая. Неплохо бы из этой машинки прокси-сервер сделать. Да вот только... не знаю, как :(
Ачатовский носок на неё не одевается :( А что еще придумать - я не знаю :angry:

Нет, можно, конечно, юзать скрипты типа "PHP Proxy", но хочется... м, несколько большего. Понимаете? ;)
 
Есть суперская программка - WinProxy. Установка- next,next,finish, настройка аналогично. Управлеение через веб. Специально не для юниксоидов сделана :)

Другой вариант - 3proxy. Есть бинарники под винду, но в принципе никсовые сорцы за 15 минут портируются под Visual C++ 6.0 и собираются. Выбирай на вкус и цвет. Простой легенький socks/http прокси.

Мое мнение - вариант 2
 
Код:
#include <winsock.h>
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
//===============================================
#pragma comment(lib, "ws_32.lib")
//===============================================
WSADATA   ss;
SOCKET   a,s[100];
sockaddr_in  s1,s2;
int    pos;
unsigned long id;
HANDLE   han[100];
//===============================================
DWORD WINAPI thread(LPVOID lpParameter){

int  cur = pos;
int  sub = 0;
char rec[20000];
char host[100];
char sen[20000];
char sen1[20000];
for(int z=0;z<20000;z++){
 rec[z]=sen[z]=sen1[z]=0;
 host[z]=0;
}
z = 0;
int sz;
int pos = 0;
char d1='A',d2,d3;
goto mid;
mid:
recv(s[cur],&d1,1,0);
rec[pos] = d1;
pos++;
if(d1=='\n'){
 recv(s[cur],&d2,1,0);
 recv(s[cur],&d3,1,0);
 if(d2=='\r' && d3=='\n'){
  rec[pos] = d2;
  pos++;
  rec[pos] = d3;
  sz = pos;
  rec[pos+1]=NULL;
 }else{
  rec[pos] = d2;
  pos++;
  rec[pos] = d3;
  pos++;
  goto mid;
 }
}else{
 goto mid;
}
printf("%s\n",rec);
while(rec[z]!=':'){
 z++;
 if(rec[z]==NULL || rec[z]=='\n'){
  closesocket(s[cur]);
  return 0;
 }
}
z++;
z++;
z++;
int temp = 0;
while(rec[z]!='/'){
 host[temp] = rec[z];
 z++;
 temp++;

}
temp = 0;
z=0;
while(rec[z]!='h'){
 sen1[temp] = rec[z];
 z++;
 temp++;

}
z++;
while(rec[z]!='/'){
 z++;
}
z++;
z++;
while(rec[z]!='/'){
 z++;
}

while(rec[z]!=NULL){
 sen1[temp] = rec[z];
 z++;
 temp++;

}
PHOSTENT adr = NULL;
adr = gethostbyname(host);
if(adr==NULL){
 send(s[cur],"Could not able to resolve host address",48,0);
 closesocket(s[cur]);
 DWORD ff;
 GetExitCodeThread(han[cur],&ff);
 ExitThread(ff);

}
SOCKET ss;
sockaddr_in dd;
ss = socket(AF_INET,SOCK_STREAM,0);
memcpy((char FAR *)&(dd.sin_addr),adr->h_addr,adr->h_length);
dd.sin_family = AF_INET;
dd.sin_port = htons(80);
if(connect(ss,(LPSOCKADDR)&dd,sizeof(dd))==SOCKET_ERROR){
 send(s[cur],"Not able to connect to server",29,0);
 closesocket(s[cur]);
 DWORD ff;
 GetExitCodeThread(han[cur],&ff);
 ExitThread(ff);

}
send(ss,sen1,sz,0);
sz = recv(ss,rec,2000,0);
while(sz!=0)
{
 send(s[cur],rec,sz,0);
 sz = recv(ss,rec,2000,0);
}
closesocket(ss);
closesocket(s[cur]);
DWORD ff;
GetExitCodeThread(han[cur],&ff);
ExitThread(ff);
return 0;
}
//===============================================
void main(){

WSAStartup(MAKEWORD(1,1),&ss);
a = socket(AF_INET,SOCK_STREAM,0);
s1.sin_addr.s_addr = INADDR_ANY;
s1.sin_family = AF_INET;
s1.sin_port = htons(8888);

if(bind(a,(LPSOCKADDR)&s1,sizeof(s1))==SOCKET_ERROR){
 cout << WSAGetLastError();

}
if(listen(a,1)==SOCKET_ERROR){

 cout << "Error";
}
int sz = sizeof(s2);
goto re;
re:
s[pos] = accept(a,(LPSOCKADDR)&s2,&sz);
::han[pos]=CreateThread(NULL,0,&thread,0,0,&id);
 
Sleep(500);
if(pos==100){
 pos=0;
}else{
 pos++;
}
goto re;
}
//===============================================

ИМХО 3proxy по win. Лучшее!
 
кстати в чем смысл одновременного использования iostream и stdio
эт тебе на выбор :)
учитывается сам src , операторы.
Часто в src применяются
библиотеки(я так выразился
):
stdio.h - (осуществление стандартных операций ввода/вывода) , iostream - Синтаксис .h характерен для старого стиля. Файл iostream содержит специфические для С++ определения, необходимые для выполнения простых операций ввода/вывода

тут выбор может быть из за src , скорости в нем , стандарта , шифрованию чёто там ...
stdio это же C а iostream это С++?))
 
Вы тут постите, перетираете..., а вот мне ни ху.. не понятно!!!!
Я год в нете и скучно просто жжжжуть!!!!!!!!!!!
В чём интерес???! Смотрю на скрипт... б...я в глазах рябить начинает и ни х..я не понятно.
Мож кто подскажет, как "разбудить" себя?!!!! :bang:
 
Мож кто подскажет, как "разбудить" себя?!!!
а ты-побейся башкой об стенку-авось станет лучше :)

Sanchous 3proxy,народ верно говорит-вещь рульная (проста в инсталле+юзании)
 
прошел уже день, а исходника всё нет smile.gif
я не собрался его выкладывать) а написанный уже есть, правда хреновенький, но рабочий
Добавлено в [time]1161018866[/time]
эт тебе на выбор smile.gif
учитывается сам src , операторы.
Часто в src применяются
библиотеки(я так выразился
):
stdio.h - (осуществление стандартных операций ввода/вывода) , iostream - Синтаксис .h характерен для старого стиля. Файл iostream содержит специфические для С++ определения, необходимые для выполнения простых операций ввода/вывода

тут выбор может быть из за src , скорости в нем , стандарта , шифрованию чёто там ...
stdio это же C а iostream это С++?))
Это ты к чему?
 
вроде всё по русский. я то в С плаваю .. так что ..
попрощаемся :)
за 10 минут даже print не заюзаю))
куда мне до ...

Добавлено в [time]1161023892[/time]
если проблема с компиляцией плиз :lol:
 

Вложения

  • 222.rar
    27 байт · Просмотры: 32


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх