Что может терминал termux
Termux шаг за шагом (Часть 1)
При первом знакомстве Termux, а я далеко не линуксоид, вызвал в моей голове две мысли: «Круть несусветная!» и «Как им пользоваться?». Порывшись в инетах, я не нашел ни одной статьи в полной мере позволяющей начать пользоваться Termux’ом так чтобы это приносило больше удовольствия чем гемора. Будем это исправлять.
Для начала определимся, что это за зверь такой Termux, и что он может. На главной странице WikiTermux (рекомендую ознакомиться) говорится, что “Termux — это эмулятор терминала и среда Linux”, т.е. установив его мы получим вполне работоспособный Linux терминал на своем Android устройстве. Несомненным плюсом является работа в виртуальном окружении (многое можно делать без root’а), благодаря чему навредить файловой системе Android практически нереально. А при наличии root’а ваши возможности ограничены только фантазией (ну и знанием матчасти).
За каким, собственно говоря, я полез к Termux’у? Во-первых хакинг, точнее желание немного в нем разобраться. Во-вторых отсутствие возможности пользоваться Kali Linux’ом.
Тут я постараюсь собрать воедино все полезное найденное мной по теме. Разбирающегося эта статья вряд ли чем удивит, но тем кто только познает прелести Termux’а, надеюсь, будет полезна.
Для лучшего понимания материала рекомендую повторять описанное мной не простой копипастой а самостоятельно вводить команды. Для удобства нам понадобится либо Android устройство с подключенной клавиатурой, либо как в моем случае Android устройство и ПК/Ноутбук (Windows) подключенные к одной сети. Android желательно с root’ом, но не обязательно. Иногда я что-то указываю в скобках, обычно, это позволит лучше понять материал (если написанное в скобках не совсем понятно, то смело пропускайте это, потом в процессе и по мере необходимости все разъяснится).
Шаг 1
Буду банален и чертовски логичен одновременно
Ставим Termux c Google Play Market:
Открываем установленное приложение и видим:
Далее стоит обновить предустановленные пакеты. Для этого по порядку вводим две команды, по ходу выполнения которых со всем соглашаемся, вводя Y:
Первой командой мы проверяем список установленных пакетов и ищем те, которые можно обновить, а второй обновляем их. По этой причине команды нужно писать именно в такой последовательности.
Теперь у нас наиболее свежая версия Termux.
Еще несколько нужных команд
Более подробно по командам UNIX ищем в интернете (саморазвитие никто не отменял).
Сочетание клавиш Ctrl + C и Ctrl + Z прерывает и прекращает выполнение команд соответственно.
Шаг 2
Облегчи себе жизнь
Чтобы не мучить себя без нужды вводом команд с экранной клавиатуры (в «полевых» условиях, конечно, от этого не уйти) есть два пути:
Я пошел по второму пути, хотя он и немного сложен в настройке, но все окупится удобством использования.
На компьютере необходимо установить программу ssh клиент, я пользуюсь Bitvise SSH Client, и все дальнейшие действия совершаются в этой программе.
Поскольку мы будем подключаться по методу Publickey с использованием файла-ключа, необходимо этот файл создать. Для этого в программе Bitvise SSH Client на вкладке Login щелкаем по Client key manager в открывшемся окне генерируем новый публичный ключ и экспортируем его в OpenSSH формате в файл с названием termux.pub (на самом деле можно любое название). Созданный файл помещаем во внутреннюю память вашего Android устройства в папку Downloads (к этой папке, и еще к нескольким, Termux имеет упрощенный доступ без root).
Во вкладке Login в поле Host вводим IP вашего Android устройства (узнать можно введя в Termux команду ifconfig) в поле Port должно быть 8022.
Теперь переходим к установке OpenSSH в Termux, для этого вводим следующие команды:
Возвращаемся к Bitvise SSH Client и нажимаем кнопку Log in. В процессе подключения появится окно, в котором выбираем Method – publickey, Client key это Passphrase (если вы ее указали при генерации файла-ключа).
В случае успешного подключения (если все сделали, как написано, то должно подключиться без проблем) откроется окно.
Теперь мы можем вводить команды с ПК а выполняться они будут на вашем Android устройстве. Не сложно догадаться какие это дает преимущества.
Шаг 3
Настроим Termux, установим дополнительные утилиты
Прежде всего давайте установим bash-completion (сокращалку, волшебный-Tab, кто как называет). Суть утилиты в том что, вводя команды вы можете нажав Tab воспользоваться автозаполнением. Для установки пишем:
Ну что за жизнь без текстового редактора с подсветкой кода (если вдруг захочется покодить, а оно захочется). Для установки пишем:
Пользоваться vim`ом не сложно, чтобы открыть файл 1.txt (если его нет, то он создастся) пишем:
Раз мы теперь можем создавать и редактировать файлы, давайте немного улучшим вид и информативность командной строки Termux’а. Для этого нам нужно присвоить переменной окружения PS1 значение «[\033[1;33;1;32m]:[\033[1;31m]\w$ [\033[0m][\033[0m]» (если интересно что это и с чем его едят, прошу сюда). Чтобы это сделать нам нужно в файл ‘.bashrc’ (лежит в корне и выполняется при каждом запуске оболочки) добавить строку:
Для простоты и наглядности воспользуемся vim`ом:
Вписываем строку, сохраняем и выходим.
Добавить строку в файл можно и другим способом, воспользовавшись командой ‘echo’:
Для внесения строки можно воспользоваться vim’ом или командой echo (если не получается самостоятельно – см. ниже)
Синтаксис alias’ов таков:
Итак, добавляем сокращение:
Вот еще несколько полезных утилит
Ставить через apt install
man — Встроенная справка для большинства комманд.
man %commandname
ffmpeg — Один из лучших конвертеров аудио/видео. Инструкцию по использованию гуглите.
mc — Двухпанельный файловый менеджер наподобие Far.
Впереди еще немало шагов, главное что движение начато!
Termux: дружественный терминал для Android
Линуксоиды, на старт! Тема статьи, опубликованной на KV.BY, — расширение прикладных возможностей смартфонов на базе Android с помощью эмулятора терминала Termux.
Добро пожаловать в Termux!
Потребление контента, цифровых услуг, а также времяпровождение в месенджерах и социальных сетях — основное, для чего запрограммированы современные смартфоны. Что, например, подтверждают регулярные обзоры «12 бесплатных программ для Android» в KV.by.
Но хотелось бы не ограничивать себя пределами треугольника «соцсети — контент — услуги» и, например, воспользоваться на смартфоне прикладными программами с настольного ПК. Тем более в мобильных устройствах давно уже хватает необходимых и гигабайт, и гигагерц.
Однако заменить смартфоном даже простенький ноутбук так просто не получается. За последние десятилетия мы привыкли к дружественному графическому WYSWYG-интерфейсу в программах для десктопа. Однако на малодюймовых дисплеях смартфонов WYSWYG теряет свою дружественность. Десктопный «Фотошоп» со всеми его графическими панелями и меню, конечно, можно впихнуть на дисплей смартфона, но пользоваться им будет сложно.
А вот для интерфейса командной строки небольшого экрана хватает за глаза. К тому же система «Андроид» основана на ядре Linux, и пользоваться консольными утилитами здесь, можно сказать, сам Линус Торвальдс велел. Поэтому логично поискать какой-нибудь дружественный для смартфона эмулятор терминала, позволяющий на операционной системе Android устанавливать и запускать стандартные программы Linux с интерфейсом командной строки, и тем самым расширить прикладные возможности смартфона.
Сразу скажем, такой дружественный эмулятор терминала для «Андроида» уже найден. Называется он Termux.
Первыми Termux заприметили хакеры и те, кто себя к таковыми причисляет. Потому что с помощью этого эмулятора запускается джентльменский набор хакерских утилит: инструмент реверс-инжиниринга Radare2, брутфорсер Hydra, wifi-перехватчик Aircrack-ng, хакерский фреймворк Metasploit и другие. Неудивительно, что за Termux закрепилось звание лучшего карманного друга хакера.
Но Termux может стать карманным другом не только для членов хакерских группировок. Если кратко, то Termux выгодно отличается от других мобильных аналогов по следующим пунктам:
Ниже рассмотрим эти возможности Termux подробнее.
Установка
Для работы Termux требуется Android 5 и выше. Установка этого эмулятора терминала производится в одно нажатие с сервисов Google Play или F-droid. Будет загружено приложение размером чуть более 200 килобайт, которое сразу же готово к работе. Текущая версия приложения на момент написания статьи 0.66.
Termux не требует настройки или какого-либо редактирования конфигурационных файлов. Также не потребуется для работы Termux прав суперпользователя (root). Эмулятор будет использовать ядро Linux и системную библиотеку libc (Bionic) установленной на смартфон системы Android.
Но так как операционная система Android не использует стандартную иерархию файловой систем для Unix/Linux, а также имеет особенности многопользовательского режима, то следует пояснить как и куда Termux устанавливается.
Установка Termux на внешние SD-карты не поддерживается. По той причине, что, как правило, SD-карты отформатированы в файловой системе FAT, которая не предоставляет всех необходимых файловых атрибутов, необходимых для запуска стандартных Linux-приложений.
Интерфейс Termux
Termux является приложением для ОС Android и обладает всеми интерфейсными возможностями этой системы: поворот экрана, иконка в служебной панели, выделение текста, копирование/вставка через буфер обмена, ввод через экранную клавиатуру, красивые моноширные Android-шрифты.
Главной особенностью интерфейса Termux, делающий этот эмулятор дружественным для смартфона, можно смело назвать адаптивный режим изменения размеров шрифта при масштабировании экрана пальцами. Это когда текст при масштабировании пальцами не «вылазит» за пределы экрана, а перестраивается на другую строку,
Адаптивный режим изменения размеров шрифта плюс поворот экрана — это очень удобная возможность подстроить для себя как обычный текстовой интерфейс в консоли, так и программы, использующие псевдографический интерфейс, табличный вывод или ASCII-графику. Не нужно в каждом из этих случаев лазить в меню с настройками шрифта.
Любой современный эмулятор терминала может запускать несколько консольных сессий, В каждой сессии можно запустить отдельную программу и переключаться между ними. Мультисессии, само собой, есть и в Termux, Новую консольную сессию можно запустить через меню, вызываемое горизонтальным свайпом по экрану слева направо, С левой стороны на дисплее появится окно со списком запущенных консольных сессий. В этом окне можно запустить новую сессию, переключиться на другую сессию. Также здесь можно явно вызвать экранную клавиатуру, если по каким-либо причинам она другим способом не вызывается.
Пару слов об экранной клавиатуре. Для работы в терминале Linux-системы необходимы специальные клавиши — Tab, Alt, Ctrl, вверх-вниз. Termux в нижней части экрана имеет свою специальную экранную панельку с этими специальными символами. Поэтому совсем необязательно устанавливать клавиатуру наподобие Hacker’s Keyboard, а довольствоваться стандартной экранной клавиатурой Android.
Само собой, в Termux поддерживаются внешние USB-, Bluetooth-клавиатуры.
Единственное, что в интерфейсе Termux может вызвать некоторое замешательство и лёгкую панику — это неочевидный вызов главного меню, где находится опция выхода из сессии терминала. Главное меню называется «more», и оно объединено со стандартным меню «copy/paste», которое вызывается длительным нажатием на экран смартфона. Так что для Termux вполне можно переиначить старый анекдот о Vim: я постоянно работаю в Termux, потому что не знаю как из него выйти. Правильный выход из текущей сессии терминала — это набрать команду exit.
Программы
Termux — это больше чем просто эмулятор терминала. Практически это дистрибутив Linux, потому что к нему имеется собственный репозиторий прикладного программного обеспечения. Репозиторий Termux содержит более 500 программных пакетов, скомпилированных и готовых к установке для этого эмулятора терминала. Это, конечно не Debian/Linux, в репозитории которого около 30 000 пакетов. Тем не менее в репозитории Termux можно подобрать себе джентльменский набор ПО не только для хакеров:
Установка пакетов осуществляется через специальный пакетный менеджер pkg, который является «обёрткой» (враппером) для пакетного менеджера apt. После установки Termux следует обновить пакетную базу:
Поиск доступного пакета в базе:
$ pkg search [package name]
$ pkg install [package name]
$ pkg uninstall [package name]
Для сборки собственных пакетов существует и специальный тулчейн для Docker, который содержит необходимое для компиляции приложений Termux из исходных кодов. Но данная возможность — тема отдельной статьи.
Трудности
Трудности тоже в Termux присутствуют. Куда ж без них! Они обусловлены, во-первых, Bionic — системной Си-библиотекой для Android. В Bionic не реализованы многие функции стандартной libc. Поэтому, например, нельзя сгенерировать нужный региональный стандарт (локаль) и связанные с ним переменные окружения с помощью locale-gen, в результате чего в Termux нельзя видеть кодировку отличную от Юникода,
Во-вторых, это проблемы роста Termux как проекта. которому есть куда развиваться в отношении поддержки пакетов. Сообщество Termux не такое большое как сообщество Debian и поддержки пакетов уровня крупных дистрибутивов здесь пока нет. Так установочные скрипты, которые осуществляют автоматическую настройку программы после её установки, как это реализовано в пакетах Debian. в пакетах из репозитория Termux могут отсутствовать. И, например, чтобы запустить Apache+PHP+MariaDB придётся почитать инструкции и в ручном режиме их выполнить.
Для многих чтение мануалов и инструкций — это существенный минус к дружественности.
Дополнения (аддоны)
Для Termux имеется дополнения в виде отдельных приложений, которые нужно скачивать и устанавливать отдельно (В Google Play некоторые аддоны не бесплатны). Эти дополнения расширяют возможности Termux. Следует иметь в виду, что эти дополнения нужно устанавливать с того же ресурса, с которое была загружена основная программа — с Google Play или же с F-droid — так как на разных ресурсах установочные пакеты программы имеют разные цифровые подписи.
Termux: Styling. Как легко догадаться по названию, с помощью этого дополнения легко поменять внешний вид Termux. Изменить можно цвета фона и шрифта, а также сам шрифт. Аддон после установки вызывается через главное меню Termux.
Termux: API. Замечательное дополнение, которое предоставляет из командной строки доступ к функциям системы Android. То есть с помощью специальных команд можно прямо из терминала получить доступ к функциям фотокамеры, датчиков, свойствам дисплея, списку телефонных вызовов, СМС-сообщениям, системному буферу обмена, GPS, WiFi и многому другому, Кроме установки самого аддона, следует ещё специальный пакет termux-api из репозитория Termux. Примеры команд:
В целом, дополнение предоставляет около сорока команд для доступа к функциям системы Android.
Думаю, на этих трёх примерах характер дополнений для Termux понятен. Поэтому знакомство с остальными аддонами можно оставить и для самостоятельно изучения.
Приложения для X-Windows
Репозиторий приложений для Termux содержит и программы для работы в графическом оконном режиме X-Windows. Но запустить их можно только установив внешний отдельный X-server, который не входит в состав Termux. Поэтому в этой статье только отметим такую возможность, а подробности оставим для других обзоров.
Termux Open Source
Termux является каноническим проектом со свободным исходным кодом, который расположен на GitHubи распространяется по лицензии MIT. Проект развивается открытым сообществом разработчиков и пользователей. Сюда можно отправить запрос на новый пакет или новые возможности для Termux, а также сообщить о проблемах и сбоях программы. Приоритет у разработчиков отдаётся устранению ошибок.
С чего начать
Contents
Как это работает?
Фактически это приложение которое просто запускает бинарник утилиты командной строки при помощи системного вызова execve(2) и перенаправляет стандартные потоки ввода, вывода и ошибок на текстовый экран. Termux не является ни виртуальной машиной, ни иным видом эмулированной/симулированной системы. Программы выполняются прямо на устройстве, что обеспечивает максимально возможную производительность.
Так как набор стандартных утилит командной строки Android весьма ограничен, мы портировали более 1000 пакетов програмного обеспечения которые вы можете встретить в системах GNU/Linux. Все пакеты скомпилированы при помощи Android NDK и имеют лишь патчи совместимости для корректной работы на Android OS.
Так как операционная система не имеет директории определяемые стандартом FHS или же не предоставляет к ним доступ на запись, Termux не может использовать такие директории как /bin, /etc, /usr, /var. Вместо этого, все файлы находятся в приватной директории приложения, которая находится здесь:
Мы называем эту директорию «префикс» и обычно ссылаемся на нее как «$PREFIX» что также является переменной окружения командной оболочки. Префикс всегда постоянен и не может быть перенесен на карту SD, как минимум при обычных условиях. И на это есть причины:
Конечно, отличий среды Termux от GNU/Linux немного больше, чем перечислено здесь. Смотрите Differences from Linux для более подробной информации.
Является ли Termux таким же как дистрибутив Linux?
Termux предоставляет пакетную экосистему, как в дистрибутивах Linux. Однако Termux таковым не является и более того, он просто обычное приложение Android OS.
Это приводит к нескольким отличиям:
3. Динамический компоновщик и libc предоставляются Android OS.
Все эти три отличия могут вызвать проблемы, если вы попытаетесь запустить в Termux программу скомпилированную под GNU/Linux систему.
Что я могу сделать при помощи Termux?
Типичные варианты использования:
Естественно, это далеко не все варианты использования приложения. У нас более 1000 пакетов в репозиториях. Если этого недостаточно, вы можете сами скомпилировать необходимое ПО прямо на устройстве. У нас есть пакеты различных компиляторов и интерпретаторов языков программирования, например C, C++, Go, Rust, Python, Ruby, Node.js.
Ну и для особо одаренных: Termux не является программой для рутования, хакинга и тд. Конечно, это все возможно при помощи Termux, если у вас есть необходимые навыки, для приобретения которых вам придется прилично потрудиться.
Нужны ли права root?
Для обычного использования права суперпользователя вам не понадобятся. Termux нацелен в первую очередь на пользователей устройств без root.
Права суперпользователя необходимы лишь в том случае, если вы собрались выполнять действия, перечисленные ниже:
В подавляющем большинстве случаев, вам root не нужен!
Есть ли какие-нибудь туториалы?
This section or list is incomplete. Please help to improve it.
Мы не можем поддерживать в актуальном состоянии подробную информацию о таких общих вещах как команды, shell-скриптинг и тд, по этому данная информация не размещается на Termux Wiki. Здесь предоставлены ссылки на сторонние ресурсы.
Команды
Изучите основные команды используемые в консоли Linux:
Shell скриптинг
Shell скриптинг является ключевым навыком для работы с терминалом. Без этого вы не сможете делать что-либо серьезное в Termux, да и в GNU/Linux системах вообще.
Эти ресурсы могут быть полезны также и для продвинутых пользователей командной оболочки:
Могу ли я сотрудничать?
Вот вам предложения, если решите внести свой вклад в развитие проекта:
Termux шаг за шагом (Часть 2)
В прошлой части мы с вами познакомились с базовыми командами Termux’а, настроили SSH соединение с ПК, научились создавать alias’ы и установили несколько полезных утилит. В этот раз нам предстоит шагнуть еще дальше, мы с вами:
Поскольку мы теперь понимаем, что делают вводимые команды, то со следующего шага я не буду так подробно расписывать каждое действие, но там где могут быть затруднения, пояснять буду обязательно.
Я часто применяю alias’ы, поэтому используемые в этой части сокращения показаны здесь:
План готов, можно приступать! И конечно же не забывайте про «волшебный Tab» (См. Часть 1).
Шаг 4
Погружаемся в кроличью нору Termux:API
API как много в этом слове для сердца кодера слилось
Если не затрагивать тему Termux:API, то все наши шаги можно было свести к простому пересказу какой-нибудь брошюры типа «Линукс для чайников», как было справедливо подмечено в комментариях к первой части.
Для начала установим Termux:API из Google Play Market’а (после не помешает перезапустить Termux):
Далее нам нужно установить пакет API в консоли Termux’а:
Теперь стоит поближе познакомится с приобретенными возможностями. Самое свежее и подробное описание Termux:API можно найти на wiki проекта. Я же постараюсь выбрать самое наглядное и интересное, что позволит набить руку для самостоятельной работы в дальнейшем.
Несколько примеров Termux:API
Нетрудно заметить, что возвращаемые значения являются строками, словарями, списками словарей, в общем типами данных, с которыми прекрасно работает Python, поэтому следующим шагом мы его установим.
Шаг 5
Установим Python и nano
Для установки Python’а пишем в терминале:
Теперь у нас установлен 2 и 3 Python.
За время работы над статьей, я открыл для себя еще один текстовый редактор nano, который приглянулся мне больше чем vim, давайте его установим:
Пользоваться им проще чем vim’ом, и nano имеет более дружественный интерфейс. На Android устройстве все же удобнее vim.
HelloWorld на Python в Termux
По большому счету можно было обойтись и без этого пункта, но поставить Python в Termux и не написать HelloWorld, на мой взгляд, моветон.
Я не ставлю своей целью учить кого-либо Python’у, так что не знающие могут просто скопировать код (или начать изучать самостоятельно, благо литературы хватает), а знающие могут и сами что-нибудь наваять. А я «под шумок» еще покажу способ вводить текст в терминале без редактора.
Если в процессе ввода вы не заметили ошибку и уже нажали Enter, то перейти на строку выше не получится, для этого закончите ввод нажав Ctrl + D (можно вообще прервать Ctrl + Z) и повторите все с начала. Поскольку мы использовали ‘>’ то файл будет переписан полностью. По этой причине не рекомендую использовать такой метод ввода, если вы не уверены что напишете код сразу без ошибок.
Шаг 6
Bash-скрипты
При помощи скриптов можно автоматизировать практически все монотонные действия. Напишем простейший bash-скрипт выводящий значение из созданной им же переменной, я снова воспользуюсь cat’ом, вы же можете использовать нормальный текстовый редактор, а особо желающие себя потренировать могут использовать echo.
Bash-скрипт с Termux:API
Давайте напишем уже что-нибудь отличающееся от пресловутых HelloWorld’ов, но столь же бесполезное. Наш скрипт будет:
Сначала создадим папку для работы и скопируем туда hello-world.py как test.py, создадим в этой папке файлы test.sh и test.txt:
Теперь любым удобным способом в файл test.sh запишем скрипт:
Вот мы и написали запланированный bash-скрипт. Можно разбавить его выводом в консоль информации по выполнению каждого действия (при помощи echo), это оставлю для читателей.
Шаг 7
Сделаем хоть что-то полезное
Сформулируем техзадание
Приложение должно после запуска помещать в буфер обмена случайную строку из файла и оповещать об этом всплывающим сообщением.
За основу возьмем bash-скрипт, случайную строку из файла будем извлекать при помощи подпрограммы на Python’е. Составим план работы скрипта:
Определимся с названиями директории и файлов приложения:
Создаем директорию приложения и переместившись в нее создаем там файлы.
Первые два пункта плана скрипта можно объединить конвейером, в итоге, используя Termux:API получаем:
В файл source вы можете поместить любой текст логически разделенный на строки, я решил поместить афоризмы:
Нам осталось создать подпрограмму извлекающую случайную строку из файла source.
Распишем алгоритм работы подпрограммы:
Реализуем алгоритм на Python (я пишу под Python 3.7):
Теперь введя в терминале rnst мы получим в буфер обмена случайный афоризм, который, например, можно использовать в переписке.
Вот мы и написали хоть что-то полезное. Относительно полезное.
Я намеренно в последнем шаге не стал приводить скриншоты и не разобрал подробно некоторые действия, расписав только содержимое файлов, чтобы у читателей была возможность поработать самостоятельно.
Изначально я планировал показать в этом цикле как пользоваться nmap, sqlmap, но и без меня уже много статей на эту тему. Если есть желание, чтобы я продолжил «Termux шаг за шагом», то ниже есть опрос, а в комментариях можете предложить о чем еще написать.