УЧЕБНЫЙ ЦЕНТР  |  КУРСЫ  |  ЗАЯВКА НА ОБУЧЕНИЕ  |  СТАТЬИ   ГОСТИНИЦА  ДИСТАНЦИОННОЕ ОБУЧЕНИЕ  В НАЧАЛО

  

 
 

 

Использование информации BOOT-сектора раздела NTFS

При проведении работ по восстановлению раздела NTFS или при "спасении" файла из неработоспособного раздела с помощью программы дискового редактора необходимо знать информацию об структуре и особенностях раздела. Эту нужную  для работы информацию можно получить из  BOOT-сектора раздела NTFS, но для этого нужно  уметь использовать структуру информации  BOOT-сектора и уметь найти его. Приведенные в данной статье сведения будут полезны специалистам, профессионально занимающимся "спасением" информации и восстановлением служебных областей файловых систем на жестких дисках.

    Boot-sector раздела всегда содержится в блоке данных начального сектора раздела. Раздел жесткого диска можно найти по таблице разделов, которая находится в Главной загрузочной записи жесткого диска. Содержимое Главной загрузочной записи жесткого диска МВR - Master Boot Record (или Master Boot Sector) не зависит от типа конкретной операционной системы (см. рис. 1).  MBR хранится в блоке данных (512 байт) первого сектора, нулевой поверхности, нулевого цилиндра жесткого диска. На рис. 1, начиная с адреса 1ВЕh  в МВR, расположена таблица разделов (Partition table), которая определяет три раздела: раздел FAT16 (активный раздел), раздел NTFS, раздел FAT32 LBA (можно указать до 4-х разделов, а через расширенный раздел и более, но  каждый раздел определяется строкой из 16 байт). В последних 2-х байтах (из 512 байтов MBR) содержится сигнатура (подпись) 55ААh. В самом начале BOOT-сектора и до адреса 1BEh расположена программа загрузчика операционной системы с жесткого диска (IPL2). В ее функции входит нахождение активного раздела диска, загрузка из этого раздела в оперативную память BOOT-сектора и передача управления на начало BOOT-сектора (т.е. на начало программы загрузчика IPL2 для продолжения процедуры загрузки операционной системы).

Рис. 1. Изображение содержимого MBR в 16-м виде и  изображение таблицы разделов (Partition table) в виде, удобном нам для рассмотрения

            Как определить, где на жестком диске находится раздел NTFS? Если мы можем видеть Partition table в удобном для нас виде ( нижняя часть рис. 1), то сразу видно (по левому крайнему столбцу), что вторая строка таблицы  определяет раздел NTFS. Столбец "Boot" строки содержит "No", а это говорит о том, что раздел не системный. Столбцы группы Starting "Сylind", "Head", "Sector" 2-й строки содержат в координатах CHS (цилиндр, головка, сектор) адрес физического блока (ячейки 512 байт) жесткого диска, с которого начинается данный раздел: х000, х01, х01, что в десятичной системе  соответственно будет 0, 0, 1. Столбцы группы Ending "Сylind", "Head", "Sector" 2-й строки содержат в координатах CHS (цилиндр, головка, сектор) адрес физического блока (ячейки 512 байт) жесткого диска, на котором заканчивается данный раздел: х0FE, хFE, х3F, что в десятичной системе,  соответственно, будет 254, 254, 63.

            Столбец группы Relative "Start Sector", 2-й строки содержит количество секторов, предшествующих данному разделу х0000003F (63 в десятичной системе), а столбец группы Total "Sectors" содержит количество секторов в разделе х003E8200 (4096512 секторов в десятичной системе).

а)

б)

В)

Рис. 2

            Дело обстоит несколько сложнее, если мы можем видеть содержимое MBR только в 16-м виде (верхняя часть рис. 1), но мы знаем, что таблица разделов (Partition table) начинается с адреса 1BEh, что каждый раздел определяется содержимым 16-ти байтной строки (рис. 2,а). Зная структуру строки таблицы разделов, мы можем получить ту же информацию, определяющую расположение раздела NTFS, из верхней части рисунка 1:

            -           первый байт строки содержит "флаг загрузки", если он равен 80h, то раздел системный, если 00h, то раздел не системный (см. рис. 2,б);

            -           следующие три байта в координатах CHS определяют адрес физического блока (ячейки 512 байт) жесткого диска, с которого начинается данный раздел (под номер головки отводится 1 байт, под номер сектора и номер цилиндра отведены 2 байта - см.  рис. 7,б-в) - в нем находится системная информация, которую мы называем BOOT-сектор;

            -           следующий по порядку байт строки таблицы разделов содержит код файловой системы, которая поддерживается в данном разделе (см. рис. 3);

            -           следующие три байта в координатах CHS определяют адрес физического блока (ячейки 512 байт) жесткого диска, на котором заканчивается данный раздел (под номер головки отводится 1 байт, под номер сектора и номер цилиндра отведены 2 байта (см. рис. 2, б-в);

            -           следующие четыре байта содержат количество секторов, предшествующих данному разделу (рис. 2,б);

            -           следующие четыре байта содержат количество секторов в разделе (рис. 2,б).

 

Рис. 3. Примеры кодов и типов разделов  жесткого диска

 

            За последней строкой таблицы разделов в  2-х последних байтах (из 512 байтов MBR) содержится сигнатура (подпись) 55ААh. Таким образом, из второй 16-ти байтной строки таблицы разделов, которую  мы выбрали по коду 07 (код файловой системы NTFS,  расположенный в байте с адресом 1D2h - см. рис. 1), мы получим полную информацию о нужном нам разделе жесткого диска.

              Основными  компонентами файловой системы NTFS являются следующие структурные единицы:

            -           том NTFS,

            -           загрузочный сектор,

            -           таблица Master File Table,

            -           метаданные и атрибуты файлов.

            При форматировании тома под NTFS создаются Главная файловая таблица (MFT - Master File Table) и метаданные. Каждый занятый сектор тома NTFS принадлежит какому-нибудь файлу. Даже метаданные файловой системы являются файлами (в разделе NTFS все хранится в виде файлов. Метаданные тоже являются файлами (точнее метафайлами, имена этих файлов начинаются со знака $, и они недоступны обычным средствам операционной системы, - система их “не видит”). NTFS рассматривает каждый файл или каталог как набор атрибутов. Том  NTFS условно делится на части (см. рис. 4).

Рис. 4. Структура раздела жесткого диска отформатированного под том NTFS

            В начале раздела NTFS расположен загрузочный сектор (BOOT-сектор), который содержит: блок параметров BIOS, содержащий сведения о структуре тома и структурах файловой системы и код программы (IPL2). Программа ILP 2 распознает используемую операционную систему и, используя ее, загружает в память файл Ntldr (загрузчик операционной системы Windows 200x),  который "знает", как найти системные файлы необходимые для загрузки операционной системы. Загрузочный раздел, который содержит файлы операционной системы  Windows 2000, может совпадать с системным разделом, но может находиться и в другом разделе того же жесткого диска или даже на другом жестком диске. Загрузочный сектор начинается с нулевого логического сектора раздела, он может занимать до 16 секторов и входит в состав метафайла $Boot. В разделе 12% кластеров отводятся под зону MFT, в этой зоне и  располагается файл $MFT. Файл $MFT представляет собой централизованный каталог всех остальных файлов диска и самого себя (нулевая запись файла $MFT определяет сам файл $MFT).  Файл $MFT состоит из записей фиксированного размера (обычно 1 Кбайт), и каждая запись определяет соответствующий файл (в обобщенном смысле). Остальные 88% диска представляют собой обычное пространство для хранения файлов.  Запись каких-либо данных в первую область невозможна. MFT-зона, как правило, держится пустой - это делается для того, чтобы самый главный, служебный файл ($MFT) не фрагментировался при своем росте.

Рис. 5

            Свободное место на диске включает в себя все физически свободные кластеры, в том числе, и незаполненные части MFT-зоны. Если для  записи файлов уже нет места в обычном пространстве, то MFT-зона сокращается (в текущих версиях операционных систем обычно в два раза), освобождая, таким образом, место для записи файлов. При освобождении места в обычной области зона MFT может снова расширится. При этом не исключена ситуация, когда в этой зоне останутся и обычные файлы. Метафайл $MFT может фрагментироваться, но  это нежелательно.

            Системные файлы (метафайлы) используются только файловой системой для хранения метаданных и поддержания работы файловой системы. Системные файлы записываются на том утилитой Format. Метаданные представляют собой файлы, которые NTFS использует для реализации структуры файловой системы. NTFS резервирует для метаданных первые 16 записей в таблице MFT (около 1 Мбайт). Остальные записи таблицы описывают файлы и каталоги. Поэтому первые 16 файлов называются метафайлами (см. табл. 1), они носят служебный характер и недоступны пользователю через операционную систему. Самый первый метафайл - это сам $MFT. Эти первые 16 записей файла $MFT имеют жестко фиксированное положение, так как на них указывает одно из полей блока параметров BIOS (BPB) загрузочного сектора раздела NTFS. Копия этих же 16 записей  для повышения надежности  хранится  в геометрическом центре раздела диска, а одно из полей BPB содержит ссылку на них. Если в процессе загрузки операционной системы обнаружится, что одна из первых 16-ти записей испорчена, то система автоматически перейдет на использование их копий. Остальные записи MFT-файла могут располагаться, как и части любого другого файла, в произвольных кластерах раздела диска. Восстановить его положение можно с помощью его самого, используя как основу  нулевую запись файла $MFT (записи файла $MFT пронумерованы от нуля).  

Таблица 1. Системные файлы (метафайлы) NTFS 

       

            Все 16 метафайлов, которые определяются первыми 16-ю записями файла MFT, носят служебный характер, и каждый из них отвечает за какую-либо часть работы системы. NTFS может сместить, даже фрагментировать по диску, все свои служебные области (например, для обхода дефектов поверхности), за исключением первых 16 записей файла MFT. Получить какую-либо информацию о метафайлах стандартными средствами сложно. Для этих файлов указан их реальный размер и, посмотрев размер файла  $MFT, можно узнать, например, сколько операционная система тратит на каталогизацию всего диска.

            Итак, любой том NTFS содержит загрузочный сектор - BOOT, причем, содержимое загрузочного сектора раздела определяется конкретной операционной системой и используемой файловой системой. На рис. 5  показан пример содержимого BOOT-сектора раздела NTFS в шестнадцатеричном виде и удобном для человека виде. Подробно структура BOOT-сектора раздела NTFS показана в табл. 2.

            При проведении работ с помощью программы дискового редактора нам будет нужна информация из блока параметров BIOS BOOT-сектора нашего раздела, которая определяет структуру раздела, - без этой информации корректная работа с разделом диска невозможна. Во-первых, мы должны убедиться, что это действительно раздел NTFS. Это можно сделать, посмотрев строку NTFS Signature: NTFS (рис. 6) или на рис. 5 посмотреть содержимое байтов с 3h по Ah (4E 54 46 53 20 20 20 20, что в кодах ASCII будет: NTFS).

            Строка Bytes per sector: x0200   512 - указывает на размер блока данных сектора (200h или 512 в десятичной системе). Эту же информацию можно получить из байтов с адресом Bh и Ch на рис. 5.

            Строка Sectors  per cluster: x08 (рис. 6) - указывает на размер кластера данного раздела - 8 секторов (кластер - это наименьшая единица, выделяемая системой под размещение файлов). Эту же информацию можно получить из байта с адресом Dh на рис. 5.

Таблица  2. Структура BOOT-сектора раздела NTFS

        

 

 Рис. 6. BOOT- сектор раздела NTFS в виде таблицы,  отображающей поля BPB

 

    Интересной для нас будет строка Sectors  per track: 003F  63 и строка Heads: x00FF 255 (рис. 6), которые указывают количество секторов на дорожке жесткого диска и число головок (поверхностей). В современных дисках эти характеристики, как и количество  цилиндров, являются "виртуальными", так как при низкоуровневом форматировании жесткого диска  для обеспечения одинаковой плотности записи на "внутренних" и "внешних" дорожках  используется "зонная" запись формата, которая разбивает дорожки на разное число секторов. Контроллер жесткого диска нас "обманывает", и мы работает с "виртуальными" дорожками, на которых имеется одинаковое число секторов, с "виртуальными" головками (поверхностями) и цилиндрами.  Эту же информацию можно получить из байтов с адресом 18h -19h  и 1Ah - 1Bh на рис. 5 (3F 00) и (FF00).

            В строках BPB 1st MFT claster: x00 00 00 04    4   и  1st MFT mirror claster:  x00 6B DF A0    7069600  указаны номера начального кластера файла $MFT и начального кластера файла MFT mirror - "зеркального отображения" первых 16-ти записей $MFT.   Эту же информацию можно получить из байтов с адресом 1Ch -1Fh  и 38h -3Bh на рис. 5 (3F 00 00 00) и (A0 DF 6B 00). Зная номер начального  кластера файла $MFT, и зная размер кластера, мы можем найти его в разделе NTFS, а запись файла с номером ноль содержит информацию о расположении самого файла $MFT (кроме того, мы знаем, что этот файл не фрагментируется, его кластеры расположены друг за другом).

 

Рис. 8. Содержимое начального сектора начального кластера файла MFT (запись с номером 0)

            Для каждого каталога и файла на томе NTFS в $MFT создается соответствующая запись. NTFS использует записи файла $MFT для описания соответствующих им файлов. Записи файла $MFT, или внешнее хранилище, на которое ссылаются записи, хранят всю информацию о файле, включая его размер, дату и время создания, права доступа, его содержимое, и, что самое главное, списки кластеров, выделенных файлам.  NTFS выделяет пространство под запись файла $MFT в зависимости от размера кластеров файла. Атрибуты файла записываются в выделенное в файле $MFT пространство. Кроме атрибутов файла каждая запись содержит данные о расположении записи в таблице MFT. Обычно каждый файл занимает одну запись. Если же файл имеет большое количество атрибутов или сильно фрагментирован, может понадобиться больше записей. В этом случае первая запись файла (базовая) содержит ссылку на следующую запись. Небольшой файл (до 1500 байт) может целиком храниться в записи MFT (см. рис. 7). Возможность восстановления файлов из поврежденных разделов NTFS во многом определяется целостностью файла $MFT и его копии.

            Подобный подход обеспечивает очень быстрый доступ к файлам. Начальная (с номером 0) запись файла $MFT описывает непосредственно Главную файловую таблицу. За ней следует запись зеркальной копии (mirror record) MFT.  При искажении первой записи MFT файловая система считывает эту запись, чтобы найти дубликат файла MFT. Следующая запись в MFT - файл регистрации log file - используется для восстановления файлов. Местоположение начального кластера  записей MFT и их зеркальных копий указаны в секторе начальной загрузки. Семнадцатая и последующие записи Главной файловой таблицы используются собственно файлами и каталогами на томе. В NTFS поиск файла производится только для непосредственного его использования. Записи каталога помещены внутри главной файловой таблицы так же, как записи файла. Вместо данных каталоги содержат индексную информацию. Небольшие записи каталогов находятся полностью внутри структуры MFT. Большие каталоги организованы в B-tree (эффективный способ адресации - бинарное дерево B-tree), имея записи с указателями на внешние кластеры, содержащие элементы каталога, которые не могли быть записаны внутри структуры MFT.

            Каждому файлу на NTFS соответствует  обязательный элемент - запись в файле $MFT. Все файлы упоминаются в MFT, где хранится вся информация о файле, за исключением собственно данных (имя файла, размер, положение на диске отдельных фрагментов, и т.д.). Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно расположенные подряд. Файл может не иметь данных, - в таком случае на него не расходуется свободное место самого диска. Если файл  имеет не очень большой размер, тогда данные файла хранятся прямо в MFT (в оставшемся от основных данных месте в пределах одной записи MFT). Файлы, занимающие сотни байт, обычно не имеют своего "физического" воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение, - у него нет как таковых данных, а есть потоки данных (streams). Один из потоков соответствует собственно данным файла. Но большинство атрибутов файла - тоже потоки. Таким образом, в файловой системе NTFS каждому файлу жестко соответствует номер записи в MFT, а всё остальное - опционально. Так как символьные данные представлены в кодировке Unicode - 16-битном представлении, которое дает 65535 разных символов, имя файла может содержать любые символы, включая полый набор национальных алфавитов. Максимальная длина имени файла - 255 символов.

            Стандарт Unicode для кодировки символов был предложен некоммерческой организацией Unicode Consortium. Для представления каждого символа в этом стандарте используются два байта, что позволяет закодировать очень большое число символов из разных письменностей. В документах Unicode могут соседствовать русские, латинские, греческие буквы, китайские иероглифы и математические символы. Кодовые страницы при использовании Unicode становятся ненужными. Коды в Unicode разделены на несколько областей. Область с кодами от 0000 до 007F содержит символы набора "Latin 1" (младшие байты кодов символов соответствуют кодировке ISO 8859-1). Далее идут области, в которых расположены знаки различных письменностей, а также знаки пунктуации и технические символы; часть кодов зарезервирована для использования в будущем. Символам кириллицы выделены коды в диапазоне от 0400 до 0451.  Для работы с документами Unicode нужны соответствующие шрифты. Как правило, файл шрифта Unicode содержит начертания не для всех символов, определенных в стандарте, а лишь для символов из некоторых областей. В таблице MFT имена файлов тоже хранятся в кодировке Unicode. Хотя имена файлов NTFS используют набор символов Unicode с 16 битами, но проблема доступа  к файлам из MS-DOS решена. NTFS автоматически генерирует поддерживаемое MS-DOS имя (восемь плюс три символа) для каждого файла. Таким образом, файлы NTFS могут использоваться через сеть операционными системами MS-DOS и OS/2. Это особенно важно для файловых серверов организации, которая использует персональные компьютеры с двумя или всеми тремя этими операционными системами.  Создавая имена файла "восемь плюс три", NTFS также позволяет приложениям  MS-DOS и Windows 3.х работать с файлами, имеющими длинные имена NTFS. Кроме того, при сохранении файла приложениями MS-DOS или Windows 3.х  на томе NTFS сохраняются и имя файла "восемь плюс три" и длинное имя NTFS.

            Каждая запись в файле $MFT, начинается с  сигнатуры FILE (см. рис. 8). За ней расположены стандартная служебная информация и атрибуты записи, описывающие файл. Существуют еще записи для каталогов, элементов индекса и другие.  Первая запись, содержащая имя $MFT файла MFT, описывает сам этот файл. Далее в таблице расположены записи для других системных файлов, таких как $MFTMirror, $LogFile, $Volume, $AttrDef и др. Если загрузочный сектор разрушен, то таблицу MFT можно найти, просматривая кластеры раздела с самого начала.

            Типичная запись MFT  (см. рис. 8) состоит из начального фрагмента фиксированного размера и набора атрибутов, имеющих в общем случае переменный размер. Для восстановления файлов нужно знать точный формат только атрибута данных. Что же касается других атрибутов, достаточно уметь определять их расположение и размер. Первые четыре байта в записи (+0;+1;+2;+3), описывающей файл, образуют слово FILE (см. рис. 3, 4). Следующие два байта - смещение так называемой области Fixup. В рассматриваемом случае значение смещения равно 002Ah (с учетом обратного порядка расположения байтов в слове). Область Fixup используется в процессе обнаружения ошибок чтения или записи. Она состоит из слов размером два байта.

            Количество слов хранится в записи MFT со смещением 0006h. В области Fixup хранится значение 0003h, следовательно, область Fixup начинается со смещения 002Ah и простирается до 02Ah+(2*0003h)=002Fh. Сразу за областью Fixup начинаются поля атрибутов. Смещение первого атрибута равно 0030h. Первые четыре байта области атрибутов определяют тип, а следующие четыре  -   размер в байтах. Например, вслед за областью Fixup со смещением 0030h следует атрибут с типом 10h. Атрибут занимает 48 байт, следовательно, следующий атрибут (с типом 30h) начнется со смещением 0078h. Таким образом, можно выделить в записи MFT все атрибуты. В конце самого последнего записано значение FFFFFFFF -  признак конца цепочки атрибутов.  Для восстановления файлов наибольший интерес представляют атрибуты типа 30h и 80h. Первый из них хранит имя файла. По нему следует искать запись MFT, описывающую восстанавливаемый файл. Второй атрибут с типом 80 хранит список кластеров, выделенных файлу, или сам файл.

            Как видно, тип атрибута, равный 80h, хранится в записи MFT со смещением 0160h. Всего атрибут данных, занимает D8h байт, так как именно это значение находится в четырехбайтовом поле со смещением +4h относительно начала атрибута. Байт со смещением +8h относительно начала атрибута данных -  это признак резидентного размещения файла. Если его значение равно 1, запись MFT хранит только список кластеров, выделенных файлу (нужно прослеживать цепочки блоков VCN как в описываемом случае), а если оно равно 0 -  файл резидентный и находится внутри самой записи MFT (для сокращения времени доступа). При этом размер резидентных данных, т. е. файла, указан в двухбайтовом слове со смещением +10, а смещение резидентных данных, т. е. файла, записано в двухбайтовом слове со смещением +14 относительно начала атрибута данных. Как правило, записи содержат только файлы небольших размеров.

            В случае нерезидентного размещения файла, четыре байта со смещением +30h хранят длину файла, расположенного где-то на диске. В данном примере длина файла $MFT составляет B7B000h байт. Для  определения расположения нерезидентного файла на диске, нужно проследить цепочку так называемых блоков виртуальных номеров кластеров Virtual Cluster Number (VCN), или просто блоков VCN. Показатель смещения начала этой цепочки хранится в двухбайтовом поле, имеющем смещение +20h байт относительно начала атрибута данных. В описываемом случае этот показатель равен +40h, а смещение области блоков VCN относительно начала записи MFT равно +01A0h (см. рис. 4). Файл, записанный в разделе NTFS, может быть сегментирован. Он состоит из одного или нескольких фрагментов, называемых экстентами. Размер и расположение каждого экстента описывается в блоке VCN. В зависимости от того, фрагментирован файл или нет, область VCN может содержать один блок или их набор. Блоки VCN имеют переменный размер, определяемый первым байтом.                 Формат блока стоит показать на конкретном примере. Возьмем первый блок VCN, имеющий в рассматриваемом примере смещение +01A0 относительно начала записи MFT:

31 20 D9 86 02

            Размеры двух полей блока VCN определяют тетрады первого байта, содержащего значение 31h (3 - определяет размер второго поля блока VCN, а 1 - определяет размер первого поля блока VCN) Первое поле, имеющее длину один байт, хранит количество кластеров (20), выделенных экстенту файла. Второе поле, размером три байта, содержит номер первого кластера данного экстента файла (0286D9). Следовательно, в данном случае первому экстенту файла $MFT выделено 20 кластеров, а номер первого кластера для первого экстента равен 0286D9. Таким образом, определяем размер и расположение первого экстента файла. Второй блок VCN расположен сразу вслед за первым:  12 24 08 21

            Для того чтобы определить первый кластер второго экстента, необходимо прибавить к адресу первого экстента смещение, указанное во втором блоке VCN (с учетом знака). В данном случае второй экстент размещен в кластере с номером 0286D9+21=286FA. Длина второго экстента составляет 0824 кластера. Анализируя остальные блоки VCN, можно определить размеры и расположение всех экстентов файла. Список блоков VCN закрывается байтом (смещение (+49)) с нулевым значением (см. рис. 8).

            Если известно имя файла, подлежащего восстановлению, то нужно, просматривая атрибуты типа 30 всех записей файла MFT, найти соответствующую запись, определяющую искомый файл. Далее следует найти в этой записи атрибут данных и определить, резидентный он или нет. Если атрибут данных резидентный, то нужно сохранить сектор, содержащий запись MFT, в виде файла на жестком диске или дискете. Затем следует вырезать нужную часть данных и сохранить результат в новом файле. Эту операцию можно выполнить и в редакторе Norton Disk Editor для MS-DOS. Если  атрибут нерезидентен, то,  прослеживая цепочку блоков VCN, нужно определить расположение и размер экстентов восстанавливаемого файла. Далее следует прочитать данные экстента, а затем сохранить их в файле на диске (в блоке VCN установлено количество кластеров, выделенных экстенту, поэтому нужно выполнить пересчет количества кластеров в количество секторов). Восстановив все экстенты файла, их объединяют  в один файл, определяют правильную длину файла, полученную из поля со смещением 30h атрибута данных.

Восстановление большого количества файлов может потребовать много времени из-за ручной обработки цепочек блоков VCN, которые могут быть очень длинными. Использовать автоматические средства восстановления желательно только в крайнем случае и очень осторожно, особенно, если речь идет о восстановлении очень важных данных. Автоматическая программа вовсе не обязательно сможет принять правильное решение, если после сбоя от данных мало что осталось, а опытный специалист, даже с простейшим редактором диска, частосможет, восстановить пропавшие файлы.

 

 
 
 

Copyright © 2000-2016гг.   Учебный Центр "Алгоритм"  тел./факс: (8412) 52-23-62, 52-23-47, 21-84-24  E-mail: nto@bk.ru

 

Вверх