Reverse Engineering iOS Screen Mirroring with Golang, Daniel Paulus
GoWayFest 4.0, Online – July 11-12, 2020
Reverse Engineering iOS Screen Mirroring with Golang, Daniel Paulus
Have you ever wondered how closed source features are reverse engineered? I find few things as challenging and fun as creating meaning from a bunch of hex dumps only by using analytical and engineering skills, to open up a proprietary protocol and build working software on top of it.
The QuickTime application gives you the possibility to stream and record live audio and video from iOS devices connected to a MacOSX host. I was interested in seeing how this feature works and how it can be implemented in Go to enable all operating systems to support it.
As usual, Apple did not publish any documentation on how this feature works. Therefore, the only way to get there was to reverse engineer it from scratch. I managed to get a working implementation for Linux and would like to share and discuss my approach to reverse engineering this protocol. I find reverse engineering these features very rewarding because as you Go, you get the chance to really understand how things like h264, pcm audio, synchronization or USB data transfers work on a low level.
In my talk I will show you:
- how to debug and analyze USB traffic on a Mac with Wireshark;
- easy ways of how to make sense of network/usb protocols just by looking at hex dump representations;
- how to implement a USB device codec with golang and libusb;
- and how to stream h264 video data over the network or save it to a file.
The whole project is MIT licensed and well documented, so that anyone can go ahead and implement it in their favorite language.
Видео Reverse Engineering iOS Screen Mirroring with Golang, Daniel Paulus канала SPACE
Reverse Engineering iOS Screen Mirroring with Golang, Daniel Paulus
Have you ever wondered how closed source features are reverse engineered? I find few things as challenging and fun as creating meaning from a bunch of hex dumps only by using analytical and engineering skills, to open up a proprietary protocol and build working software on top of it.
The QuickTime application gives you the possibility to stream and record live audio and video from iOS devices connected to a MacOSX host. I was interested in seeing how this feature works and how it can be implemented in Go to enable all operating systems to support it.
As usual, Apple did not publish any documentation on how this feature works. Therefore, the only way to get there was to reverse engineer it from scratch. I managed to get a working implementation for Linux and would like to share and discuss my approach to reverse engineering this protocol. I find reverse engineering these features very rewarding because as you Go, you get the chance to really understand how things like h264, pcm audio, synchronization or USB data transfers work on a low level.
In my talk I will show you:
- how to debug and analyze USB traffic on a Mac with Wireshark;
- easy ways of how to make sense of network/usb protocols just by looking at hex dump representations;
- how to implement a USB device codec with golang and libusb;
- and how to stream h264 video data over the network or save it to a file.
The whole project is MIT licensed and well documented, so that anyone can go ahead and implement it in their favorite language.
Видео Reverse Engineering iOS Screen Mirroring with Golang, Daniel Paulus канала SPACE
Показать
Комментарии отсутствуют
Информация о видео
Другие видео канала
JFuture 2019 Conference – Short RecapPyConBY 2020: Michael Foord - How Python Took Over the WorldCreating efficient VM with JIT in Go, Iskander SharipovData Fest Belarus 2017How to Safely and Efficiently Build your App with Modules, Aaron SchlesingerPyConBy: Nikita Grishko, Evolution of dependency managementMobileOptimized 2019 Conference – Short RecapIt’s time for Kotlin Multiplatform Mobile! Ekaterina Petrovaf(by) 2020 Conference – Short RecapAndrej Ruckij – Agile (Network) organisation. Myth or reality?MUUG Meetup #8 - UnityEngine.Animator. Что с ним не так и что с этим делать?/Антон КорсаковWhen does a startup need to think about the high load? – Мик АмелишкоIs Task T the only option? - Ayrat HudaygulovbyGIS Meetup #8 –Создание 2D ортофото и 3D моделей на основе фото с дронов, Дорофей ПролесковскийFace detection in Go and Webassembly, Endre SimoBetter communication for your services with gRPC, Yuri KunashbyGis Meetup #13 – Аэрофотосъёмка без дронов и самолётов, Илья ЗверевDeclarative UI frameworks evolution: From dinosaurs to Jetpack Compose, Matvei MalkovData Fest Minsk 2019: RestoreGAN: Applying Feature Pyramid Networks to Image RestorationPyConBy: Elena Nikolaichik, MQTT with Python