5 способов узнать версию Windows
У нас уже есть старая статья о том, как узнать версию Windows, там мы пользовались только одним методом. В этом же уроке представлен широкий обзор, состоящий из 5 способов, о том, как узнать какой Виндовс стоит на компьютере.
Узнаем версию Windows легко
Один из самых легких и быстрый способов посмотреть текущую версию и сборку Windows, это использование функции «Выполнить».
1. Нажмите комбинацию клавиш Win+R.
2. В поле открыть введите «winver» и нажмите Enter.
После вы увидите окошко похожее на примеры ниже. В нем находится информация о версии, сборке и полное название операционной системы. Так оно выглядит в Windows 10.
А вот пример этого окна в Windows 7.
Как узнать версию Windows через командную строку
Это же окошко с версией Виндовс можно открыть с помощью командной строки, просто введите в нее эту же команду «winver».
И как видно из скриншота выше, в самом верху сама командная строка может показывать текущую версию Windows.
Смотрим версию Windows в свойствах системы
Свойства системы можно открыть комбинацией клавиш Win+Pause, или же кликнув правой кнопкой мышки по иконке «Компьютер» на вашем рабочем столе и внизу списка выбрав «Свойства».
В этом случае информация об операционной системе не настолько подробная как при использовании других способов проверки.
Узнаем версию Windows через Сведения о системе
Еще одна возможность посмотреть вашу версию Виндовс это встроенная утилита «Сведения о системе». Благодаря этой программке можно узнать не только версию и сборку операционной системы, другие параметры компьютера. Например:
- Имя системы
- Тим системы (разрядность)
- Версию BIOS
- Процессор
- Количество оперативной памяти и многое другое.
1. Введите в поиске компьютера «сведения о системе» и нажмите Enter.
Сведения о системе через командную строку
Похожую информацию, как в предыдущем способе, можно получить используя командную строку.
1. Введите в нее команду «systeminfo» и нажмите Enter.
Спустя несколько секунд вы увидите список параметров системы, в том числе и версию Windows.
Как видите, узнать версию Виндовс установленную на компьютере не составляет труда, и для этих целей существует множество способов, основные из которых мы показали в этой статье.
Как удаленно узнать версию windows
Господа, подскажите пожалуйста каким образом с помощью стандартных средств дельфи возможно определить 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]
это уже вопрос на вопрос. 🙂
> это уже вопрос на вопрос. 🙂
Ну и что?? 😉
—
. 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, этот способ я уже продумывал. А лечге способа нет? Может есть какие небудь уже готовые компоненты для этого 🙂
В любом случае спасибо за внимание.
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.
черт, лишний раз убеждаюсь что все уже написано до меня
← →
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]
Вот тебе исправленный вариант того что ты делал:
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;
//Ïîëó÷åíèå âåðñèè ÎÑ ïî èìåíè êîìïà
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;
← →
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]
← →
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, ты здесь лепишь нам горбатого, в чем я волен и согласиться с
а если и не лепишь, то тем паче — неча здесь тебе делать, в этой теме, с такими дурацкими вопросами (цитирую — «Совсем недавно решил разобраться в среде Delphi»), ибо изучение Делфи начинается с осознания того, что среда эта изначально росла и совершенствовалась как среда быстрой разработки высокопроизводительных бизнес(. )-приложений. и не зная этого глупо задавать подобные вопросы ! Глу-по !
← →
Maxim ( 2004-08-20 00:08 ) [41]
>Уважаемые Piter, вы писали, свой пост из 20 строчек 5 минут? 🙂
>ну где-то так. Просто я еще думаю перед тем как пишу.
Долгу думаете, скажу я вам.
>Я не хочу объяснять, зачем мне это было нужно
>да в общем и так понятно
Только как всегда, не через то место.
>уже на второй день написал несколько интересных программ для LAN
>не сомневаюсь. Уверен, что первой программой был сканер портов
И сканер портов тоже был =)) А вы что написали на второй день товарищ? hello world в цветном варианте? 🙂
>А недавно столкнулся именно с такой задачей
>каким образом вы столкнулись с этой задачей? Ну объясните мне. >Не вижу я НЕ ЕДИННОГО применения данной информации, кроме как >выбора стратегии последующего взлома системы. Администратор >удаленного ресурса и так знает какая там ОС, вам как >пользователю удаленной машины вообще должно быть параллельно, >что там за система.
Если бы передо мной стояла задача определить OS удаленного сервера для последующей попытки взлома, то я, как впроцем и все здравомыслющие люди, воспользовался более продвинутыми средставами удаленного аудита системы: SSS, xspider, LANGuard, Nesus и тд.
«я НЕ ЕДИННОГО применения» — ну не фига себе, это вы загнули мистер.
>Спасибо всем за обсуждение этой темы. Всё-таки нашлись >талантливые и знающие люди
>что, неужто компонент на e-mail прислали? :)))
Нет, просто не разводили флейм, а отвечали по существу и обсуждали данную тему в отличии от вас 😉
to: Digitman.
>imho, ты здесь лепишь нам горбатого, в чем я волен и согласиться >с
Да, вы хорошо дополняете друг друга :))
>а если и не лепишь, то тем паче — неча здесь тебе делать, в этой >теме, с такими дурацкими вопросами (цитирую — «Совсем недавно >решил разобраться в среде Delphi»), ибо изучение Делфи
Дурацкими?? :)) А вопросы по типу этого: http://delphimaster.net/view/6-1091605769/
Вам не надоели?? Когда ответ на этот вопрос можно с дегкостью найти в любом поисковике.
А ответ на мой вопрос, дал только Дмитрий Ботвин и Rouse_.
(за что им, огромное спасибо)
>начинается с осознания того, что среда эта изначально росла и >совершенствовалась как среда быстрой разработки >высокопроизводительных бизнес(. )-приложений. и не зная этого >глупо задавать подобные вопросы ! Глу-по !
нет не глупо. Глупо разводить столько флейма и отвечать не в тему.
Незнаешь — лучше промолчи.
← →
Rouse_ © ( 2004-08-20 00:12 ) [42]
> [41] Maxim (20.08.04 00:08)
Максим (и собеседники), официальное предупреждение, не нужно устраивать разборок в данной ветке, в противном случае ветка будет закрыта. (используйте чат или другие средства контактирования. )
← →
Maxim ( 2004-08-20 00:15 ) [43]
Прошу прощения за некоторые орф.ошибки =) Я думаю и пишу одновременно. %))
Спасибо людям которые помогли мне разобраться с моим вопросом. Я вас уверяю — не каких «хакерских намерений» тут не было.
А такие люди, как Piter (не люблю тыкать пальцами :)) , лучше бы промолчали в данной теме. Зачем разводить столько флейма и втирать мне про «взлом удаленного сервера». Еще раз повторяю: сбор информации не коим образом, не является попыткой взлома.
Многие сканеры LAN имеют функцию определения OS. (LANGuard пример этому 😉
Все, на этом я заканчиваю свой последний пост в эту тему 🙂
p.s> Piter людям надо помогать, каким бы вопрос не был. А не грубить и предьявлять глупые обвинения.
← →
Maxim ( 2004-08-20 00:16 ) [44]
Rouse_, прошу прощения. Я просто ответил на выдвинутые мне претензии и обьеснил Piter»у и его товарищу истенные цели.
← →
Rouse_ © ( 2004-08-20 00:27 ) [45]
Скажу только то что мое мнение абсолютно противоположно Piter и Digitman. Данные возможности абсолютно доступны для массового использования и любой программист спокойно сможет узнать открытую (а мы разговаривали именно об открытой информации) о удаленном компьютере.
И к чему были подняты такие страсти, мне абсолютно непонятно, а местами просто смешно.
← →
Piter © ( 2004-08-20 00:53 ) [46]
Maxim (20.08.04 0:08) [41]
я НЕ ЕДИННОГО применения» — ну не фига себе, это вы загнули мистер
ну вот ты обвиняешь, обвиняешь. А ты так и не привел пример легитимного использования данной информации.
Просто скажи зачем тебе это нужно. Просто скажи. Если все чисто — почему ты увертываешься?
Тогда и помощь будет.
← →
Дмитрий Ботвин ( 2004-08-20 08:11 ) [47]
Rouse_ руби ветку, это уже не форум и даже не флейм. Это просто
базар из рубрики «Потрепаться».
← →
Digitman © ( 2004-08-20 09:26 ) [48]
знаешь что, уважаемый ? если ты перед тем как задавать этот вопрос поленился прошарить сеть и найти там, скажем, достаточно серьезную утилиту NMap (делающую то что тебе нужно и далеко не только это), исходники которой и по сей день открыты для изучения, сказать тебе более нечего
← →
Polevi © ( 2004-08-20 10:19 ) [49]
да пусть дите потешится, определит ОС, коли на большее не хватает фантазии