pefile 🟠 Извлекает структуру PE-файла: секции, импорты, экспорты, заголовки🟠 Удобна для анализов вредоносного ПО и реверса🟠 Поддерживает изменение и пересборку PE-файлов
pip install pefile
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥3
commix🟠 Автоматически определяет и эксплуатирует command injection🟠 Поддерживает GET, POST, cookie, user-agent и другие источники инъекций🟠 Возможность интерактивной оболочки (reverse shell, meterpreter и др.)🟠 Поддерживает обход WAF и фильтров
git clone https://github.com/commixproject/commix
cd commix
python commix.py --help
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2🎉1
markdown, pdfkit, argparse, os, re (все через requirements.txt), плюс внешняя утилита wkhtmltopdf- Принимает на вход один .md, папку с .md или папку, из которой собирает и объединяет все Markdown-файлы
- Генерирует PDF-файл(ы), сохраняя стиль через CSS
- Поддерживает указание CSS-файла для кастомного оформления
- Использует wkhtmltopdf для преобразования HTML в PDF
# Один файл
md2pdf input.md output.pdf
# Папка с файлами
md2pdf ./markdown_folder/
# Ваша тема оформления через CSS
md2pdf --css style.css docs/ docs/output/
git clone https://github.com/soumildatta/MD2PDF
cd MD2PDF
pip install -r requirements.txt
# Установите wkhtmltopdf через пакетный менеджер (apt/brew)
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
DuckDB🟠 Поддерживает SQL-запросы над Pandas/Parquet/CSV без поднятия сервера;🟠 Быстрая аналитика встроенного уровня OLAP — хороша для больших данных;🟠 Минимальные зависимости, лёгкий в установке и запуске;🟠 Интеграция с Python — можно смешивать SQL и DataFrame API.
pip install duckdb
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4❤2
clipboard_monitor, Pillow, argparsepython clip_listener.py --save-images ./screenshots
import clipboard_monitor
import argparse
from PIL import ImageGrab
from pathlib import Path
import datetime
def on_text(text):
print("✉️ Text copied:", text)
def on_files(files):
print("📁 Files copied:", files)
def on_image():
img = ImageGrab.grabclipboard()
if not img:
return
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
outdir = args.save_images
Path(outdir).mkdir(parents=True, exist_ok=True)
path = Path(outdir) / f"screenshot_{timestamp}.png"
img.save(path)
print("🖼 Saved image to", path)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Clipboard Event Listener")
parser.add_argument("--save-images", default=None,
help="Папка для сохранения скриншотов из буфера обмена")
args = parser.parse_args()
# Регистрируем обработчики
clipboard_monitor.on_text(on_text)
clipboard_monitor.on_files(on_files)
if args.save_images:
clipboard_monitor.on_image(on_image)
print("🚀 Listening for clipboard changes...")
clipboard_monitor.wait()
- Слушает изменения буфера обмена (clipboard_monitor.wait())
- При копировании текста — печатает его, при копировании файлов — выводит список
- При копировании изображения — сохраняет скриншот в указанную папку
- Универсален благодаря поддержке текстов, файлов и изображений
pip install clipboard-monitor Pillow
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🔥3
pytsk3🟠 Доступ к образам дисков (raw, EWF, VMDK и т.д.)🟠 Чтение NTFS, FAT, exFAT, EXT, HFS+ и других ФС🟠 Получение информации о файлах, метаданных, удалённых данных🟠 Используется в форензике, OSINT и анализе вредоносных носителей
pip install pytsk3
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
requests, argparse- Делает GET-запрос к открытым API (например, Fixer или ExchangeRate-API)
- Принимает сумму, исходную и целевую валюту из аргументов командной строки
- Возвращает конвертированную сумму с текущим курсом
python currency_converter.py --amount 100 --from USD --to EUR
# Вывод:
# 100 USD = 90.13 EUR
import requests
import argparse
API_KEY = "YOUR_API_KEY" # зарегистрируйтесь и получите API-ключ
def convert(amount, frm, to):
url = f"https://v6.exchangerate-api.com/v6/{API_KEY}/latest/{frm}"
resp = requests.get(url)
data = resp.json()
rate = data["conversion_rates"].get(to)
if rate:
print(f"{amount} {frm} = {round(amount * rate, 4)} {to}")
else:
print(f"❌ Валюта {to} не поддерживается.")
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument("--amount", type=float, required=True)
p.add_argument("--from", dest="frm", required=True)
p.add_argument("--to", required=True)
args = p.parse_args()
convert(args.amount, args.frm.upper(), args.to.upper())
⚙️ Установка зависимости:
pip install requests
- Быстрые финансовые расчёты через CLI
- Подготовка данных для отчетов и ETL-процессов
- Интеграция в скрипты и автоматизацию валютных операций
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤12🔥4👍3
CapyMOA🟠 Поддержка онлайн-обучения: обновляет модель инкрементально для каждого нового наблюдения — без переобучения с нуля.🟠 Архитектура гибкая и расширяемая — интеграция с MOA (написание на Java) и PyTorch возможна.🟠 Оптимизирована для высоких скоростей потоков: подходит для сценариев с большими нагрузками (IoT, финансовые потоки, телеметрия).🟠 Открытый код и современный подход: активно развивается с начала 2025 года.
pip install capymoa
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3👍2
capstone 🟠 Поддержка x86, x86_64, ARM, MIPS, PowerPC, SPARC и др.🟠 Очень быстрый и модульный🟠 Работает на Windows, Linux и macOS🟠 Полезен для реверс-инжиниринга, CTF и анализа малвари
pip install capstone
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥3👍2
requests, time, argparse, datetime, osДелает запросы на указанные URL через заданный интервал
Логирует скорость ответа и HTTP-статусы
При неоднократных ошибках отправляет уведомление (например, в Telegram)
Подходит для круглосуточного мониторинга API, сайтов и веб-сервисов
python uptime_monitor.py --urls https://example.com,https://api.example.com \
--interval 60 --retries 3 --notify-telegram
import requests, time, argparse, datetime, os
def alert_telegram(bot_token, chat_id, msg):
url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
requests.post(url, data={"chat_id": chat_id, "text": msg})
def monitor(urls, interval, retries, bot_token=None, chat_id=None):
status = {u: True for u in urls}
while True:
for u in urls:
try:
r = requests.get(u, timeout=10)
ok = r.status_code == 200
resp = f"{r.status_code}, {r.elapsed.total_seconds():.2f}s"
except Exception as e:
ok = False
resp = f"Error: {e}"
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] {u} → {resp}")
if not ok and status[u]:
status[u] = False
msg = f"⚠️ {u} is DOWN at {now}"
if bot_token and chat_id:
alert_telegram(bot_token, chat_id, msg)
if ok and not status[u]:
status[u] = True
msg = f"✅ {u} is UP again at {now}"
if bot_token and chat_id:
alert_telegram(bot_token, chat_id, msg)
time.sleep(interval)
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument("--urls", required=True, help="Comma-separated URLs")
p.add_argument("--interval", type=int, default=60)
p.add_argument("--retries", type=int, default=3)
p.add_argument("--bot-token", default=os.getenv("TELEGRAM_TOKEN"))
p.add_argument("--chat-id", default=os.getenv("TELEGRAM_CHAT_ID"))
args = p.parse_args()
urls = [u.strip() for u in args.urls.split(',')]
monitor(urls, args.interval, args.retries, args.bot_token, args.chat_id)
pip install requests
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🔥3
💬 В этом примере покажу, как с помощью Python автоматизировать процесс резервного копирования базы данных MySQL в ваших DevOps-проектах.
mysqldump, которую вызовем из Python через модуль subprocess. Такой подход надёжен и широко используется на практике.import os
import time
import subprocess
def backup_database(host, username, password, database, output_dir):
timestamp = time.strftime('%Y%m%d_%H%M%S')
output_file = os.path.join(output_dir, f'{database}_backup_{timestamp}.sql')
cmd = [
'mysqldump',
f'-h{host}',
f'-u{username}',
f'-p{password}',
database
]
try:
with open(output_file, 'w') as f:
subprocess.run(cmd, stdout=f, check=True)
print(f'Database backup saved to {output_file}')
except subprocess.CalledProcessError as e:
print(f'Error during backup: {e}')
if __name__ == '__main__':
db_host = 'localhost'
db_username = 'your_db_username'
db_password = 'your_db_password'
db_name = 'your_database_name'
backup_output_dir = '/path/to/backup_directory'
backup_database(db_host, db_username, db_password, db_name, backup_output_dir)
☝️ В итоге скрипт создаст файл с дампом базы в указанной папке, добавив к имени текущую дату и время.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4😁2
Server-Monitoring-Telegram-Bot-System-main.zip
12.6 MB
💻 ЯП: Python 3.11+🐍
💾 Модули: flask, python-telegram-bot, requests, psutil
📂 База данных: -
#telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤12👍2
Deepchecks🟠 Комплексные проверки качества данных: пропущенные значения, дисбаланс, выбросы;🟠 Валидирует модель: сравнивает с базовой, анализирует разницу в метриках;🟠 Имеет готовые чек-листы для pre-deployment и мониторинга production;🟠 Интерактивные HTML-отчёты — удобно делиться с коллегами;🟠 Основана на популярных библиотеках (Pandas, scikit-learn, PyTorch), но предоставляет низкоуровневую надежность и силу.
pip install deepchecks
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3
💾 Модули:
requests, BeautifulSoup, hashlib, time, argparse🟠 Загружает HTML указанной страницы🟠 Создаёт хэш содержимого
Периодично проверяет URL, сравнивает текущий хэш с предыдущим🟠 При обнаружении изменений выводит уведомление в терминал🟠 Основан на гайде "Python Script to Monitor Website Changes" (Medium)
python site_monitor.py --url https://example.com --interval 60
import requests
from bs4 import BeautifulSoup
import hashlib
import time
import argparse
def get_hash(url):
resp = requests.get(url, timeout=10)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, 'html.parser')
text = soup.get_text()
return hashlib.md5(text.encode('utf-8')).hexdigest()
def monitor(url, interval):
last_hash = None
print(f"🚀 Monitoring {url} every {interval}s...")
while True:
try:
current_hash = get_hash(url)
if last_hash is None:
last_hash = current_hash
elif current_hash != last_hash:
print(f"🔔 Change detected at {time.strftime('%Y-%m-%d %H:%M:%S')}")
last_hash = current_hash
except Exception as e:
print(f"❌ Error: {e}")
time.sleep(interval)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Website Change Monitor")
parser.add_argument("--url", required=True, help="URL to monitor")
parser.add_argument("--interval", type=int, default=60, help="Check interval in seconds")
args = parser.parse_args()
monitor(args.url, args.interval)
🟠 Получает текст страницы через requests + BeautifulSoup🟠 Хэширует содержимое для обнаружения изменений🟠 Работает в бесконечном цикле с интервалом🟠 Лёгкий, без сложностей и зависимостей помимо BeautifulSoup
pip install requests beautifulsoup4
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3
telegram_gemini_bot-master.zip
49.6 KB
🟠 Ответы с ИИ (Google Gemini).🟠 Распознавание речи и преобразование голосовых сообщений в текст.🟠 Анализ изображений (OCR и Vision API).🟠 Работа с текстовыми, PDF, CSV, Excel файлами.🟠 Прогноз погоды по команде /weather.🟠 Настройка стиля общения с ИИ.🟠 Озвучивание ответов и генерация голосовых сообщений.🟠 Перевод текста на разные языки.🟠 Авторизация пользователей через список ID.
👇 Python 3.11👇 aiogram👇 Google Gemini API👇 SQLite (aiosqlite)👇 OpenWeatherMap API👇 Tesseract OCR👇 SpeechRecognition👇 gTTS, Pydub (FFmpeg)👇 Pandas, OpenPyXL, PyPDF2👇 googletrans👇 Loguru👇 python-dotenv
git clone https://github.com/discolite/telegram_gemini_bot.git
cd telegram_gemini_bot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍15❤5🔥5
dask🟠 Масштабирование: от одного ядра до всего кластера.🟠 Совместимый синтаксис: DataFrame, Array, ML API аналогичны знакомым библиотекам.🟠 Отличается удобством и гибкостью: можно начать с локальных расчётов, а затем перенести тот же код в прод.🟠 Используется крупными компаниями: Walmart, Nvidia, NASA, Capital One и другими.
🟠 Открытый исходник, активное развитие, последний релиз был в феврале 2024.
pip install dask[complete]
(пакет с зависимостями для полного функционала — параллельные файловые системы, SQL, ML и др.)
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Plumbum🟠 Shell-like синтаксис: ls | grep[".py"] > "out.txt"🟠 Работа с удалёнными машинами через SSH🟠 Локальные команды и алиасы🟠 Безопаснее и удобнее, чем os.system или subprocess
pip install plumbum
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5👍2🔥2
requests, PyPDF2, openai, schedule, argparse🟠 Загружает PDF-отчёты с защищённого сайта (при необходимости авторизация)🟠 Извлекает текст из PDF (PyPDF2)🟠 Отправляет текст в OpenAI для резюмирования🟠 Сохраняет итоговую структуру: date, summary, key_points, risk_section в JSON🟠 Автоматически запускается каждую неделю по расписанию (schedule)
python weekly_report.py --url https://example.com/reports/weekly.pdf \
--schedule "every Monday" --output report.json
import requests, PyPDF2, openai, schedule, time, argparse, json
from io import BytesIO
def fetch_pdf(url):
resp = requests.get(url)
resp.raise_for_status()
return BytesIO(resp.content)
def extract_text(pdf_stream):
reader = PyPDF2.PdfReader(pdf_stream)
return "\n".join(page.extract_text() or "" for page in reader.pages)
def summarize(text):
resp = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "You summarize professionally."},
{"role": "user", "content": text}],
)
return resp.choices[0].message.content.strip()
def job(url, output):
pdf = fetch_pdf(url)
text = extract_text(pdf)
summary = summarize(text)
data = {"url": url, "summary": summary, "timestamp": time.strftime("%Y-%m-%d")}
with open(output, "a", encoding="utf-8") as f:
f.write(json.dumps(data, ensure_ascii=False) + "\n")
print("✅ Report summarized")
def main(args):
schedule.every().monday.do(job, args.url, args.output)
print("🚀 Scheduler started")
while True:
schedule.run_pending()
time.sleep(60)
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument('--url', required=True, help='URL PDF отчёта')
p.add_argument('--schedule', default='every Monday')
p.add_argument('--output', default='weekly_reports.json')
args = p.parse_args()
openai.api_key = args.openai_key or os.getenv("OPENAI_API_KEY")
main(args)
pip install requests PyPDF2 openai schedule
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤10🔥4👍2
✅ Слушай книгу по частям без потери места✅ Удобно для изучающих язык — возвращаться на нужный момент✅ Повтор занятий и лекций✅ Прост в использовании и работает офлайн
import pygame
import time
import os
import json
AUDIO_FILE = "audiobook.mp3"
PROGRESS_FILE = "progress.json"
pygame.mixer.init()
pygame.mixer.music.load(AUDIO_FILE)
# Загрузка позиции
if os.path.exists(PROGRESS_FILE):
with open(PROGRESS_FILE) as f:
data = json.load(f)
position = data.get(AUDIO_FILE, 0)
print(f"▶️ Продолжаем с {round(position, 2)} сек")
else:
position = 0
pygame.mixer.music.play(start=position)
try:
while pygame.mixer.music.get_busy():
time.sleep(1)
except KeyboardInterrupt:
current_pos = pygame.mixer.music.get_pos() / 1000 + position
with open(PROGRESS_FILE, "w") as f:
json.dump({AUDIO_FILE: current_pos}, f)
print(f"\n⏸️ Остановлено на {round(current_pos, 2)} сек. Позиция сохранена.")
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2😁2
peewee
🟠 Очень простой и понятный синтаксис🟠 Поддержка миграций (pwiz, playhouse.migrate)🟠 Поддерживает связи (ForeignKey, ManyToMany)🟠 Есть расширения (playhouse) для кэша, сигналов, миграций и др.
pip install peewee
#библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
import os
def bulk_rename(folder_path, old_name_part, new_name_part):
if not os.path.isdir(folder_path):
raise NotADirectoryError(f"Путь «{folder_path}» не найден")
for filename in os.listdir(folder_path):
if old_name_part in filename:
new_filename = filename.replace(old_name_part, new_name_part)
old_full = os.path.join(folder_path, filename)
new_full = os.path.join(folder_path, new_filename)
# Пропускаем, если имена совпадают
if old_full == new_full:
print(f"Пропущено (имена совпадают): {filename}")
continue
try:
os.rename(old_full, new_full)
print(f"Переименовано: {filename} → {new_filename}")
except OSError as e:
print(f"Ошибка при переименовании {filename}: {e}")
if __name__ == "__main__":
folder = '/path/to/your/folder'
bulk_rename(folder, 'old_part', 'new_part')
#скрипты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1