{"id":1118,"date":"2009-02-23T22:16:24","date_gmt":"2009-02-24T06:16:24","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=1118"},"modified":"2020-07-25T22:39:16","modified_gmt":"2020-07-26T05:39:16","slug":"camp-luna","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/camp-luna\/","title":{"rendered":"Camp Luna"},"content":{"rendered":"<p>I remember when the Mono people <a href=\"http:\/\/tirania.org\/blog\/archive\/2009\/Feb-11.html\">first announced the Moonlight project<\/a> for Linux that would interoperate with Microsoft&#8217;s Silverlight. They claimed that Microsoft would release a special binary codec pack that would allow Linux users to play back their proprietary media codecs. However, this codec pack would not be allowed for use in any other application, like <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a> or <a href=\"http:\/\/gstreamer.freedesktop.org\/\">GStreamer<\/a>. How are they going to enforce that? Or so I wondered. Tonight I learned how.<\/p>\n<p><a href=\"http:\/\/multimedia.cx\/eggs\/silverlight-codecpack\/\">I started investigating the API<\/a> of the binary codec pack blobs a few weeks ago. I got as far as figuring out how Moonlight registers the codecs. Then I lost motivation, in no small part because there isn&#8217;t that much in the blob that I would deem interesting (perhaps one method for keeping people from sorting out the API). In the <a href=\"http:\/\/multimedia.cx\/eggs\/silverlight-codecpack\/#comments\">comments of the last post on the matter<\/a>, people wondered if the codec pack included support for WMA Voice, which is still unknown. I can&#8217;t find any &#8216;voice&#8217; strings in the blob. However, I do find references to lossless coding. This might pertain to Windows Lossless Audio, or it could just be a special coding mode for WMA3 Pro. Either way, I&#8217;m suddenly interested.<\/p>\n<p>So I looked for interface points in the Moonlight source. Moonlight simply loads and invokes registration functions for WMA, WMV, and MP3. The registration functions don&#8217;t return any data that Moonlight stores. Moonlight doesn&#8217;t appear to load (via dlsym()) or invoke any other codec pack functions directly. So how can it possibly be interfacing? The only other way the interaction could flow is if the codec pack shared library was invoking functions in Moonlight&#8230;<\/p>\n<p>Oh, no&#8230; they wouldn&#8217;t do that, would they?<\/p>\n<p><!--more--><\/p>\n<p><em>&#8230;oh yes&#8230; they would&#8230;<\/em><\/p>\n<pre>\r\n$ ld silverlight-media-pack-linux-x86-5-1.so \r\nld: warning: libmoon.so.0, needed by silverlight-media-pack-linux-x86-5-1.so, not found (try using -rpath or -rpath-link)\r\nld: warning: cannot find entry symbol _start; not setting start address\r\n[...so]: undefined reference to `g_free'\r\n[...so]: undefined reference to `g_memdup'\r\n[...so]: undefined reference to `g_slist_free'\r\n[...so]: undefined reference to `Media::Warning(int, char const*, ...)'\r\n[...so]: undefined reference to `EventObject::SetSurface(Surface*)'\r\n[...so]: undefined reference to `g_malloc'\r\n[...so]: undefined reference to `EventObject::~EventObject()'\r\n[...so]: undefined reference to `WMARawDecCBGetData'\r\n[...so]: undefined reference to `g_slist_append'\r\n[...so]: undefined reference to `g_strdup_printf'\r\n[...so]: undefined reference to `OutputDebugString'\r\n[...so]: undefined reference to `IMediaObject::Dispose()'\r\n[...so]: undefined reference to `typeinfo for IMediaObject'\r\n[...so]: undefined reference to `min'\r\n[...so]: undefined reference to `g_realloc'\r\n[...so]: undefined reference to `max'\r\n[...so]: undefined reference to `Media::RegisterDecoder(DecoderInfo*)'\r\n[...so]: undefined reference to `IMediaDecoder::IMediaDecoder(Media*, IMediaStream*)'\r\n[...so]: undefined reference to `vtable for IMediaObject'\r\n<\/pre>\n<p>So the binary blob calls back into the calling library, thus forming a symbiotic interface which is at least partially in C++ to boot. This will make it significantly more challenging to subvert the codec.<\/p>\n<p>I started on a program called camp-luna.c (inspired by <a href=\"http:\/\/games.multimedia.cx\/all-hail-the-moon-deity\/\">this game<\/a>), then camp-luna.cpp, to try to sort out the interface. Then I realized that this would most likely be a supremely silly endeavor to continue. As previously stated, the only halfway interesting, undiscovered target would be certain parts of WMA3, and we already have <a href=\"http:\/\/multimedia.cx\/eggs\/linspires-binary-decoding-modules\/\">Linspire&#8217;s module (libwma3.so)<\/a> for that. In fact, a lot of the strings from the Silverlight codec pack look strangely reminiscent. So much so that I dumped lists of strings from both files&#8230;<\/p>\n<p>$ strings -a silverlight-media-pack-linux-x86-5-1.so > silverlight-strings.txt<br \/>\n$ strings -a libwma3.so > linspire-strings.txt<\/p>\n<p>&#8230;then I wanted to look for all strings in common between the 2 files. I did a cursory Google search for any pre-made utilities but then just hammered out a naive Python script to do the same; common-strings.py:<\/p>\n<p><script src=\"https:\/\/gist.github.com\/multimediamike\/f39be568ef9b23481360a8f9436bf19a.js\"><\/script><\/p>\n<p>Running &#8216;.\/common-strings.py silverlight-strings.txt linspire-strings.txt&#8217; reveals 513 strings in common between the 2 modules, indicating that the 2 were clearly compiled from the same source code. Further, they both contain the same 4 symbols for dealing with some kind of lossless mode:<\/p>\n<pre>\r\nprvDecodeSubFrameChannelRawPCMPureLosslessMode\r\nprvDecodeSubFrameChannelResiduePureLosslessModeVerB\r\nprvDecodeSubFrameHeaderPureLosslessMode\r\nprvDecodeSubFramePureLosslessMode\r\n<\/pre>\n<p>Always attack the weakest link. So, in the end, the best enforcement mechanism that the Silverlight codec pack has guarding against RE attempts is irrelevance.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I tried to hook up Moonlight&#8217;s binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,4,12],"tags":[158,277,153,278],"class_list":["post-1118","post","type-post","status-publish","format-standard","hentry","category-python","category-reverse-engineering","category-windows-media","tag-linspire","tag-reverse-engineering","tag-silverlight","tag-windows-media"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"I tried to hook up Moonlight&#039;s binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Multimedia Mike\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/multimedia.cx\/eggs\/camp-luna\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Trying To Subvert Moonlight&#039;s Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta property=\"og:description\" content=\"I tried to hook up Moonlight&#039;s binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/multimedia.cx\/eggs\/camp-luna\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2009-02-24T06:16:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-26T05:39:16+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Trying To Subvert Moonlight&#039;s Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I tried to hook up Moonlight&#039;s binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#article\",\"name\":\"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes\",\"headline\":\"Camp Luna\",\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"},\"datePublished\":\"2009-02-23T22:16:24-08:00\",\"dateModified\":\"2020-07-25T22:39:16-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":7,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#webpage\"},\"articleSection\":\"Python, Reverse Engineering, Windows Media, linspire, Reverse Engineering, silverlight, Windows Media\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/#listItem\",\"name\":\"Reverse Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/#listItem\",\"position\":2,\"name\":\"Reverse Engineering\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/windows-media\\\/#listItem\",\"name\":\"Windows Media\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/windows-media\\\/#listItem\",\"position\":3,\"name\":\"Windows Media\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/windows-media\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#listItem\",\"name\":\"Camp Luna\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/#listItem\",\"name\":\"Reverse Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#listItem\",\"position\":4,\"name\":\"Camp Luna\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/windows-media\\\/#listItem\",\"name\":\"Windows Media\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/\",\"name\":\"Multimedia Mike\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Multimedia Mike\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#webpage\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/\",\"name\":\"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes\",\"description\":\"I tried to hook up Moonlight's binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/camp-luna\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"datePublished\":\"2009-02-23T22:16:24-08:00\",\"dateModified\":\"2020-07-25T22:39:16-07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes","description":"I tried to hook up Moonlight's binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort","canonical_url":"https:\/\/multimedia.cx\/eggs\/camp-luna\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#article","name":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes","headline":"Camp Luna","author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"},"datePublished":"2009-02-23T22:16:24-08:00","dateModified":"2020-07-25T22:39:16-07:00","inLanguage":"en-US","commentCount":7,"mainEntityOfPage":{"@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#webpage"},"isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#webpage"},"articleSection":"Python, Reverse Engineering, Windows Media, linspire, Reverse Engineering, silverlight, Windows Media"},{"@type":"BreadcrumbList","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","position":1,"name":"Home","item":"https:\/\/multimedia.cx\/eggs","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/#listItem","name":"Reverse Engineering"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/#listItem","position":2,"name":"Reverse Engineering","item":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/#listItem","name":"Windows Media"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/#listItem","position":3,"name":"Windows Media","item":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#listItem","name":"Camp Luna"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/#listItem","name":"Reverse Engineering"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#listItem","position":4,"name":"Camp Luna","previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/#listItem","name":"Windows Media"}}]},{"@type":"Organization","@id":"https:\/\/multimedia.cx\/eggs\/#organization","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","url":"https:\/\/multimedia.cx\/eggs\/"},{"@type":"Person","@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author","url":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/","name":"Multimedia Mike","image":{"@type":"ImageObject","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Multimedia Mike"}},{"@type":"WebPage","@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#webpage","url":"https:\/\/multimedia.cx\/eggs\/camp-luna\/","name":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes","description":"I tried to hook up Moonlight's binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/#website"},"breadcrumb":{"@id":"https:\/\/multimedia.cx\/eggs\/camp-luna\/#breadcrumblist"},"author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"creator":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"datePublished":"2009-02-23T22:16:24-08:00","dateModified":"2020-07-25T22:39:16-07:00"},{"@type":"WebSite","@id":"https:\/\/multimedia.cx\/eggs\/#website","url":"https:\/\/multimedia.cx\/eggs\/","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","inLanguage":"en-US","publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"}}]},"og:locale":"en_US","og:site_name":"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering","og:type":"article","og:title":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes","og:description":"I tried to hook up Moonlight's binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort","og:url":"https:\/\/multimedia.cx\/eggs\/camp-luna\/","article:published_time":"2009-02-24T06:16:24+00:00","article:modified_time":"2020-07-26T05:39:16+00:00","twitter:card":"summary","twitter:title":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | Breaking Eggs And Making Omelettes","twitter:description":"I tried to hook up Moonlight's binary Silverlight codec pack to FFmpeg and discovered that it would not be worth the effort"},"aioseo_meta_data":{"post_id":"1118","title":"Trying To Subvert Moonlight's Binary Silverlight Codec Pack | #site_title","description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-31 22:02:34","updated":"2025-12-31 19:07:32","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/\" title=\"Reverse Engineering\">Reverse Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/\" title=\"Windows Media\">Windows Media<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tCamp Luna\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/multimedia.cx\/eggs"},{"label":"Reverse Engineering","link":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/"},{"label":"Windows Media","link":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/windows-media\/"},{"label":"Camp Luna","link":"https:\/\/multimedia.cx\/eggs\/camp-luna\/"}],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=1118"}],"version-history":[{"count":15,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1118\/revisions"}],"predecessor-version":[{"id":4592,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1118\/revisions\/4592"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=1118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=1118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=1118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}