Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Определение OS УДАЛЕННОГО компьютера   Найти похожие ветки 

 
Maxim   (2004-08-15 11:54) [0]

Господа, подскажите пожалуйста каким образом с помощью стандартных средств дельфи возможно определить OS какого либо компьютера в локальной сети. Хотя бы, если на мгновение представить что есть только WinOS, а nix не в счет :)


 
KOMATO3   (2004-08-15 15:11) [1]

По открытып портам


 
Maxim   (2004-08-15 18:28) [2]

По подробнее можно пожалуйста?


 
Мастер ©   (2004-08-15 18:34) [3]

>Maxim   (15.08.04 18:28) [2]

По подробнее можно пожалуйста?

А можно узнать, для чего такое нужно?


 
Maxim   (2004-08-15 18:56) [4]

это уже вопрос на вопрос.... :)


 
DeadMeat ©   (2004-08-15 19:21) [5]


> это уже вопрос на вопрос.... :)

Ну и что?? ;)

---
...Death Is Only The Begining...


 
Maxim   (2004-08-15 22:41) [6]

Хм, глупо как то получается. Я спрашиваю вас уважаемые, а вы спрашиваете меня. Как уже понятно - не кто не может дать ответа. И вместо обсуждения темы,  идет обсуждение таких вопросов как: "зачем тебе?", "и что ты пишешь?"

Я просто хочу понять как реализовать определение УДАЛЕННОЙ OS (хочу заметить, что мне не нужен материл о локальном определение)
А как уж это можно использовать...Это бесконечная тема.
Например в скайнере LAN или скайнере не уязвимостей. Не важно же это.


 
Мастер ©   (2004-08-15 23:37) [7]

Можешь быть уверен - хакерские технологии тебе здесь описывать не будут.


 
DeadMeat ©   (2004-08-15 23:43) [8]

Нуу... Ответ тебе уже дали.
Ещё вариантов два:
1) Поставить туда своего клиента
2) Послать ping и проанализировать ответ, вплоть до разбора заголовка

---
...Death Is Only The Begining...


 
Maxim   (2004-08-15 23:59) [9]

МАСТЕР, ну я вам про корову, а вы мне сейчас про слона. Хакерские технологии тут не причём.

DeadMeat, этот способ я уже продумывал. А лечге способа нет? Может есть какие небудь уже готовые компоненты для этого :)

В любом случае спасибо за внимание.


 
False_Delirium ©   (2004-08-16 00:10) [10]

Maxim   на void.ru описаны методы.


 
simpson ©   (2004-08-16 10:14) [11]

NetServerGetInfo не подойдет?


 
PL   (2004-08-16 10:43) [12]

Вы уж извините, но причем тут хакерские технологии...

куча софта по работе с сетью, причем легального и профессионального позволяет посмотреть, что за ОС установлена на удаленном компе, сколько она работает и т.д.

Я вот честно признаюсь, что не знаю, как это сделать, но тоже очень хотел бы узнать


 
Polevi ©   (2004-08-16 18:39) [13]

а где и за какую цену куплена OS на удаленном компьютере как можно узнать ?
подскажите компонент plz


 
VMcL ©   (2004-08-16 19:02) [14]

>>Polevi ©  (16.08.04 18:39) [13]

Есть. Называется TTaxPolice.


 
Polevi ©   (2004-08-16 20:09) [15]

черт, лишний раз убеждаюсь что все уже написано до меня


 
Rouse_ ©   (2004-08-16 20:38) [16]

Блин ну и поразвели тут флейма :)

NetServerGetInfo +
typedef struct _SERVER_INFO_102 {
   DWORD     sv102_platform_id;
   LPTSTR    sv102_name;
   DWORD     sv102_version_major;
   DWORD     sv102_version_minor;
   DWORD     sv102_type;
   LPTSTR    sv102_comment;
   DWORD     sv102_users;
   LONG      sv102_disc;
   BOOL      sv102_hidden;
   DWORD     sv102_announce;
   DWORD     sv102_anndelta;
   LPTSTR    sv102_userpath;
} SERVER_INFO_102, *PSERVER_INFO_102, *LPSERVER_INFO_102;


 
Мастер ©   (2004-08-17 00:04) [17]

>Maxim   (15.08.04 22:41) [6]

...Не важно же это...
Да нет, важно это.

>PL   (16.08.04 10:43) [12]
куча софта по работе с сетью, причем легального и профессионального позволяет посмотреть, что за ОС установлена на удаленном компе, сколько она работает и т.д.

Например?


 
Rouse_ ©   (2004-08-17 09:16) [18]

> [17] Мастер ©   (17.08.04 00:04)
Например
http://www.lantricks.com/lanspy/index.php

Кстати используется вышеприведенная функция...


 
Мастер ©   (2004-08-17 13:24) [19]

>Rouse_ ©   (17.08.04 09:16) [18]
Проверил LanSpy хост www.delphimaster.ru. ОС не определяется.

Без использования "левых" технологий ни тип, ни версия системы не определяется, если нет спец. сервисов и легальных программ, которые могут вернуть описание.


 
Rouse_ ©   (2004-08-17 14:02) [20]

> [19] Мастер ©   (17.08.04 13:24)
А если постановку вопроса прочитать?

> определить OS какого либо компьютера в локальной сети. Хотя
> бы, если на мгновение представить что есть только WinOS,
> а nix не в счет :)


Тем более www.delphimaster.ru это виртуальный сервер...


 
Дмитрий Ботвин   (2004-08-17 15:15) [21]

Я писал как-то, вот примерно так:

type
 //Для получения версии ОС
 TOSInfo = record
    wki100_platform_id: DWord;
    wki100_computername: PWideChar;
    wki100_langroup: PWideChar;
    wki100_ver_major: DWord;
    wki100_ver_minor: DWord;
 end;

//Получение версии ОС по имени компа
function GetOSVersions(HostName: WideString): TOSInfo;
 var Info: Pointer;
 begin
   Info:=nil;
   NetWkstaGetInfo(PWideChar(HostName),100,Info);
   if Info<>nil then Result:=TOSInfo(info^)
   else
      begin
         Result.wki100_ver_major:=DWord(0);
         Result.wki100_ver_minor:=DWord(0);
         Result.wki100_platform_id:=DWord(0);
      end;
 end;

//Дешифровка версии ОС
function DecodeVersions(InfoOS: TOSInfo): String;
 begin
   if InfoOS.wki100_ver_major=0 then Result:="";
   case InfoOS.wki100_ver_major of
     3: Result:="Windows NT";
     4: case InfoOS.wki100_ver_minor of
         0: if InfoOS.wki100_platform_id = VER_PLATFORM_WIN32_NT then Result:="Windows NT"
            else Result:="Windows NT";
         10: Result:="Windows 9X";
         90: Result:="Windows ME";
        end;
     5: case InfoOS.wki100_ver_minor of
         0: Result:="Windows 2000";
         1: Result:="Windows XP";
        end;
   end;
 end;

Пример вызова: DecodeVersions(GetOSVersions(Computer.Text));


 
Rouse_ ©   (2004-08-17 20:57) [22]

> [21] Дмитрий Ботвин   (17.08.04 15:15)
Тоже хороший пример, их можно написать несколько вариантов, так как MS видимо перестраховалась и выдала на бочку несколько вариантов функций которые могут вернуть в том числе и эту информацию (я уж не говорю о том количестве структур которые они понаплодили :)


 
Rouse_ ©   (2004-08-17 21:02) [23]

Хех, хотя с названием "хороший пример" я явно переборщил, налицо явный Memory Leak
Не вызван NetApiBufferFree для Info

:)


 
Дмитрий Ботвин   (2004-08-18 07:44) [24]

Rouse_ если посмотришь в хелп, то увидишь, что для NetWkstaGetInfo вызывать NetApiBufferFree не надо :-)))
В 7-м дельфине если вызвать NetApiBufferFree будет вываливаться
ошибка. Я с этим уже сталкивался, поэтому и не написал её....


 
Rouse_ ©   (2004-08-18 09:20) [25]

Какойто не правильный у тебя хелп :)
Вот у меня хелп правильный: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netwkstagetinfo.asp

bufptr
[out] Pointer to the buffer that receives the data. The format of this data depends on the value of the level parameter. This buffer is allocated by the system and must be freed using the NetApiBufferFree function. For more information, see Network Management Function Buffers and Network Management Function Buffer Lengths.


 
Rouse_ ©   (2004-08-18 09:22) [26]

А валится скорее из-за неправильного объявления функций...


 
Rouse_ ©   (2004-08-18 09:49) [27]

Вот тебе исправленный вариант того что ты делал:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

 PWkstaInfo100 = ^TWkstaInfo100;
 _WKSTA_INFO_100 = record
   wki100_platform_id: DWORD;
   wki100_computername: LPWSTR;
   wki100_langroup: LPWSTR;
   wki100_ver_major: DWORD;
   wki100_ver_minor: DWORD;
 end;
 {$EXTERNALSYM _WKSTA_INFO_100}
 TWkstaInfo100 = _WKSTA_INFO_100;

 function NetWkstaGetInfo(servername: LPWSTR; level: DWORD;
   var bufptr: PWkstaInfo100): DWORD; stdcall; external "NETAPI32.DLL";

 function NetApiBufferFree(Buffer: Pointer): DWORD;
   stdcall; external "NETAPI32.DLL";

var
 Form1: TForm1;

implementation

{$R *.dfm}

//&#207;&#238;&#235;&#243;&#247;&#229;&#237;&#232;&#229; &#226;&#229;&#240;&#241;&#232;&#232; &#206;&#209; &#239;&#238; &#232;&#236;&#229;&#237;&#232; &#234;&#238;&#236;&#239;&#224;
function GetOSVersions(HostName: WideString): TWkstaInfo100;
var Info: PWkstaInfo100;
begin
 NetWkstaGetInfo(PWideChar(HostName), 100, Info);
 try
   if Info <> nil then
     Result := info^
   else
   begin
     Result.wki100_ver_major :=DWord(0);
     Result.wki100_ver_minor :=DWord(0);
     Result.wki100_platform_id :=DWord(0);
   end;
 finally
   NetApiBufferFree(Info);
 end;
end;

//&#196;&#229;&#248;&#232;&#244;&#240;&#238;&#226;&#234;&#224; &#226;&#229;&#240;&#241;&#232;&#232; &#206;&#209;
function DecodeVersions(InfoOS: TWkstaInfo100): String;
begin
  if InfoOS.wki100_ver_major=0 then Result:="";
  case InfoOS.wki100_ver_major of
    3: Result:="Windows NT";
    4: case InfoOS.wki100_ver_minor of
        0: if InfoOS.wki100_platform_id = VER_PLATFORM_WIN32_NT then Result:="Windows NT"
           else Result:="Windows NT";
        10: Result:="Windows 9X";
        90: Result:="Windows ME";
       end;
    5: case InfoOS.wki100_ver_minor of
        0: Result:="Windows 2000";
        1: Result:="Windows XP";
       end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := DecodeVersions(GetOSVersions("\\dimson"));
end;

end.


 
Rouse_ ©   (2004-08-18 09:58) [28]

Кстати действительно в справке по WinSDK дельфевой об этом ничего не сказано, поэтому мой совет, все что касаемо АПИ лучше смотреть в первоисточнике, тобишь MSDN. По крайней мере это избавит тебя от многих несуразностей... :)


 
Rouse_ ©   (2004-08-18 10:03) [29]

Аааааа, вот как тут все хитро :)))))

The NetApiBufferFree function frees the memory that NetApiBufferAllocate allocates. Use this function to free the memory that other LAN Manager functions return.

Т.е. тебе нужно прочитать весь хелт по LAN Manager functions чтобы дойти до этого момента, где сказано что освобождать всетаки нужно. Браво составителям данной справки :) (Блин я тупею :)


 
VMcL ©   (2004-08-18 11:48) [30]

>>Rouse_ ©  (18.08.04 10:03) [29]

>Т.е. тебе нужно прочитать весь хелт по LAN Manager functions чтобы дойти до этого момента, где сказано что освобождать всетаки нужно. Браво составителям данной справки :) (Блин я тупею :)

"Вот уроды!" © сам знаешь :-)


 
Rouse_ ©   (2004-08-18 11:50) [31]

> [30] VMcL ©   (18.08.04 11:48)
:))


 
Piter ©   (2004-08-18 23:51) [32]

Ну и я внесу пять копеек.

Уважаемый Maxim, здесь не очень то любят людей, которые занимаются написание троянов и подобных вещей. И на вопросы подобного рода не отвечают. Вы еще можете спросить "а как скрыть программу от task manager в NT".

Правда, я не считаю данный вопрос чисто хакерским, никакого взлома нету, просто сбор информации.
Но и легального применения этому не вижу. Вас, как разработчика, допустим, сетевых программ должно волновать наличие/отсутствие TCP/IP протокола на удаленной машине, наличие служб, но никак не тип ОС - для вас это не должно играть никакой. Роли.
А вот использование этих данных в целях взлома вполне понятно - зачем аттаковать Unix или win9x машину DCOM"ом? Вы бы еще спросили как определить наличие или отсуствие определенных апдейтов для Win NT.

Хотя может быть вы специалист по сетевой безопасности и пишете такой сканер? Это достаточно сложная технология. Существуют легитимные способы (см. Rouse). Существуют косвенные способы, как-то анализ ответа эхо запроса, определение стандартых демонов определенных систем, анализ ответов этих демонов (например, Apache зачастую пишет на какой ОС он установлен и даже версию ядра).

Но судя по "дайте компонент" вы таковым специалистом не являетесь, а нужно вам это все для забавы - то ли перед друзьями похвастаться какой вы супер сканер написали (где вашего кода только вызов DetectRemoteOS, остальное VCL+сторонние компоненты). То ли баловаться в своей локальной сети...

В общем, никто не будет тратить время и серьезно помогать вам в таком несерьезном деле. Да и я уже сожалею, что написал такой длинный пост и потратил пять минут...


 
Дмитрий Ботвин   (2004-08-19 08:08) [33]

Piter, на счёт "Но и легального применения этому не вижу..."
ты явно погорячился. Я сам писал программу по сетевому администрированию (администрированию, а не взлому и не для боловства) для практических нужд. Да даже если ему это и нужно в
целях практических навыков, как начинающему, то не нужно его
за это хаить. Ты сам то с чего начинал, припомни на досуге :-))))


 
Rouse_ ©   (2004-08-19 09:11) [34]

> Вы бы еще спросили как определить наличие или отсуствие
> определенных апдейтов для Win NT

Это кстати тоже можно вполне легитимно определить :)


 
Maxim   (2004-08-19 12:36) [35]

Уважаемые Piter, вы писали, свой пост из 20 строчек 5 минут? :) Извиняйте уж....
Я не программист, я аналитик. Программирую лишь на Perl, ASM, PHP, ASP. Я не хочу объяснять, зачем мне это было нужно, скорее даже для интереса чем для какого то важного дела :) Совсем недавно решил разобраться в среде Delphi. И уже на второй день написал несколько интересных программ для LAN. (без копирования чужого кода) А недавно столкнулся именно с такой задачей и решил написать тут.
Так что я не собираюсь перед вами отчитываться и мерятся х... знаниями. ;)
А вам случаем не надоели одни и те же вопросы на этом форуме?? Неужели нельзя заводить именно такие темы. Которые были бы очень полезны народу.
И не какого хакерского наклона я тут не вижу. Сбор информации - это не противозаконно. (Хотя и это зависит от политики безопасности, которую выбрал администратор)

Спасибо всем за обсуждение этой темы. Всё-таки нашлись талантливые и знающие люди.


 
Maxim   (2004-08-19 12:37) [36]

Удалено модератором


 
Piter ©   (2004-08-19 13:41) [37]

Maxim   (19.08.04 12:36) [35]
Уважаемые Piter, вы писали, свой пост из 20 строчек 5 минут? :)


ну где-то так. Просто я еще думаю перед тем как пишу.

Я не хочу объяснять, зачем мне это было нужно

да в общем и так понятно

уже на второй день написал несколько интересных программ для LAN

не сомневаюсь. Уверен, что первой программой был сканер портов

А недавно столкнулся именно с такой задачей

каким образом вы столкнулись с этой задачей? Ну объясните мне. Не вижу я НЕ ЕДИННОГО применения данной информации, кроме как выбора стратегии последующего взлома системы. Администратор удаленного ресурса и так знает какая там ОС, вам как пользователю удаленной машины вообще должно быть параллельно, что там за система.

Спасибо всем за обсуждение этой темы. Всё-таки нашлись талантливые и знающие люди

что, неужто компонент на e-mail прислали? :)))


 
Дмитрий Ботвин   (2004-08-19 15:17) [38]

Кстати, а вы о каком таком компоненте говорите??? Я думал мы
про стандартные API-функции говорим, разве нет :-)))


 
Piter ©   (2004-08-19 15:47) [39]

Дмитрий Ботвин   (19.08.04 15:17) [38]

а с каких пор компонентам запрещается вызывать стандартные API функции?


 
Digitman ©   (2004-08-19 16:32) [40]


> Maxim   (15.08.04 11:54)  


> каким образом с помощью стандартных средств дельфи возможно
> определить OS какого либо компьютера в локальной сети


imho, ты здесь лепишь нам горбатого, в чем я волен и согласиться с <Piter>

а если и не лепишь, то тем паче - неча здесь тебе делать, в этой теме, с такими дурацкими вопросами (цитирую - "Совсем недавно решил разобраться в среде Delphi"), ибо изучение Делфи начинается с осознания того, что  среда эта изначально росла и совершенствовалась как среда быстрой разработки высокопроизводительных бизнес(!!!)-приложений... и не зная этого глупо задавать подобные вопросы ! Глу-по !



Страницы: 1 2 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.032 c
4-1095648700
mikl2002
2004-09-20 06:51
2004.10.24
Как программно выбрать звуковуху для вывода звука


6-1092291016
RomanAD
2004-08-12 10:10
2004.10.24
Подключение к Active Directory


14-1096666396
quickblack
2004-10-02 01:33
2004.10.24
Проблема с входом в Win2000


3-1096128617
Гость
2004-09-25 20:10
2004.10.24
Связка Master-Detail


3-1095744487
Fishka
2004-09-21 09:28
2004.10.24
Level DBF-файлов 5 и 7 - какое это имеет значение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский