FOSDEM: Gnash Developer Deciphers RTMP
Rob Savoye has been engaged in numerous projects, but in his work on Gnash, a free implementation of the Adobe Flash Player, he found a hard nut to crack: how to decipher the protocol details of the Real Time Messaging Protocol (RTMP) it uses. He has now presented his solution at the FOSDEM '09 conference in Belgium.
Savoye, developer with the Open Media Now project funded by Red Hat founder Bob Young, has worked on compilers and debuggers in the past. With Gnash he's been involved in enhancing support for ActionScript 9. Version 8 of the software already serves as a plug-in for Firefox and Konqueror, according to Savoye.
For him, reverse-engineering RTMP for Gnash has not least of all been a mental challenge. He would stare at hex code long enough until a revelation hit him, he said with a smile. He gave an example of his process: at first he searched for certain byte sequences of ASCII code in a collection of as many sample artifacts as possible. He could then determine the boundaries of other data fields and tried to locate a protocol data header. Based on his experience he could then often establish field lengths and checksums for the RTMP protocol.
Numbers are almost always coded in big-endian order in network protocols and checksums rarely consist of anything other than a simple sum or result of a cyclic redundancy check (CRC), according to Savoye. He wrote a log of test code to check his assumptions and warns prospective reverse engineers that they'd have to throw away much of their assumptions if proved false.
Not least of all he cautions imitators about possible legal implications: simple disassembling of proprietary software can lead to claims from respective originators. He therefore recommended involving legal counsel as early as possible in the process. It's also useful, according to Savoye, when a developer reimplements the code, to extract the specification from the network packet and leave just the protocol description for another independent developer in his implementation. Apparently the newest YouTube videos are already viewable using the current Gnash version based on Savoye's work.
Comments
comments powered by DisqusIssue 261/2022
Buy this issue as a PDF
News
-
KaOS 2022.06 Now Available With KDE Plasma 5.25
The newest iteration of KaOS Linux not only adds the latest KDE Plasma desktop but sets LibreOffice as the default.
-
Manjaro 21.3.0 Is Now Available
Manjaro “Ruah” has been released and includes the latest Calamares installer, GNOME 42, and much more.
-
SpiralLinux is a New Linux Distribution Focused on Simplicity
A new Linux distribution, from the creator of GeckoLinux, is a Debian-based operating system with a focus on simplicity and ease of use.
-
HP Dev One Linux Laptop is Now Available for Pre-Order
The System76/HP collaboration Dev One laptop, geared toward developers, is now available for pre-order.
-
NixOS 22.5 Is Now Available
The latest release of NixOS with a much-improved package manager and a user-friendly graphical installer.
-
System76 Teams up with HP to Create the Dev One Laptop
HP and System76 have come together to develop a new laptop, powered by Pop!_OS and aimed toward developers.
-
Titan Linux is a New KDE Linux Based on Debian Stable
Titan Linux is a new Debian-based Linux distribution that features the KDE Plasma desktop with a focus on usability and performance.
-
Danielle Foré Has an Update for elementary OS 7
Now that Ubuntu 22.04 has been released, the team behind elementary OS is preparing for the upcoming 7.0 release.
-
Linux New Media Launches Open Source JobHub
New job website focuses on connecting technical and non-technical professionals with organizations in open source.
-
Ubuntu Cinnamon 22.04 Now Available
Ubuntu Cinnamon 22.04 has been released with all the additions from upstream as well as other features and improvements.
You are right
Actionscript 3 is the most current version
You mean Adobe Flash 9 right? I am an Adobe Flex developer and as per my knowledge and experience Actionscript 3 is the latest version.
Thanks
Faisal