Solved

READ HARD DISK SERIAL NUMBER

Posted on 2000-05-16
13
28,704 Views
Last Modified: 2011-08-18
HOW TO READ REAL SERIAL NUMBER OF HARD DRIVE... IN DOS OR WINDOWS ?

NOT VIRTUAL SERILA NUMBER... REAL SERILA NUMBER OF HARD DRIVE
...
WHAT IS VIRTUAL SERILA NUMBER = ANY SERIAL NUMBER THAT IS ASSING TO HARD DRIVE WHEN USER FORMAT THEM .... EVERYTIME WHEN YOU USE FORMAT SERIAL NUMBER IS DIFFERENT....

HOW TO READ REAL SERIAL NUMBER NOT VIRTUAL SERIAL NUMBER?
0
Comment
Question by:BOKINET
  • 5
  • 4
  • 4
13 Comments
 
LVL 6

Accepted Solution

by:
My name is Mud earned 50 total points
ID: 2816314
Program GetIDEHDDInfo;
USES
  CRT,DOS;
Type
  ArraySTR = Array[0..255] Of Byte;
Const
  WhichDrv: Array[1..2] Of Word = ($A0,$B0);
Var
  NumDrv: Word Absolute $0040:$0075; { BIOS info on how many HDD you have }
  Regs: Registers;
  Data: ArraySTR;
  DataOff: Byte;
  Loop: Integer;

Function GetString(InData: ArraySTR; OffStart,OffEnd: Byte): String;
Var
  TempSTR: String;
  I: Byte;
Begin
  TempSTR:='';
  For I:=OffStart To OffEnd Do
    TempSTR:=TempSTR+Char(InData[I]);
  GetString:=TempSTR;
End;

Begin
  ClrScr;
  WriteLn('You have ',NumDrv,' Hard Disk(s).');
  For Loop:=1 to NumDrv Do
    Begin
      WriteLn('  Info on Hard Disk ',NumDrv,' is:');
      While Port[$01F7] <> $50 Do; { Wait For controller not busy }
      Port[$01F6]:=WhichDrv[Loop]; { Get first/second drive }
      Port[$01F7]:=$EC;            { Get drive info data }
      While Port[$01F7] <> $58 Do; { Wait for data ready }
      For DataOff:=0 To 255 Do     { Read "sector" }
        Data[DataOff]:=Port[$01F0];
      WriteLn('    Model Number: ',GetString(Data,27,46));
      WriteLn('    Serial Number: ',GetString(Data,10,19));
    End;
End.
0
 
LVL 6

Expert Comment

by:My name is Mud
ID: 2828364
Hey!!! how 'bout some feedback??? did it work for you??? HEY!!! Is any body home???
0
 
LVL 3

Expert Comment

by:vikiing
ID: 2833025
>>EVERYTIME WHEN YOU USE FORMAT SERIAL NUMBER IS DIFFERENT....

FORMAT program uses current time to calculate disk number; that's why each time you use FORMAT, srial number differs. BUT both you and your friend, if format a disk simultaneously could (in theory) get the same serial number.

Even you can try this: create a .BAT file and put these commands on it:

TIME <any time you want>
FORMAT <drive>

Execute the BAT file several times, and time will be the same each time you run it.

But I don't know why I think I'm tallking to a wall... :~(
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:BOKINET
ID: 2833051
i made any program in turbo pascal 6.0 that read all information from bios including hard disk serial number (real not from boot sector ) and hard disc... but i need to make the same application that will do the same thing in windows because this pascal program can only work in msdos ... and i am writeing any windows application
0
 

Author Comment

by:BOKINET
ID: 2833062
i made any program in turbo pascal 6.0 that read all information from bios including hard disk serial number (real not from boot sector ) and hard disc type... but i need to make the same application that will do the same thing in windows because this pascal program can only work in msdos ... and i am writing any windows application
0
 
LVL 3

Expert Comment

by:vikiing
ID: 2834956
>>that read all information from bios including hard disk serial number

Disk serial number does NOT come from BIOS.


>>this pascal program can only work in msdos

If it runs in DOS, it can run perfectly under a DOS window from Windoze (in fact, I have Pascal and Basic (both compilers from Borland) programs which perform the same job. And work.
0
 

Author Comment

by:BOKINET
ID: 2835349
not exacli from bios - bios read from hard drive...

0
 
LVL 3

Expert Comment

by:vikiing
ID: 2835461
>>bios read from hard drive

hehehehe... BIOS reads from (and writes to !!) everything, including a diskette [one of the reasons why BIOS means "Basic Input/Output System"]  :) :)
0
 
LVL 6

Expert Comment

by:My name is Mud
ID: 2835971
Can i get my points???
0
 
LVL 6

Expert Comment

by:My name is Mud
ID: 2836477
Why did i get a "B" when you specifically say:

  HOW TO READ REAL SERIAL NUMBER OF HARD DRIVE... IN "DOS" OR WINDOWS?


Just a doubt...

But Thanks... hope the code had help you out...
0
 

Author Comment

by:BOKINET
ID: 2838052
i didn't use your code but is ok..
i had been done with my own code
but i am still looking for code that do the same thing under windows system (via API)
0
 
LVL 3

Expert Comment

by:vikiing
ID: 2838769
>>i am still looking for code that do the same thing under windows system (via API)

If you're looking for a protection system, I'm afraid you're going in the wrong direction; disk "serial" number is not such a thing. In fact, that stupid number can be written as easily as it can be read. ¿Do you know what are one of mi disks' number?: BEBE-CACA (you must know Spanish :)

Thus, if your protection scheme is based on a disk number, anyone can duplicate thge same number on another disk and ¡¡voilà!! your protection system was defeated.

Sorry...
0
 

Author Comment

by:BOKINET
ID: 2839887
he, he ,,, VIKING give me your email
to send you program that read serial number... and see...
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In threads here at EE, each comment has a unique Identifier (ID). It is easy to get the full path for an ID via the right-click context menu. However, we often want to post a short link within a thread rather than the full link. This article shows a…
Riverbed Technology's webinar discusses networking for the cloud era with simplified SD-WAN cloud connectivity.
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question