Chapitre – 16
Développer plus d'utilitaires pour les disques
Introduction
Dans ce chapitre, nous discuterons de la manière d'utiliser les informations des répertoires MBR, DBR, FAT et racine pour développer des programmes utilitaires qui peuvent nous aider à gérer les données, à optimiser le stockage ou à effectuer des tâches de dépannage de disque.
Généralement, ces programmes sont une solution à un problème spécifique. Certains programmes utilitaires et leur programmation ont été abordés dans ce chapitre.
Masquer des partitions
Généralement, l'utilitaire de masquage de partition est utilisé par les utilisateurs qui travaillent sur un tel système informatique utilisé par les utilisateurs. S'il existe de nombreux utilisateurs pour le même ordinateur, il est fort possible que les données d'un autre utilisateur soient lues, volées ou supprimées.
Dans un tel cas, où l'utilisateur a des données importantes ou des informations confidentielles sur le même ordinateur, il peut être disposé à cacher la partition dans laquelle il a ses données de telle sorte que la partition ne soit pas accessible par l'opérateur. système, afin que les autres utilisateurs ne puissent pas y accéder.
Lorsque l'utilisateur souhaite travailler sur le système, il peut accéder à la partition en retour, simplement en affichant la partition. Généralement, ces types d'événements ont lieu dans les institutions professionnelles, où les ordinateurs sont utilisés par de nombreux étudiants, mais les étudiants seniors sont toujours préoccupés par leurs données importantes ou leur travail de projet. Comme par méconnaissance, le nouvel étudiant peut endommager voire supprimer ses données.
Comment la partition devient masquée
Le tableau suivant représente le format de partition dans la table de partition du MBR :
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H, The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (for complete list of partition indicator bytes, refer the chapter “Logical Approach to Disks and OS” discussed earlier in this book) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Absolute Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Absolute Sector number of End of the Partition |
4 Bytes |
Number of Sectors in the Partition |
|
|
Total = 16 Bytes |
|
Au décalage 04H, dans chaque entrée de partition, il y a un octet indicateur de système de fichiers. Cet octet indicateur représente le type de système de fichiers de cette partition. Si la valeur de cet octet est modifiée, l'identité de la partition est modifiée.
Par exemple, la valeur de l'octet d'indicateur de partition pour "DOS 12-Bit FAT" est 0x01. Si cette valeur est changée en 0x11, l'identité du système de fichiers dans l'entrée de la table de partition est changée en "Hidden DOS 12-Bit FAT" (pour la liste complète des octets indicateurs de partition, reportez-vous au chapitre "Approche logique des disques et du système d'exploitation" discuté plus haut dans ce livre).
Le tableau ci-dessous montre quelques exemples supplémentaires d'octet d'indicateur de système de fichiers pour certains types de partition :
Partition type indicator Byte |
Description of File System of Partition |
0x01 |
DOS 12–bit FAT |
0x11 |
Hidden DOS 12–bit FAT |
0x04 |
DOS 16–bit FAT (<=32MB) |
0x14 |
Hidden DOS 16–bit FAT (<=32MB) |
0x05 |
DOS Extended |
0x15 |
Hidden DOS Extended |
0x06 |
DOS 16–bit big (> 32MB) |
0x16 |
Hidden DOS 16–bit big (> 32MB) |
0x07 |
NTFS |
0x17 |
Hidden NTFS |
0x0B |
Windows FAT32 |
0x1B |
Hidden Windows FAT32 |
0x0C |
Windows FAT32 (LBA) |
0x1C |
Hidden Windows FAT32 (LBA) |
0x0E |
Windows FAT16 (LBA) |
0x1E |
Hidden Windows FAT16 (LBA) |
0x0F |
Windows Extended |
0x1F |
Hidden Windows Extended |
Ici, nous voyons que la partition cachée correspondante pour n'importe quel système de fichiers est trouvée en ajoutant la valeur 0x10 à son octet d'indicateur système.
Bien que ce ne soit pas la règle absolue pour masquer la partition, cela fonctionne même pour la plupart du système de fichiers. La raison en est que lorsque nous modifions la valeur de l'octet indicateur de partition, l'identité du système de fichiers dans l'entrée de la table de partition est modifiée. Et il est très rare que le nouveau système de fichiers soit également pris en charge par le même système d'exploitation.
Programme d'écriture pour masquer la partition
Le programme donné ensuite est utilisé pour masquer la partition en utilisant l'entrée de partition de cette partition à partir de la table de partition du MBR. Si vous souhaitez masquer d'autres partitions logiques dans le volume étendu, vous devez accéder aux MBR étendus.
Le codage du programme a été donné ensuite :
/* Programme pour masquer la partition à l'aide de l'entrée de table de partition de cette partition à partir du MBR */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data Buffer to read-Write the
Sector information */
clrscr();
dinfo.drive = 0x80; /* drive number for First
Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
/* Lire le premier secteur du disque */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition Entries are,
0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);cprintf("Partition Entry in MBR is as
follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* obtenir l'entrée utilisateur pour masquer la partition */
gotoxy(1,15);
printf("Enter The partition no. you want to hide,
Or Press any other key to Exit... ");
tohide=getche();
switch(tohide)
{
case '1': /* Hide First Partition in partition Table */
dbuf[450] = dbuf[450] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '2': /* Hide second Partition in partition Table */
dbuf[466] = dbuf[466]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '3': /* Hide third Partition in partition Table */
dbuf[482] = dbuf[482] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '4': /* Hide Fourth Partition in partition Table */
dbuf[498] = dbuf[498]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Commentaires sur le codage :
Le programme lit les octets indicateurs du système de fichiers des quatre entrées de partition dans la table de partition du MBR. La fonction showtype() est utilisée pour afficher le nom du système de fichiers pour la valeur correspondante de l'octet indicateur du système de fichiers.
L'utilisateur sélectionne la partition à masquer dans le menu affiché à l'écran, puis 16 (0x10) est ajouté à la valeur de l'octet indicateur du système de fichiers de cette partition pour la masquer.
Le codage de la fonction showtype( ) est le suivant :
/* Fonction pour afficher le nom du système de fichiers correspondant à la valeur de l'octet indicateur du système de fichiers */
showtype(i)
{
switch (i)
{
case 0x00 :cprintf("Empty"); break;
case 0x01 :cprintf("DOS 12-bit FAT"); break;
case 0x02 :cprintf("XENIX root"); break;
case 0x03 :cprintf("XENIX usr"); break;
case 0x04 :cprintf("DOS 16-bit <32M"); break;
case 0x05 :cprintf("Extended"); break;
case 0x06 :cprintf("DOS 16-bit >=32M"); break;
case 0x07 :cprintf("OS/2 HPFS"); break;
case 0x08 :cprintf("AIX"); break;
case 0x09 :cprintf("AIX bootable"); break;
case 0xa :cprintf("OS/2 Boot Manag"); break;
case 0xb :cprintf("Win95/98/ME FAT32"); break;
case 0xc :cprintf("Win95/98/ME FAT32 (LBA)"); break;
case 0xd :cprintf("Win95 FAT16"); break;
case 0xe :cprintf("Win95 FAT16 (LBA)"); break;
case 0xf :cprintf("Win95 Extended"); break;
case 0x11 :cprintf("Hidden FAT-12");break;
case 0x12 :cprintf("Compaq Diagnostics");break;
case 0x14 :cprintf("Hidden FAT-16 (<32)");break;
case 0x15 :cprintf("Hidden Extended");break;
case 0x16 :cprintf("Hidden FAT-16");break;
case 0x17 :cprintf("NTFS"); break;
case 0x40 :cprintf("Venix 80286"); break;
case 0x51 :cprintf("Novell?"); break;
case 0x52 :cprintf("Microport"); break;
case 0x63 :cprintf("GNU HURD"); break;
case 0x64 :
case 0x65 :cprintf("Novell Netware"); break;
case 0x75 :cprintf("PC/IX"); break;
case 0x80 :cprintf("Old MINIX"); break;
case 0x81 :cprintf("Linux/MINIX"); break;
case 0x82 :cprintf("Linux swap"); break;
case 0x83 :cprintf("Linux native"); break;
case 0x85 :cprintf("Linux Extended"); break;
case 0x93 :cprintf("Amoeba"); break;
case 0x94 :cprintf("Amoeba BBT"); break;
case 0xa5 :cprintf("BSD/386"); break;
case 0xa6 :cprintf("OpenBSD"); break;
case 0xa7 :cprintf("NEXTSTEP"); break;
case 0xb7 :cprintf("BSDI fs"); break;
case 0xb8 :cprintf("BSDI swap"); break;
case 0xc7 :cprintf("Syrinx"); break;
case 0xdb :cprintf("CP/M"); break;
case 0xe1 :cprintf("DOS access"); break;
case 0xe3 :cprintf("DOS R/O"); break;
case 0xf2 :cprintf("DOS secondary"); break;
case 0xff :cprintf("BBT"); break;
default :cprintf("UNKOWN");
}
return 0;
}
Programme d'écriture pour afficher la partition
Le programme pour afficher la partition cachée fonctionne juste à l'opposé du programme qui masque le programme. Dans ce programme, nous soustrayons 16 (0x10) de la valeur de l'octet indicateur du système de fichiers de la partition cachée.
Le codage du programme est le suivant :
/* Programme pour afficher la partition masquée par le programme précédent */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data buffer */
clrscr();
dinfo.drive = 0x80; /* drive number for
First Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);
cprintf("Partition Entry in MBR is as follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* Obtenez l'entrée Utiliser pour afficher la partition */
gotoxy(1,15);printf("Enter The partition no., Which to
unhide, Or Press any other key to
Exit... ");
tohide=getche();
switch(tohide)
{
/* Afficher la première partition de la table de partition */
case '1':
dbuf[450] = dbuf[450] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide second partition of partition table */
case '2':
dbuf[466] = dbuf[466]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide third partition of partition table */
case '3':
dbuf[482] = dbuf[482] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide fourth partition of partition table */
case '4':
dbuf[498] = dbuf[498]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Commentaires sur le programme
Soyez prudent lorsque vous indiquez le numéro de partition à afficher. Si le numéro de partition est entré par erreur par erreur, les informations du système de fichiers de cette partition seront modifiées et la partition peut devenir inaccessible. Cependant, le programme décrit précédemment pour masquer les partitions peut vous aider à guérir l'octet indicateur du système de fichiers de cette partition.
Programme d'écriture pour supprimer la partition
Le programme pour supprimer la partition est utilisé à des fins de dépannage. Par exemple, supposons que vous ayez les partitions du système de fichiers FAT32 sur votre disque. Vous avez maintenant décidé d'installer simultanément le système d'exploitation LINUX sur votre disque.
Le cas échéant, l'installation du système d'exploitation est interrompue entre-temps, au moment où les modifications ont été apportées à la table de partition du MBR. Dans de tels cas, il existe de nombreuses possibilités que la partition dans laquelle vous alliez installer l'autre système d'exploitation devienne inaccessible.
Dans ce cas, l'espace disque de la partition perdue devient inutile car inaccessible. Cependant, si nous supprimons de toute façon les informations de partition de cette partition de la table de partition, nous pouvons à nouveau rendre cet espace utilisable à l'aide de la commande FDISK de DOS.
Le programme pour supprimer l'entrée de partition de la table de partition du MBR a été donné ensuite :
/* Programme pour supprimer la deuxième entrée de partition de la table de partition du MBR */
# include <bios.h>
/* structure to read the partition entry from partition table */
struct partition
{
/* Active Partition Byte */
unsigned char bootable ;
/* Starting Head */
unsigned char start_side ;
/* combination of Starting sector and cylinder number */
unsigned int start_sec_cyl ;
/* File system Indicator Byte */
unsigned char parttype ;
/* Ending Head */
unsigned char end_side ;
/* combination of Starting sector and cylinder number */
unsigned int end_sec_cyl ;
/* Relative Sector Number */
unsigned long part_beg ;
/* Partition length in sectors */
unsigned long plen ;
} ;
/* Structure to read-write MBR */
struct part
{
/* IPL (Initial Program Loader) */
unsigned char master_boot[446] ;
/* Partition table */
struct partition pt[4] ;
/* Magic Number */
int lasttwo ;
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* display the information of
Partition table */
getch();
p.pt[1].bootable = 0;
p.pt[1].start_side = 0 ;
p.pt[1].start_sec_cyl = 0 ;
p.pt[1].parttype = 0;
p.pt[1].end_side = 0;
p.pt[1].end_sec_cyl = 0;
p.pt[1].part_beg = 0;
p.pt[1].plen = 0;
printf("\n\n\n After Deleting the Second Partition
Entry From MBR Partition Table,");
printf("\n The Partition Table will Be Changed as
Follows: ");
/* To Delete Second Partition Information from partition
table of MBR Remove the forward slashes from the
biosdisk( ) function. Do not use Carelessly, Partition
information of Second Partition of Partition Table will
be Erased Completely. */
////// biosdisk ( 3, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* Display the information of partition
table after modification */
getch();
}
Commentaires sur le programme :
Décommentez la fonction biosdisk ( 3, 0x80, 0, 0, 1, 1, &p ) pour supprimer la deuxième partition de la table de partition du MBR.
Pour supprimer la partition, tous les paramètres de celle-ci sont définis sur 0 dans l'entrée de la table de partition dans le MBR. Rappelez-vous toujours que si vous supprimez la partition étendue, toutes les partitions logiques de cette partition étendue deviendront également inaccessibles.
La fonction display( ) est utilisée pour afficher la table de partition du MBR. Le codage de la fonction est le suivant :
/* Fonction pour afficher la table des partitions du MBR */
display()
{
unsigned int s_sec, s_trk, e_sec, e_trk, i, t1, t2 ;
char type[20], boot[5] ;
printf("\n\nPart. Boot Starting location Ending Location
Relative Number of");
printf("\nType Side Cylinder Sector Side Cylinder
Sector Sectors Sectors\n");
for ( i = 0 ; i <= 3 ; i++ )
{
if ( p.pt[i].bootable == 0x80 )
strcpy ( boot, "Yes" ) ;
else
strcpy ( boot, "No" ) ;
switch ( p.pt[i].parttype )
{
case 0x00 :
strcpy ( type, "Unused" ) ; break ;
case 0x1 :
strcpy ( type, "FAT12" ) ; break ;
case 0x2 :
strcpy ( type, "Xenix" ) ; break ;
case 0x3 :
strcpy ( type, "Xenix:usr" ) ; break ;
case 0x4 :
strcpy ( type, "FAT16<32M" ) ; break ;
case 0x5 :
strcpy ( type, "DOS-Ext." ) ; break ;
case 0x6 :
strcpy ( type, "FAT16>32M" ) ; break ;
case 0x7 :
strcpy ( type, "NTFS" ) ; break ;
case 0x0b :
strcpy ( type, "FAT32" ) ; break ;
case 0x0c :
strcpy ( type, "FAT32-LBA" ) ; break ;
case 0x0d :
strcpy ( type, "VFAT16" ) ; break ;
case 0x0e :
strcpy ( type, "VFAT16-LBA" ) ; break ;
case 0x0f :
strcpy ( type, "FAT EXT" ) ; break ;
case 0x17 :
strcpy ( type, "HPFS" ) ; break ;
case 0x81 :
strcpy ( type, "Old LINUX" ) ; break ;
case 0x82 :
strcpy ( type, "LinuxSwap" ) ; break ;
case 0x83 :
strcpy ( type, "LinuxNative" ) ; break ;
case 0x85 :
strcpy ( type, "Linux Ext." ) ; break ;
default :
strcpy ( type, "Unknown" ) ; break ;
}
s_sec = ( p.pt[i].start_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].start_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].start_sec_cyl & 0x00c0 ) << 2 ;
s_trk = t1 | t2 ;
e_sec = ( p.pt[i].end_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].end_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].end_sec_cyl & 0x00c0 ) << 2 ;
e_trk = t1 | t2 ;
printf ( "\n%6s %3s", type, boot ) ;
printf ( "%4d %6d %8d", p.pt[i].start_side,
s_trk,s_sec ) ;
printf ( "%7d %6u %8u", p.pt[i].end_side, e_trk,
e_sec ) ;
printf ( " %10lu %10lu", p.pt[i].part_beg,
p.pt[i].plen ) ;
}
return 0;
}
Formatage de la disquette "Track 0 Bad"
Ce programme est utilisé pour formater les disquettes qui ont des secteurs défectueux sur leur piste 0 et lorsqu'elles sont formatées avec DOS ou Windows, afficher des messages d'erreur comme "Track 0 BAD". Cependant, vous pouvez également l'utiliser pour formater des disquettes normales.
Le codage du programme a été donné dans le disque inclus avec ce livre avec le nom "TTFORMAT.C". La logique de fonctionnement du programme est la même que celle du programme publié dans le magazine informatique PCQUEST, dans l'édition de février 2003.
Dans ce programme, nous essayons de rendre ce type de disquettes réutilisables en les formatant. Le programme semble que vous pouvez gérer la disquette même avec des secteurs défectueux dessus. Cependant, si le premier secteur du disque est défectueux, la disquette ne peut pas être formatée.
Le programme réécrit toutes les informations DBR, FAT et Root Directory. S'il y a des secteurs défectueux à la surface du disque, ils sont marqués comme défectueux en FAT.
Dans le codage du programme, la structure BPB est utilisée pour écrire le bloc de paramètres BIOS du DBR. La structure boot_sector est utilisée pour écrire le DBR du disque. La structure address_field est utilisée pour interagir avec le nombre de cylindres, de têtes et de secteurs par piste et avec la taille du secteur.
Différentes fonctions utilisées dans le codage du programme et leur description ont été données dans le tableau ci-dessous.
Le numéro de série du volume de la disquette est calculé par le DOS en fonction de la date et de l'heure actuelles de l'horloge système.
La première partie du numéro de série est calculée par la somme de l'heure (secondes et centièmes de seconde) et de la date (mois et jour). La deuxième partie du numéro de série est égale à la somme de l'heure (heures et minutes) et de la date (année).
Tous les calculs sont effectués en système hexadécimal. Par exemple, supposons que vous ayez formaté la disquette dans un environnement DOS à 11:16:28:65 le 23/10/2003. Calculons maintenant le numéro de série du disque.
The time in (seconds and Hundredths of seconds) format is
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Similarly, date in (month and day) format is
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Similarly, time in (hours and minutes) format is,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
And the year will be
= 2003
= 07D3
Maintenant, calculons le numéro de série de la disquette, selon la description donnée précédemment. La première partie du numéro de série sera bien (1C41 + 0A17) = 2658 et la deuxième partie du numéro de série sera (0B10 + 07D3) = 12E3.
Écrire l'outil d'édition de disque
Le codage du programme d'édition de disque a été donné dans le disque inclus avec ce livre, avec le nom de fichier "TTEDITOR.C". Vous pouvez utiliser ce programme pour analyser la surface des disques durs ou des disquettes. Même la plupart de l'étude lors de l'écriture de ce livre, j'ai utilisé TTEDITOR pour analyser la surface du disque ou effectuer les modifications du disque.
Certaines des tâches importantes que ce programme d'édition peut effectuer sont les suivantes :
- Lire les informations par secteur de la surface des disques durs et des disquettes.
- Écrire la sauvegarde de n'importe quel secteur dans un fichier.
- Restaurer les données du secteur à partir du fichier.
- Modifier l'octet unique.
- Calculatrice hexadécimale à décimale et binaire.
Le programme utilise les fonctions biosdisk( ) et _bios_disk( ) pour accéder aux disques. Si vous souhaitez analyser le disque au-delà des 8,4 Go, modifiez le programme avec l'utilisation d'extensions d'INT 13H. La description des fonctions utilisées dans le programme a été donnée dans le tableau suivant :
Function |
Description |
bkground( ) |
creates the back ground and frame of first screen |
clsline( ) |
Used to clear the complete row from the screen specified by row number. |
refresh( ) |
Function to recall all the display functions on the screen |
writetofile( ) |
Function to write the data of a sector to user defined file. |
writetosector( ) |
Function to restore the sector from specified file. |
msgdisp( ) |
Function to display messages on the screen. |
modify( ) |
Function to modify a single byte of any sector, specified by user. |
frame( ) |
Function to draw the frame structure of sector display |
dispmax( ) |
Display maximum CHS number of the disk (Valid Up to 8.4 GB Disk) |
display( ) |
Display the sector and information on the screen. |
hextodec( ) |
Function to Calculate hexadecimal number to corresponding decimal and binary numbers. |
Page modifiée le: 09/03/2022