Termux предоставляет полноценную Linux‑окружение на Android‑устройствах, позволяя использовать современные языки программирования для создания инструментов безопасности. Rust – язык системного уровня, известный своей безопасностью памяти и высокой производительностью, что делает его отличным выбором для разработки эксплойтов, сканеров и прочих утилит.
Почему именно Rust?
- Отсутствие ошибок доступа к памяти (null‑pointer, buffer overflow).
- Низкоуровневый контроль и возможность работы без runtime.
- Быстрая компиляция и кросс‑компиляция под разные архитектуры.
- Большое сообщество и готовые библиотеки (crates) для сетевого программирования.
Установка Rust в Termux
Для начала установим необходимые пакеты и саму цепочку инструментов Rust.
pkg update && pkg upgrade -y
pkg install -y git curl build-essential clang
curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env
rustc --version
cargo --version
После выполнения вы увидите версии rustc и cargo, подтверждающие успешную установку.
Создание простого сканера портов
В этом разделе мы реализуем минимальный TCP‑сканер, который проверяет открытость портов на заданном хосте.
# Создаём новый проект
cargo new port_scanner --bin
cd port_scanner
# Добавляем зависимости в Cargo.toml
cat >> Cargo.toml <<'EOF'
[dependencies]
tokio = { version = \"1\", features = [\"full\"] }
Откройте файл src/main.rs и замените его содержимое на следующее:
use tokio::net::TcpStream;
use std::net::IpAddr;
use std::time::Duration;
#[tokio::main]
async fn main() {
let target = std::env::args().nth(1).expect(\"IP address required\");
let ip: IpAddr = target.parse().expect(\"Invalid IP address\");
let ports = 1..1024u16;
for port in ports {
let addr = format!(\"{}:{}\", ip, port);
let fut = TcpStream::connect(&addr);
let timeout = tokio::time::timeout(Duration::from_millis(300), fut);
match timeout.await {
Ok(Ok(_)) => println!(\"Port {} is open\", port),
_ => {} // closed or filtered
}
}
}
Соберём и запустим утилиту:
cargo build --release
./target/release/port_scanner 192.168.1.1
Кросс‑компиляция под разные архитектуры Android
Termux работает на ARM64, ARMv7 и x86_64. Чтобы собрать бинарник, совместимый со всеми устройствами, задаём целевой триплет.
# Установим нужный target
rustup target add aarch64-linux-android
rustup target add armv7-linux-androideabi
rustup target add x86_64-linux-android
# Пример сборки для ARM64
cargo build --release --target aarch64-linux-android
Полученный файл target/aarch64-linux-android/release/port_scanner можно перенести на любое Android‑устройство с установленным Termux и запускать без дополнительных зависимостей.
Интеграция с Termux API
Для повышения полезности инструмента можно использовать Termux API. Например, после завершения сканирования отправим уведомление:
# Установим пакет API
pkg install -y termux-api
# Добавим вызов в main.rs
use std::process::Command;
async fn notify(message: &str) {
let _ = Command::new("termux-notification")
.arg("-t")
.arg(message)
.output();
}
// В конце main() после сканирования:
notify("Port scanning completed").await;
Лучшие практики и безопасность
- Всегда проверяйте ввод пользователя – используйте
std::net::IpAddr::parseвместо строковых манипуляций. - Ограничивайте количество одновременных соединений, чтобы не вызвать отказ в обслуживании (DoS) на целевом хосте.
- Подписывайте бинарники (sign) при распространении, чтобы пользователи могли проверять подлинность.
- Регулярно обновляйте зависимости через
cargo update.
Заключение
Termux в сочетании с Rust открывает широкие возможности для создания быстрых, надёжных и безопасных инструментов кибербезопасности непосредственно на мобильных устройствах. Вы освоили установку среды, написание простого сканера портов, кросс‑компиляцию и интеграцию с Termux API. Эти навыки можно расширять, создавая более сложные системы анализа трафика, эксплойты или автоматизированные скрипты.
Если вы хотите ускорить процесс разработки, получить аудит кода или настроить CI/CD для ваших Rust‑утилит, обратитесь к профессионалам RybinskLab. Мы предоставляем услуги по разработке, аудиту и сопровождению безопасных решений под Android и Linux, а также обучение персонала.