Advertisement
Guest User

Untitled

a guest
Feb 16th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <iptypes.h>
  5. #include <iphlpapi.h>
  6.  
  7. using namespace std;
  8.  
  9. #define ADAPTER_COUNT 3
  10.  
  11. void DisplayAdapterInfoStruct(int i, IP_ADAPTER_INFO ipAdptrInfo){
  12. printf("ADAPTER[%d]\n", i);
  13. cout << "\t" << "Adapter info: " << ipAdptrInfo.Description << endl;
  14. ULONG j = ipAdptrInfo.AddressLength;
  15. printf("\tMac address: ");
  16. for (ULONG k = 0; k < j; k++){
  17. printf("%02X", ipAdptrInfo.Address[k]);
  18. k == j - 1 ? printf("\n") : printf("-");
  19. }
  20. }
  21.  
  22. void GetAdaptersInfo(){
  23.  
  24. PIP_ADAPTER_INFO pAdapterInfo = NULL;
  25. pAdapterInfo = (PIP_ADAPTER_INFO)malloc(sizeof(IP_ADAPTER_INFO) * ADAPTER_COUNT);
  26. ULONG ulBufLen = sizeof(IP_ADAPTER_INFO) * ADAPTER_COUNT;
  27.  
  28. ULONG errCode;
  29. errCode = GetAdaptersInfo(pAdapterInfo, &ulBufLen);
  30. switch (errCode){
  31. case ERROR_BUFFER_OVERFLOW:
  32. cout << "Buffer overflow." << endl;
  33. break;
  34. case ERROR_SUCCESS:
  35. cout << "Retrieved adapters info successfully." << endl;
  36. break;
  37. case ERROR_INVALID_DATA:
  38. cout << "Invalid adapter information was retrieved." << endl;
  39. break;
  40. case ERROR_INVALID_PARAMETER:
  41. cout << "Invalid parameter provided." << endl;
  42. break;
  43. case ERROR_NO_DATA:
  44. cout << "No adapter information exists for the local computer." << endl;
  45. break;
  46. case ERROR_NOT_SUPPORTED:
  47. cout << "The GetAdaptersInfo function is not supported by the operating system running on the local computer." << endl;
  48. break;
  49. }
  50.  
  51. if (errCode == ERROR_SUCCESS){
  52. PIP_ADAPTER_INFO pAdapterInfoCurr = pAdapterInfo;
  53. int i = 1;
  54. while (pAdapterInfoCurr){
  55. DisplayAdapterInfoStruct(i++, *pAdapterInfoCurr);
  56. pAdapterInfoCurr = pAdapterInfoCurr->Next;
  57. }
  58. }
  59. free(pAdapterInfo);
  60. }
  61.  
  62. void DisplayNetResourceStruct(int i, LPNETRESOURCE lpnrLocal)
  63. {
  64. printf("NETRESOURCE[%d] Scope: ", i);
  65. switch (lpnrLocal->dwScope) {
  66. case (RESOURCE_CONNECTED):
  67. printf("connected\n");
  68. break;
  69. case (RESOURCE_GLOBALNET):
  70. printf("all resources\n");
  71. break;
  72. case (RESOURCE_REMEMBERED):
  73. printf("remembered\n");
  74. break;
  75. default:
  76. printf("unknown scope %d\n", lpnrLocal->dwScope);
  77. break;
  78. }
  79.  
  80. printf("NETRESOURCE[%d] Type: ", i);
  81. switch (lpnrLocal->dwType) {
  82. case (RESOURCETYPE_ANY):
  83. printf("any\n");
  84. break;
  85. case (RESOURCETYPE_DISK):
  86. printf("disk\n");
  87. break;
  88. case (RESOURCETYPE_PRINT):
  89. printf("print\n");
  90. break;
  91. default:
  92. printf("unknown type %d\n", lpnrLocal->dwType);
  93. break;
  94. }
  95.  
  96. printf("NETRESOURCE[%d] DisplayType: ", i);
  97. switch (lpnrLocal->dwDisplayType) {
  98. case (RESOURCEDISPLAYTYPE_GENERIC):
  99. printf("generic\n");
  100. break;
  101. case (RESOURCEDISPLAYTYPE_DOMAIN):
  102. printf("domain\n");
  103. break;
  104. case (RESOURCEDISPLAYTYPE_SERVER):
  105. printf("server\n");
  106. break;
  107. case (RESOURCEDISPLAYTYPE_SHARE):
  108. printf("share\n");
  109. break;
  110. case (RESOURCEDISPLAYTYPE_FILE):
  111. printf("file\n");
  112. break;
  113. case (RESOURCEDISPLAYTYPE_GROUP):
  114. printf("group\n");
  115. break;
  116. case (RESOURCEDISPLAYTYPE_NETWORK):
  117. printf("network\n");
  118. break;
  119. default:
  120. printf("unknown display type %d\n", lpnrLocal->dwDisplayType);
  121. break;
  122. }
  123.  
  124. printf("NETRESOURCE[%d] Usage: 0x%x = ", i, lpnrLocal->dwUsage);
  125. if (lpnrLocal->dwUsage & RESOURCEUSAGE_CONNECTABLE)
  126. printf("connectable ");
  127. if (lpnrLocal->dwUsage & RESOURCEUSAGE_CONTAINER)
  128. printf("container ");
  129. printf("\n");
  130.  
  131. printf("NETRESOURCE[%d] Localname: %S\n", i, lpnrLocal->lpLocalName);
  132. printf("NETRESOURCE[%d] Remotename: %S\n", i, lpnrLocal->lpRemoteName);
  133. printf("NETRESOURCE[%d] Comment: %S\n", i, lpnrLocal->lpComment);
  134. printf("NETRESOURCE[%d] Provider: %S\n", i, lpnrLocal->lpProvider);
  135. printf("\n");
  136. }
  137.  
  138. BOOL EnumerateLocalResources(LPNETRESOURCE lpnr){
  139. HANDLE hEnum;
  140. DWORD errCode;
  141.  
  142. errCode = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, lpnr, &hEnum);
  143.  
  144. if (errCode != NO_ERROR) {
  145. printf("WnetOpenEnum failed with error %d\n", errCode);
  146. return FALSE;
  147. }
  148.  
  149. DWORD cbBuffer = 16384;
  150. LPNETRESOURCE lpnrLocal = (LPNETRESOURCE)malloc(cbBuffer);
  151. DWORD dwResultEnum;
  152. DWORD cEntries = -1;
  153. DWORD i;
  154. do {
  155. ZeroMemory(lpnrLocal, cbBuffer);
  156. dwResultEnum = WNetEnumResource(hEnum, &cEntries, lpnrLocal, &cbBuffer);
  157. if (dwResultEnum == NO_ERROR) {
  158. for (i = 0; i < cEntries; i++) {
  159. DisplayNetResourceStruct(i, &lpnrLocal[i]);
  160. if (RESOURCEUSAGE_CONTAINER == (lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER))
  161. if (!EnumerateLocalResources(&lpnrLocal[i]))
  162. printf("EnumerateLocalResources returned FALSE\n");
  163. }
  164. }
  165. else if (dwResultEnum != ERROR_NO_MORE_ITEMS) {
  166. printf("WNetEnumResource failed with error %d\n", dwResultEnum);
  167. break;
  168. }
  169. }
  170. while (dwResultEnum != ERROR_NO_MORE_ITEMS);
  171. free(lpnrLocal);
  172. errCode = WNetCloseEnum(hEnum);
  173. if (errCode != NO_ERROR) {
  174. printf("WNetCloseEnum failed with error %d\n", errCode);
  175. return FALSE;
  176. }
  177. cout << "Retrieved network resource info successfully." << endl;
  178. return TRUE;
  179. }
  180.  
  181. int main()
  182. {
  183. GetAdaptersInfo();
  184. cout << "" << endl;
  185. LPNETRESOURCE lpnr = NULL;
  186. EnumerateLocalResources(lpnr);
  187. printf("done");
  188. return 0;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement