Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаленное управление 
:(
    Опции темы
Goph
  Дата 24.2.2003, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Подскажите как удаленно усоществить просмотр диска и возможность досьтупа к файлам?
Клиен и сервер я написал но с простыми действиями а как осуществить эту тему?


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Mikel
Дата 24.2.2003, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Ну сделайте какие-то константы- запрося клиента и сервера, на которые они будут отвечать соответствующим образом. Например сервер отсылает константу и за ней параметр 'Гони файл:C:\system.ini', где 'Гони файл:'- константа, определяющая действия, а 'C:\system.ini'-параметр.
Я писал аналогичную программу и для ответов(отсылки списка файлов, файл, ...)использовал другой сокет. А перый сокет служил вот для этих команд.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Unregistered
Дата 25.2.2003, 04:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Ну сделайте какие-то константы- запрося клиента и сервера, на которые они будут отвечать соответствующим образом. Например сервер отсылает константу и за ней параметр 'Гони файл:C:\system.ini', где 'Гони файл:'- константа, определяющая действия, а 'C:\system.ini'-параметр.
Я писал аналогичную программу и для ответов(отсылки списка файлов, файл, ...)использовал другой сокет. А перый сокет служил вот для этих команд.

Я тоже так делал, так было в моем первом backdoor'е, и какраз на дельфи
Сейчас у меня один сокет и для туды, и для обратно.

Цитата
Клиен и сервер я написал но с простыми действиями а как осуществить эту тему?

Просто посылаем команду и сразу читаем из сокета, если он синхронный, либо както геморно, если асинхронный (тут уж как вам больше нравится). Я не понимаю, что тут сложного.
Посылать команды умеешь? Сервер их принимает. Так же, сервер посылает, а клиент принимает. Можно даже и 2 сокета.
Например, получение списка файлов (пусть сокеты в асинхронном режиме):
Клиент:
1. Посылаем серверу "/dir"
2. Устанавливаем флаг, что процедура чтения из сокета должна все полученное заносить, скажем, в ListView.
3. Эта процедура все заносит, пока не получит от сервера "/end". После этого снимает вышеуказанный флаг
Сервер:
1. Ждем команды. Если это не "/dir", идем к пункту 1.
2. findfirst/findnext, результат посылаем клиенту.
3. когда файлов не осталось, шлем "/end"
4. идем к п. 1.

И все. Аналогично с передачей файлов и т.п. операциями.

  Вверх
Goph
Дата 25.2.2003, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



А пример?


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Step
Дата 25.2.2003, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



Сделай команду разшаривания дисков.
Дал команду на сервер- он открыл диски ты их просто посмотрел, дал команду - закрыл доступ


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Guest_[auxx]
Дата 25.2.2003, 23:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Дам пример (только чуть позже, я щаз не дома). Клиент на дельфи, а сервак на С++.
  Вверх
Goph
Дата 26.2.2003, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Без проблем!


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
[auxx]
Дата 27.2.2003, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 2.2.2003

Репутация: нет
Всего: нет



Протокол старый, я уж отказался от него. Но в новых версиях там сложно очень.
Сервер
Код
void COMMAND_File_Dir(CSConnection* Conn){

WIN32_FIND_DATA fnd;
char mask[MAX_PATH];
HANDLE filefind;
char fileinfo[MAX_PATH+1+10+1+5+16+1];
SYSTEMTIME stime;

plstrcpy(mask,Conn->curdir);
plstrcat(mask,"\\");
plstrcat(mask,Conn->mask);

filefind=pFindFirstFile(mask,&fnd);

if (filefind!=INVALID_HANDLE_VALUE)
 do{
  plstrcpy(fileinfo,fnd.cFileName);
  plstrcat(fileinfo,"…");

  char attr[6]="\0";
  if((fnd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0) plstrcat(fileinfo,"d"); else plstrcat(fileinfo,"-");
  if((fnd.dwFileAttributes&FILE_ATTRIBUTE_READONLY)!=0) plstrcat(fileinfo,"r"); else plstrcat(fileinfo,"-");
  if((fnd.dwFileAttributes&FILE_ATTRIBUTE_ARCHIVE)!=0) plstrcat(fileinfo,"a"); else plstrcat(fileinfo,"-");
  if((fnd.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN)!=0) plstrcat(fileinfo,"h"); else plstrcat(fileinfo,"-");
  if((fnd.dwFileAttributes&FILE_ATTRIBUTE_SYSTEM)!=0) plstrcat(fileinfo,"s"); else plstrcat(fileinfo,"-");

  plstrcat(fileinfo,"…");

  if ((fnd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==0){
   char size[11]="\0";
   itoa(fnd.nFileSizeLow,size);
   plstrcat(fileinfo,size);
  }else plstrcat(fileinfo,"Dir");
 
  plstrcat(fileinfo,"…");

  pFileTimeToSystemTime(&fnd.ftLastWriteTime,&stime);
  char time[17],t[5];
  itoa(stime.wDay,t);plstrcpy(time,t);plstrcat(time,".");
  itoa(stime.wMonth,t);plstrcat(time,t);plstrcat(time,".");
  itoa(stime.wYear,t);plstrcat(time,t);plstrcat(time," ");
  itoa(stime.wHour,t);plstrcat(time,t);plstrcat(time,":");
  itoa(stime.wMinute,t);plstrcat(time,t);
  plstrcat(fileinfo,time);

  NETWORK_SendMsg(Conn->r,fileinfo);

 }while (pFindNextFile(filefind,&fnd));

NETWORK_SendMsg(Conn->r,"\\\\\\");
}
DWORD NETWORK_Send(SOCKET r,/*SOCKET r2,*/void*pdata,DWORD datalen/*,bool*secondsock*/){
DWORD result;

result=psend(r,(const char*)pdata,datalen,0);

return result;
}
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
DWORD NETWORK_SendMsg(SOCKET r,char*msg){
typedef struct{
 DWORD len;
 char msg[1];
}CMsg;

DWORD len;
CMsg *cMsg;
DWORD result;

len=plstrlen(msg)+1;

cMsg=(CMsg*)pVirtualAlloc(NULL,len+4,MEM_COMMIT,PAGE_READWRITE);

cMsg->len=len;
plstrcpy(cMsg->msg,msg);

result=NETWORK_Send(r,cMsg,len+4);

pVirtualFree(cMsg,len+4,MEM_DECOMMIT);

return result;
}
//-------------------------------------------------------------------------------

Клиент:
Код

procedure TForm1.file_Dir;
label tochka;
var
  Item:TListItem;
  fcnt,dcnt:DWORD;
  fileinfo:String;
  i,j:Integer;
  name,attr,size,time:String;
  l:DWORD;
begin
  Label16.Caption:='';
  dontaddtolog:=true;
  Label4.Caption:='Dir: sending command...';
  Panel2.Visible:=true;
  Update;
  SendString('/file_dir',Form1.TcpClient1);
  Label4.Caption:='Dir: deleting old list...';
  Update;
  ListView1.Items.Clear;
  ListView1.SortType:=stNone;
  Label4.Caption:='Dir: sownloading information...';
  Update;
  fcnt:=0;
  dcnt:=0;
  repeat
     fileinfo:=RecvString(TcpClient1);
     if fileinfo[1]='\' then goto tochka;
     name:='';
     i:=1;
     while fileinfo[i]<>'…' do
     begin
        name:=name+fileinfo[i];
        i:=i+1;
     end;
     if name[1]='.' then goto tochka;
     i:=i+1;
     attr:='     ';
     j:=1;
     while fileinfo[i]<>'…' do
     begin
        attr[j]:=fileinfo[i];
        i:=i+1;
        j:=j+1;
     end;
     i:=i+1;
     size:='          ';
     j:=1;
     while fileinfo[i]<>'…' do
     begin
        size[j]:=fileinfo[i];
        i:=i+1;
        j:=j+1;
     end;
     if size='Dir       ' then size:='Dir';
     i:=i+1;
     time:='                ';
     j:=1;
     l:=Length(fileinfo);
     while i<>l do
     begin
        time[j]:=fileinfo[i];
        i:=i+1;
        j:=j+1;
     end;
     Item:=ListView1.Items.Add;
     Item.Caption:=name;
     Item.SubItems.Add(attr);
     Item.SubItems.Add(size);
     Item.SubItems.Add(time);
     if attr[1]='d' then
     begin
        Item.ImageIndex:=1;
        dcnt:=dcnt+1;
     end else
        fcnt:=fcnt+1;
     Label16.Caption:=IntToStr(dcnt+fcnt)+' files';
     Update;
     tochka:
  until fileinfo[1]='\';
  Label16.Caption:='';
  Label4.Caption:='Dir: sorting files...';
  Update;
  ListView1.SortType:=stBoth;
  Label3.Caption:=IntToStr(fcnt);
  Label6.Caption:=IntToStr(dcnt);
  Panel2.Visible:=false;
  dontaddtolog:=false;
end;
procedure TForm1.AddToLog(st:String);
begin
  Memo1.Lines.Add(st);
end;
procedure TForm1.Send(var a;size:DWORD;Client:TTcpClient);
var
  b:Array[0..1] of Byte Absolute a;
begin
  Client.SendBuf(a,size);
end;
procedure TForm1.Recv(var a;size:DWORD;Client:TTcpClient);
var
  b:Array[0..1] of Byte Absolute a;
begin
  Client.ReceiveBuf(a,size);
end;
procedure TForm1.SendString(st:String;Client:TTcpClient);
type TStrSrtuct=record
  l:DWORD;
  a:Array[0..MaxInt-5] of Char;
end;
var
  i:DWORD;
  stst:^TStrSrtuct;
begin
  GetMem(stst,Length(st)+5);
  ZeroMemory(stst,Length(st)+5);
  if Length(st)>0 then
  begin
     for i:=1 to Length(st) do
        stst^.a[i-1]:=st[i];
     stst^.l:=i;
     Send(stst^,i+4,Client);
  end else
     Send(stst^,4,Client);
  FreeMem(stst,4+Length(st));
end;
function TForm1.RecvString(Client:TTcpClient):String;
type TArr=Array[0..MaxInt-5] of Char;
var
  i,l:Integer;
  Arr:^Tarr;
  st:String;
begin
  st:='';
  Recv(l,4,Client);
  if (l=-1) or (l=0) then
     Exit;
  GetMem(Arr,l);
  Recv(Arr^,l,Client);
  for i:=0 to l-1 do
     st:=st+Arr^[i];
  if (Client=TcpClient1) and (not dontaddtolog) then AddToLog(st);
  Result:=st;
  FreeMem(Arr,l);
end;

Извини, что так сильно порезал, но, я думаю, идея ясна
PM MAIL   Вверх
[auxx]
Дата 27.2.2003, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 2.2.2003

Репутация: нет
Всего: нет



Если не понятно будет, я может напишу нормальный пример
PM MAIL   Вверх
Goph
Дата 27.2.2003, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Разберем!


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Goph
Дата 1.3.2003, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Всетаки черкни пример!!! smile.gif


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.