Помощь - Поиск - Пользователи - Календарь
Полная версия: Серийный номер тома ...
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Altair

серийнvй номер тома: xxxx-xxxx


где xxxx-xxxx число.
Эта информация выводится после завершения форматирования командой format A:
Вопросы:
1. У каждой дискеты уникальный серийный номер?
То есть понятно, что в мире найдется такая дискета, что ее номер будет совпадать с выбранной.
хотя ... xxxxxxxx число перестановок огромно ... не знаю сколько дискет в мире.
2. Где храниться этот номер на дискете?
ясно что он храниться где-то на записываемой части данных. Возникает 3 вопрос:
3. Можно его поменять?
Видимо можно, исходя из того, что он где-то записан, значит можно переписать его ...
SKVOZNJAK
2 Ты работаешь с асмой, в отличи от меня smile.gif Значит тебе и писать низкоуровневую прогу для чтения дискет с доступом к конкретной дорожке, сектору. Желательно под реальный дос.

3 Попробуй утилиту дубликации дискет.
Altair
Ага, все верно, эта инфа храниться на дискете, и ее можно изменять. При побитном копировании дискеты, номер диска тоже копируется.
P@sh@
это всего лишь одно из полей данных в загрузочном секторе диска, таких как метка диска, количество кластеров, секторов на кластер и т.д... у меня где-то была прога, которая всю эту инфу показывает. конкретно серийный номер - это не строка, а 32-битное число, выводится обычно в 16-ричном формате... не знаю, как оно генерится, но явно не счетчиком... скорее рандомом, по таймеру например
BlackShadow
P@sh@, абсолютно с тобой согласен.
Серийный номер тома - это не нечто мифическое и неуловимое, а простая банальная запись в буте. При желании можно туда накотать всё, что угодно.
Altair
BlackShadow, спасибо, все уже понял. Вобщем это так сказать флейм на диске smile.gif
APAL
Не флейм, а служебная информация!

Во времена, когда не было CD-дисков информацию носили дискетах, в количестве от 1 до 100 !!! я написал прогу, которая идентифицировала каждую дискету и вела учет "где-что находится".
И помоему (уже и не помню точно), именно по тому и идентифицировал.
Altair
Эх, я не застал тех времен... sad.gif
как жаль, это были времена царствования ДОСа. ... эх sad.gif
ZeroLink
С помощью следущей конители можно считать загрузочный сектор дискеты (и не только) и там я нашел метку тома, какой FAT, но серийник так и не обнаружил. Если найдеш напиши!

Код
Uses DOS;
var
 a  : Integer;
 Buf: array [1..512] of Byte;
 Reg: Registers;
 f  : Text;

Procedure ReadSector(Disk,Head: Byte;CSec: Word;var Buf);
begin
 with Reg do
   begin
     ah := 2;            {Операция чтения}
     dl := Disk;         {Номер привода}
     dh := Head;         {Номер головки}
     cx := CSec;         {Цилиндр/сектор}
     al := 1;            {Читать один сектор}
     es := seg(Buf);
     bx := ofs(Buf);
     Intr($13,Reg);
   end;
end;

begin
 ReadSector(0,0,1,Buf);
 Writeln;Writeln;
 Assign(f, 'ser_numb.buf');
 ReWrite(f);
 for a:=1 to 512 do
  begin
    write(Buf[a]);writeln('  *-*  ',chr(Buf[a]));
    write(f,Buf[a]);writeln(f,'  *-*  ',chr(Buf[a]));
  end;
 Writeln;
 Close(f);
 Readln;
end.


А с помощью это процедуры можно записать в главный
загрузочный сектор содержимое Buf

Код
Procedure SaveInBoot(var Buf);
begin
 with Reg do
   begin
     ah := 3;                  {Операция записи}
     al := 1;                  {Кол-во секторов}
     dl := 0;                  {1-й ГД}
     dh := 0;                  {Головка 0}
     cx := 1;                  {1-й сектор 0-й дорожки}
     es := seg(Buf);
     bx := ofs(Buf);
     Intr($13,Reg);
   end;
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.