Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.1 KiB

  1. // Copyright (c) 1996-1999 Microsoft Corporation
  2. // This is not production code
  3. #include <stdio.h>
  4. #include <tchar.h>
  5. #include <windows.h>
  6. #include "munglog.hxx"
  7. HRESULT
  8. OpenLog( int vol, HANDLE *phFile )
  9. {
  10. TCHAR tszPath[ MAX_PATH + 1 ];
  11. _tcscpy( tszPath, TEXT("A:\\~secure.nt\\tracking.log" ));
  12. *tszPath += vol;
  13. *phFile = CreateFile( tszPath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
  14. NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
  15. if( INVALID_HANDLE_VALUE == *phFile )
  16. return( HRESULT_FROM_WIN32( GetLastError() ) );
  17. else
  18. return( S_OK );
  19. }
  20. HRESULT
  21. WriteLog( HANDLE hFile, ULONG ulOffset, void *pv, const ULONG cb )
  22. {
  23. HRESULT hr = S_OK;
  24. ULONG cbWritten;
  25. if( !SetFilePointer( hFile, ulOffset, NULL, FILE_BEGIN ))
  26. {
  27. hr = HRESULT_FROM_WIN32( GetLastError() );
  28. goto Exit;
  29. }
  30. if( !WriteFile( hFile, pv, cb, &cbWritten, NULL )
  31. ||
  32. cb != cbWritten
  33. )
  34. {
  35. hr = HRESULT_FROM_WIN32( GetLastError() );
  36. goto Exit;
  37. }
  38. Exit:
  39. return( hr );
  40. }
  41. HRESULT
  42. MungeLog( EnumMunge enumMunge, void *pv, int vol )
  43. {
  44. HRESULT hr = E_FAIL;
  45. HANDLE hFile = INVALID_HANDLE_VALUE;
  46. hr = OpenLog( vol, &hFile );
  47. if( FAILED(hr) ) goto Exit;
  48. if( MUNGE_MACHINE_ID == enumMunge )
  49. hr = WriteLog( hFile, MUNGELOG_MACHINEID_OFFSET, pv, MUNGELOG_CB_MACHINEID );
  50. else
  51. hr = WriteLog( hFile, MUNGELOG_VOLSECRET_OFFSET, pv, MUNGELOG_CB_VOLSECRET );
  52. Exit:
  53. if( INVALID_HANDLE_VALUE != hFile )
  54. CloseHandle( hFile );
  55. return( hr );
  56. }
  57. /*
  58. extern "C" void wmain()
  59. {
  60. HRESULT hr;
  61. BYTE mcid[ 16 ];
  62. BYTE secret[ 16 ];
  63. strncpy( (char*)&mcid, "abcdefghijklmnopqrstuvwxyz", sizeof(mcid) );
  64. strncpy( (char*)&secret, "zyxwvutsrqponmlkjihgfedcba", sizeof(secret) );
  65. hr = MungeLog( MUNGE_VOLUME_SECRET, &secret, 4 );
  66. printf( "Secret = %08x\n", hr );
  67. hr = MungeLog( MUNGE_MACHINE_ID, &mcid, 4 );
  68. printf( "Machine = %08x\n", hr );
  69. }
  70. */