Use device MAC, not host

This commit is contained in:
Jackson Coxson
2025-04-30 08:51:59 -06:00
parent e9bc5d965f
commit e972352cd0
4 changed files with 10 additions and 11 deletions

1
Cargo.lock generated
View File

@@ -1236,7 +1236,6 @@ dependencies = [
"env_logger 0.11.8",
"idevice",
"log",
"mac_address",
"ns-keyed-archive",
"plist",
"sha2",

View File

@@ -258,7 +258,6 @@ impl LockdownClient {
///
/// # Arguments
/// * `host_id` - The host ID, in the form of a UUID. Typically generated from the host name
/// * `wifi_mac` - The MAC address of the WiFi interface. Does not affect anything.
/// * `system_buid` - UUID fetched from usbmuxd. Doesn't appear to affect function.
///
/// # Returns
@@ -270,11 +269,9 @@ impl LockdownClient {
pub async fn pair(
&mut self,
host_id: impl Into<String>,
wifi_mac: impl Into<String>,
system_buid: impl Into<String>,
) -> Result<crate::pairing_file::PairingFile, IdeviceError> {
let host_id = host_id.into();
let wifi_mac = wifi_mac.into();
let system_buid = system_buid.into();
let pub_key = self.get_value("DevicePublicKey", None).await?;
@@ -286,6 +283,15 @@ impl LockdownClient {
}
};
let wifi_mac = self.get_value("WiFiAddress", None).await?;
let wifi_mac = match wifi_mac.as_string() {
Some(w) => w,
None => {
log::warn!("Did not get WiFiAddress string");
return Err(IdeviceError::UnexpectedResponse);
}
};
let ca = crate::ca::generate_certificates(&pub_key, None).unwrap();
let mut pair_record = plist::Dictionary::new();
pair_record.insert("DevicePublicKey".into(), plist::Value::Data(pub_key));

View File

@@ -81,7 +81,6 @@ clap = { version = "4.5" }
plist = { version = "1.7" }
ns-keyed-archive = "0.1.2"
uuid = "1.16"
mac_address = "1.1"
# When testing the pair binary, creating certificates takes forever
[profile.dev.package.idevice]

View File

@@ -6,7 +6,6 @@ use idevice::{
usbmuxd::{Connection, UsbmuxdAddr, UsbmuxdConnection},
IdeviceService,
};
use mac_address::get_mac_address;
mod common;
@@ -63,14 +62,10 @@ async fn main() {
return;
}
};
let mac_address = get_mac_address()
.expect("Failed to get MAC")
.expect("No MAC??")
.to_string();
let id = uuid::Uuid::new_v4().to_string().to_uppercase();
let mut pairing_file = lockdown_client
.pair(id, mac_address, u.get_buid().await.unwrap())
.pair(id, u.get_buid().await.unwrap())
.await
.expect("Failed to pair");