diff --git a/Cargo.lock b/Cargo.lock index 896b814..57e3ad8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -92,6 +92,27 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + [[package]] name = "async-channel" version = "2.5.0" @@ -117,17 +138,160 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if 1.0.4", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel 2.5.0", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if 1.0.4", + "event-listener 5.4.1", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if 1.0.4", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22068c0c19514942eefcfd4daf8976ef1aad84e61539f95cd200c35202f80af5" +dependencies = [ + "async-stream-impl 0.2.1", + "futures-core", +] + [[package]] name = "async-stream" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ - "async-stream-impl", + "async-stream-impl 0.3.6", "futures-core", "pin-project-lite", ] +[[package]] +name = "async-stream-impl" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f9db3b38af870bf7e5cc649167533b493928e50744e2c30ae350230b414670" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "async-stream-impl" version = "0.3.6" @@ -136,7 +300,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -230,7 +394,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 2.0.110", ] [[package]] @@ -254,7 +418,7 @@ version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel", + "async-channel 2.5.0", "async-task", "futures-io", "futures-lite", @@ -296,7 +460,7 @@ checksum = "3b457277798202ccd365b9c112ebee08ddd57f1033916c8b8ea52f222e5b715d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -313,7 +477,7 @@ dependencies = [ "quote", "serde", "serde_json", - "syn", + "syn 2.0.110", "tempfile", "toml", ] @@ -339,6 +503,12 @@ dependencies = [ "nom", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.4" @@ -357,7 +527,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "cipher", "cpufeatures", ] @@ -515,7 +685,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", ] [[package]] @@ -571,7 +741,7 @@ version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "cpufeatures", "curve25519-dalek-derive", "digest", @@ -589,7 +759,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -613,7 +783,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -645,7 +815,17 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", +] + +[[package]] +name = "dns-parser" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" +dependencies = [ + "byteorder", + "quick-error", ] [[package]] @@ -691,7 +871,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", ] [[package]] @@ -700,6 +880,20 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "err-derive" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", + "synstructure 0.12.6", +] + [[package]] name = "errno" version = "0.3.14" @@ -710,6 +904,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "event-listener" version = "5.4.1" @@ -727,7 +927,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener", + "event-listener 5.4.1", "pin-project-lite", ] @@ -882,7 +1082,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -942,7 +1142,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "js-sys", "libc", "wasi", @@ -955,7 +1155,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "libc", "r-efi", "wasip2", @@ -967,6 +1167,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "hashbrown" version = "0.16.0" @@ -979,6 +1191,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + [[package]] name = "hkdf" version = "0.12.4" @@ -1191,7 +1409,7 @@ dependencies = [ name = "idevice" version = "0.1.50" dependencies = [ - "async-stream", + "async-stream 0.3.6", "async_zip", "base64 0.22.1", "byteorder", @@ -1268,6 +1486,7 @@ dependencies = [ "clap", "futures-util", "idevice", + "mdns", "ns-keyed-archive", "plist", "sha2", @@ -1383,6 +1602,15 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -1404,7 +1632,7 @@ version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "windows-link 0.2.1", ] @@ -1440,6 +1668,9 @@ name = "log" version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +dependencies = [ + "value-bag", +] [[package]] name = "mac_address" @@ -1466,10 +1697,26 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "digest", ] +[[package]] +name = "mdns" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c769962ac75a6ea437f0922b27834bcccd4c013d591383a16ae5731e3ef0f3f3" +dependencies = [ + "async-std", + "async-stream 0.2.1", + "dns-parser", + "err-derive", + "futures-core", + "futures-util", + "log", + "net2", +] + [[package]] name = "memchr" version = "2.7.6" @@ -1521,13 +1768,24 @@ dependencies = [ "getrandom 0.2.16", ] +[[package]] +name = "net2" +version = "0.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi", +] + [[package]] name = "netconfig-rs" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "207561c8758738388c2fd851c3e759f503583d8dd70ddc895baae806753ad4c9" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "core-foundation", "ipnet", "libc", @@ -1598,7 +1856,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.4", "cfg_aliases", "libc", "memoffset", @@ -1611,7 +1869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.4", "cfg_aliases", "libc", "memoffset", @@ -1749,7 +2007,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.4", "foreign-types", "libc", "once_cell", @@ -1765,7 +2023,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -1802,7 +2060,7 @@ version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "libc", "redox_syscall", "smallvec", @@ -1847,7 +2105,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -1926,6 +2184,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if 1.0.4", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "poly1305" version = "0.8.0" @@ -1968,7 +2240,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.110", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", ] [[package]] @@ -1980,6 +2276,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quick-xml" version = "0.38.4" @@ -2139,7 +2441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if", + "cfg-if 1.0.4", "getrandom 0.2.16", "libc", "untrusted", @@ -2297,7 +2599,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2340,7 +2642,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "cpufeatures", "digest", ] @@ -2351,7 +2653,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "cpufeatures", "digest", ] @@ -2455,6 +2757,17 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.110" @@ -2475,6 +2788,18 @@ dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + [[package]] name = "synstructure" version = "0.13.2" @@ -2483,7 +2808,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2535,7 +2860,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2546,7 +2871,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2555,7 +2880,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", ] [[package]] @@ -2617,7 +2942,7 @@ checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2645,7 +2970,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2798,7 +3123,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -2885,6 +3210,12 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "universal-hash" version = "0.5.1" @@ -2979,6 +3310,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "value-bag" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" + [[package]] name = "vcpkg" version = "0.2.15" @@ -3021,7 +3358,7 @@ version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -3034,7 +3371,7 @@ version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "js-sys", "once_cell", "wasm-bindgen", @@ -3060,7 +3397,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.110", "wasm-bindgen-shared", ] @@ -3187,7 +3524,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -3198,7 +3535,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -3445,7 +3782,7 @@ version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" dependencies = [ - "cfg-if", + "cfg-if 1.0.4", "windows-sys 0.59.0", ] @@ -3506,8 +3843,8 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.110", + "synstructure 0.13.2", ] [[package]] @@ -3527,7 +3864,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -3547,8 +3884,8 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.110", + "synstructure 0.13.2", ] [[package]] @@ -3568,7 +3905,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] [[package]] @@ -3601,5 +3938,5 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.110", ] diff --git a/tools/Cargo.toml b/tools/Cargo.toml index 6fc2f77..02645ba 100644 --- a/tools/Cargo.toml +++ b/tools/Cargo.toml @@ -9,147 +9,151 @@ documentation = "https://docs.rs/idevice" repository = "https://github.com/jkcoxson/idevice" keywords = ["lockdownd", "ios"] -[[bin]] -name = "ideviceinfo" -path = "src/ideviceinfo.rs" - -[[bin]] -name = "heartbeat_client" -path = "src/heartbeat_client.rs" - -[[bin]] -name = "instproxy" -path = "src/instproxy.rs" - -[[bin]] -name = "ideviceinstaller" -path = "src/ideviceinstaller.rs" - -[[bin]] -name = "mounter" -path = "src/mounter.rs" +# [[bin]] +# name = "ideviceinfo" +# path = "src/ideviceinfo.rs" +# +# [[bin]] +# name = "heartbeat_client" +# path = "src/heartbeat_client.rs" +# +# [[bin]] +# name = "instproxy" +# path = "src/instproxy.rs" +# +# [[bin]] +# name = "ideviceinstaller" +# path = "src/ideviceinstaller.rs" +# +# [[bin]] +# name = "mounter" +# path = "src/mounter.rs" # [[bin]] # name = "core_device_proxy_tun" # path = "src/core_device_proxy_tun.rs" -[[bin]] -name = "idevice_id" -path = "src/idevice_id.rs" - -[[bin]] -name = "process_control" -path = "src/process_control.rs" - -[[bin]] -name = "dvt_packet_parser" -path = "src/dvt_packet_parser.rs" - -[[bin]] -name = "remotexpc" -path = "src/remotexpc.rs" - -[[bin]] -name = "debug_proxy" -path = "src/debug_proxy.rs" - -[[bin]] -name = "misagent" -path = "src/misagent.rs" - -[[bin]] -name = "location_simulation" -path = "src/location_simulation.rs" - -[[bin]] -name = "afc" -path = "src/afc.rs" - -[[bin]] -name = "crash_logs" -path = "src/crash_logs.rs" - -[[bin]] -name = "amfi" -path = "src/amfi.rs" - -[[bin]] -name = "pair" -path = "src/pair.rs" +# [[bin]] +# name = "idevice_id" +# path = "src/idevice_id.rs" +# +# [[bin]] +# name = "process_control" +# path = "src/process_control.rs" +# +# [[bin]] +# name = "dvt_packet_parser" +# path = "src/dvt_packet_parser.rs" +# +# [[bin]] +# name = "remotexpc" +# path = "src/remotexpc.rs" +# +# [[bin]] +# name = "debug_proxy" +# path = "src/debug_proxy.rs" +# +# [[bin]] +# name = "misagent" +# path = "src/misagent.rs" +# +# [[bin]] +# name = "location_simulation" +# path = "src/location_simulation.rs" +# +# [[bin]] +# name = "afc" +# path = "src/afc.rs" +# +# [[bin]] +# name = "crash_logs" +# path = "src/crash_logs.rs" +# +# [[bin]] +# name = "amfi" +# path = "src/amfi.rs" +# +# [[bin]] +# name = "pair" +# path = "src/pair.rs" [[bin]] name = "pair_apple_tv" path = "src/pair_apple_tv.rs" [[bin]] -name = "syslog_relay" -path = "src/syslog_relay.rs" +name = "pair_rsd_ios" +path = "src/pair_rsd_ios.rs" -[[bin]] -name = "os_trace_relay" -path = "src/os_trace_relay.rs" - -[[bin]] -name = "app_service" -path = "src/app_service.rs" - -[[bin]] -name = "lockdown" -path = "src/lockdown.rs" - -[[bin]] -name = "restore_service" -path = "src/restore_service.rs" - -[[bin]] -name = "companion_proxy" -path = "src/companion_proxy.rs" - -[[bin]] -name = "diagnostics" -path = "src/diagnostics.rs" - -[[bin]] -name = "mobilebackup2" -path = "src/mobilebackup2.rs" - -[[bin]] -name = "diagnosticsservice" -path = "src/diagnosticsservice.rs" - -[[bin]] -name = "bt_packet_logger" -path = "src/bt_packet_logger.rs" - -[[bin]] -name = "pcapd" -path = "src/pcapd.rs" - -[[bin]] -name = "preboard" -path = "src/preboard.rs" - - -[[bin]] -name = "screenshot" -path = "src/screenshot.rs" - -[[bin]] -name = "activation" -path = "src/activation.rs" - -[[bin]] -name = "notifications" -path = "src/notifications.rs" - - -[[bin]] -name = "installcoordination_proxy" -path = "src/installcoordination_proxy.rs" - -[[bin]] -name = "iproxy" -path = "src/iproxy.rs" +# [[bin]] +# name = "syslog_relay" +# path = "src/syslog_relay.rs" +# +# [[bin]] +# name = "os_trace_relay" +# path = "src/os_trace_relay.rs" +# +# [[bin]] +# name = "app_service" +# path = "src/app_service.rs" +# +# [[bin]] +# name = "lockdown" +# path = "src/lockdown.rs" +# +# [[bin]] +# name = "restore_service" +# path = "src/restore_service.rs" +# +# [[bin]] +# name = "companion_proxy" +# path = "src/companion_proxy.rs" +# +# [[bin]] +# name = "diagnostics" +# path = "src/diagnostics.rs" +# +# [[bin]] +# name = "mobilebackup2" +# path = "src/mobilebackup2.rs" +# +# [[bin]] +# name = "diagnosticsservice" +# path = "src/diagnosticsservice.rs" +# +# [[bin]] +# name = "bt_packet_logger" +# path = "src/bt_packet_logger.rs" +# +# [[bin]] +# name = "pcapd" +# path = "src/pcapd.rs" +# +# [[bin]] +# name = "preboard" +# path = "src/preboard.rs" +# +# +# [[bin]] +# name = "screenshot" +# path = "src/screenshot.rs" +# +# [[bin]] +# name = "activation" +# path = "src/activation.rs" +# +# [[bin]] +# name = "notifications" +# path = "src/notifications.rs" +# +# +# [[bin]] +# name = "installcoordination_proxy" +# path = "src/installcoordination_proxy.rs" +# +# [[bin]] +# name = "iproxy" +# path = "src/iproxy.rs" [dependencies] idevice = { path = "../idevice", features = ["full"], default-features = false } @@ -164,6 +168,7 @@ plist = { version = "1.7" } ns-keyed-archive = "0.1.2" uuid = "1.16" futures-util = { version = "0.3" } +mdns = { version = "3" } [features] default = ["aws-lc"] diff --git a/tools/src/pair_rsd_ios.rs b/tools/src/pair_rsd_ios.rs new file mode 100644 index 0000000..dad0239 --- /dev/null +++ b/tools/src/pair_rsd_ios.rs @@ -0,0 +1,58 @@ +// let ip = Ipv6Addr::new(0xfe80, 0, 0, 0, 0x282a, 0x9aff, 0xfedb, 0x8cbb); +// let addr = SocketAddrV6::new(ip, 60461, 0, 28); +// let conn = tokio::net::TcpStream::connect(addr).await.unwrap(); + +// Jackson Coxson + +use std::{io::Write, net::IpAddr, str::FromStr, time::Duration}; + +use clap::{Arg, Command}; +use futures_util::{StreamExt, pin_mut}; +use idevice::remote_pairing::{RemotePairingClient, RpPairingFile}; +use mdns::{Record, RecordKind}; + +const SERVICE_NAME: &'static str = "ncm._remoted._tcp.local."; + +#[tokio::main] +async fn main() { + // tracing_subscriber::fmt::init(); + + let matches = Command::new("pair") + .about("Pair with the device") + .arg( + Arg::new("about") + .long("about") + .help("Show about information") + .action(clap::ArgAction::SetTrue), + ) + .get_matches(); + + if matches.get_flag("about") { + println!("pair - pair with the device"); + println!("Copyright (c) 2025 Jackson Coxson"); + return; + } + + let stream = mdns::discover::all(SERVICE_NAME, Duration::from_secs(1)) + .unwrap() + .listen(); + pin_mut!(stream); + + while let Some(Ok(response)) = stream.next().await { + let addr = response.records().filter_map(self::to_ip_addr).next(); + + if let Some(addr) = addr { + println!("found cast device at {}", addr); + } else { + println!("cast device does not advertise address"); + } + } +} + +fn to_ip_addr(record: &Record) -> Option { + match record.kind { + RecordKind::A(addr) => Some(addr.into()), + RecordKind::AAAA(addr) => Some(addr.into()), + _ => None, + } +}