Esta es la manera mas simple que he encontrado para el extractor (ejecutable ms-dos):
fgets(filenm, 14, data_ptr );//nombre de archivo
fgets ( start, 12, data_ptr); // inicio de archivo
fgets( size, 12, data_ptr); // tamaño
size_long=atol(size); // convertir a
start_long=atol(start); // decimal
fseek(file_ptr, start_long, SEEK_SET); // mover puntero a inicio
output_ptr=(fopen(filenm, "wb")); // crear nuevo fichero
count=0;
/////////////////// Crear el fichero desde la posicion inicial del archivo hasta completar el tamaño ///////////
do
{
fread (&Byte1,sizeof (char), 1, file_ptr); // Leer un byte del archivo
fread (&Byte2,sizeof (char), 1, file_ptr);
fwrite (&Byte1,sizeof (char), 1, output_ptr);
fwrite (&Byte2,sizeof (char), 1, output_ptr);
count=count+2;
}while (count
fclose(output_ptr);
Usar un loop hasta extraer todos los archivos.
Venga que es facilillo