🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.deployment
Article #263

Re: software protection

#263
From: zhan wei ming
Date: Thu, 30 Sep 2004 16:38
152 lines
5968 bytes
But I cannot get diskid using the downloaded code. it always get error
although I can get the disk info using the diskid32.exe.

the function is attached below,

long GetDiskID()
{
//  Windows NT, Windows 2000, Windows XP - admin rights not required

   int done = FALSE;
   int drive = 0;

   //for (drive = 0; drive < MAX_IDE_DRIVES; drive++)
   {
      HANDLE hPhysicalDriveIOCTL = 0;

         //  Try to get a handle to PhysicalDrive IOCTL, report failure
         //  and exit if can't.
      char driveName [256];

      sprintf (driveName, "\\\\.\\PhysicalDrive%d", drive);

         //  Windows NT, Windows 2000, Windows XP - admin rights not
required
      hPhysicalDriveIOCTL = CreateFile (driveName, 0,
                               FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                               OPEN_EXISTING, 0, NULL);
      // if (hPhysicalDriveIOCTL == INVALID_HANDLE_VALUE)
      //    printf ("Unable to open physical drive %d, error code: 0x%lX\n",
      //            drive, GetLastError ());

      if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
      {
         STORAGE_PROPERTY_QUERY query;
         DWORD cbBytesReturned = 0;
         char buffer [10000];

         memset ((void *) & query, 0, sizeof (query));
         query.PropertyId = StorageDeviceProperty;
         query.QueryType = PropertyStandardQuery;

         memset (buffer, 0, sizeof (buffer));

         if ( DeviceIoControl (hPhysicalDriveIOCTL,
IOCTL_STORAGE_QUERY_PROPERTY,
                   & query,
                   sizeof (query),
               & buffer,
               sizeof (buffer),
                   & cbBytesReturned, NULL) )
         {
                 STORAGE_DEVICE_DESCRIPTOR * descrip =
(STORAGE_DEVICE_DESCRIPTOR *) & buffer;
                 char serialNumber [1000];

                 strcpy (serialNumber,
                  flipAndCodeBytes ( & buffer [descrip ->
SerialNumberOffset]));
                if (0 == HardDriveSerialNumber [0] &&
      //  serial number must be alphanumeric
               //  (but there can be leading spaces on IBM drives)
                 (isalnum (serialNumber [0]) || isalnum (serialNumber
[19])))
                  strcpy (HardDriveSerialNumber, serialNumber);
          }
          else
         {
                //my problem��always enter here!!!
                DWORD err = GetLastError ();
          }

          memset (buffer, 0, sizeof (buffer));


         CloseHandle (hPhysicalDriveIOCTL);
      }
   }

   long id = 0;

   if (HardDriveSerialNumber [0] > 0)
   {
      char *p = HardDriveSerialNumber;

      //WriteConstantString ("HardDriveSerialNumber",
HardDriveSerialNumber);

         //  ignore first 5 characters from western digital hard drives if
         //  the first four characters are WD-W
      if ( ! strncmp (HardDriveSerialNumber, "WD-W", 4)) p += 5;
      for ( ; p && *p; p++)
      {
         if ('-' == *p) continue;
         id *= 10;
         switch (*p)
         {
            case '0': id += 0; break;
            case '1': id += 1; break;
            case '2': id += 2; break;
            case '3': id += 3; break;
            case '4': id += 4; break;
            case '5': id += 5; break;
            case '6': id += 6; break;
            case '7': id += 7; break;
            case '8': id += 8; break;
            case '9': id += 9; break;
            case 'a': case 'A': id += 10; break;
            case 'b': case 'B': id += 11; break;
            case 'c': case 'C': id += 12; break;
            case 'd': case 'D': id += 13; break;
            case 'e': case 'E': id += 14; break;
            case 'f': case 'F': id += 15; break;
            case 'g': case 'G': id += 16; break;
            case 'h': case 'H': id += 17; break;
            case 'i': case 'I': id += 18; break;
            case 'j': case 'J': id += 19; break;
            case 'k': case 'K': id += 20; break;
            case 'l': case 'L': id += 21; break;
            case 'm': case 'M': id += 22; break;
            case 'n': case 'N': id += 23; break;
            case 'o': case 'O': id += 24; break;
            case 'p': case 'P': id += 25; break;
            case 'q': case 'Q': id += 26; break;
            case 'r': case 'R': id += 27; break;
            case 's': case 'S': id += 28; break;
            case 't': case 'T': id += 29; break;
            case 'u': case 'U': id += 30; break;
            case 'v': case 'V': id += 31; break;
            case 'w': case 'W': id += 32; break;
            case 'x': case 'X': id += 33; break;
            case 'y': case 'Y': id += 34; break;
            case 'z': case 'Z': id += 35; break;
         }
      }
   }

   return id;

}


"Vladimir Stefanovic" <spam@not.needed> wrote in message
news:415afa73@newsgroups.borland.com...
> > does the diskid32 support windows xp?
>
> Of course...
>
> Best regards,
> Vladimir Stefanovic
>
>
>
Technical Details
Message-ID: <415c36a7@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!gatel-ffm!gatel-ffm!194.25.134.126.MISMATCH!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <4156396e@newsgroups.borland.com> <41565a41@newsgroups.borland.com> <41598a43@newsgroups.borland.com> <415afa73@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f8e54,49c3dd80669ecd88
X-Google-Attributes: gidf8e54,public
X-Google-Language: ENGLISH,ASCII
From: "zhan wei ming" <zhanweiming@hotmail.com>
Newsgroups: borland.public.cppbuilder.deployment
References: <4156396e@newsgroups.borland.com> <41565a41@newsgroups.borland.com> <41598a43@newsgroups.borland.com> <415afa73@newsgroups.borland.com>
Subject: Re: software protection
Date: Fri, 1 Oct 2004 00:38:53 +0800
Lines: 154
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1409
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409
NNTP-Posting-Host: 211.136.158.33
Message-ID: <415c36a7@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1096562343 211.136.158.33 (30 Sep 2004 09:39:03 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!proxad.net!gatel-ffm!gatel-ffm!194.25.134.126.MISMATCH!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail