информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[NT] Было уже 23.07.03 12:08  Число просмотров: 2080
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я имел ввиду прочитать MBR программно (прога Win32)....
Открываешь девайс \device\harddisk0\partition0 и читаешь оттуда 512 байт если прав хватит
<operating systems>
MBR 23.07.03 08:59   [Shturmfogell]
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как прочитать MBR под WinNT(2000/XP)?
MBR 25.08.03 08:23  
Автор: Dr.Zip Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ДОС любимый ДОС да плюс Асмак...
МММММ...... У меня есть прога на асмаке она читает МБР , убивает МБР, убивает КМОС.....ТЕМА!!!
Ветка то старая 25.08.03 14:38  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> ДОС любимый ДОС да плюс Асмак...
> МММММ...... У меня есть прога на асмаке она читает МБР ,
> убивает МБР, убивает КМОС.....ТЕМА!!!
Ни дос ни асмак не обязателен. Если конечно не тянет на извращения. У меня есть прога под вынь на С которая делает то же самое.

Если же извращений (в том числе и выньдосных) совершенно не хочется, то лучше линух (или что нить другое юнихоподобное) и
dd if=/dev/hda of=/tmp/mbr bs=512 count=1

---

Спасет отца русской демократии.

А ДОС+асм это один из самых геморройных вариантов.
MBR 23.07.03 10:55  
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
Любой тулзой редактирования дисков
к примеру тем же R-Studio (Recovery Studio)
[NT] MBR 23.07.03 11:29  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я имел ввиду прочитать MBR программно (прога Win32)....
[NT] Было уже 23.07.03 12:08  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я имел ввиду прочитать MBR программно (прога Win32)....
Открываешь девайс \device\harddisk0\partition0 и читаешь оттуда 512 байт если прав хватит
[NT] Открыть девайс 01.08.03 17:03  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Я имел ввиду прочитать MBR программно (прога
> Win32)....
> Открываешь девайс \device\harddisk0\partition0 и читаешь
> оттуда 512 байт если прав хватит

Не удается открыть этот девайс... Работаю под админом... Киньте пример плиз...
[NT] Читайте MSDN и будет вам счастье 01.08.03 17:43  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > > Я имел ввиду прочитать MBR программно (прога
> > Win32)....
> > Открываешь девайс \device\harddisk0\partition0 и
> читаешь
> > оттуда 512 байт если прав хватит
> Не удается открыть этот девайс... Работаю под админом...
> Киньте пример плиз...
На самом деле открыть любой девайс из директории объектов \device\ можно только из драйвера. Из Win32 приложения открываются только записи в директории \DosDevices\ (является ссылкой на \GLOBAL??\ в XP и на \??\ в 2000). Но сам \Device\Harddisk0\Partition0 является ссылкой на \Device\Harddisk0\DR0, в свою очередь \GLOBAL??\PhysicalDrive0 тоже является ссылкой на \Device\Harddisk0\DR0. Что в свою очередь дает нам право открывать ее.

Вот пример:

#include <windows.h>

int
main() {
	HANDLE hFile;
	char buf[512];
	DWORD junk;

	hFile = CreateFile("\\\\.\\PhysicalDrive0", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
		goto fail;

	if (!ReadFile(hFile, buf, sizeof(buf), &junk, NULL))
		goto fail;

	CloseHandle(hFile);

	hFile = CreateFile("mbr.bin", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
		goto fail;

	if (!WriteFile(hFile, buf, sizeof(buf), &junk, NULL))
		goto fail;

	return 0;

fail:
	if (hFile != INVALID_HANDLE_VALUE)
		CloseHandle(hFile);
	return -1;
}

---

Вот только в MSDN-овской статье по CreateFile написано как открывать физические диски.
[NT] Читал MSDN и было мне счастье 11.08.03 10:17  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот только открывать надо \\.\PhysicalDrive0, а не \\\\.\\PhysicalDrive0 :)
[NT] Ну а это уже синтаксис C 11.08.03 13:45  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вот только открывать надо \\.\PhysicalDrive0, а не
> \\\\.\\PhysicalDrive0 :)
Общеизвестно, что символ "\" используется в C для эскейпирования, то бишь для введения таких специальных символов, которые нельзя набрать на клавиатуре как CR, LF в C это выглядит как '\r', '\n' соотвественно. Таким образом для получения символа \ нужно эскейпировать его самого. То есть

printf("\\");

выведет:
\

Успехов :-)

ЗЫ: К слову, приведенная программа была скопирована прямиком из окна Visual C++, после того как была оттестирована.
[NT] Было уже 23.07.03 12:51  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> > Я имел ввиду прочитать MBR программно (прога
> Win32)....
> Открываешь девайс \device\harddisk0\partition0 и читаешь
> оттуда 512 байт если прав хватит

А, может, так: \device\harddisk0\partition1 ???
[NT] Не-е-е. :-) Partition1 - первый раздел на диске 23.07.03 14:09  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > > Я имел ввиду прочитать MBR программно (прога
> > Win32)....
> > Открываешь девайс \device\harddisk0\partition0 и
> читаешь
> > оттуда 512 байт если прав хватит
>
> А, может, так: \device\harddisk0\partition1 ???
И первые 512 байт с него это бут сектор этого раздела. А partition0 - физический (raw) диск и начинается он с MBR-а
Вопрос в догонку 24.07.03 08:41  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как узнать количество физических винтов?
Насколько я понимаю, самым правильным методом будет использование SetupAPI 24.07.03 12:35  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Как узнать количество физических винтов?
В частности функции SetupDiGetClassDevs с классом {4D36E967-E325-11CE-BFC1-08002BE10318} в качестве первого параметра (только не забыть флаг DIGCF_PRESENT, а то возвратит все девайсы, которые когда либо были, в том числе и уже удаленные). Ну а дальше... Ну например функцией SetupDiEnumDeviceInfo перечислить девайсы и посчитать сколько получится.

Хотя можно и менее правильно, например посчитать количество каталогов с маской \device\harddisk* или прочитать в реестре ключ для вышеупомянутого класса
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach