Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-05-2006, 15:43   #1
Furla
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 15:52.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 16:48   #2
Mark0
Senior Member
 
L'Avatar di Mark0
 
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!
Mark0 è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 18:56   #3
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
Quote:
DriveImage XML runs under Windows XP Home, XP Professional and Windows Server 2003 only.
The program will backup, image and restore drives formatted with FAT 12, 16, 32 and NTFS.
ci sono 2 problemi: uso windows 2000 e la partizione non esiste più.

dici che funziona lo stesso? faccio qualche prova...
esistono altri programmi simili a questo?
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2006, 19:27   #4
Mark0
Senior Member
 
L'Avatar di Mark0
 
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!
Mark0 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 22:23   #5
Furla
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?
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 22:57   #6
71104
Bannato
 
L'Avatar di 71104
 
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");
ti apre un ipotetico volume D: come uno pseudofile in sola lettura.

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 : 06-06-2006 alle 23:00.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 14:02   #7
Furla
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?
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 12:05   #8
Furla
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
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 13:45   #9
Xalexalex
Senior Member
 
L'Avatar di Xalexalex
 
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2503
Quote:
Originariamente inviato da 71104
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");
ti apre un ipotetico volume D: come uno pseudofile in sola lettura.

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

__________________
Xalexalex è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 14:05   #10
Furla
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?
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 14:48   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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;
}
Puoi usare questo codice, se vuoi, estendendolo per leggere tutti i settori del volume e scriverli su un file.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 15:52   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Alessandro::Xalexalex

71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 15:55   #13
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Furla
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
FILE *f serve a dichiarare una variabile f che rappresenta un file descriptor della libreria standard del C; in pratica, la funzione fopen apre un file, e il file descriptor che viene ritornato è ciò che rappresenta quel file e tramite il quale puoi effettuare operazioni su di esso (per esempio letture tramite fread e scritture tramite fwrite). oltre a qualche guida sulla sintassi del C (come ad esempio quella che trovi pure su MSDN) ti consiglio di leggerti anche la guida di queste funzioni: fopen, fread, fwrite, fclose. tutto su MSDN ^^

ciao
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 16:26   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2006, 23:15   #16
71104
Bannato
 
L'Avatar di 71104
 
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
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2006, 14:06   #17
Furla
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!
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2006, 14:36   #18
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
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.
Quote:
... fread() stops reading bytes if an end-of-file or error condition is encountered while reading
stream, or if nitems items have been read. ...
non puó essere che la fread incontri un EOF leggendo in binario ?
__________________
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2006, 15:23   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da trallallero
non puó essere che la fread incontri un EOF leggendo in binario ?
-_-'

i file veri e propri mica finiscono con un vero EOF...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2006, 15:35   #20
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da 71104
-_-'
... cos'é sta roba ?

Quote:
Originariamente inviato da 71104
i file veri e propri mica finiscono con un vero EOF...
cioé ?
__________________
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
SpaceX ha confermato che Flight 14 sar&a...
Googlebook pronto al debutto: Google apr...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
Volvo avvia la produzione dei nuovi cami...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v