FOSDEM: Gnash Developer Deciphers RTMP

Feb 10, 2009

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.

Related content

  • Gnash Flow: Supports RTMP for Gnash

    The nonprofit is providing financial support for Gnash, the Flash alternative, to accelerate development of the Real Time Messaging Protocol (RTMP).

  • Free Software Projects

    This month, we look at free projects as a replacement for Flash and Java. Both Flash and Java are so widespread that you can’t realistically do without them, so it’s a pity that both are released under proprietary licenses. The community has started to remedy the situation.

  • Gnash

    Until recently, the Flash format has been the uncontested domain of Adobe. Gnash introduces a free Flash player for Linux and BSD with a design that aims far beyond the capabilities of Adobe’s king of the hill.

  • Helping Devils at came to a close Friday after dozens of excellent talks, great social events, and the unexpected shaving of Bdale Garbee for the Tasmanian Devil.


  • You are right

    You are completely right, I lost that in translation: The even more precise text reads: Gnash supports most SWF v7 features and some SWF v8 and v9.
  • Actionscript 3 is the most current version

    "....enhancing support for ActionScript 9."

    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.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More