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



             

Изменение IP-адреса - часть 3


iAdapterInfo = 0; iErr=GetAdaptersInfo(NULL, &iAdapterInfo); if ((iErr!= 0) && (iErr != ERROR_BUFFER_OVERFLOW)) { AfxMessageBox("GetAdaptersInfo failed"); return; }

if ((pAdapterInfo = (PIP_ADAPTER_INFO) GlobalAlloc(GPTR, iAdapterInfo)) == NULL) { AfxMessageBox("Memory allocation error\n"); return; }

if (GetAdaptersInfo(pAdapterInfo, &iAdapterInfo) != 0) { AfxMessageBox("GetAdaptersInfo failed"); return; }

pAdapter = pAdapterInfo;

char sNewAddr[20], sNewMask[20];

eIPEdit.GetWindowText(sNewAddr, 20); eMaskEdit.GetWindowText(sNewMask, 20);

iErr=AddIPAddress(inet_addr(sNewAddr), inet_addr(sNewMask), pAdapter->Index, &iContext, &iInst); if (iErr!=0) AfxMessageBox("Can't change address"); }

Чтобы добавить новый адрес, необходимо знать индекс сетевого адаптера. Для его определения используется функция GetAdaptersInfo. После этого можно вызывать функцию AddIPAddress.

По нажатию кнопки Del IP будет удаляться адрес с контекстом, указанным в поле IP Context. Код, который должен выполняться по нажатию этой кнопки, можно увидеть в листинге 5.4.

Листинг 5.4. Удаление IP-адреса
void CChangeIPAddressDlg::OnBnClickedButton2() { char sContext[20]; eContext.GetWindowText(sContext, 20);

int Context=atoi(sContext); if (DeleteIPAddress(Context) != 0) { AfxMessageBox("Can't delete address"); } }

Интересного эффекта можно добиться, если просто удалить все IP-адреса. В этом случае компьютер исчезнет из сети и не сможет с ней работать. Но это уже из серии программ-шуток.

Напоследок хотел бы вас предупредить, что функции будут корректно работать только при правильно настроенной сети. Даже если просто выдернут сетевой кабель, функции не работают. На рис. 5.4 показан результат работы программы на моем ноутбуке. Перед нажатием кнопки List adapters я отключил сетевой кабель, и в результате IP-адрес и маска сети стали нулевыми (0.0.0.0).

Рис. 5.4. Результат работы программы ChangeIPAddress без сетевого кабеля

Примечание
Исходный код примера, описанного в этом разделе, вы можете найти на компакт - диске в каталоге \Demo\Chapter5\ChangeIPAddress.

 




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