|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2498
|
[C (ma anche PHP)] TOC e MBR...
Ave a tutti o sapienti...
Volevo sapere come si può in linguaggio C (e eventualmente in PHP) accedere al MBR di un disco, o al TOC di un CD-ROM. (Tra parentesi.. TOC e MBR sono la stessa cosa + o -??? o no?) Sperando di non aver detto una cacaus, attendo risposte... Grazie in anticipo... Alex
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2498
|
up! nessuno???
__________________
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Quote:
![]() Da qualche parte avevo trovato un piccolo howto per scrivere sul mbr, ovvero per metterci sopra del codice scritto in assembly, ma mi sa che non e' quello che cerchi.
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
MBR = Master Boot Record, è il primo settore fisico (512 bytes) di un hard-disk, che contiene una sequenza di codice in linguaggio assembly per avviare il sistema operativo da una partizione e contiene inoltre una tabella delle partizioni di 4 elementi. Vedi anche: Master boot record - Wikipedia TOC = Table Of Contents, è una area di un disco ottico (CD-ROM, CD audio, ecc...) che contiene le informazioni sul layout del disco (numero di tracce, durata, ecc....). Vedi anche: Optical disc authoring - Wikipedia. Leggere queste informazioni è possibile ma è necessario usare funzioni specifiche e altamente system-dependent. Cioè si devono usare delle funzioni non portabili e specifiche in base al sistema operativo su cui si opera. Sui sistemi Windows è abbastanza semplice leggere il MBR di un hard-disk. Ecco il codice di una applicazione Win32 console: Codice:
#define STRICT #include <windows.h> #include <tchar.h> #include <stdio.h> DWORD ReadMbrSector (INT iDrive, LPBYTE lpBufSector) { DWORD dwRet = ERROR_SUCCESS; TCHAR szDevName[32]; HANDLE hDevice; DWORD dwPos, dwRead; wsprintf (szDevName, _T("\\\\.\\PHYSICALDRIVE%d"), iDrive); 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, lpBufSector, 512, &dwRead, NULL) == FALSE) dwRet = GetLastError (); } else dwRet = GetLastError (); CloseHandle (hDevice); } else dwRet = GetLastError (); return dwRet; } int _tmain (int argc, TCHAR *argv[]) { BYTE bMbrSector[512]; DWORD dwRet; dwRet = ReadMbrSector (0, bMbrSector); if (dwRet == ERROR_SUCCESS) { /* ... MBR letto ... */ } else _tprintf (_T("Errore %ld\n"), dwRet); return 0; } ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 03-02-2006 alle 12:59. |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Alessandro::Xalexalex, come speri di accedere al MBR di un disco da PHP?
![]() E poi, per che scopo? ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2006
Città: Pisa
Messaggi: 2498
|
Il mio progetto? Formattazione (rapida
![]() ![]() Progettino ambizioso...Ovviamente scherzo... Scherzi a parte, visto che uso su winzozz il PHP anche da linea di comando, volevo sapere se c'era modo. Cmq grazie a andbin x la risposta.
__________________
![]() |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quindi basterebbe scrivere una estensione e configurarla all'interno del PHP per avere ad esempio una nuova funzione chiamata read_mbr_sector(). ![]() Il limite/problema è semmai, come ho detto, che per accedere a quel livello di informazioni è necessario essere amministratore ma credo che si possa aggirare in un modo o nell'altro. Purtroppo non conosco (e non ho mai avuto modo di vedere) nei dettagli come si estende il PHP. In passato ho avuto modo di fare qualcosa a livello di estensioni per il TCL e credo che sia una cosa molto simile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:35.