{"id":332,"date":"2006-09-14T22:06:04","date_gmt":"2006-09-15T05:06:04","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/investigating-hachoir\/"},"modified":"2020-07-25T21:57:02","modified_gmt":"2020-07-26T04:57:02","slug":"investigating-hachoir","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/","title":{"rendered":"Investigating Hachoir"},"content":{"rendered":"<p>In response to <a href=\"http:\/\/multimedia.cx\/eggs\/my-app-a-day\/\">yesterday&#8217;s brainstorm<\/a>, Mjules tipped me off regarding another tool that falls squarely into the &#8220;I wish I had thought of that&#8221; category&#8211; <a href=\"http:\/\/hachoir.org\/\">Hachoir<\/a> (wish I knew how to pronounce it). It&#8217;s a Python-based framework for writing file parsers.<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/hachoir-mascot.jpg\" alt=\"Hachoir mascot appliance\" \/><br \/>\n<\/center><\/p>\n<p>Finally! I have a compelling reason to learn Python.*** Python has long been on my list of languages to figure out, along with Prolog. Tonight, I wrote a very basic extension to Hachoir to parse the <a href=\"http:\/\/wiki.multimedia.cx\/index.php?title=Amazing_Spider-Man_BIN\">BIN FMV format<\/a> discovered in my <a href=\"http:\/\/multimedia.cx\/eggs\/sega-leftovers-entry\/\">most recent exploration journal entry<\/a>. And look&#8211; this WordPress plugin for code syntax highlighting also does Python:<\/p>\n<p><script src=\"https:\/\/gist.github.com\/multimediamike\/37c331c3f1af14e5f0da42dfc0dd1827.js\"><\/script><\/p>\n<p>Right now, this produces the output:<\/p>\n<pre>\r\nroot (The Amazing Spider-Man vs. The Kingpin (Sega CD) FMV)\r\n0) chunk type= \"CONF\": FourCC (size 4 bytes)\r\n4) chunk length= 0x00000028: 4 bytes (size 4 bytes)\r\n8) raw[]= \"\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0(...)\" (size 3.3 MB)\r\n[ q to quit - move with arrows, page up\/down, home\/end ]\r\n<\/pre>\n<p>I still have a lot to learn about both Python and the existing framework facilities provided by Hachoir for parsing chunked file formats. The program already includes parsers for an impressive array of file format types. One that is of particular interest to me is a QuickTime file parser that the authors concede is rather incomplete. I see real promise for this parser as a research and troubleshooting tool for one of the most <a href=\"http:\/\/wiki.multimedia.cx\/index.php?title=Apple_QuickTime\">involved multimedia formats available<\/a>.<\/p>\n<p>*** <em>(Proviso: No disrespect meant to anyone&#8217;s favorite language. I&#8217;m as fascinated with new programming languages as the next hardcore Linux geek. But it always helps me to learn a new language when I have a clear goal outlined for doing so.)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In response to yesterday&#8217;s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &#8220;I wish I had thought of that&#8221; category&#8211; Hachoir (wish I knew how to pronounce it). It&#8217;s a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,4],"tags":[],"class_list":["post-332","post","type-post","status-publish","format-standard","hentry","category-python","category-reverse-engineering"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"In response to yesterday&#039;s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &quot;I wish I had thought of that&quot; category-- Hachoir (wish I knew how to pronounce it). It&#039;s a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on\" \/>\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\/investigating-hachoir\/\" \/>\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=\"Investigating Hachoir | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta property=\"og:description\" content=\"In response to yesterday&#039;s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &quot;I wish I had thought of that&quot; category-- Hachoir (wish I knew how to pronounce it). It&#039;s a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2006-09-15T05:06:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-26T04:57:02+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Investigating Hachoir | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In response to yesterday&#039;s brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &quot;I wish I had thought of that&quot; category-- Hachoir (wish I knew how to pronounce it). It&#039;s a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on\" \/>\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\\\/investigating-hachoir\\\/#article\",\"name\":\"Investigating Hachoir | Breaking Eggs And Making Omelettes\",\"headline\":\"Investigating Hachoir\",\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"\\\/eggs\\\/images\\\/hachoir-mascot.jpg\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#articleImage\"},\"datePublished\":\"2006-09-14T22:06:04-07:00\",\"dateModified\":\"2020-07-25T21:57:02-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#webpage\"},\"articleSection\":\"Python, Reverse Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#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\\\/investigating-hachoir\\\/#listItem\",\"name\":\"Investigating Hachoir\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#listItem\",\"position\":3,\"name\":\"Investigating Hachoir\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/reverse-engineering\\\/#listItem\",\"name\":\"Reverse Engineering\"}}]},{\"@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\\\/investigating-hachoir\\\/#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\\\/investigating-hachoir\\\/#webpage\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/\",\"name\":\"Investigating Hachoir | Breaking Eggs And Making Omelettes\",\"description\":\"In response to yesterday's brainstorm, Mjules tipped me off regarding another tool that falls squarely into the \\\"I wish I had thought of that\\\" category-- Hachoir (wish I knew how to pronounce it). It's a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/investigating-hachoir\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"datePublished\":\"2006-09-14T22:06:04-07:00\",\"dateModified\":\"2020-07-25T21:57:02-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":"Investigating Hachoir | Breaking Eggs And Making Omelettes","description":"In response to yesterday's brainstorm, Mjules tipped me off regarding another tool that falls squarely into the \"I wish I had thought of that\" category-- Hachoir (wish I knew how to pronounce it). It's a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on","canonical_url":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#article","name":"Investigating Hachoir | Breaking Eggs And Making Omelettes","headline":"Investigating Hachoir","author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"},"image":{"@type":"ImageObject","url":"\/eggs\/images\/hachoir-mascot.jpg","@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#articleImage"},"datePublished":"2006-09-14T22:06:04-07:00","dateModified":"2020-07-25T21:57:02-07:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#webpage"},"isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#webpage"},"articleSection":"Python, Reverse Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#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\/investigating-hachoir\/#listItem","name":"Investigating Hachoir"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#listItem","position":3,"name":"Investigating Hachoir","previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/reverse-engineering\/#listItem","name":"Reverse Engineering"}}]},{"@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\/investigating-hachoir\/#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\/investigating-hachoir\/#webpage","url":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/","name":"Investigating Hachoir | Breaking Eggs And Making Omelettes","description":"In response to yesterday's brainstorm, Mjules tipped me off regarding another tool that falls squarely into the \"I wish I had thought of that\" category-- Hachoir (wish I knew how to pronounce it). It's a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/#website"},"breadcrumb":{"@id":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/#breadcrumblist"},"author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"creator":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"datePublished":"2006-09-14T22:06:04-07:00","dateModified":"2020-07-25T21:57:02-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":"Investigating Hachoir | Breaking Eggs And Making Omelettes","og:description":"In response to yesterday's brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &quot;I wish I had thought of that&quot; category-- Hachoir (wish I knew how to pronounce it). It's a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on","og:url":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/","article:published_time":"2006-09-15T05:06:04+00:00","article:modified_time":"2020-07-26T04:57:02+00:00","twitter:card":"summary","twitter:title":"Investigating Hachoir | Breaking Eggs And Making Omelettes","twitter:description":"In response to yesterday's brainstorm, Mjules tipped me off regarding another tool that falls squarely into the &quot;I wish I had thought of that&quot; category-- Hachoir (wish I knew how to pronounce it). It's a Python-based framework for writing file parsers. Finally! I have a compelling reason to learn Python.*** Python has long been on"},"aioseo_meta_data":{"post_id":"332","title":null,"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 21:51:44","updated":"2025-12-31 18:35:45","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\tInvestigating Hachoir\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":"Investigating Hachoir","link":"https:\/\/multimedia.cx\/eggs\/investigating-hachoir\/"}],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/332","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=332"}],"version-history":[{"count":3,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/332\/revisions"}],"predecessor-version":[{"id":4569,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/332\/revisions\/4569"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}