123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #include "stdafx.h"
- #include "GAT.h"
- #include <winioctl.h>
- static GUID UsbClassGuid = { 0xA5DCBF10L, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };
- static GUID MacClassGuid = { 0xAD498944, 0x762F, 0x11D0, { 0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C } };
- GuardAgainstTheft::GuardAgainstTheft()
- {
- }
- GuardAgainstTheft::~GuardAgainstTheft()
- {
- }
- BOOL GuardAgainstTheft::FindYtUSB()
- {
- GetMac();
- HDEVINFO hDevInfo;
- INT iTotal = 0;
-
- hDevInfo = SetupDiGetClassDevs(&UsbClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
- if ( hDevInfo == INVALID_HANDLE_VALUE )
- {
- return -1;
- }
- DWORD dwSize = 0;
- TCHAR szDIS[MAX_PATH] = {0};
- SP_DEVINFO_DATA DeviceInfoData;
- ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
- DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
- for (int i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++)
- {
- dwSize = 0;
- if ( !SetupDiGetDeviceInstanceId(hDevInfo, &DeviceInfoData, szDIS, sizeof(szDIS), &dwSize))
- {
-
- break;
- }
-
- CString strDIS(szDIS);
- strDIS.MakeLower();
- if (strDIS.Left(32) == _T("usb\\vid_1312&pid_1912\\5&3b0d2cff") )
- {
- g_bExistSpecialUsb = TRUE;
- break;
- }
- }
-
- SetupDiDestroyDeviceInfoList(hDevInfo);
- return TRUE;
- }
- BOOL GuardAgainstTheft::GetMac()
- {
- HDEVINFO hDevInfo;
- DWORD MemberIndex, RequiredSize;
- SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
- PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
- INT iTotal = 0;
-
- hDevInfo = SetupDiGetClassDevs(&MacClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
- if (hDevInfo == INVALID_HANDLE_VALUE)
- {
- return -1;
- }
-
- DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
- for (MemberIndex = 0; SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &MacClassGuid, MemberIndex, &DeviceInterfaceData); MemberIndex++)
- {
-
- SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, NULL, 0, &RequiredSize, NULL);
-
- DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
- DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
-
- if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, RequiredSize, NULL, NULL))
- {
- if ( WDK_GetMacAddress(DeviceInterfaceDetailData->DevicePath, g_szMacAddress, MAX_PATH, TRUE) )
- {
- if ( g_szMacAddress[0] == _T('\0') )
- continue;
- else
- break;
- }
- }
- free(DeviceInterfaceDetailData);
- }
- SetupDiDestroyDeviceInfoList(hDevInfo);
- return iTotal;
- }
- BOOL GuardAgainstTheft::GetMac(IN CStringArray& AryMac)
- {
- HDEVINFO hDevInfo;
- DWORD MemberIndex, RequiredSize;
- SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
- PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
- INT iTotal = 0;
-
- hDevInfo = SetupDiGetClassDevs(&MacClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
- if (hDevInfo == INVALID_HANDLE_VALUE)
- {
- return -1;
- }
- TCHAR szMacAddress[MAX_PATH] = {0};
-
- DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
- for (MemberIndex = 0; SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &MacClassGuid, MemberIndex, &DeviceInterfaceData); MemberIndex++)
- {
-
- SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, NULL, 0, &RequiredSize, NULL);
-
- DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
- DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
-
- if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, RequiredSize, NULL, NULL))
- {
- if ( WDK_GetMacAddress(DeviceInterfaceDetailData->DevicePath, szMacAddress, MAX_PATH, TRUE) )
- {
- AfxMessageBox(szMacAddress);
- }
- }
- free(DeviceInterfaceDetailData);
- }
- SetupDiDestroyDeviceInfoList(hDevInfo);
- return iTotal;
- }
- BOOL GuardAgainstTheft::WDK_GetMacAddress( TCHAR* DevicePath, TCHAR* szMacAddress, UINT uSize, BOOL isIncludeUSB )
- {
- HANDLE hDeviceFile;
- BOOL isOK = FALSE;
-
- if( _tcsnicmp( DevicePath + 4, TEXT("root"), 4 ) == 0 )
- {
- return FALSE;
- }
- if( !isIncludeUSB )
- {
- if( _tcsnicmp( DevicePath + 4, TEXT("usb"), 4 ) == 0 )
- {
- return FALSE;
- }
- }
-
- hDeviceFile = CreateFile( DevicePath,
- 0,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_EXISTING,
- 0,
- NULL);
- if( hDeviceFile != INVALID_HANDLE_VALUE )
- {
- ULONG dwID;
- BYTE ucData[8];
- DWORD dwByteRet;
-
- dwID = OID_802_3_PERMANENT_ADDRESS;
- isOK = DeviceIoControl( hDeviceFile, IOCTL_NDIS_QUERY_GLOBAL_STATS, &dwID, sizeof(dwID), ucData, sizeof(ucData), &dwByteRet, NULL );
- if( isOK )
- {
- if( szMacAddress != NULL )
- {
- for( DWORD i = 0; i < dwByteRet; i++ )
- {
- _stprintf_s( szMacAddress + (i << 1), uSize - (i << 1), TEXT("%02X"), ucData[i] );
- }
- }
- }
- CloseHandle( hDeviceFile );
- }
- return isOK;
- }
|