В данной статье мы рассмотрим код, который реализует функциональность для поиска SEED-фраз в текстовых сообщениях и изображениях в Telegram-чатах. Напоминаю, что это моя первая статья на этом форуме и направлена она для изучения материала новичками. Приму адекватную критику от коллег, а так же готов выслушать ваше мнение. Спасибо.
Введение:
1. Необходимые библиотеки и программы:
Мы будем использовать следующие Python-библиотеки:
Код: Скопировать в буфер обмена
2. Установка Tesseract OCR
Для распознавания текста на изображениях необходимо установить Tesseract OCR:
1. Скачайте установщик с официальной страницы.
2. Установите программу и добавьте путь к tesseract.exe в переменную окружения PATH.
3. Настройка Telegram API
Для работы с Telegram API вам нужно зарегистрировать приложение на my.telegram.org. После регистрации вы получите:
• API ID
• API Hash
Эти значения понадобятся для авторизации через Telethon.
Начало:
1. Для самого начала написания скрипта нам необходимо импортировать все необходимые нам библиотеки:
Python: Скопировать в буфер обмена
Далее, нам необходимо добавить функцию для аутентификации в Телеграмм:
Python: Скопировать в буфер обмена
Python: Скопировать в буфер обмена
Python: Скопировать в буфер обмена
Python: Скопировать в буфер обмена
Python: Скопировать в буфер обмена
extract_text_from_image: Функция, которая принимает байты изображения, открывает его с помощью Pillow и использует pytesseract для извлечения текста. Это позволяет обрабатывать изображения, которые могут содержать SEED-фразы.
7. Добавление функции для поиска SEED-фраз в чатах:
Python: Скопировать в буфер обмена
[/CODE]
Python: Скопировать в буфер обмена
Python: Скопировать в буфер обмена
В данной статье мы подробно рассмотрели код, который позволяет автоматически искать SEED-фразы в текстовых сообщениях и изображениях Telegram-чатов. Используя библиотеки Telethon и pytesseract, мы создали эффективный инструмент для анализа сообщений, который может быть полезен в различных ситуациях, где в ручную заниматься поиском SEED-фраз совсем несуразно. Благодарю за прочтение моей первой статьи, если она понравилась вам - всегда можно поддержать автора лайком.
Автор: AGN
Специально для .is
Спойлер: Готовый код
Python: Скопировать в буфер обмена
Введение:
1. Необходимые библиотеки и программы:
Мы будем использовать следующие Python-библиотеки:
- Telethon — для взаимодействия с Telegram API.
- Pytesseract — интерфейс для Tesseract OCR.
- Pillow — для работы с изображениями (понадобится для обработки данных перед отправкой в OCR).
Код: Скопировать в буфер обмена
pip install telethon pytesseract pillow
2. Установка Tesseract OCR
Для распознавания текста на изображениях необходимо установить Tesseract OCR:
1. Скачайте установщик с официальной страницы.
2. Установите программу и добавьте путь к tesseract.exe в переменную окружения PATH.
3. Настройка Telegram API
Для работы с Telegram API вам нужно зарегистрировать приложение на my.telegram.org. После регистрации вы получите:
• API ID
• API Hash
Эти значения понадобятся для авторизации через Telethon.
Начало:
1. Для самого начала написания скрипта нам необходимо импортировать все необходимые нам библиотеки:
Python: Скопировать в буфер обмена
Code:
import os
import re
from telethon import TelegramClient, events
from telethon.tl.types import InputMessagesFilterPhotos, InputMessagesFilterDocument
from PIL import Image
import pytesseract
from io import BytesIO
- os: Библиотека для работы с операционной системой.
- re: Модуль для работы с регулярными выражениями, который позволяет искать шаблоны в строках.
- telethon: Библиотека для работы с Telegram API, позволяющая взаимодействовать с Telegram через Python.
- PIL (Pillow): Библиотека для работы с изображениями, позволяющая открывать, изменять и сохранять изображения.
- pytesseract: Python-обертка для Tesseract OCR, которая позволяет распознавать текст на изображениях.
- BytesIO: Класс для работы с байтовыми потоками, который позволяет работать с изображениями, загруженными в память
Далее, нам необходимо добавить функцию для аутентификации в Телеграмм:
Python: Скопировать в буфер обмена
Code:
API_ID = 'ВАШ_API_ID'
API_HASH = 'ВАШ_API_HASH'
SESSION_NAME = 'telegram_parser_session'
- API_ID и API_HASH: Эти параметры необходимы для аутентификации в Telegram API.
- SESSION_NAME: Имя сессии, которое используется для хранения данных аутентификации. Это позволяет избежать повторного ввода данных при последующих запусках скрипта.
Python: Скопировать в буфер обмена
SEED_REGEX = r'\b(?:\w+\s){11,23}\w+\b'
- SEED_REGEX: Регулярное выражение, которое ищет SEED-фразы, состоящие из 12 или 24 слов. Шаблон ищет последовательности слов, разделённых пробелами, что соответствует формату SEED-фраз, используемых в криптографии.
Python: Скопировать в буфер обмена
client = TelegramClient(SESSION_NAME, API_ID, API_HASH)
- TelegramClient: Создание экземпляра клиента для работы с Telegram API. Он будет использовать указанные параметры для аутентификации и управления сессией.
Python: Скопировать в буфер обмена
Code:
def find_seed_phrases(text):
matches = re.findall(SEED_REGEX, text)
return matches if matches else []
- find_seed_phrases: Функция, которая принимает текст и ищет в нём SEED-фразы с использованием регулярного выражения. Если находки есть, они возвращаются в виде списка.
Python: Скопировать в буфер обмена
Code:
[CODE=python]def extract_text_from_image(image_bytes):
image = Image.open(BytesIO(image_bytes))
return pytesseract.image_to_string(image)
7. Добавление функции для поиска SEED-фраз в чатах:
Python: Скопировать в буфер обмена
Code:
async def process_chat(chat):
async for message in client.iter_messages(chat):
# Поиск SEED-фраз в тексте сообщения
if message.text:
seeds = find_seed_phrases(message.text)
if seeds:
print(f"[TEXT] Найдены SEED-фразы в чате {chat.title}: {seeds}")
# Проверка на наличие фото и документов (картинок)
if message.photo or message.document:
media = message.photo or message.document
if media:
# Скачиваем изображение
image_bytes = await client.download_media(media, bytes)
if image_bytes:
# Извлечение текста с помощью OCR
extracted_text = extract_text_from_image(image_bytes)
seeds = find_seed_phrases(extracted_text)
if seeds:
print(f"[IMAGE] Найдены SEED-фразы в чате {chat.title}: {seeds}")
- process_chat: Асинхронная функция для обработки сообщений в заданном чате. Она использует iter_messages для итерации по всем сообщениям в чате.
- Внутри функции:
- Сначала проверяется наличие текста в сообщении. Если текст найден, вызывается функция find_seed_phrases для поиска SEED-фраз.
- Затем проверяется наличие фотографий или документов. Если таковые имеются, они загружаются с помощью download_media, и текст извлекается с помощью extract_text_from_image.
Python: Скопировать в буфер обмена
Code:
async def main():
# Подключение к Telegram
await client.start()
# Получение всех чатов, включая Избранное (Saved Messages)
dialogs = await client.get_dialogs()
# Обход всех чатов
for dialog in dialogs:
print(f"Проверка чата: {dialog.title}")
await process_chat(dialog)
# Завершение работы клиента
await client.disconnect()
- main: Асинхронная функция, которая управляет основным потоком выполнения.
- Внутри функции:
- Сначала происходит подключение к Telegram с помощью client.start().
- Затем с помощью get_dialogs() получаем все чаты, включая Избранное.
- Для каждого чата вызывается функция process_chat, которая обрабатывает сообщения.
- В конце работы клиента вызывается client.disconnect() для корректного завершения сессии.
Python: Скопировать в буфер обмена
Code:
with client:
client.loop.run_until_complete(main())
- Используется контекстный менеджер with, который гарантирует, что клиент будет корректно закрыт после завершения работы.
- client.loop.run_until_complete(main()) запускает асинхронную функцию main, что инициирует весь процесс.
В данной статье мы подробно рассмотрели код, который позволяет автоматически искать SEED-фразы в текстовых сообщениях и изображениях Telegram-чатов. Используя библиотеки Telethon и pytesseract, мы создали эффективный инструмент для анализа сообщений, который может быть полезен в различных ситуациях, где в ручную заниматься поиском SEED-фраз совсем несуразно. Благодарю за прочтение моей первой статьи, если она понравилась вам - всегда можно поддержать автора лайком.
Автор: AGN
Специально для .is
Спойлер: Готовый код
Python: Скопировать в буфер обмена
Code:
import os
import re
from telethon import TelegramClient, events
from telethon.tl.types import InputMessagesFilterPhotos, InputMessagesFilterDocument
from PIL import Image
import pytesseract
from io import BytesIO
API_ID = 'ВАШ_API_ID'
API_HASH = 'ВАШ_API_HASH'
SESSION_NAME = 'telegram_parser_session'
SEED_REGEX = r'\b(?:\w+\s){11,23}\w+\b'
client = TelegramClient(SESSION_NAME, API_ID, API_HASH)
def find_seed_phrases(text):
matches = re.findall(SEED_REGEX, text)
return matches if matches else []
def extract_text_from_image(image_bytes):
image = Image.open(BytesIO(image_bytes))
return pytesseract.image_to_string(image)
async def process_chat(chat):
async for message in client.iter_messages(chat):
if message.text:
seeds = find_seed_phrases(message.text)
if seeds:
print(f"[TEXT] Найдены SEED-фразы в чате {chat.title}: {seeds}")
if message.photo or message.document:
media = message.photo or message.document
if media:
image_bytes = await client.download_media(media, bytes)
if image_bytes:
extracted_text = extract_text_from_image(image_bytes)
seeds = find_seed_phrases(extracted_text)
if seeds:
print(f"[IMAGE] Найдены SEED-фразы в чате {chat.title}: {seeds}")
async def main():
await client.start()
dialogs = await client.get_dialogs()
for dialog in dialogs:
print(f"Проверка чата: {dialog.title}")
await process_chat(dialog)
await client.disconnect()
with client:
client.loop.run_until_complete(main())