Mirosław F.

Mirosław F. Software
Configuration
Management Engineer

Temat: Nezalezny dostep do dysku

Witam,

Od razu uprzedze, ze nie jestem ekspertem ani nawet specjalista od C/C++, jednak moja praca wymaga znajomosci C++ i podstawowa wiedze posiadam.

Ostatnio zastanawialem sie, czy jest moze jakis sposob w jezyku C++ na niezalezny od systemu operacyjnego oraz od posiadania praw administracyjnych dostep do dysku twardego komputera? Chcialbym sie dowiedziec, czy jest to wogole osiagalne, a jesli nie to jakie sa alternatywy?

Z gory dziekuje za (p)odpowiedzi i pomoc.
Mirek

PS. Szczegoly techniczne przypadku o jaki mi chodzi:
Program uruchamiany jest na dowolnym OSie (Win, Mac, Linux). Program jest wykorzystywany do skanowania dysku komputera w celu przeszukania MFT i na jego podstawie plikow na dysku, wiec potrzebuje tak zwany RAW access. Niestety nie zawsze mozemy zapewnic przydzial praw administratora takiemu programowi.
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Nezalezny dostep do dysku

Nie ma uniwersalnego sposobu dostepu, w każdym systemie trzeba zrobić to osobno. Dodatkowo - RAW access do dysku zazwyczaj wymaga odpowiednich uprawnien. No i mam nadzieję, że zdajesz sobie sprawę, że MFT jest tylko dla partycji NTFS-a, więc pod systemami innymi niż windows może mieć drugorzędne znaczenie...
Daniel Łysiak

Daniel Łysiak Specjalista w
sprawach
audiowizualnych

Temat: Nezalezny dostep do dysku

Chyba jedynym sensownym rozwiązaniem tego problemu będzie uniezależnienie się od OS-a na komputerze, czyli np. boot-owalny pendrive z linuxem i aplikacją pod nim działającą, która zrobi to, czego oczekujesz.

Zagadnienie dostępu do portów HDD spod dowolnego systemu operacyjnego bez uprawnień to bardzo szerokie zagadnienie ocierające się o nieudokumentowane mechanizmy dostępu bądź omijania zabezpieczeń, które mogą w każdej chwili się zmienić - już samo w sobie jest nie lada wyzwaniem dla doświadczonego kodera.

konto usunięte

Temat: Nezalezny dostep do dysku

Dochodzi do tego problem ten, że każdy OS używa (trochę lub całkiem) innego systemu plików.
Adam B.

Adam B.
elektronik-informaty
k

Temat: Nezalezny dostep do dysku

Pod Windows bezpośredni dostęp do pliku można uzyskać za pomocą CreateFile używając nazwy \\.\PHYSICALDRIVEx - gdzie x jest numerem dysku liczonym od 0. Można też dostać się bezpośrednio do do poszczególnych partycji za pomocą nazwy \\.\C: ( zamiast C - odpowiednia litera partycji). Ale niestety aby dostać się w ten sposób do dysku aplikacja musi mieć uprawnienia administratora. Podejrzewam że w innych OS bez uprawnień administracyjnych bezpośrednio do dysku też nie ma dostępu.
Tomasz Ziobrowski

Tomasz Ziobrowski Oprogramowanie dla
przemysłu i nie
tylko

Temat: Nezalezny dostep do dysku

Mirosław F.:
Witam,

Od razu uprzedze, ze nie jestem ekspertem ani nawet specjalista od C/C++, jednak moja praca wymaga znajomosci C++ i podstawowa wiedze posiadam.

Ostatnio zastanawialem sie, czy jest moze jakis sposob w jezyku C++ na niezalezny od systemu operacyjnego oraz od posiadania praw administracyjnych dostep do dysku twardego komputera? Chcialbym sie dowiedziec, czy jest to wogole osiagalne, a jesli nie to jakie sa alternatywy?

Z gory dziekuje za (p)odpowiedzi i pomoc.
Mirek

PS. Szczegoly techniczne przypadku o jaki mi chodzi:
Program uruchamiany jest na dowolnym OSie (Win, Mac, Linux). Program jest wykorzystywany do skanowania dysku komputera w celu przeszukania MFT i na jego podstawie plikow na dysku, wiec potrzebuje tak zwany RAW access. Niestety nie zawsze mozemy zapewnic przydzial praw administratora takiemu programowi.
Witaj
Zajrzyj tutaj - może się przydać pomocne
http://fuse.sourceforge.net/

Z tego co zajrzałem są porty na różne platformy więc może uda Ci się zbudować jeden bazowy kod, który będzie działał na pożądanych przez Ciebie platrofmach. Z unixami powinno ruszyc (Linux oraz Mac) bez problemów z windowsem może być jendak trudniej.
Mirosław F.

Mirosław F. Software
Configuration
Management Engineer

Temat: Nezalezny dostep do dysku

Daniel Łysiak:
Chyba jedynym sensownym rozwiązaniem tego problemu będzie uniezależnienie się od OS-a na komputerze, czyli np. boot-owalny pendrive z linuxem i aplikacją pod nim działającą, która zrobi to, czego oczekujesz.

Zagadnienie dostępu do portów HDD spod dowolnego systemu operacyjnego bez uprawnień to bardzo szerokie zagadnienie ocierające się o nieudokumentowane mechanizmy dostępu bądź omijania zabezpieczeń, które mogą w każdej chwili się zmienić - już samo w sobie jest nie lada wyzwaniem dla doświadczonego kodera.

To najbardziej sensowne rozwiazanie ze wszystkich ktore sprawdzilem. Z tym, ze taki system/model skanowania dysku juz mamy zaimplementowany.

Moj przypadek raczej obejmowal scenariusz, gdy komputer z danym OS-em jest juz wlaczony i podczas uruchomionego OS-a wykonaloby sie skanowanie dysku oraz RAM-u, ale widze, ze to juz jest calkiem inna bajka i chyba trzeba by bylo napisac osobny kod pod kazdy OS.

To moze w takim razie inne pytanie, czy zna ktos z Was biblioteke, ktora pozwala na uzyskanie dostepu do dowolnego lub jak najwiekszej ilosci systemu plikow w kontrolowanym srodowisku (najlepiej openSUSE)?

Mowie tutaj o dostepie do takich mechanizmow jak usuniete pliki, strumienie danych doczepione do folderow i plikow w systemach plikow takich jak NTFS, EXT3, EXT2, FAT16, FAT32, HFS+, itd.
Daniel Łysiak

Daniel Łysiak Specjalista w
sprawach
audiowizualnych

Temat: Nezalezny dostep do dysku

Myślę, że tego typu biblioteki można stworzyć poprzez przerobienie tych dostępnych dla kernela linuxa. Te związane stricte z odzyskiwaniem danych rozwijają raczej tylko firmy z tym związane, czyli można uderzyć do znanych firm typu Ontrack lub pomniejszych i dowiedzieć się, czy coś takiego oferują i ile może kosztować (może nie być tanie). Kiedyś sam coś takiego tworzyłem (jednakże nie na C++) a potem inne fajne rzeczy mnie odciągnęły od odzyskiwania danych i projekt praktycznie umarł. Jeśli jednak ktoś z Was chciałby takie biblioteki sam napisać, to polecam lekturę tego co w tamtych latach napisałem o ntfs-ie, FAT-ach, ISO9660 i innych mniej lub bardziej ciekawych rzeczach związanych z dyskami:

http://bora-komp.home.pl/index.php3?dzial=2&aid=5
Tomasz Ziobrowski

Tomasz Ziobrowski Oprogramowanie dla
przemysłu i nie
tylko

Temat: Nezalezny dostep do dysku

Fuse naprawdę nie będzie przydatny?

Przecież to ogromna baza kodu. Do tego możliwe jest uruchomienie i implementowanie oprogramowania operującego na dowolnym systemie plików z przestrzeni użytkownika. Operacje na żywym dysku realizuje się za pośrednictwem odpowiedniego modułu kernela/ sterownika. Co daje możliwość dobrania się do dysku lub jego obrazu. Konieczna jest tylko instalacja odpowiedniego "sterownika" a do tego trzeba odpowiednich uprawnień. Następnie każdy użytkownik może "rzeźbić" za pomocą w/w steronika na docelowym systemie plików.

Użycie Linuksa faktycznie wydaje się być najsensowniejsze bo masz dostęp do ogromnej bazy kodu do tego nie wiem jak w innych systemach ale sam linux obsługuje wiele typów pratycji ... bo to przecież też trzeba obsłużyć by w ogóle wiedzieć gdzie systemu pliku szukać.


Na tej stronie jest lista obsługiwanych systemów plików.
http://en.wikipedia.org/wiki/Filesystem_in_Userspace

Niekoniecznie będzie zaimplementowany dostęp do urządzeń specjalnych - bo one przeważnie są powiązane z działającymi "sterownkami" w uruchomionym systemie. Trudno mi sobie wyobrazić np odczyt danych z pliku /dev/ttyS0 gdy dobierasz się do tego pliku gdy jest on na dysku z innej niż natywna platforma - np z windowsa.



Wyślij zaproszenie do