Программирование на Android
Уметь ловко писать сценарии на
Код:
Пруфы. Успешное выполнение программ на всех вышеперечисленных ЯП (а как думают читатели: много ли времени я затратил ради этого скриншота?).
Хорошие новости: можно обучаться и практиковать/поддерживать навыки владения ЯП прямо с гаджета, например, проходя курсы программирования по Python на Codeby или на Stepik, решая задачи где бы ты не находился.
В реальности же имеются технические ограничения. Например, на Python «нельзя» писать и запускать ПО, требующего многопроцессорного параллельного вычисления напрямую в Termux (параллельные вычисления на нескольких ядрах CPU, не путать с многопоточностью (и не касается, например СИ-программ)). Скрипты, которые размашисто потребляют ОЗУ, несмотря на избыточно-свободную память могут аномально снижать скорость вплоть до замирания. Простой пример воспроизведения проблемы на Python с распараллеливанием кода на CPU(s).
Код:
По той же причине не встанет, например, и библиотека
Но если очень надо....
Вмешаемся в сам интерпретатор Python, заменив многопроцессорные параллельные вычисления на многопоточные.
Код:
заменяем ~28 строку:
Пруф, библиотека numpy установлена и работает!
Proot-distro
Компромисс. Если пользователь располагает достаточно свободным дисковым пространством (±10 Гб) на своем гаджете, то он может установить в Termux один из дистрибутивов GNU/Linux (например, termux-ubuntu и п.д.).
И запускать не только скрипты, требующие распараллеливания кода на CPU(s), но и юзать GUI-софт, например,
Код:
mutt & smtplib
Для работы с электропочтой в Termux имеется пакет:
Код:
Скриншот: входящие письма на Яндекс почте.
Работа с email требуется, например тогда, когда произошло какое-либо событие, и в случае успеха или ошибки автоматическая отправка репорта на email. Я не могу похвалить или раскритиковать mutt не предвзято т.к. пользуюсь в подобных скрипто-делах Python с библиотекой
Сравнение пакетов: html2tetx* vs links
А вот пример, когда сторонний софт перспективнее местного. В Termux имеется в наличии пакет «html2text», который позволяет выводить очищенные от тегов web-страницы в CLI. У данного пакета имеются нюансы с автовыбором кодировки: например, русскоязычные символы отображаются кракозяброй и на мой взгляд не самое лучшее форматирование текста. В Python имеется альтернативный пакет с тем же названием и аналогичным функционалом, но ИМХО, разработкой на порядок выше. Сравним эти два пакета от разных разработчиков написанных на разных языках, но выполняющих одну и ту же функцию (примечание — html2text популярные утилиты и представлены на многих ЯП, не только на Python и Perl).
Код:
# тесты
# тесты
Запуск разных html2text-пакетов на примере обработки одной и той же русскоязычной статьи:
Выхлоп утилит на одной и той же статье: слева — пакет html2text из репозитория Termux, справа — python пакет html2text. В данном случае наблюдаем, что python-пакет по умолчанию верно определяет кодировку, а для нормального отображения русскоязычного текста при работе с пакетом из репозитория Termux необходимо явно указывать флаг кодировки, например, «-from_encoding windows-1251»; «-from_encoding utf-8».
Альтернативный, возможно даже более удобный, способ получить текстовую версию web-страницы очищенную от тегов — это использовать cli-браузер, например,
Код:
Преимущество cli-браузера перед curl/html2text-пакетами — это гарантия корректного форматирования текста. В links можно сохранить масштабируемый/форматированный текст по любой/заданной ширине, используя легкий жест двумя пальцами по cli-экрану.
Для общего развития просто сравните выхлоп команд на смартфоне, а не на планшете и покажите мне в комментариях.
Код:
«Ожидание...»
Yaspeller
Как было выше написано: сторонний cli-git-софт — это не только python-скрипты. Например, установим в Termux полезный для авторов-редакторов npm-пакет yaspeller, написанный на JS русскоязычным разработчиком, который позволяет проверять ru-en орфографию локальных txt-данных, так и данных по url в два касания.
Код:
Скриншот Yaspeller. Yaspeller мгновенно подозревает/обнаруживает орф.ошибки, а в скобках справа предлагает исправления.
Обычно материалы на портале Хабр считаются в рунете достаточно грамотными и качественными: авторы текстов заботятся о своей репутации, в т.ч. модераторы постоянно следят за статьями. Но иногда там можно встретить и такую жалость, как на скрине. Орфографический анализ yaspeller информирует в целом и о низкой квалификации автора, статью которого, впрочем, сообщество оценило по достоинству: загнав в глубокий минус автора и его материалы.
В моём топ-списке пакетов этот инструмент, возможно, самый популярный (нет, не для того чтобы устроить кому-либо очередную IT-порку, а для поддержания качества собственных материалов).
Pipal
Следующий инструмент, о котором не стыдно публично сообщить написан на ruby. Вы находите утечки, он рассказывает вам интересные истории.
Возможно, читатели не раз встречали в сети новости о том, что в интернет выложена очередная утечка паролей: «дамп из некого диджекорп». И разные издания из рук в руки перепечатывали анализ и выводы экспертов не вникая в суть деталей. Давайте немного побудем экспертом и сами проанализируем одну из публичных утечек паролей с помощью
Итак, что делает Pipal? Самый простой способ объяснить — выборочно показать вывод, полученный при разборе списка утекших паролей. Я нагуглил список паролей из утечки «...», которую я взял «...» (многоточия проставлены по этическим причинам).
Код:
Скриншот, выборочный анализ данных из утечки.
Из работы pipal видим, что утечка данных внушительная: содержит ~426K утекших паролей и из них ~78% уникальных паролей. По классике самым популярным паролем является пароль «123456», но и встречается он довольно редко менее чем 0,5% от общего дампа. Популярная длина паролей от 6-10 символов и пользователи в основном очень любят использовать простой буквенный пароль в нижнем регистре (33%). На скрине видно и топ 10 базовых слов (это частые слова что-то вроде корней, без префикса и суффикса если такие встречаются чаще остальных). Внешний список (external list) - что-то вроде базовых слов, только их задает сам пользователь на основе мета-информации об утечке БД. Предварительный вывод: высока вероятность реальной утечки данных, а не вброса.
Описательная статистика прежде всего интересна тем шифропанкам, кто работает со словарями и занимается обогащением баз данных.
Продолжая темпу пентеста было бы нечестно не затронуть инструменты и на родном
Фишинг
Почему пользователям стоит обращать внимание на подозрительные ссылки и по возможности их избегать покажу на примере инструмента zphisher
Код:
Инструмент примечателен тем, что атакующий может отказаться от «ngrock» и не вникать в связанные с ним ограничения чтобы туннелировать фишинговую ссылку.
Использование фишинга на примере Instagram. Ключи команд отсутствуют, атакующий выбирает все действия цифрами: что именно он будет использовать. Выбрав в качестве примера Instagram, а в качестве инициализации туннельный клиент cloudflared, а не ngrock получил на выбор две рандомные, но рабочие фишинг-ссылки. Открыв, например, обфусцированную ссылку на своём устройстве жертва предоставляет атакующему свой ip-адрес. Дизайн страницы Instagram реалистичный (жертве стоило бы обратить внимание на url). И если атакуемый, поддавшись манипуляции и коварству социальной инженерии, введёт свои данные (или рандомные), они тут же будут перехвачены атакующим, а фишинговая страница перенаправит скомпрометированного пользователя на официальный сайт Instagram для авторизации (создав ложное впечатление о том, что юзер просто ошибся при вводе логина/пароля, а повторный ввод логина/пароля авторизует нерадивого пользователя, усилив его предположение об ошибке).
Продолжение:
Часть 1-я
Часть 2-я
Часть 4-я
Часть 5-я
Уметь ловко писать сценарии на
Ссылка скрыта от гостей
хороший навык, но ограниченный. В Termux репозитории имеются пакеты языков программирования (ЯП), например,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
, а так же
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
Ссылка скрыта от гостей
,
Ссылка скрыта от гостей
. Давайте напишем нашу однофункциональную программу на всех вышеперечисленных языках, которая поприветствует пользователей портала Сodeby.Код:
$ pkg install python golang elixir php rust perl ruby scala brainfuck
#установка ЯП, bash/java уже предустановленные среды.Пруфы. Успешное выполнение программ на всех вышеперечисленных ЯП (а как думают читатели: много ли времени я затратил ради этого скриншота?).
Хорошие новости: можно обучаться и практиковать/поддерживать навыки владения ЯП прямо с гаджета, например, проходя курсы программирования по Python на Codeby или на Stepik, решая задачи где бы ты не находился.
В реальности же имеются технические ограничения. Например, на Python «нельзя» писать и запускать ПО, требующего многопроцессорного параллельного вычисления напрямую в Termux (параллельные вычисления на нескольких ядрах CPU, не путать с многопоточностью (и не касается, например СИ-программ)). Скрипты, которые размашисто потребляют ОЗУ, несмотря на избыточно-свободную память могут аномально снижать скорость вплоть до замирания. Простой пример воспроизведения проблемы на Python с распараллеливанием кода на CPU(s).
Код:
$ python
Python:
import concurrent.futures as pool
e = pool.ProcessPoolExecutor(max_workers=2, mp_context=None, initializer=None, initargs=())
#Приведёт к следующей ошибке:
#>>>raise ImportError("This platform lacks a functioning sem_open" + ImportError:
#This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.
По той же причине не встанет, например, и библиотека
Ссылка скрыта от гостей
и импортирующее её ПО:$ pip install numpy
#установка не завершится и приведёт к ошибкеНо если очень надо....
Вмешаемся в сам интерпретатор Python, заменив многопроцессорные параллельные вычисления на многопоточные.
Код:
$ nano ../usr/lib/python3.10/multiprocessing/synchronize.py
заменяем ~28 строку:
наfrom _multiprocessing import SemLock, sem_unlink
В таком случае можно запускать параллельные вычисления в потоках, а не процессах.from threading import Lock
Пруф, библиотека numpy установлена и работает!
Proot-distro
Компромисс. Если пользователь располагает достаточно свободным дисковым пространством (±10 Гб) на своем гаджете, то он может установить в Termux один из дистрибутивов GNU/Linux (например, termux-ubuntu и п.д.).
И запускать не только скрипты, требующие распараллеливания кода на CPU(s), но и юзать GUI-софт, например,
Ссылка скрыта от гостей
.
Ссылка скрыта от гостей
, метафорично выражаясь — это сила Temux и ни
Ссылка скрыта от гостей
-у и ни
Ссылка скрыта от гостей
далеко им всем сейчас. Вся Termux-стихия заключена в 4-х строчках ниже, но обойдя одни ограничения, обязательно натыкаешься на другие (overkill abstractions).Код:
$ pkg install proot-distro
$ proot-distro list
$ proot-distro install ubuntu
$ proot-distro login ubuntu
Сравнение пакетов
mutt & smtplib
Для работы с электропочтой в Termux имеется пакет:
Ссылка скрыта от гостей
Код:
$ pkg install mutt
$ nano ../usr/etc/Muttrc
#
Ссылка скрыта от гостей
конфига в CLI/nano для тех у кого не рут прав.$ mutt
#запускСкриншот: входящие письма на Яндекс почте.
Работа с email требуется, например тогда, когда произошло какое-либо событие, и в случае успеха или ошибки автоматическая отправка репорта на email. Я не могу похвалить или раскритиковать mutt не предвзято т.к. пользуюсь в подобных скрипто-делах Python с библиотекой
Ссылка скрыта от гостей
, которая работает стабильно и без нареканий.Сравнение пакетов: html2tetx* vs links
А вот пример, когда сторонний софт перспективнее местного. В Termux имеется в наличии пакет «html2text», который позволяет выводить очищенные от тегов web-страницы в CLI. У данного пакета имеются нюансы с автовыбором кодировки: например, русскоязычные символы отображаются кракозяброй и на мой взгляд не самое лучшее форматирование текста. В Python имеется альтернативный пакет с тем же названием и аналогичным функционалом, но ИМХО, разработкой на порядок выше. Сравним эти два пакета от разных разработчиков написанных на разных языках, но выполняющих одну и ту же функцию (примечание — html2text популярные утилиты и представлены на многих ЯП, не только на Python и Perl).
Код:
$ pkg install html2text
#установка из репозитория Termux# тесты
$ pip install html2text
#установка из репозитория (каталог ПО Python)# тесты
Запуск разных html2text-пакетов на примере обработки одной и той же русскоязычной статьи:
$ curl https://habr.com/en/post/488432/ | html2text
Выхлоп утилит на одной и той же статье: слева — пакет html2text из репозитория Termux, справа — python пакет html2text. В данном случае наблюдаем, что python-пакет по умолчанию верно определяет кодировку, а для нормального отображения русскоязычного текста при работе с пакетом из репозитория Termux необходимо явно указывать флаг кодировки, например, «-from_encoding windows-1251»; «-from_encoding utf-8».
Альтернативный, возможно даже более удобный, способ получить текстовую версию web-страницы очищенную от тегов — это использовать cli-браузер, например,
Ссылка скрыта от гостей
.Код:
$ pkg install links
$ links # «g» открыть url --> файл --> Сохранить форм. документ
Преимущество cli-браузера перед curl/html2text-пакетами — это гарантия корректного форматирования текста. В links можно сохранить масштабируемый/форматированный текст по любой/заданной ширине, используя легкий жест двумя пальцами по cli-экрану.
Для общего развития просто сравните выхлоп команд на смартфоне, а не на планшете и покажите мне в комментариях.
Код:
$ links wttr.in/kolomna && curl wttr.in/kolomna
«Ожидание...»
Yaspeller
Как было выше написано: сторонний cli-git-софт — это не только python-скрипты. Например, установим в Termux полезный для авторов-редакторов npm-пакет yaspeller, написанный на JS русскоязычным разработчиком, который позволяет проверять ru-en орфографию локальных txt-данных, так и данных по url в два касания.
Код:
$ pkg install nodejs
$ npm install yaspeller -g
$ yaspeller https://habr.com/ru/post/647267/
#указываем любой url для проверки ошибокСкриншот Yaspeller. Yaspeller мгновенно подозревает/обнаруживает орф.ошибки, а в скобках справа предлагает исправления.
Обычно материалы на портале Хабр считаются в рунете достаточно грамотными и качественными: авторы текстов заботятся о своей репутации, в т.ч. модераторы постоянно следят за статьями. Но иногда там можно встретить и такую жалость, как на скрине. Орфографический анализ yaspeller информирует в целом и о низкой квалификации автора, статью которого, впрочем, сообщество оценило по достоинству: загнав в глубокий минус автора и его материалы.
В моём топ-списке пакетов этот инструмент, возможно, самый популярный (нет, не для того чтобы устроить кому-либо очередную IT-порку, а для поддержания качества собственных материалов).
Снифить, парсить, брутить, дампить, сканить, фишить (3я-4я части)
В одной жизни Вы - Томас Андерсон, программист в крупной уважаемой компании. У Вас есть медицинская страховка, Вы платите налоги и еще - помогаете консьержке выносить мусор. Другая Ваша жизнь - в компьютерах. И тут Вы известны как хакер Нео. Вы виновны практически во всех уголовно наказуемых компьютерных преступлениях. У первого - Томаса - есть будущее. У Нео - нет.
Pipal
Следующий инструмент, о котором не стыдно публично сообщить написан на ruby. Вы находите утечки, он рассказывает вам интересные истории.
Возможно, читатели не раз встречали в сети новости о том, что в интернет выложена очередная утечка паролей: «дамп из некого диджекорп». И разные издания из рук в руки перепечатывали анализ и выводы экспертов не вникая в суть деталей. Давайте немного побудем экспертом и сами проанализируем одну из публичных утечек паролей с помощью
Ссылка скрыта от гостей
.Итак, что делает Pipal? Самый простой способ объяснить — выборочно показать вывод, полученный при разборе списка утекших паролей. Я нагуглил список паролей из утечки «...», которую я взял «...» (многоточия проставлены по этическим причинам).
Код:
$ pkg install ruby
$ git clone https://github.com/digininja/pipal
$ cd pipal
$ ./pipal.rb dump.txt
#dump.txt — утечка/словарь содержащий паролиСкриншот, выборочный анализ данных из утечки.
Из работы pipal видим, что утечка данных внушительная: содержит ~426K утекших паролей и из них ~78% уникальных паролей. По классике самым популярным паролем является пароль «123456», но и встречается он довольно редко менее чем 0,5% от общего дампа. Популярная длина паролей от 6-10 символов и пользователи в основном очень любят использовать простой буквенный пароль в нижнем регистре (33%). На скрине видно и топ 10 базовых слов (это частые слова что-то вроде корней, без префикса и суффикса если такие встречаются чаще остальных). Внешний список (external list) - что-то вроде базовых слов, только их задает сам пользователь на основе мета-информации об утечке БД. Предварительный вывод: высока вероятность реальной утечки данных, а не вброса.
Описательная статистика прежде всего интересна тем шифропанкам, кто работает со словарями и занимается обогащением баз данных.
Продолжая темпу пентеста было бы нечестно не затронуть инструменты и на родном
Ссылка скрыта от гостей
.Фишинг
Почему пользователям стоит обращать внимание на подозрительные ссылки и по возможности их избегать покажу на примере инструмента zphisher
Код:
$ git clone git://github.com/htr-tech/zphisher.git
$ cd zphisher
$ bash zphisher.sh
$ git pull
#обновлениеИнструмент примечателен тем, что атакующий может отказаться от «ngrock» и не вникать в связанные с ним ограничения чтобы туннелировать фишинговую ссылку.
Использование фишинга на примере Instagram. Ключи команд отсутствуют, атакующий выбирает все действия цифрами: что именно он будет использовать. Выбрав в качестве примера Instagram, а в качестве инициализации туннельный клиент cloudflared, а не ngrock получил на выбор две рандомные, но рабочие фишинг-ссылки. Открыв, например, обфусцированную ссылку на своём устройстве жертва предоставляет атакующему свой ip-адрес. Дизайн страницы Instagram реалистичный (жертве стоило бы обратить внимание на url). И если атакуемый, поддавшись манипуляции и коварству социальной инженерии, введёт свои данные (или рандомные), они тут же будут перехвачены атакующим, а фишинговая страница перенаправит скомпрометированного пользователя на официальный сайт Instagram для авторизации (создав ложное впечатление о том, что юзер просто ошибся при вводе логина/пароля, а повторный ввод логина/пароля авторизует нерадивого пользователя, усилив его предположение об ошибке).
Продолжение:
Часть 1-я
Часть 2-я
Часть 4-я
Часть 5-я
Последнее редактирование: