Программирование на C++ глазами хакера



             

Параметры сети - часть 3


Str="Physical Address: "; for (UINT i=0; i<pAdapter->AddressLength; i++) { if (i == (pAdapter->AddressLength - 1)) sprintf(lpszText, "%.2X",(int)pAdapter->Address[i]); else sprintf(lpszText, "%.2X",(int)pAdapter->Address[i]); Str=Str+lpszText; } eAdaptersInfo.AddString(Str);

sprintf(lpszText, "DHCP Enabled: %s", (pAdapter->DhcpEnabled ? "yes" : "no")); eAdaptersInfo.AddString(lpszText);

chAddr = &(pAdapter->IpAddressList); while(chAddr) { Str="IP Address: "; eAdaptersInfo.AddString(Str+chAddr->IpAddress.String);

Str="Subnet Mask: "; eAdaptersInfo.AddString(Str+chAddr->IpMask.String);

chAddr = chAddr->Next; }

Str="Default Gateway: "; eAdaptersInfo.AddString(Str+pAdapter->GatewayList.IpAddress.String);

chAddr = pAdapter->GatewayList.Next; while(chAddr) { //print next Gateway chAddr = chAddr->Next; }

Str="DHCP Server: "; eAdaptersInfo.AddString(Str+pAdapter->DhcpServer.IpAddress.String);

Str="Primary WINS Server: "; eAdaptersInfo.AddString(Str+pAdapter->PrimaryWinsServer.IpAddress.String);

Str="Secondary WINS Server: "; eAdaptersInfo.AddString(Str+pAdapter->SecondaryWinsServer.IpAddress.String);

eAdaptersInfo.AddString("==========================="); pAdapter = pAdapter->Next; } }

Общую информацию о сети можно получить с помощью функции GetNetworkParams. У нее два параметра: структура типа PFIXED_INFO и размер структуры.

Если первый параметр оставить нулевым, а в качестве второго указать числовую переменную, то в эту переменную запишется размер памяти, необходимый для структуры PFIXED_INFO. Именно это и делается первый раз. Память надо выделять в глобальной области с помощью функции GlobalAlloc, иначе функция может вернуть некорректные данные.

После этого функция GetNetworkParams вызывается еще раз, но с указанием двух параметров. Если результатом выполнения функции будет 0, то получение данных прошло успешно.




Содержание  Назад  Вперед