Я хочу скрыть текстовый файл, переместив его в $Extend
каталог (Что это за каталог?). Итак, я бегу cmd
как администратор и запустите следующий код:
C:\Windows\system32>copy I:\ToHide.txt I:\$Extend
Access is denied.
0 file(s) copied.
C:\Windows\system32>
Как видите, я не смог и получил Доступ закрыт ошибка. Поэтому я попытался получить каталог назначения ($Extend
) и поменяй его ACLs
как показано ниже:
C:\Windows\system32>takeown /f I:\$Extend
SUCCESS: The file (or folder): "I:\$Extend" now owned by user "Abraham-VAIO\Abra
ham".
C:\Windows\system32>cacls I:\$Extend /G Abraham:F
Are you sure (Y/N)?Y
The system cannot find the file specified.
C:\Windows\system32>
Q1: Почему cacls не мог видеть этот каталог, а takeown мог !?
После этого я использую приведенный ниже код Python:
import win32api
import win32con
import win32security
FILENAME = "I:\\$Extend"open (FILENAME, "w").close ()
print "I am", win32api.GetUserNameEx (win32con.NameSamCompatible)
sd = win32security.GetFileSecurity (FILENAME, win32security.OWNER_SECURITY_INFORMATION)
owner_sid = sd.GetSecurityDescriptorOwner ()
name, domain, type = win32security.LookupAccountSid (None, owner_sid)
print "File owned by %s\\%s" % (domain, name)
И я получаю Доступ закрыт снова :
>>> ================================ RESTART ================================
>>>
Traceback (most recent call last):
File "C:\Users\Abraham\Desktop\teste.py", line 6, in <module>
open (FILENAME, "w").close ()
IOError: [Errno 13] Permission denied: 'I:\\$Extend'
>>>
Q2: этот код Python равен takeown
или это альтернатива cacls
?
Q3: Почему я получаю отказано в доступе, когда я работаю вхолостую (и после этого python в командной строке) от имени администратора?
Последние вопросы:
В4: Почему я не могу открыть этот каталог с помощью Windows Explorer, хотя я могу открыть его с помощью WinRAR? Windows ограничивает некоторые API для Explorer, но они доступны для других программ?
Кстати, есть ли способ достичь своей цели с помощью Python или C ++ или …? (Скрытие чего-либо в каталоге $ Extend)
В общем, вы можете получить доступ к MFT напрямую, открыв \. \ PhysicalDriveX — который является базовым физическим диском (X — это номер диска, который вы хотите открыть) — и затем проанализируйте диск напрямую, то есть найдите смещение раздела от Master Boot Record, затем проанализируйте первый сектор NTFS и оттуда найдите местоположение MFT.
Существует отличный пример того, как разобрать MFT в проекте ntfsfastfind, с открытым исходным кодом, смотрите здесь:
http://home.comcast.net/~lang.dennis/console/ntfsfastfind/ntfsfastfind.html
Я также рекомендую прочитать о внутренностях NTFS здесь:
http://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx
http://ntfs.com/ntfs-mft.htm