ХайТекСити
Категории каталога
Visual C++ [2]
Форма входа
Поиск
Статистика
Rambler's Top100

page counter
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Пятница, 2024-05-17, 19:23:13
Приветствую Гость Гость | RSS
Главная | Регистрация | Вход
ХайТекСити
Главная » ХайТекСити » Программирование » Visual C++

Сетевая бомба

В Windows NT-системах (NT/2000/XP/2003) появилась очень интересная и удобная команда NET SEND, которая позволяет отправить на другой компьютер сообщение из командной строки. Вы пишете команду, адрес получателя и текст сообщение. А после выполнения инструкции на компьютере адресата появляется окно с текстом сообщения. 

Сообщение отправляется командой следующего вида:

NET SEND Адрес Текст

В качестве адреса можно указывать как NETBios-имя компьютера, так и IP -адрес. Вот пример, который посылает сообщение "Hi, Dany" на компьютер Dany :

NET SEND Dany Hi, Dany

Самое интересное, что Windows 2000 и Windows XP абсолютно не защищены от бомбардировки командой NET SEND. Вы можете очень быстро послать хоть сто команд на компьютер вашего друга с любыми сообщениями, и все они дойдут. Но отправлять руками — утомительно, поэтому напишем небольшую программу.

Создайте новый проект типа Win32 Project в Visual C++ (использовалась версия Visual C++ 6.0 ) , и в функции WinMain напишите следующий код до цикла обработки сообщений:

for (int i=0; i<10; i++)
{
WinExec("NET SEND 192.168.1.121 You will be cry by me", SW_SHOW);
Sleep(1000);
}

Здесь мы запускаем цикл, в котором функция WinExec будет 10 раз выполнять код, указанный в качестве первого параметра в командной строке Windows . В данном примере это текст "NET SEND 192.168.1.121 You will be cry by me". Если выполнить этот код в командной строке, то вы отправите сообщение "You will be cry by me" на компьютер с адресом 192.168.1.121.

На каждом шаге цикла мы делаем задержку в 1 секунду с помощью функции Sleep, чтобы между сообщениями была хоть какая-то пауза.

Что бы скрыть окно командной строки измените параметр SW_SHOW на SW_HIDE.


Полный листинг программы:

#define WIN32_LEAN_AND_MEAN

#include <windows.h>



// Глобальные переменные:
HINSTANCE hInst;   
HWND hWnd;

                           

// Прототипы функций:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

    MSG msg;
    HACCEL hAccelTable;

    MyRegisterClass(hInstance);

    //Инициализация приложения:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

for (int i=0; i<10; i++)
{
WinExec("NET SEND 192.168.1.121 You will be cry by me", SW_HIDE);
Sleep(1000);
}

    // Главный цикл сообщений:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

   
    }

   

    return msg.wParam;
}



//
//  ФУНКЦИЯ: MyRegisterClass()
//
//  НАЗНАЧЕНИЕ: Регистрация класса окна.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = (WNDPROC)WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon            = 0;
    wcex.hCursor        = 0;
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName    = 0;
    wcex.lpszClassName    = "MyClass";
    wcex.hIconSm        = 0;

    return RegisterClassEx(&wcex);
}

//
//   ФУНКЦИЯ: InitInstance(HANDLE, int)
//
//   НАЗНАЧЕНИЕ: Сохранение экземпляра приложения и создание окна
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Сохранение экземпляра приложения в глобальной переменной

   hWnd = CreateWindow("MyClass", "MyWindow", WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   //Закоментировать, если не хотите чтобы было видно окно
   //***********************************************
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   //***********************************************

   return TRUE;
}

//
//  ФУНКЦИЯ: : WndProc(HWND, unsigned, WORD, LONG)
//
//  НАЗНАЧЕНИЕ: :  Обработка сообщений от главного окна.
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
       
        case WM_PAINT:
            break;
       
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}


Категория: Visual C++ | Добавил: KroX (2007-03-17)
Просмотров: 744 | Комментарии: 4 | Рейтинг: 5.0/1 |

Всего комментариев: 1
1 @igrok@  
0
все это замечательно но можно сделать все намного проще. создаем файлик блокнота и пишем в нем такие строки

"net send адрес текст
1 .bat" кавычки писать НЕ нужно

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


Имя *:
Email *:
Код *:
Copyright OURWORLD © 2024
Сайт управляется системой uCoz