56 releases (15 stable)
1.1.7 | Oct 17, 2024 |
---|---|
1.1.6 | Jul 23, 2024 |
1.1.1 | May 2, 2024 |
1.0.6 | Feb 28, 2024 |
0.1.1 | Aug 5, 2023 |
#222 in Hardware support
548 downloads per month
6MB
6K
SLoC
Contains (APK file, 7MB) test_files/app-debug.apk
radb_client
Simple Android adb client for rust.
Example
use radb_client::{*};
pub fn main() {
let adb = Adb::new().unwrap();
let device_ip = String::from("192.168.1.128");
let conn = ConnectionType::try_from_ip(device_ip).unwrap();
let client = Client::try_from(conn).unwrap();
match client.connect() {
Ok(()) => println!("Device connected"),
Err(err) => println!("Error connecting to device: {:?}", err),
}
}
Using the feature scanner
is also possible to scan for all the available devices:
use std::str::FromStr;
use std::time::{Duration, Instant};
use cidr_utils::cidr::Ipv4Cidr;
use cidr_utils::Ipv4CidrSize;
use crossbeam_channel::unbounded;
use indicatif::{MultiProgress, ProgressBar, ProgressStyle};
use itertools::Either;
use crate::scanner::Scanner;
use crate::test::test::init_log;
use crate::types::Adb;
fn test_scan() {
let cidr = Ipv4Cidr::from_str("192.168.1.0/24").unwrap();
let progress_style = ProgressStyle::with_template(
"{prefix:.cyan.bold/blue.bold}: {elapsed_precise} [{bar:40.cyan/blue}] {percent:.bold}%. {msg} ",
)
.unwrap()
.progress_chars("=> ");
let multi_progress = MultiProgress::new();
let progress = multi_progress.add(ProgressBar::new(cidr.size()));
progress.set_style(progress_style.clone());
progress.set_prefix("Scanning");
let (tx, rx) = unbounded();
let adb = Adb::new().expect("failed to find adb");
let scanner = Scanner::default()
.with_debug(false)
.with_tcp_timeout(Duration::from_millis(200))
.with_adb_timeout(Duration::from_millis(100));
let start = Instant::now();
scanner.scan(&adb, cidr.iter(), tx.clone());
drop(tx);
let mut result = Vec::new();
for either in rx {
match either {
Either::Left(addr) => {
progress.inc(1);
progress.set_message(format!("{addr}..."));
}
Either::Right(client) => {
if !result.contains(&client) {
result.push(client);
}
}
}
}
progress.finish_with_message(format!("Scanned {} IPs", cidr.size()));
let elapsed = start.elapsed();
println!("Time elapsed for scanning is: {:?}ms", elapsed.as_millis());
println!("Found {:} devices", result.len());
result.sort_by_key(|k| k.conn);
for device in result.iter() {
println!("{device}");
}
}
Dependencies
~16–30MB
~544K SLoC