Самое поразительное из того, что я увидел за последние 2 недели — тулкит на Python для создания ботнетов. Конечно же, он написан в исследовательских и учебных целях, но, тем не менее, эта штука дает энтузиастам компьютерной безопасности доступ к реализациям целого набора весьма опасных функций.
Знакомьтесь! byob, легальный и публичный тулкит для ботнетов.
![](https://habrastorage.org/getpro/habr/upload_files/51d/46c/232/51d46c232c8da37dfcc44125b5f0f325.png)
Первое, что стоит отметить, byob предназначен лишь только для выполнения кода в целевых системах – автоматически сканить сети на баги, эксплуатировать их и заражать компы эта софтина вам не позволит (макины хакеры всплакнули и закрыли вкладку с этой статьей). Такое ограничение, в общем, логично для исследовательской программы.
Byob умеет генерировать целевой код, который затем нужно выполнить на атакуемой системе. Этот целевой код способен нанести ощутимый ущерб компу жертвы. В целевой код можно зашивать различные наборы команд на ваш вкус.
Byob.modules.escalate — повышение привилегий пользователя в удаленной системе.
Byob.modules.ransom — шифровальщик файлов и генератор биткоин-кошельков для вымогательств.
Byob.modules.keylogger, byob.modules.screenshot, byob.modules.screenshot — функции хищения конфиденциальной инфы.
А еще модули сканирования портов, пакетов, отправки смс и другие мелкие полезности.
Byob позволяет генерить целевой код под разные платформы — Win, OS X, Linux. Код, сгенерированный byob, умеет играть в кошки-мышки с компом жертвы — обходить файерволы, прятаться от антивирусов и противостоять анализу со стороны безопасников. Ну и, конечно же, у вас всегда есть моментальный доступ в консоль жертвы.
Все это приправлено админкой для управления вашим ботнетом.
![](https://habrastorage.org/getpro/habr/upload_files/7c6/17c/2cf/7c617c2cf5c4120983daf57cf46d9b5d.png)
Nikola
В 2020-м году Python стал вторым в мире по популярности языком программирования. Было бы странно, если бы у такого популярного языка не было бы инструментов для быстрого создания и публикации элементарных сайтов. Конечно, есть фреймворки и даже CMS на Python, но это слишком большие и сложные решения для тех, кто хочет быстро собрать небольшой набор простых страниц.
В мире Python за быстрое создание блогов и простых сайтов отвечает Nikola.
![](https://habrastorage.org/getpro/habr/upload_files/65a/3e2/88f/65a3e288fa717f271e9b335da8fa5733.png)
Nikola — генератор статических сайтов на Python. Задаем контент в markdown/html/jupyter файлах, применяем шаблон к контенту, рендерим — и получаем набор статических html файлов, готовых к выгрузке на ваш сервер.
Nikola идеально подходит для
Блогов программистов и дата сайентистов. Работа с сайтом из консоли, простая вставка фрагментов Jupyter, вставка сниппетов с кодом — из коробки в этой программе есть все, что нужно для ведения технического блога.
Небольших сайтов для ваших open-source продуктов — документация к вашим программам, чейнджлоги.
Маленьких лендингов для ваших проектов. Nikola позволяет легко и удобно управлять Jinja2 шаблонами для сайтов.
Создаем новый проект
$ nikola init --demo my_first_site
Creating Nikola Site
====================
This is Nikola. We will now ask you a few easy questions about your new site.
If you do not want to answer and want to go with the defaults instead, simply restart with the `-q` parameter.
--- Questions about the site ---
Site title [My Nikola Site]: My First Nikola Site
...a couple more questions...
That's it, Nikola is now configured. Make sure to edit conf.py to your liking.
If you are looking for themes and addons, check out https://themes.getnikola.com/ and https://plugins.getnikola.com/.
Have fun!
INFO: init: A new site with example data has been created at my_first_site.
INFO: init: See README.txt in that folder for more information.
Добавляем тестовый блогопост на сайт
$ cd my_first_site
$ nikola new_post -e
Creating New Post
-----------------
Title: My First Blog Post!
Scanning posts....done!
INFO: new_post: Your post's text is at: posts/my-first-blog-post.rst
$ nikola build
Scanning posts....done!
. render_galleries:output/galleries
. render_galleries:output/galleries/demo
. render_galleries:output/galleries/index.html
. render_galleries:output/galleries/rss.xml
. render_galleries:output/galleries/demo/tesla4_lg.thumbnail.jpg
...and many more files in between...
. render_tags:output/categories/cat_nikola.xml
. render_pages:output/stories/social_buttons/index.html
. render_pages:output/stories/quickref/index.html
. render_tags:output/categories/python.xml
. generate_rss:output/rss.xml
. render_pages:output/stories/a-study-in-scarlet/index.html
. sitemap:output/sitemap.xml
. sitemap:output/sitemapindex.xml
. robots_file:output/robots.txt
Смотрим, что у нас получилось.
$ nikola serve --browser
INFO: serve: Serving HTTP on 0.0.0.0 port 8000...
INFO: serve: Opening http://0.0.0.0:8000/ in the default web browser...
Nikola во многом заточен под ведение блога, но, конечно же, есть возможность добавлять обычные статические страницы.
$ nikola new_page
Creating New Page
-----------------
Title: index
Scanning posts....done!
[1970-01-01T00:00:00Z] INFO: new_page: Your page's text is at: pages/index.rst
Безусловно, есть более гибкие и мощные инструменты вроде Gatbsy (на Node), но программистам на Python, конечно же, приятно видеть и использовать инструменты создания статических сайтов на языке, который они любят, ценят и уважают.
Easyocr
Когда речь идет о распознавании текста в изображениях, первым делом разработчики вспоминают о pytesseract — питонячей обвязке OCR решения от Google. И Tesseract действительно неплохо справляется со своими обязанностями.
Если же у вас стоит задача распознавания отдельных надписей на фото, да еще и с небходимостью вычисления координат каждой надписи — стоит посмотреть в сторону easyocr.
Easyocr — решение на основе pytorch. Из коробки поддерживаются многие популярные языки и алфавиты. Ключевое отличие от tesseract — наличие метаданных о надписях на картинке: координаты и condifence rate на каждую надпись. Easyocr — хорошее решение для чтения номеров телефонов, названий компаний на вывесках, дорожных знаков и прочих коротких фрагментов текста.
![](https://habrastorage.org/getpro/habr/upload_files/e6d/5f9/653/e6d5f9653482fbf91a169170da3b9ca4.png)
Благодаря тому, что решение написано на pytorch, easyocr можно допиливать и модифицировать относительно малой кровью. Например, расширить поддержку некоторых языков, добавить распознавание хитрых кастомных шрифтов или улучшить поддержку чтения каких-то специфических фрагментов текста (например, номерных знаков).
import easyocr
reader = easyocr.Reader(['ch_sim','en'], gpu = False) # Можно юзать GPU!
result = reader.readtext('chinese.jpg')
В ответе видно координаты и confidence rate.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
На сегодня все, прошлые питонячие радости смотрите по ссылке.