|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
lettura hd a basso livello
vorrei poter leggere byte per byte un hard disk e recuperare alcuni dati andati persi e irrecuperabili con altri mezzi.
spiego di preciso la situazione: ho perso 2 files di testo, partizione illeggibile neanche da programmi appositi; ma ho in un altro hard disk le vecchie versioni dei files. vorrei poter cercare all'interno dell'hard disk i due files facendo riferimento alle parti rimaste invariate rispetto alle versioni vecchie, ovvero cercare nell'hard disk queste parti invariate e salvarmi i settori vicini (sperando che i files non siano frammentati). l'algoritmo è semplice e ce l'ho già in mente, basta poter leggere il byte all'indirizzo X del disco. se non è possibile agire direttamente sul disco, pensavo che potrei anche salvare sul mio attuale sistema un'immagine dell'hard disk; ma non deve essere compressaq o modoficata in alcun modo, deve essere proprio la copia byte per byte dellhard disk in questione. qualcuno mi sa aiutare? almeno è chiaro ciò che chiedo grazie Ultima modifica di Furla : 22-05-2006 alle 16:52. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2001
Messaggi: 356
|
Chiarissimo.
Ma l'approccio più semplice è proprio quello che illustri tu alla fine: creare un'immagine "fisica" dell'HD, e operare quindi direttamente sul file cosi ottenuto; cosa quindi banale con qualsiasi linguaggio tu scelga di utilizzare. Un tool free per creare il file potrebbe essere DriveImage XML. Bye! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
Quote:
dici che funziona lo stesso? faccio qualche prova... esistono altri programmi simili a questo? |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2001
Messaggi: 356
|
Direi proprio di si, non dovresti aver problemi a trovarne diversi con Google. Questo è solo il primo che mi è venuto in mente.
Bye! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
niente da fare, non ne trovo nessuno che fa quello che serve a me! tutti i programmi che provo fanno un'immagine che contiene solo la parte utilizzata della partizione, la parte vuota viene ignorata... e i miei files sono proprio nella parte che per il file system è vuota
idee? consigli? |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
su Windows la fopen dovrebbe aprirti uno pseudofile corrispondente ad un volume logico se come file name specifichi "\\\\.\\X:", ovvero:
- doppio slash (in C diventano 4 slash) - punto - slash (in C diventano 2) - lettera del volume logico - due punti per esempio Codice:
FILE *f = fopen("\\\\.\\D:", "r");
la cosa penso che funzioni solo sui kernel NT-based però, perché è strettamente legata all'architettura del sistema (doppio slash punto slash rimanda ad un branch del namespace globale degli oggetti del kernel, che si chiama "\DosDevices" ed è il branch usato da Win32). di conseguenza tutto questo funziona solo su Windows NT/2000/XP e futuri (se mai arriveranno... )spero di esserti stato utile ciao Ultima modifica di 71104 : 07-06-2006 alle 00:00. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
aspetta fammi capire, questo comando in che ambiente lo uso?
funziona se la partizione è ntfs o anche se attacco il disco in slave ad un sistema con win2000? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
ciao a tutti, ho continuato per un po' via PM con 71104, mi ha detto che il codice che ha postato è in C.
io conosco abbastanza vb6 e vb.net, mi sono procurato una guida e visual studio 6, con visual c++ posso fare un programma sfruttando il codice postato da 71104? non capisco però come usare quel codice, FILE cosa sarebbe? e quel *f? grazie a chi mi aiuta |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2503
|
Quote:
__________________
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
alex mi sai aiutare? con quanto illustrato da 71104, sapresti fare un programma che copia un'intera partizione in un file?
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Io tempo fa avevo scritto delle funzioni per leggere dei settori specifici sul disco (MBR, Boot Sector).
Ad esempio per leggere il Boot Sector da un volume logico: Codice:
DWORD ReadBootSector (TCHAR cVolume, LPVOID lpOutputBuffer)
{
DWORD dwRet = ERROR_SUCCESS;
BYTE bBufSector[1024];
LPVOID lpBuffer;
TCHAR szDevName[32];
HANDLE hDevice;
DWORD dwPos, dwRead;
lpBuffer = (LPVOID) ((DWORD_PTR) bBufSector + 511 & ~0x1FF);
wsprintf (szDevName, _T("\\\\.\\%c:"), cVolume);
hDevice = CreateFile (szDevName, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, 0, NULL);
if (hDevice != INVALID_HANDLE_VALUE)
{
dwPos = SetFilePointer (hDevice, 0, NULL, FILE_BEGIN);
if (dwPos != INVALID_SET_FILE_POINTER)
{
if (ReadFile (hDevice, lpBuffer, 512, &dwRead, NULL))
CopyMemory (lpOutputBuffer, lpBuffer, 512);
else
dwRet = GetLastError ();
}
else
dwRet = GetLastError ();
CloseHandle (hDevice);
}
else
dwRet = GetLastError ();
return dwRet;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#13 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
ciao |
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
per 71104:
ma sei sicuro che le funzioni standard del "C" possano operare a quel livello??? Io per curiosità ho fatto una prova: ho aperto il volume con fopen("\\\\.\\c:", "r"); e in effetti l'apertura va a buon fine. Quando cerco di leggere 512 bytes con la fread, invece me ne legge solo 304.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
boh... GetLastError ritorna qualcosa?
non credo cambi nulla se usi CreateFile anziché fopen, non esiste implementazione delle librerie standard del C che non passi il primo parametro di fopen al primo di CreateFile |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
continuo col metodo di 71104, se dovessi avere problemi come andbin seguo l'altra strada. mi metto subito all'opera!
grazie a entrambi, siete gentilissimi! |
|
|
|
|
|
#18 | ||
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
|
|
|
|
|
#19 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
i file veri e propri mica finiscono con un vero EOF... |
|
|
|
|
|
|
#20 | ||
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:27.











)








