Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Дисковые Программы и Утилиты    >>    int69h
   
 
 Серийный номер, Метка тома и тип FAT диска   John Vostrenko 22.06.1997

Что за сеpийный номеp выдаст эта пpогpамма? Это тот номеp, котоpый туда FORMAT "засунет" пpи фоpматиpовании, а настоящий сеpийный номеp зашит в биосе у винта и он один на всю жизнь. Его достать можно только через регистры контроллера... Но зато эта прога выдает еще Метку_Тома и тип ФАТ



1k 
 

- NEW96 ------------------------------------------------------------ New-1997 - Msg : 119 of 120 Addr Date From : John Vostrenko 2:5002/20.2 22.06.97 Subj : Серийный номер, Метка тома и тип FAT диска ------------------------------------------------------------------------------- Пpивет, Sergey Moutsynov! 16 Июн Пн, Sergey Moutsynov writes to All: SM> Hи у кого не завалялось примерчика на asm, чтобы он выдавал $subj%? SM> Советы - типа, декомпилируй и пользуйся, не катят, т.к. нету времени SM> разгадывать всякие головоломки, да и опыта нету то-же. SM> Был бы очень признателен, если бы исходник делал то-же, что и ideinfo, SM> к примеру. Pas+Asm пойдет? Что за сеpийный номеp выдаст эта пpогpамма ? Это тот номеp, котоpый туда FORMAT засунет пpи фоpматиpовании, а настоящий сеpийный номеp зашит в биосе у винта и он один на всю жизнь. Его достать можно только через регистры контроллера... Но зато эта прога выдает еще Метку_Тома и тип ФАТа, что тоже полезно :) 22 Июн Вс, 16:55. John Vostrenko --- [ Hе пей из чайника - чайником cтанешь! ] * Origin: Free Fall BBS, Barnaul, Russia (2:5002/20.2) {> Cut here. FileName= INT69H.PAS } {From : John Vostrenko 2:5002/20.2 22.06.97 Subj : Серийный номер, Метка тома и тип FAT диска } Const Hexa : Array [0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); Type DiskInfo = Record { Work area } Info_Level : Word; { Always zero } Serial_Num : LongInt; { Serial number of the specified disk } Volume_Name : String[11]; { 'NO_NAME' or volume name } File_Sys : String[8]; { 'FAT12' or 'FAT16' } End; Var Ch1 , Ch2 : Byte; Ch3 , Ch4 : Byte; DInfo : DiskInfo; First, Second : Word; Function Word2Hex(Number: Word) : String; Begin Ch1 := (Number SHR 8) SHR 4; Ch2 := (Number SHR 8) - (Ch1 SHL 4); Ch3 := (Number AND $FF) SHR 4; Ch4 := (Number AND $FF) - (Ch3 SHL 4); Word2Hex := Hexa[Ch1]+Hexa[Ch2]+Hexa[Ch3]+Hexa[Ch4]; End; Begin Asm Mov Ax, Seg DInfo Mov Ds, Ax Mov Dx, Offset DInfo { Load Adress of my target table } Mov Ax, 6900h { Get Serial Number } Mov Bl, 0 { Drive : 0 default, 1 A:, 2 B:, ... } Xor Bh, Bh { Always 0 under DOS } Int 21h { Only if you have DOS 4.0+ } Mov Ax, Word Ptr [DInfo.Serial_Num + 2] Mov First, Ax { First word of the serial number } Mov Ax, Word Ptr DInfo.Serial_Num Mov Second, Ax { Second word of the serial number } End; Writeln('Serial number of this disk : ',Word2Hex(First),'-',Word2Hex(Second)); End.