
Maintenant, vous pouvez refléter et contrôler votre iPhone jailbreaké via USB.
ioscpy est en cours d'exécution (Réservé, l'auteur implémentera entièrement cette fonctionnalité)ioscpy sans fil (BLE, Wi-Fi) (Réservé, l'auteur implémentera entièrement cette fonctionnalité)Une CLI pour macOS, Linux et Windows qui reproduit et contrôle un iPhone jailbreaké via USB.
Avec un seul appareil connecté, c'est tout ce dont vous avez besoin. Il se connecte tout seul.
Il y a deux côtés. L'application Mac exécute le miroir, le paquet iPhone permet de contrôler le téléphone. Installez les deux.
Sur le Mac, avec Homebrew :
brew tap lautarovculic/ioscpy # the Mac app
brew trust lautarovculic/ioscpy
brew install ioscpy
ioscpy --version
Sur l'iPhone jailbreaké, ajoutez ce dépôt dans Sileo ou Zebra, puis installez ioscpy depuis celui-ci et effectuez un respring :
https://lautarovculic.github.io/ioscpy-repo/
Le dépôt contient à la fois des builds rootless et rootful, et le gestionnaire de paquets choisit celui qui correspond au jailbreak.
ioscpy --device <UDID> # pick a device when several are attached
ioscpy --list # list attached devices
ioscpy --no-keyboard # hide the on-screen keyboard, type from the Mac
ioscpy --mjpeg # force MJPEG video instead of the default H.264
ioscpy --record out.mp4 # record the mirrored screen while mirroring (video only)
ioscpy --debug # full diagnostics
ioscpy --version
--record PATH écrit ce qui est affiché sur l'écran mis en miroir dans un fichier MP4 pendant que la session
s'exécute. Le flux H.264 que le téléphone envoie déjà est multiplexé directement dans le fichier, donc
rien n'est réencodé et l'enregistrement coûte une écriture tamponnée par image ; la fenêtre
reste aussi réactive qu'avant. Le flux ne contient pas d'audio, les enregistrements sont donc
silencieux. Une reconnexion démarre un nouveau fichier (out-2.mp4, out-3.mp4, …) au lieu
d'écraser celui écrit par la session interrompue.
La piste commence à la première image clé après le début de la session, et le fichier est
finalisé à la fermeture de la fenêtre. L'enregistrement suit l'orientation propre du flux,
donc une session capturée avec le téléphone tenu en paysage est stockée pivotée ;
la rotation de QuickTime, ou une passe ffmpeg -display_rotation 90 -i out.mp4 -c copy,
corrige cela sans réencodage non plus.
Il n'y a pas encore de version précompilée pour Linux. Compilez l'hôte depuis les sources. Le paquet de l'appareil est le même que sur macOS, installé depuis le dépôt Sileo/Zebra ci-dessus.
Clonez ce dépôt, puis exécutez l'installateur :
./install.sh
--yes ignore les invites de confirmation. --prefix DIR installe dans DIR au lieu de /usr/local et omet sudo lorsque le répertoire est sous $HOME. --uninstall supprime le binaire installé.
Prérequis sur Debian/Ubuntu :
sudo apt install build-essential pkg-config nasm \
libimobiledevice-utils usbmuxd \
libxkbcommon-dev libwayland-dev \
libxcb1-dev libxkbcommon-x11-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Assurez-vous que usbmuxd est en cours d'exécution pour que l'appareil apparaisse :
sudo systemctl enable --now usbmuxd
idevice_id -l # should print the UDID with the phone attached
Compilez l'hôte en tant qu'utilisateur, puis installez :
make host-release
sudo make install-host # installs to /usr/local/bin/ioscpy
ioscpy --version
./install.sh fonctionne également sur Arch Linux.
sudo pacman -S --needed \
base-devel pkgconf nasm \
libimobiledevice usbmuxd \
libxkbcommon wayland libxcb libxkbcommon-x11 \
rustup curl git
rustup default stable
Activez le service
sudo systemctl enable --now usbmuxd.service
Vérifiez si l'appareil est connecté
idevice_id -l
Puis exécutez le binaire
cd host/target/release && chmod +x ioscpy
./ioscpy
L'étape de compilation reste en tant qu'utilisateur afin qu'un cargo installé via rustup soit trouvé.
install-host est une cible séparée qui copie simplement le binaire compilé, donc elle
fonctionne bien sous sudo sans nécessiter cargo dans le PATH de root. Pour une installation sans sudo
dans votre répertoire personnel, utilisez make install-host PREFIX=$HOME/.local et assurez-vous
que $HOME/.local/bin est dans votre PATH.
Le décodage H.264 fonctionne sous Linux via le décodeur logiciel openh264. Passez
--mjpeg si vous préférez la voie MJPEG.
Sur les compositeurs Wayland qui refusent les décorations côté serveur (GNOME/mutter),
ioscpy bascule automatiquement vers X11/XWayland afin que la fenêtre obtienne une barre de titre
normale. Passez --wayland pour rester sur Wayland natif à la place.
Il n'y a pas encore de version précompilée pour Windows. Compilez l'hôte depuis les sources. Le paquet de l'appareil est le même que sur macOS et Linux, installé depuis le dépôt Sileo/Zebra.
ioscpy sous Windows réutilise l'outillage USB qu'une installation iOS possède déjà, et ne remplace aucun pilote, donc Frida, objection, grapefruit, ideviceinfo, iTunes et tout autre outil usbmux continuent de fonctionner pendant son exécution.
Apple Mobile Device Support : installé avec iTunes depuis apple.com (prenez la version du site Apple, pas celle du Microsoft Store), ou le paquet AMDS autonome. Cela fournit le pilote USB et usbmuxd. iTunes doit voir le téléphone.
libimobiledevice-win32 : fournit iproxy.exe, idevice_id.exe,
ideviceinfo.exe. Installez avec Scoop :
scoop install libimobiledevice
ou avec MSYS2 :
pacman -S mingw-w64-x86_64-libimobiledevice
Assurez-vous que les trois fichiers .exe sont dans votre PATH (ou placez-les à côté de
ioscpy.exe). Vérifiez avec idevice_id -l, qui devrait afficher l'UDID de votre appareil.
openh264
compile une petite bibliothèque C via cc).PATH : l'assembleur d'openh264 (scoop install nasm).git clone https://github.com/lautarovculic/ioscpy
cd ioscpy
cargo build --release --manifest-path host/Cargo.toml
.\host\target\release\ioscpy.exe --list # confirms the device is seen
.\host\target\release\ioscpy.exe # opens the mirror window
Passez --mjpeg si vous préférez la voie MJPEG plutôt que H.264. Si openh264 échoue à
se compiler, confirmez que nasm est dans le PATH.
Après un respring ou une nouvelle connexion, donnez au téléphone un appui physique sur son écran avant de le piloter depuis l'hôte. iOS ne fait confiance qu'aux événements tactiles provenant du vrai numériseur, donc ce premier appui réel est ce qui permet aux événements injectés de passer. Vous le faites une fois, puis l'hôte prend le relais.