Текущий архив: 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}
//Ïîëó÷åíèå âåðñèè ÎÑ ïî èìåíè êîìïà
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;
//Äåøèôðîâêà âåðñèè ÎÑ
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