Search
Write a publication
Pull to refresh
0
Artem @storageread⁠-⁠only

User

Send message

Парсим на Python: Pyparsing для новичков

Reading time6 min
Views190K
Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

import matplotlib.pyplot  as plt

имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

В результате парсинга, например, может быть необходимо прийти к следующему выражению:

{ 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }

Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

r'^[ \t]*import +\D+\.\D+ +as \D+'

К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.

В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

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

Authomatic: python библиотека для аутентификации и авторизации

Reading time6 min
Views42K
imageПрактически любое веб-приложение предоставляет возможность авторизации пользователя с использованием учетной записи пользователя, в каком либо из известных социальных сервисов.

Магия авторизации происходит строго по протоколу OAuth 1.0а и OAuth 2.0 и значительно упрощает жизнь и владельцу веб-приложения и самому пользователю.

Остается сущая мелочь, реализовать нужный протокол применительно к конкретному веб-приложению. Регистрация и вход в веб сервис TheOnlyPage с использованием учетных записей Facebook, Google, LinkedIn и Microsoft Live работают благодаря python библиотеке Authomatic.

Согласно документации Authomatic обладает следующими замечательными особенностями:
Читать дальше →

Троян в highscreen, или как телефон начал творить чудеса

Reading time6 min
Views132K
Добрый день, Хабр!
Хочу поведать вам историю, которая чуть не спровоцировала поседение моей, еще молодой, головы.
Предыстория
Все началось с того, что я приобрел себе Highscreen Omega Prime S пару месяцев назад, был доволен как слон, никак не мог нарадоваться этому чудесному аппарату, который работал шустро и почти без нареканий. И все бы было отлично, если бы я однажды не увидел кучу нотификаций, которые выглядели как-то так:


И я уж начал думать — что же это такое, откуда оно взялось, может быть, мой телефон сломали, но как?! Но через несколько секунд паника стихла, я зажал одно из уведомлений, выбрал пункт «Информация о приложении», и был очень удивлен, увидев то, что уведомления вывело приложение «Обновление ПО»…
Читать дальше →

Децентрализованная биржа — уже полгода в строю

Reading time5 min
Views31K
Привет! Сегодня я расскажу вам про децентрализованную криптовалютную биржу. То есть, технологию, с которой вы можете торговать напрямую с другими пользователями, без необходимости доверять свои средства посреднику-бирже. Да-да, она уже реализована и работает аж с апреля. Называется Asset Exchange.



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

Про NXT уже многие слышали. Вкратце: это не форк Bitcoin, а отдельно написанная криптовалюта, работающая на принципе Proof-of-Stake. Ей уже около года, и подробнее я о ней уже рассказывал почти год назад. На блокчейне NXT уже построены многие интересные фишки:
  • Alias-ы — аналог идеи Namecoin;
  • можно слать и получать шифрованные сообщения на NXT-адрес прямо в клиенте;
  • Asset Exchange — децентрализованная биржа активов, о которой я сегодня расскажу;
  • и даже Digital Good Store — децентрализованная торговая площадка, о которой я расскажу в другой статье.
Читать дальше →

Исследуем китайские роутеры на RT5350

Reading time7 min
Views140K
Однажды, lolipop купил роутер на алиэкспрессе. Да не простой роутер, а очень компактный и дешевый, с 2 Ethernet-портами, USB, да еще и от фирмы, которая в начале 2000-х продавала свои mp3-плееры на территории РФ: Nexx WT1520H.
image
Стандартная прошивка, как и почти всегда, была скудная, и, конечно же, хотелось заменить ее на что-то более вменяемое. Но вот незадача — никаких альтернативных прошивок под роутер нет, и прошить непонятно как, т.к. никакие другие прошивки не принимались через веб-интерфейс, заголовок прошивки я раньше такой не видел, да и binwalk ничего в ней не находил, стало быть, она зашифрована:
00000000  32 33 35 30 6b d9 39 00  00 00 0e 02 00 00 00 00  |2350k.9.........|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 3e 19 53 c5  |............>.S.|
00000020  63 f5 51 9f 82 74 2d 03  2e 2f 1f 32 9c 4a 93 96  |c.Q..t-../.2.J..|
00000030  15 82 23 d0 b2 7e d7 1b  13 c3 1b 1f 06 fa f8 e0  |..#..~..........|
00000040  bb 43 9b c6 ee fc 4b 7a  e6 50 71 2b f4 f3 95 c3  |.C....Kz.Pq+....|
00000050  63 d0 a3 9c 92 2e 16 c6  19 1c 4a 93 cb 95 c3 63  |c.........J....c|
00000060  d2 9b 1a f5 2e 16 c6 19  1c 4a 93 f9 68 3c 9c 73  |.........J..h<.s|
00000070  14 63 d5 10 5e d3 6b 25  2b c2 2e 07 eb 85 73 25  |.c..^.k%+.....s%|
00000080  9b 6b c0 f2 d8 9b cf 65  56 ac a9 c2 28 61 dd 55  |.k.....eV...(a.U|
00000090  18 a4 5b e9 ba 11 93 ec  30 76 4f 40 c1 f0 7c cb  |..[.....0vO@..|.|
000000a0  36 d3 b3 93 fe 3d 6b 10  66 fa 43 39 f2 f6 c0 91  |6....=k.f.C9....|

lolipop слил данные с флешки через программатор, и мы начали в них ковыряться.
Читать дальше →

Разрешите вас отадминить?

Reading time8 min
Views74K


Главным врагом хакеров (не будем спорить об изначальном значении этого слова — сейчас мы будем этим термином обозначать тех, кто занимается созданием/распространением вредоносных программ) являются антивирусы, которые с той или иной степенью успешности обнаруживают их поделки и удаляют. Одним из способов предотвращения обнаружения незаконной деятельности и используемых для этого утилит является попытка «заставить» легальное ПО служить своим целям. Например, зачем что-то скачивать из интернета самому, рискуя попасть в немилость у фаервола или эвристика (не говоря о сигнатурах), если можно запустить wget с параметрами? Зачем городить свою отправку корреспонденции, если есть blat? Зачем долго и упорно делать утилиту удаленной слежки за компьютером, когда есть бесплатные программы удаленного администрирования?
Читать дальше →

Взлом с продолжением

Reading time4 min
Views44K
Одно время я работал на free-lance.ru. С утра я обычно мониторил заказы, а после обеда непосредственно работал. Однажды я наткнулся на заказ, сумма за выполнение которого была очень аппетитной. Я сразу отписался по заказу, и буквально через минуту получил ТЗ на проект в личку. Поначалу меня удивила скорость ответа, и то что меня сразу выбрали исполнителем, но с другой стороны такое уже частенько бывало. Файл с ТЗ мне показался странным, в него была встроена ссылка на flash ролик. Проверив файл на вирусы и получив ответ, что угроз не обнаружено, я таки усыпил свою бдительность и щелкнул по ссылке на flash ролик. А щелкать не стоило.
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #29

Reading time4 min
Views54K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

HumHub



Открытая социальная сеть, построенная на Yii — достойный аналог Diaspora. Разработчики вообще говорят, что это фреймворк, который предоставляет инструменты для лёгкой и продуктивной командной работы. Гибкая модульная система и ряд плагинов: заметки, таск-менеджер, календарь, голосование, рассылки и др. Еще HumHub — это очень красиво. Клевый современный интерфейс, асинхронность, всплывающие подсказки и прочие детали.

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

Роутер из DAP-1160

Reading time6 min
Views28K
Добрый день, Хабр.

Хочу поделиться небольшим практическим опытом о создании роутера из старой точки доступа DAP-1160. Цель данной задачи была проста – не покупать новый роутер на дачу и сэкономить денег. Ну и еще, конечно, интерес.

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

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

Атаки на SS7: вчера для спецслужб, сегодня для всех

Reading time3 min
Views99K
image

В конце августа газета Washington Post обнародовала буклет американской компании Verint, которая предлагает своим клиентам сервис Skylock по выслеживанию абонентов мобильных сетей в разных странах мира – без ведома самих абонентов и операторов. Хотя предложения локационных сервисов давно можно найти в Интернете, но случай Verint, пожалуй, один из первых, когда такие услуги предлагаются вполне официально и на глобальном уровне.

Как такое возможно? В качестве реакции на истории о мобильной слежке чаще всего выдвигается версия о сложных технологиях, которые могут использоваться лишь спецслужбами. На практике всё проще. Телекоммуникационная сеть состоит из множества подсистем различного технологического уровня, и уровень безопасности всей сети зачастую определяется уровнем самого слабого звена.
Читать дальше →

Меня попросили взломать программу на собеседовании. Часть 2

Reading time10 min
Views71K
Это перевод второй части публикации «Меня попросили взломать программу на собеседовании». Оригинальный текст можно найти здесь.

Предисловие


Привет, ребята. Если вы не знаете, что означает «Часть 2», пожалуйста прочитайте Часть 1.
Для начала я хотел бы поблагодарить всех прочитавших первую часть, поскольку в итоге я получил массу отличных отзыв.

Так же я бы хотел устранить некоторые недопонимания:
  1. Я более не работаю на данную компанию, я переехал в Барселону;
  2. Я проходил данное интервью почти год назад;
  3. Программы я взламывал в облаке ($5 тариф, да, вы угадали компанию), поэтому я не считаю, что использование root@'a является проблемой — я могу пересоздать новую среду за пару секунд. В итоге я все же переключился на пользователя eren@, так как gdb не принимал рутовые инит файлы.
  4. Не забудьте прочитать окончание статьи — вам обязательно понравится!

Поехали


На этот раз мы будем работать не с дверью, а с ядерной ракетой.
Читать дальше →

Патчим процессы в Linux на лету при помощи GDB

Reading time11 min
Views15K
Техники перехвата функций в Linux хорошо известны и описаны в интернете. Наиболее простой метод заключается в написании динамической библиотеки с «функциями-клонами» и использовании механизма LD_PRELOAD для переопределения таблицы импорта на этапе загрузки процесса.

Недостаток LD_PRELOAD в том что необходимо контролировать запуск процесса. Для перехвата функций в уже работающем процессе или функций отсутствующих в таблице импорта можно использовать «сплайсинг» — запись команды перехода на перехватчик в начало перехватываемой функции.

Также известно, что в Python имеется модуль ctypes позволяющий взаимодействовать с данными и функциями языка Си (т.е. большим числом динамических библиотек имеющих Си интерфейс). Таким образом ничто не мешает перехватить функцию процесса и направить её в Python метод обёрнутый в С-callback с помощью ctypes.
Читать дальше →

Так ли приватен HTTPS?

Reading time3 min
Views67K
Недавно в одном из прочитанных блогов увидел интересное утверждение (в моем вольном переводе):
Думаете, когда вы работаете с онлайн-банкингом из офиса, у вас сквозное безопасное соединение? Подумайте еще разок.

Достаточно, чтобы заинтересовать и немного покопать. «И шо ви таки думаете? (с)» В «насквозь безопасное» HTTPS соединение можно врезать как минимум двух посредников (Man In The Middle). Правда, оба должны быть Trusted (TMITM), так что не надо сильно паниковать. Пока что.
Подробности

Примеры поиска в Shodan

Reading time3 min
Views309K
Эта статья предназначена для тех, кто либо вовсе не слышал о Shodan, либо слышал, но так и не понял, как им пользоваться. Подобных материалов на русском языке я не нашел, часть информации почерпнул тут, остальное добавил из личного опыта. Я приведу примеры использования «самого страшного поисковика интернета» по имени Shodan. Сервис разработан web-девелопером Джоном Мазерли (John Matherly) и ориентирован, прежде всего, на поиск устройств подключенных к интернету.

Shodan опрашивает порты устройств и на основе полученных ответных баннеров делает выводы об устройствах и сервисах. Поисковик платный, годовая подписка обойдется в 20$, однако, попробовать его в действии можно и за так: после бесплатной регистрации доступно 50 результатов поиска. Историю создания и биографию автора найдете сами, если будет интересно, а пока перейдем к делу:
Читать дальше →

Webmin — такой, каким мы все хотели бы его видеть

Reading time3 min
Views52K
Webmin — это web-интерфейс для системного администрирования Unix. Кто из системных администраторов не знает об этом?

Также все знают, что проект Webmin был начат очень давно (около 15 лет назад), что наложило свой отпечаток на управление и интегрирование современных тем (оформлений) для панели. Часть современных модулей в Webmin управляются посредством библиотеки под названием ui-lib.pl, входящей в его дистрибутив, которая и обрабатывает поступающий на дальнейшее отображение модуль. Только вот проблема заключается в том, что множество из представленных модулей, в силу своей древности, вовсе не взаимодействуют с библиотекой упомянутой выше. Старые модули просто создавались каждый в отдельности, как получится. По словам разработчиков, проблему полного разделения логики и презентации планируется полностью устранить в версии Webmin 2.0, но это случится годами позже.

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

Презентация




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

Встраивание в ядро Linux: перехват функций

Reading time9 min
Views17K
Перехват функций ядра является базовым методом, позволяющим переопределять/дополнять различные его механизмы. Исходя из того, что ядро Linux почти полностью написано на языке C, за исключением небольших архитектурно-зависимых частей, можно утверждать, что для осуществления встраивания в большинство из компонентов ядра достаточно иметь возможность перехвата соответствующих функций.

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

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

Релиз системы управления виртуализацией Proxmox 3.3

Reading time1 min
Views26K


Для тех, кто не знает Proxmox — это оболочка, работающая поверх Debian и позволяющая удобно управлять виртуальными машинами kvm и контейнерами openvz через веб интерфейс. Аналог Xenserver, vmware vcenter, RHEV, oracle virtualbox и др.
Довольно много приятных изменений, которые я честно ожидал ещё два года назад:
Читать дальше →

Skype для Linux версии 4.2, не требующей обновления на более новую

Reading time2 min
Views61K
skype_linux_logo
Для собственного удобства и людей сделал пропатченную версию клиент Skype для Linux версии 4.2.0.13, которая может работать в текущих условиях и не требовать обновления на более новую. Что конкретно там исправлено говорить не буду, вы можете сами найти решение в сети. Те кому интересно, могут посмотреть отличия двоичных запускаемых файлов.
Читать дальше →

Разбираем и собираем обратно стек USB

Reading time14 min
Views108K
Иллюстрированная проекция модели сетевого взаимодействия OSI на универсальную последовательную шину.

Три «замечательных» уровня стека USB


Меня не устроил вид стека USB, который можно встретить чаще всего на просторах сети:

Не сильно полезный стек USB

Уровень шины, логический, функциональный… Это, конечно, замечательные абстракции, но они скорее для тех, кто собирается делать драйвер или прикладной софт для хоста. На стороне же микроконтроллера я ожидаю шаблонный конечный автомат, в узлы которого мы обычно встраиваем свой полезный код, и он сперва будет по всем законам жанра глючить. Или же глючить будет софт на хосте. Или драйвер. В любом случае кто-то будет глючить. В библиотеках МК тоже с наскока не разобраться. И вот я смотрю на трафик по шине USB анализатором, где происходящие события на незнакомом языке с тремя замечательными уровнями вообще не вяжутся. Интересно, это у меня от гриппозной лихорадки в голове такой диссонанс?

Если у читателя бывали сходные ощущения, предлагаю альтернативное, явившееся мне неожиданно ясно в перегретом мозгу видение стека USB, по мотивам любимой 7-уровневой модели OSI. Я ограничился пятью уровнями:



Я не хочу сказать, что весь софт и библиотеки уже сделаны или должны проектироваться, исходя из этой модели. Из инженерных соображений код c уровнями будет сильно перемешан. Но я хочу помочь тем, кто начинает своё знакомство с шиной USB, кто хочет понять протоколы обмена устройств и терминологию предметной области, подобраться поближе к готовым примерам, библиотекам и лучше ориентироваться в них. Эта модель не для загрузки в МК, но в ваши блестящие умы, дорогие друзья. А ваши золотые руки потом всё сами сделают, я не сомневаюсь:)
Разобрать стек USB

Как купить акции ИТ-компаний до, во время и после IPO

Reading time4 min
Views57K
image

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

Information

Rating
Does not participate
Registered
Activity

Specialization

DevOps, Security Engineer