Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
🦈 Wireshark profiles.
• Годнота для адептов Wireshark подъехала: репозиторий с кучей готовых профилей для анализа того или иного трафика.
• Использовать чрезвычайно просто — качаете zip нужного профиля по ссылке ниже, импортируете в Wireshark, выбираете сетевой интерфейс... profit. Да, вы можете самостоятельно накидать для себя нужные фильтры, но тут уже все сделали за Вас. Пользуйтесь!
➡️https://github.com/amwalding/wireshark_profiles
#Wireshark
🦈 Руководство по анализу трафика сети посредством Wireshark.
• Полезное руководство по использованию и изучению Wireshark для начинающих, которое поможет освоить данный инструмент и приступить к практике:
➡️https://habr.com/ru/post/735866/
• Хочу напомнить, что данный продукт пользуется заслуженной популярностью у вирусных аналитиков, реверс-инженеров, системных администраторов и, безусловно, специалистов в области информационной безопасности. Если нужен дополнительный материал, то Вы всегда сможете найти его по хештегу #Wireshark.
👩💻 PCAPdroid или Wireshark на минималках.
• Я уже давно заметил, что тема сетей и различные подборки информации по разным инструментам вызывают колоссальный интерес. ПО о котором сегодня пойдет речь не будет исключением. Речь идет о PCAPdroid, который имеет открытый исходный код и может в следующие сценарии использования:
➖ Анализ соединений, созданных приложениями установленными на устройстве (как пользовательскими, так и системными);
➖ Создание дампа сетевого трафика Android-устройства и его отправка на другое устройство для последующего анализа в стороннем приложении (например #Wireshark на ПК);
➖ Расшифровка HTTPS/TLS трафика конкретного приложения.
• Подробно описывать данный инструмент не буду, так как за меня это сделали разработчики: https://emanuele-f.github.io/PCAPdroid/ru/quick_start.html
• Ну, и напоследок — добрые люди с 4pda постоянно делятся полезными комментами и выкладывают новые версии с премиум функционалом. Скачать актуальную версию можно по ссылке: https://4pda.to
#Android#Wireshark
📲 Мобильник для перехвата чужих SMS сообщений.
• Есть такая занимательная статистика, которая демонстрирует топ самых продаваемых мобильных телефонов в истории. Первое место в этой статистике занимает Nokia 1100, а общее число продаж этого телефона перевалило за 250 миллионов. Вот Вам забавная история, которая случилась в далеком 2009 году...
• В процессе расследования дела о почтовом мошенничестве в Нидерландах полиция столкнулась с весьма интересным фактом – неизвестный покупатель отдал 25 тысяч евро за телефон Nokia 1100. Данная бюджетная модель была выпущена в конце 2003 г. и предназначалась для развивающихся рынков, а цена телефона составляла менее 100 евро.
• В попытках выяснить, почему хакеры готовы платить такие большие деньги за дешевый и внешне непримечательный аппарат, полиция обратилась к компании Ultrascan Advanced Global Investigations. Эксперты Ultrascan выяснили, что хакеров привлекают не все аппараты Nokia 1100, а только изготовленные на фабрике Nokia в г. Бохум (Германия).
• Эта серия аппаратов была признана бракованной из-за проблем в устаревшем программном обеспечении, созданном еще в 2002 г. За счет этого самого «брака» хакеры научились перехватывать чужие SMS сообщения, в частности, одноразовые коды для банковских транзакций — mTAN (mobile Transaction Authentication Number), которые европейские банки присылали своим клиентам по SMS.
• Таким образом, получается, что хакерам оставалось лишь подключить этот телефон (без какой бы то ни было перепрошивки) к снифферу наподобие #WireShark и дело в шляпе — можно перехватывать SMS, а затем перевести деньги на свой счет.
• Интересно заметить, что на момент инцидента (2009 год), компания Nokia продала во всем мире более 200 миллионов экземпляров Nokia 1100 и моделей на ее базе, однако количество уязвимых аппаратов остается неизвестным...
#Разное
• Оказывается, что у разрабов wireshark есть интересный инструмент (Stratoshark), который предназначен для облачных решений и позволяет анализировать системные вызовы. Функционал достаточно богатый и позволяет нам просматривать результат в UI, проводить анализ записей Falco и Sysdig OSS, использовать гибкую систему фильтрафии и менять отображение информации под ваши хотелки и потребности...
➡️ Вот тут более подробно: https://blog.wireshark.org/2025/01/those-arent-packets/
#Stratoshark#wireshark
• В интересное время живем... домашние гаджеты — от холодильника до чайника — поумнели настолько, что теперь нуждаются в постоянной проверке сетевого подключения. А что говорить о вашей ОС, которая живет своей жизнью и инициирует различные сетевые подключения в огромном кол-ве без вашего ведома?
• Трафик домашних устройств можно отслеживать и блокировать на маршрутизаторе, где есть функция файрвола. Для более продвинутого мониторинга традиционно используются сетевые снифферы. Самым известным является #Wireshark, но есть наиболее легкий инструмент и с наиболее приятным интерфейсом. Тулза называется Sniffnet. Наверное, это самый красивый инструмент сетевого мониторинга в настоящее время, причём у него на выбор есть четыре темы оформления. В остальном функции стандартные:
- Поддержка фильтров для наблюдаемого трафика;
- Просмотр общей статистики по интернет-трафику;
- Просмотр графиков интенсивности трафика в реальном времени;
- Подробная информация о доменах и сетевых провайдерах узлов, с которыми происходит связь;
- Идентификация соединений в локальной сети;
- Географическое положение удалённых узлов;
- Настройка пользовательских уведомлений для информирования о наступлении определённых сетевых событий;
- Просмотр сетевых подключений в реальном времени;
- Сохранение полного текстового отчёта с подробной информацией по каждому сетевому соединению:
➡IP-адреса источника и получателя;
➡Порты источника и назначения;
➡Используемые протоколы;
➡Количество переданных пакетов и байт;
➡Начальная и конечная временные метки обмена информацией.
• Если говорить простыми словами, то тулза позволяет подключаться к определенному сетевому интерфейсу и наблюдать его активность. Кстати, вы еще можете настроить нужные уведомления: по соединению с определенным ip или превышению лимита по частоте передачи пакетов. Есть кроссплатформенность (можно использовать на Linux, Mac или Windows). Ну и весь исходный код открыт, так что забираем по ссылке ниже и пользуемся:
➡️GitHub;
➡️Сайт проекта;
➡️Wiki проекта.
#Сети#Tools
• Нашел у себя в загашнике интересное видео (мини-курс на 4 часа), которому уже 5 лет, но многие темы до сих пор остаются актуальными. Тема видео: практические атаки на интерфейс USB. Если коротко, то мы разберем практические способы анализа USB-протоколов, железо и софт для отладки USB, а также специализированные инструменты для атак. К слову, авторами данного видео являются Павел Жовнер (создатель Flipper Zero) и Андрей Коновалов (инженер-программист из Google), так что рекомендую к просмотру.
• Описание материала:
➡Сниффинг и декодинг USB-пакетов с помощью логического анализатора; usbmon и #Wireshark; USBProxy Nouveau; OpenVizsla.
➡Демонстрация BadUSB атак с помощью оригинальных Rubber Ducky, Bash Bunny и Lan Turtle. BadUSB с помощью дешевых китайских аналогов Rubbery Ducky (ATtiny55, CJMCU, Cactus WHID) и Raspberry Pi Zero.
• Эмуляция USB-устройств стандартных классов:
➡С помощью фреймворка Facedancer на Facedancer21 и GreatFET One;
➡С помощью legacy модулей Gadget подсистемы (g_hid.ko и т.д.) и Composite Gadget фреймворка (FunctionFS/ConfigFS) на Raspberry Pi Zero.
• Эмуляция кастомизированных USB-устройств:
➡С помощью фреймворка Facedancer на Facedancer21 и GreatFET One;
➡С помощью legacy модулей Gadget подсистемы (GadgetFS и Raw Gadget) и Raspberry Pi Zero.
• Фаззинг USB-стека:
➡В виртуальных машинах с помощью syzkaller и vUSBf;
➡Физических устройств с помощью Facedancer21, GreatFET One и Raspberry Pi Zero.
#USB#Hack#ИБ