Pull to refresh
-5
@andmerk93read⁠-⁠only

User

Send message

Пример Django Admin Stacked Inline: отношения многие-к-одному и многие-ко-многим

Reading time2 min
Views14K

Django Admin — довольно мощный инструмент при работе с данными в стиле CRUD (создание, чтение, модификация, удаление). Одна из особенностей, о которой многие (даже опытные) разработчики не подозревают, — это наличие нескольких строк «many-one» или «many-to-many» на одной странице.

Читать далее

Запуск Django сайта на nginx + Gunicorn + SSL

Reading time4 min
Views61K

Для написания этой статьи ушло очень много сил и времени. Я натыкался на множество инструкций, как на английском, так и на русском языках, но как я понял, - они все были клонами оригинальной статьи на Digital Ocean. Спросите вы, почему я так считаю, а все потому, что все ошибки и неточности передаются с одного ресурса на другой без всяких изменений.

Читать далее

Python модули и пакеты

Level of difficultyEasy
Reading time4 min
Views53K

Данная статья написана для новичков, которые изучают язык программирования Python.

Задача которой продемонстрировать на простых примерах способы написания пакетов и модулей, а так же показать какие трудности могут возникнуть и пути их решения.

Читать далее

Шпаргалка по Smali на русском

Reading time13 min
Views42K

Русская шпаргалка по Smali


Приветствую, любители реверс-инжинирить Android. Перед вами шпаргалка по Smali — аналогу ассемблера для Android-приложений.



Изначальный текст на русском взят отсюда. Там текст появился из машинного перевода официальной документации.


В итоге, оформил сухой текст + поправил небольшие опечатки и корявости перевода. По поводу замечаний и предложений можете писать либо мне в ЛС, либо оформлять PR на Gist.

Читать дальше →

Как легко расшифровать TLS-трафик от браузера в Wireshark

Reading time2 min
Views167K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →

Анализ SSL/TLS трафика в Wireshark

Reading time7 min
Views230K


Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.

Читать дальше →

Wireshark — приручение акулы

Reading time10 min
Views1.1M


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

Зачем вообще нужны анализаторы пакетов?
Для того чтобы проводить исследования сетевых приложений и протоколов, а также, чтобы находить проблемы в работе сети, и, что важно, выяснять причины этих проблем.
Вполне очевидно, что для того чтобы максимально эффективно использовать снифферы или анализаторы трафика, необходимы хотя бы общие знания и понимания работы сетей и сетевых протоколов.
Так же напомню, что во многих странах использование сниффера без явного на то разрешения приравнивается к преступлению.

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →

Держи свой трафик в тайне. SSL Pinning — ещё раз о том же самом

Reading time25 min
Views63K

Всем привет! Меня зовут Юрий Шабалин, я один из основателей компании Stingray Technologies. Мы разрабатываем платформу анализа защищенности мобильных приложений iOS и Android.

Сегодня я хотел бы снова затронуть тему безопасности сетевого взаимодействия между приложением и его серверной частью. На эту тему написано немало, но комплексной статьи, отвечающей на самые разные вопросы, начиная от того, что же такое SSL, до того, как работает атака MiTM и как от нее можно защититься, я еще не встречал (а может, просто плохо искал). В любом случае, мне бы хотелось поделиться своими мыслями на этот счет и внести свою малую долю в русскоязычный контент на эту тему.

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

Читать далее

Откручивание SSL пиннинга в Android приложениях

Reading time7 min
Views30K

В процессе тестирования на проникновение мобильных приложений на Android часто необходимо выяснить, каким образом приложение общается с сервером, с какими адресами происходит взаимодействие, как выглядят запросы, какие данные передаются. Но не всегда это удается сделать.

В наше время для взаимодействия компонентов веб-приложений используется протокол HTTPS, в основе которого лежат протоколы HTTP и TLS. Просто так перехватить трафик приложения не выйдет, т.к. он зашифрован. Можно, конечно, использовать прокси сервер, который с помощью своего сертификата сможет расшифровать трафик приложения и увидеть все запросы. Однако и средства защиты приложений не стоят на месте. Многие мобильные приложения используют SSL Pinning.

SSL Pinning – это внедрение SSL сертификата, который используется на сервере в код мобильного приложения. Таким образом, приложение не использует хранилище сертификатов устройства и не будет работать с сертификатом, который мы ему подсунули.

Читать далее

«Релкомизация всей страны»

Reading time18 min
Views15K
Подборка статей о пиратстве в 1990-е, отчего-то воспринятая Хабром в штыки, заканчивалась оптимистичными прогнозами лидеров IT-индустрии о том, что развитие сетей уже в скорейшем будущем позволит заменить большинство ПК простенькими «тонкими клиентами», и ресурсоёмкие приложения будут работать не на компьютере пользователя, а на центральных серверах. Прогресс пошёл не совсем в этом направлении — даже веб-приложения ныне требуют существенных ресурсов на стороне пользователя — но интересно взглянуть, что писали о прогрессе ПК всего за пару лет до той статьи о «замене персональных компьютеров сетевыми»:

(КомпьютерПресс, январь 1995)

Слухи о рождении домашнего компьютера немного преувеличены

Н.Иванов

В летнее время, под тенью акации,
Приятно мечтать о дислокации.

Фаддей Козьмич Прутков

В последнее время в российской прессе, не только компьютерной, но и общечеловеческой, все чаще можно встретить словосочетание «домашний компьютер». Шум, поднятый вокруг «компьютера для народа», несколько напоминает кампанию повальной информатизации и всеобщей компьютерной грамотности начала перестройки. Та кампания была вызвана невиданными успехами советских инженеров, которым удалось-таки скопировать Intel 8080 и освоить серийный выпуск клона (прошу не рассматривать это как упрек в адрес вышеупомянутых инженеров — все мы выпали из одного гнезда). Вы помните, что 3-4 года назад в каждом магазине культтоваров можно было по дешевке приобрести уродца, программируемого на Бейсике, со стримером «Электроника-302» и черно-белым монитором высокого разрешения, который к тому же можно было использовать в качестве телевизионного приемника. Правда, массовый покупатель не пошел на поводу у пророков компьютерной эры, отдав предпочтение колбасе, а профессионалы собирали из подручных средств компьютеры и помощнее (если им не удавалось утащить с работы буржуазную АТ-шку). В общем, первая волна одомашнивания «умных машин» разбилась о стену безразличия.

Нынешняя ситуация существенно отличается от тогдашней. Во-первых, в связи со значительным подорожанием колбасы платежеспособный спрос постепенно смещается в сторону наукоемких товаров. Во-вторых, промышленный и деловой рынок, кажется, насытился компьютерами, и предложение естественным образом ищет выход в другие сегменты рынка. В-третьих, новая волна инспирирована не успехами отечественной науки и движется не из Зеленограда и Подлипок, а откуда-то из-за океана. Журнал Fortune (25 июля 1994, с. 113) замечает, что в 1993 году «беспрецедентный рост продаж «домашним» пользователям застал промышленность врасплох». Постепенное возвращение России в лоно мировой экономики способствует тому, что российский рынок все быстрее откликается на изменения рынка западного. Таким образом, предпосылки для второй компьютерной революции, которая позволит каждой кухарке управлять компьютером, более существенны. Что же мы можем ожидать на наших прилавках, и как к этому относиться?
Читать дальше →

Как работать с curl в Windows

Reading time9 min
Views233K

Curl (client URL) — это инструмент командной строки на основе библиотеки libcurl для передачи данных с сервера и на сервер при помощи различных протоколов, в том числе HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, POP3, POP3S, SMTP и SMTPS. Он очень популярен в сфере автоматизации и скриптов благодаря широкому диапазону функций и поддерживаемых протоколов. В этой статье мы расскажем, как использовать curl в Windows на различных примерах.
Читать дальше →

CAPTCHA: убивая конверсию

Reading time7 min
Views14K
image

Капча считается международным стандартом защиты от DDoS-атак, автоматических регистраций и спама. Мы в Variti проанализировали эффективность этого решения и пришли к заключению, что это очень неудобное и малоэффективное средство защиты от ботов, плохо влияющее на конверсию, а области с капчей — это сами по себе уязвимые места для атак.
Читать дальше →

Анализ HTTP-трафика с Mitmproxy

Reading time8 min
Views104K
mitmproxy

В практике веб-разработчика нередко возникают ситуации, когда требуется отследить и проанализировать трафик приложений, общающихся с сервером по протоколу HTTP (в качестве примера можно привести тестирование приложений для мобильных устройств или HTTP API).

Инструменты, традиционно используемые для прослушивания трафика (tshark, о котором мы уже писали, а также ngrep и tcpdump) для этой цели подходят плохо: функциональность для работы с протоколом HTTP у них ограничена.

Для анализа HTTP-трафика существует более специализированное, простое и эффективное решение. Знакомьтесь: mitmproxy. На русском языке подробных публикаций о нем почти нет. В этой статье мы поделимся своим опытом работы с mitmproxy и надеемся, что и вам он окажется полезным.
Читать дальше →

История систем управления версиями

Reading time17 min
Views41K


В этой статье сравним с технической точки зрения самые известные системы управления версиями (в будущем планируем расширить список):

  1. Первое поколение
  2. Второе поколение
  3. Третье поколение
Читать дальше →

Книга «40 алгоритмов, которые должен знать каждый программист на Python»

Reading time6 min
Views52K
image Привет, Хаброжители!

Понимание работы алгоритмов и умение применять их для решения прикладных задач – must-have для любого программиста или разработчика. Эта книга поможет вам не только развить навыки использования алгоритмов, но и разобраться в принципах их функционирования, в их логике и математике.

Вы начнете с введения в алгоритмы, от поиска и сортировки перейдете к линейному программированию, ранжированию страниц и графам и даже поработаете с алгоритмами машинного обучения. Теории не бывает без практики, поэтому вы займетесь прогнозами погоды, кластеризацией твитов, механизмами рекомендаций фильмов. И, наконец, освоите параллельную обработку, что даст вам возможность решать задачи, требующие большого объема вычислений.

Дойдя до конца, вы превратитесь в эксперта по решению реальных вычислительных задач с применением широкого спектра разнообразных алгоритмов.
Читать дальше →

Marshmallow vs. Pydantic: две лучшие библиотеки для сериализации и валидации данных на Python

Reading time10 min
Views42K

Сериализация и десериализация данных — это преобразование между необработанной структурой данных и экземплярами классов для их хранения и передачи. Например, преобразование объектов Python в JSON-представление. Мы рассмотрим две популярные Python-библиотеки Marshmallow и Pydantic, которые помогут нам справиться как с преобразованием, так и с валидацией данных. Сначала я представлю вам каждую библиотеку, используя небольшие примеры, а потом мы сравним их и разберем различия. Я также расскажу, чего вам стоит избегать при работе с обеими библиотеками.

Читать далее

Отправляем письма с помощью asyncio и aiohttp из Django приложения

Reading time7 min
Views12K
Всем привет!

Я занимаюсь разработкой и поддержкой сервиса уведомлений в Ostrovok.ru. Сервис написан на Python3 и Django. Помимо транзакционных писем, пушей и сообщений, сервис также берёт на себя задачи по массовым рассылкам коммерческих предложений (не спам! trust me, отписки у нас работают лучше подписок) пользователям, давшим на это согласие. Со временем база активных получателей разрослась до более миллиона адресов, к чему почтовый сервис не был готов. Я хочу рассказать о том, как новые возможности Python позволили ускорить массовые рассылки и сэкономить ресурсы и с какими проблемами нам пришлось столкнуться при работе с ними.


Читать дальше →

Асинхронный python без головной боли (часть 1)

Reading time14 min
Views373K

Почему так сложно понять asyncio?

Асинхронное программирование традиционно относят к темам для "продвинутых". Действительно, у новичков часто возникают сложности с практическим освоением асинхронности.

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку

Интеграция: синхронное, асинхронное и реактивное взаимодействие, консистентность и транзакции

Reading time15 min
Views127K

Продолжаю серию статей про хорошую интеграцию. В первой статье я говорил, что хорошая админка обеспечит быстрое решение инцидентов — как ключевой фактор для устойчивости работы всего комплекса систем. Во второй — про использование идемпотентных операций для устойчивой работы в условиях асинхронного взаимодействия и при сбоях.

В этой статье рассмотрим синхронный, асинхронный и реактивный способы взаимодействия между сервисами и более крупными модулями. А так же способы обеспечить консистентность данных и организовать транзакции.

Читать далее

Information

Rating
Does not participate
Registered
Activity

Specialization

Инженер АСУТП
SQL
Python
Network administration
System administration
Server administration
PLC
PLC programming
SCADA
APCS