Уникальное значения

Тема в разделе "WASM.WIN32", создана пользователем seritorp, 8 ноя 2007.

  1. seritorp

    seritorp New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2007
    Сообщения:
    1
    есть ли такое уникальное значени,
    которое генерирует винда при установке, (хэш или ещё чего?)

    спасибо
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    seritorp GUID
     
  3. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    SID пользователя.
     
  4. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Дата установки ОС. Там вплоть до секунд.
     
  5. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Все это хорошо в определенной степени, пока не сделали образ диска и не склонировали на другой комп.
     
  6. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    ИД винта - не клонируется :))
     
  7. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Так вопрос про винду был вроде.
     
  8. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    как его можно прочитать?
     
  9. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Из исходника getadmin:

    Код (Text):
    1. BOOL
    2. GetAccountSid(
    3.     LPTSTR SystemName,
    4.     LPTSTR AccountName,
    5.     PSID *Sid
    6.     )
    7. {
    8.     LPTSTR ReferencedDomain=NULL;
    9.     DWORD cbSid=128;    // initial allocation attempt
    10.     DWORD cbReferencedDomain=16; // initial allocation size
    11.     SID_NAME_USE peUse;
    12.     BOOL bSuccess=FALSE; // assume this function will fail
    13.  
    14.     __try {
    15.  
    16.     //
    17.     // initial memory allocations
    18.     //
    19.     if((*Sid=HeapAlloc(
    20.                     GetProcessHeap(),
    21.                     0,
    22.                     cbSid
    23.                     )) == NULL) __leave;
    24.  
    25.     if((ReferencedDomain=(LPTSTR)HeapAlloc(
    26.                     GetProcessHeap(),
    27.                     0,
    28.                     cbReferencedDomain
    29.                     )) == NULL) __leave;
    30.  
    31.     //
    32.     // Obtain the SID of the specified account on the specified system.
    33.     //
    34.     while(!LookupAccountName(
    35.                     SystemName,         // machine to lookup account on
    36.                     AccountName,        // account to lookup
    37.                     *Sid,               // SID of interest
    38.                     &cbSid,             // size of SID
    39.                     ReferencedDomain,   // domain account was found on
    40.                     &cbReferencedDomain,
    41.                     &peUse
    42.                     )) {
    43.         if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
    44.             //
    45.             // reallocate memory
    46.             //
    47.             if((*Sid=HeapReAlloc(
    48.                         GetProcessHeap(),
    49.                         0,
    50.                         *Sid,
    51.                         cbSid
    52.                         )) == NULL) __leave;
    53.  
    54.             if((ReferencedDomain=(LPTSTR)HeapReAlloc(
    55.                         GetProcessHeap(),
    56.                         0,
    57.                         ReferencedDomain,
    58.                         cbReferencedDomain
    59.                         )) == NULL) __leave;
    60.         }
    61.         else __leave;
    62.     }
    63.  
    64.     //
    65.     // Indicate success.
    66.     //
    67.     bSuccess=TRUE;
    68.  
    69.     } // finally
    70.     __finally {
    71.  
    72.     //
    73.     // Cleanup and indicate failure, if appropriate.
    74.     //
    75.  
    76.     HeapFree(GetProcessHeap(), 0, ReferencedDomain);
    77.  
    78.     if(!bSuccess) {
    79.         if(*Sid != NULL) {
    80.             HeapFree(GetProcessHeap(), 0, *Sid);
    81.             *Sid = NULL;
    82.         }
    83.     }
    84.  
    85.     } // finally
    86.  
    87.     return bSuccess;
    88. }
    Приводим к текстовому виду.

    Код (Text):
    1. // nearly straight from the SDK
    2. BOOL Sid2Text( PSID ps, char *buf, int bufSize )
    3. {
    4.  PSID_IDENTIFIER_AUTHORITY psia;
    5.  DWORD dwSubAuthorities;
    6.  DWORD dwSidRev = SID_REVISION;
    7.  DWORD i;
    8.  int n, size;
    9.  char *p;
    10.  
    11.  // Validate the binary SID.
    12.  
    13.  if ( ! IsValidSid( ps ) )
    14.   return FALSE;
    15.  
    16.  // Get the identifier authority value from the SID.
    17.  
    18.  psia = GetSidIdentifierAuthority( ps );
    19.  
    20.  // Get the number of subauthorities in the SID.
    21.  
    22.  dwSubAuthorities = *GetSidSubAuthorityCount( ps );
    23.  
    24.  // Compute the buffer length.
    25.  // S-SID_REVISION- + IdentifierAuthority- + subauthorities- + NULL
    26.  
    27.  size = 15 + 12 + ( 12 * dwSubAuthorities ) + 1;
    28.  
    29.  // Check input buffer length.
    30.  // If too small, indicate the proper size and set last error.
    31.  
    32.  if ( bufSize < size )
    33.  {
    34.   SetLastError( ERROR_INSUFFICIENT_BUFFER );
    35.   return FALSE;
    36.  }
    37.  
    38.  // Add 'S' prefix and revision number to the string.
    39.  
    40.  size = wsprintf( buf, "S-%lu-", dwSidRev );
    41.  p = buf + size;
    42.  
    43.  // Add SID identifier authority to the string.
    44.  
    45.  if ( psia->Value[0] != 0 || psia->Value[1] != 0 )
    46.  {
    47.   n = wsprintf( p, "0x%02hx%02hx%02hx%02hx%02hx%02hx",
    48.   (USHORT) psia->Value[0], (USHORT) psia->Value[1],
    49.   (USHORT) psia->Value[2], (USHORT) psia->Value[3],
    50.   (USHORT) psia->Value[4], (USHORT) psia->Value[5] );
    51.   size += n;
    52.   p += n;
    53.  }
    54.  else
    55.  {
    56.   n = wsprintf( p, "%lu", ( (ULONG) psia->Value[5] ) +
    57.   ( (ULONG) psia->Value[4] << 8 ) + ( (ULONG) psia->Value[3] << 16 ) +
    58.   ( (ULONG) psia->Value[2] << 24 ) );
    59.   size += n;
    60.   p += n;
    61.  }
    62.  
    63.  // Add SID subauthorities to the string.
    64.  
    65.  for ( i = 0; i < dwSubAuthorities; ++ i )
    66.  {
    67.   n = wsprintf( p, "-%lu", *GetSidSubAuthority( ps, i ) );
    68.   size += n;
    69.   p += n;
    70.  }
    71.  
    72.  return TRUE;
    73. }
    А еще можно посмотреть чиселки в папках %Drive%/Recycler/S------/

    Еще вот статья http://netcode.ru/cpp/?click=r-3936.php.htm
     
  10. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    apple
    Спасибо.
     
  11. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Без использования LSA функций
    Код (Text):
    1. SECURITY_DESCRIPTOR oldPermissions;
    2.     if (ResetKeyPersmissions(TEXT("SECURITY\\SAM\\Domains\\Account"), &oldPermissions))
    3.     {
    4.         if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SECURITY\\SAM\\Domains\\Account"), &hkDomainsAcc))
    5.         {
    6.             LPBYTE  lpbV    = NULL;
    7.             DWORD   type    = REG_BINARY;
    8.             DWORD   cbSize  = 0x128;
    9.             int     ec      = ERROR_MORE_DATA;
    10.             PSID    lpSID   = NULL;
    11.             LPWSTR  szSid   = NULL;
    12.             while(ERROR_MORE_DATA == ec)
    13.             {
    14.                 lpbV = (LPBYTE)malloc(cbSize);
    15.                 ec = RegQueryValueEx(hkDomainsAcc, TEXT("V"), NULL, &type, lpbV, &cbSize);
    16.             }
    17.             lpSID = (PSID)(lpbV + (cbSize - 24));
    18.             if (IsValidSid(lpSID))
    19.             {
    20.                 ConvertSidToStringSidW(lpSID, &szSid);
    21.                 bstrDomainSID = szSid;
    22.             }
    23.             RegCloseKey(hkDomainsAcc);
    24.         }
    25.         SetKeyPersmissions(TEXT("SECURITY\\SAM\\Domains\\Account"), &oldPermissions);
    26.     }
    27.     if (ResetKeyPersmissions(TEXT("SECURITY\\SAM\\Domains\\Builtin"), &oldPermissions))
    28.     {
    29.         if(ERROR_SUCCESS == RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SECURITY\\SAM\\Domains\\Builtin"),&hkDomainBuiltin))
    30.         {
    31.             LPBYTE  lpbV    = NULL;
    32.             DWORD   type    = REG_BINARY;
    33.             DWORD   cbSize  = 0x128;
    34.             int     ec      = ERROR_MORE_DATA;
    35.             PSID    lpSID   = NULL;
    36.             LPWSTR  szSid   = NULL;
    37.             while(ERROR_MORE_DATA == ec)
    38.             {
    39.                 lpbV = (LPBYTE)malloc(cbSize);
    40.                 ec = RegQueryValueEx(hkDomainBuiltin, TEXT("V"), NULL, &type, lpbV, &cbSize);
    41.             }
    42.  
    43.             lpSID = (PSID)(lpbV + (cbSize - 0xc));
    44.             if (IsValidSid(lpSID))
    45.             {
    46.                 ConvertSidToStringSidW(lpSID, &szSid);
    47.                 bstrBuiltinSID = szSid;
    48.             }
    49.  
    50.             RegCloseKey(hkDomainBuiltin);
    51.         }
    52.         SetKeyPersmissions(TEXT("SECURITY\\SAM\\Domains\\Builtin"), &oldPermissions);
    53.     }
    Код (Text):
    1. BOOL ResetKeyPersmissions(LPCTSTR szSubKey, SECURITY_DESCRIPTOR *pOldPermissions)
    2. {
    3.     HKEY hKey;
    4.     LONG ec = 1;
    5.  
    6.     if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubKey, NULL, WRITE_DAC, &hKey))
    7.     {
    8.         SID_IDENTIFIER_AUTHORITY secIA = SECURITY_NT_AUTHORITY;
    9.         PSID pSID = NULL;
    10.        
    11.         if(AllocateAndInitializeSid(&secIA, 1, SECURITY_INTERACTIVE_RID, 0, 0, 0, 0, 0, 0, 0,&pSID))
    12.         {
    13.             DWORD dwAclSize = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pSID) - sizeof(DWORD);
    14.             PACL pDacl = (PACL)malloc(dwAclSize);
    15.             if (InitializeAcl(pDacl, dwAclSize, ACL_REVISION))
    16.             {
    17.                 if (AddAccessAllowedAce(pDacl, ACL_REVISION, KEY_ALL_ACCESS, pSID))
    18.                 {
    19.                     SECURITY_DESCRIPTOR secDesc;
    20.                     if (InitializeSecurityDescriptor(&secDesc, SECURITY_DESCRIPTOR_REVISION))
    21.                     {
    22.                         if (SetSecurityDescriptorDacl(&secDesc, TRUE, pDacl, FALSE))
    23.                         {
    24.                             DWORD oldSize = sizeof(SECURITY_DESCRIPTOR);
    25.                             RegGetKeySecurity(hKey, DACL_SECURITY_INFORMATION, pOldPermissions, &oldSize);
    26.                             ec = RegSetKeySecurity(hKey,DACL_SECURITY_INFORMATION, &secDesc);                      
    27.                             RegCloseKey(hKey);
    28.                         }
    29.                     }
    30.                 }
    31.             }
    32.  
    33.         }
    34.     }
    35.     return ec == ERROR_SUCCESS;
    36. }
     
  12. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    ATL::CSid спасет отца русской демократии %)
     
  13. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    Угу, СИД это классно, но подлом в том, что у учетной записи администратора (встроенной) он один и тот-же на все машинах. А некоторые люди любят работать под этой учетной записью.