{"id":268,"date":"2012-11-14T01:24:17","date_gmt":"2012-11-14T01:24:17","guid":{"rendered":"http:\/\/exponentialdecay.co.uk\/blog\/?p=268"},"modified":"2025-12-01T16:59:56","modified_gmt":"2025-12-01T16:59:56","slug":"hacking-the-droid-signature-file-for-characterization","status":"publish","type":"post","link":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/","title":{"rendered":"Hacking the DROID Signature File for Characterization"},"content":{"rendered":"<p>Identification of a format can be approached from many angles. Often a <a title=\"Wikipedia.org: Magic Number\" href=\"http:\/\/en.wikipedia.org\/wiki\/File_format#Magic_number\" target=\"_blank\" rel=\"noopener\">magic<\/a><br \/>\n<a title=\"Wikipedia.org: Magic Number\" href=\"http:\/\/en.wikipedia.org\/wiki\/Magic_number_(programming)\" target=\"_blank\" rel=\"noopener\"> number<\/a> will be used at the beginning of a file. This may be strengthened by\u00a0the addition of similarly consistent bytes at the end of a file or indeed any\u00a0part of the bitstream inbetween. Using the sample file format we created\u00a0<a title=\"exponentialdecay.co.uk: Genesis of a File Format\" href=\"https:\/\/exponentialdecay.co.uk\/blog\/genesis-of-a-file-format\/\" target=\"_blank\" rel=\"noopener\">last week<\/a>\u00a0the magic number to identify it is specified as:<\/p>\n<pre>'\\xBB\\x0D\\x0A\\x65\\x79\\x65\\x67\\x6C\\x61\\x73\\x73\\x1A\\x0A\\xAB'<\/pre>\n<p>Alone this translates to a <a title=\"GitHub: DROID\" href=\"http:\/\/digital-preservation.github.com\/droid\/\" target=\"_blank\" rel=\"noopener\">DROID<\/a> signature as follows:<\/p>\n<pre>Position: Absolute beginning of file (BOF)\r\nSequence: BB0D0A657965676C6173731A0AAB\r\nMax Offset: 0<\/pre>\n<p>To strengthen such a signature we may also make use of the <em>end of file<\/em>\u00a0(EOF) sequence and as the file is of fixed size (582 bytes) we could also add an <em>{n}-bytes<\/em> wildcard parameter between the BOF and EOF sequences to ensure DROID only matches files of a particular size which contain both signatures. My usual approach is to create two separate sequences to ensure the EOF is found as expected at the end of the bit stream. Given the specification of the Eyeglass format contains a version field I will also include that in the BOF sequence:<\/p>\n<pre>Eyeglass Version 1.0: Signature\r\n---\r\nPosition: Absolute beginning of file (BOF)\r\nSequence: BB0D0A657965676C6173731A0AAB01\r\nMax Offset: 0\r\n\r\nPosition: Absolute end of file (EOF)\r\nSequence: BB656F66\r\nMax Offset: 0<\/pre>\n<p>Identification aside, signatures can encapsulate a lot of information. The detail of which we lose but which could potentially be useful. Manipulating DROID signatures allows us to use DROID to\u00a0return this more detailed\u00a0<em>characterization<\/em>\u00a0information. A common scenario might be\u00a0the spotting files without their terminating end of file sequences, PDF and\u00a0JPEG2000, two examples where EOF sequences feature prominently.<\/p>\n<p>If a format specifies that it <em>must<\/em> begin with an BOF sequence and <em>must<\/em> terminate\u00a0with an EOF sequence to be considered &#8216;valid&#8217; there is a preservation risk\u00a0in a tool making an assertion about the identification of an &#8216;invalid&#8217;\u00a0format where either of these sequences do not appear. With validation existing in a preservation workflow to mitigate this risk, identification tools really just provide clues as to what digital objects we are looking at; even though\u00a0<em><strong>strict\u00a0<\/strong><\/em>identification of formats might be preferred (a commentary on which is beyond the scope of this blog entry).<\/p>\n<p>An alternative to simply encapsulating combinations of sequence, with, or without end of file markers into a single signature is to use the &lt;<strong>HasPriorityOverFileFormatID&gt;<\/strong> element<strong>\u00a0<\/strong>in the DROID signature file to create <strong>two<\/strong> signatures, one for each scenario. Priorities enable us to return more detailed characterization information about our results as appropriate:<\/p>\n<pre>&lt;FileFormat ID=\"1\" Name=\"Eyeglass Format: BOF and EOF\" PUID=\"id\/1\"&gt;\r\n &lt;InternalSignatureID&gt;1&lt;\/InternalSignatureID&gt;\r\n &lt;Extension&gt;eygl&lt;\/Extension&gt;\r\n <span style=\"text-decoration: underline;\"><span style=\"color: #000000;\"><strong>&lt;HasPriorityOverFileFormatID&gt;2&lt;\/HasPriorityOverFileFormatID&gt;<\/strong><\/span><\/span>\r\n&lt;\/FileFormat&gt;\r\n&lt;FileFormat ID=\"2\" Name=\"Eyeglass Format: No EOF\" PUID=\"id\/2\"&gt;\r\n &lt;InternalSignatureID&gt;2&lt;\/InternalSignatureID&gt;\r\n &lt;Extension&gt;eygl&lt;\/Extension&gt;\r\n&lt;\/FileFormat&gt;<\/pre>\n<p>DROID will correctly identify each file but it won&#8217;t output multiple identifications:<\/p>\n<figure id=\"attachment_301\" aria-describedby=\"caption-attachment-301\" style=\"width: 958px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/id.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-301\" title=\"DROID Identification of Eyeglass Format\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/id.png\" alt=\"\" width=\"958\" height=\"395\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/id.png 958w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/id-300x123.png 300w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/a><figcaption id=\"caption-attachment-301\" class=\"wp-caption-text\">DROID run identifying Eyeglass versions with both BOF and EOF sequences and without its EOF sequence.<\/figcaption><\/figure>\n<p>We can delve deeper into characterization using DROID and start creating signatures for other features we might want information about and might cause issues interpreting the file in future. Given the eyeglass format specification talks about endianness we can imagine three scenarios for which <em>characterization signatures<\/em> could be created:<\/p>\n<ul>\n<li>Eyeglass format with big-endian encoding<\/li>\n<li>Eyeglass format with little-endian encoding<\/li>\n<li>Eyeglass format with invalid endian flag\u00a0value<\/li>\n<\/ul>\n<p>To ensure this information is read accurately in Eyeglass files specifically I will need to duplicate our BOF sequence, however, these entries can be safely duplicated using different PUIDs to denominate them. Our three new sequences will be as follows:<\/p>\n<pre>Eyeglass Format: Big Endian\r\n---\r\nPosition: Absolute beginning of file (BOF)\r\nSequence: BB0D0A657965676C6173731A0AAB{1}01\r\nMax Offset: 0\r\n\r\nEyeglass Format: Little Endian\r\n---\r\nPosition: Absolute beginning of file (BOF)\r\nSequence: BB0D0A657965676C6173731A0AAB{1}00\r\nMax Offset: 0\r\n\r\nEyeglass Format: Invalid Endian Flag\r\n---\r\nPositon: Absolute beginning of file (BOF)\r\nSequence: BB0D0A657965676C6173731A0AAB{1}[!00:01]\r\nMax Offset: 0<\/pre>\n<figure id=\"attachment_302\" aria-describedby=\"caption-attachment-302\" style=\"width: 958px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/chx.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-302\" title=\"DROID Characterization of Eyeglass Format\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/chx.png\" alt=\"\" width=\"958\" height=\"395\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/chx.png 958w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/chx-300x123.png 300w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/a><figcaption id=\"caption-attachment-302\" class=\"wp-caption-text\">DROID run characterizing Eyeglass variations, including invalid endian flag<\/figcaption><\/figure>\n<p>With other formats exhibiting greater variability we could begin to gather even more characterization data using the simplicity of DROID signatures.<\/p>\n<p>We might not want all of this data but my main message is that we have to be careful not to loose too much information about our formats by wrapping it all into a single identification encapsulating multiple combinations of a file format.<\/p>\n<p>Currently the data model used by PRONOM and DROID that would enable this freedom of expression is limited, however, the data is certainly there for some formats. Take the results of this <a title=\"The National Archives: PRONOM Endpoint\" href=\"http:\/\/test.linkeddatapronom.nationalarchives.gov.uk\/sparql\/endpoint.php?query=PREFIX+pronom%3A+%3Chttp%3A%2F%2Freference.data.gov.uk%2Ftechnical-registry%2F%3E%0D%0APREFIX+format%3A+%3Chttp%3A%2F%2Freference.data.gov.uk%2Fid%2Ffile-format%2F%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0A%0D%0Aselect+*+where+%7B%0D%0A+format%3A12+rdfs%3Alabel+%3FformatName+.%0D%0A+format%3A12+pronom%3Aversion+%3Fversion+.%0D%0A+format%3A12+pronom%3AinternalSignature+%3FsignatureID+.%0D%0A+%3FsignatureID+rdfs%3Alabel+%3FinternalSignature+.%0D%0A+%3FsignatureID+dc%3Adescription+%3Fdescription+.%0D%0A%7D&amp;output=htmltab&amp;jsonp=&amp;key=&amp;show_inline=1\" target=\"_blank\" rel=\"noopener\">SPARQL query<\/a>\u00a0on the prototype PRONOM endpoint for Portable Network Graphics (PNG) 1.1:<\/p>\n<pre>PREFIX pronom: &lt;http:\/\/reference.data.gov.uk\/technical-registry\/&gt;\r\nPREFIX format: &lt;http:\/\/reference.data.gov.uk\/id\/file-format\/&gt;\r\nPREFIX rdfs: &lt;http:\/\/www.w3.org\/2000\/01\/rdf-schema#&gt;\r\nPREFIX dc: &lt;http:\/\/purl.org\/dc\/elements\/1.1\/&gt;\r\n\r\nselect * where {\r\n format:12 rdfs:label ?formatName .\r\n format:12 pronom:version ?version .\r\n format:12 pronom:internalSignature ?signatureID .\r\n ?signatureID rdfs:label ?internalSignature .\r\n ?signatureID dc:description ?description .\r\n}<\/pre>\n<p>Result<em>s:<\/em><\/p>\n<figure id=\"attachment_285\" aria-describedby=\"caption-attachment-285\" style=\"width: 856px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/sparql-query.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-285\" title=\"PRONOM SPARQL Query Results\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/sparql-query.png\" alt=\"\" width=\"856\" height=\"144\" srcset=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/sparql-query.png 856w, https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/sparql-query-300x50.png 300w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><\/a><figcaption id=\"caption-attachment-285\" class=\"wp-caption-text\">Results of the PRONOM SPARQL Query<\/figcaption><\/figure>\n<p>The results show three signatures attached to PNG 1.1. Each represents a different characteristic of the PNG color space definition. When DROID identifies a PNG with any of these features it will blankly identify it with PUID:\u00a0<a title=\"PRONOM: fmt\/12\" href=\"http:\/\/www.nationalarchives.gov.uk\/PRONOM\/fmt\/12\" target=\"_blank\" rel=\"noopener\">fmt\/12<\/a>,\u00a0however, because of the granularity with which these signatures have been expressed and because the prototype triplestore makes them information resources in their own right we can use and talk about them as first class citizens in whatever end-use we decide.<\/p>\n<p>With flexible data models and methods of accessing data like this, users in digital preservation will be able to cherry-pick the data consumed by tools such as DROID thus allowing for deeper analysis of files in the earliest stages of our preservation workflows.\u00a0It is my hope that we see approaches like this appear sooner rather than later, and that we no longer need to &#8216;hack&#8217; our own resources so much as build them with appropriate production quality tools made available to us.<\/p>\n<p>Until then, hopefully some of the approaches demonstrated here prove useful. It is conceivable that as identification tools become less database dependent and become more streamlined we can point at multiple signature files during characterization to return additional information as required. Unfortunately the effort involved in creating these custom files is still quite high.<\/p>\n<p>&#8212;<\/p>\n<p><strong>Notes:\u00a0<\/strong>The signature files created for this blog and their demonstration files can be found in a <a title=\"GitHub: Signature files and sample Eyeglass files\" href=\"https:\/\/github.com\/ross-spencer\/eyeglass\/tree\/master\/eyeglass-signature-sample-files\" target=\"_blank\" rel=\"noopener\">dedicated folder<\/a> in the Eyeglass GitHub repository.<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_268\" class=\"pvc_stats total_only  \" data-element-id=\"268\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"entry-summary\">\nIdentification of a format can be approached from many angles. Often a magic number will be used at the beginning&hellip;\n<\/div>\n<div class=\"link-more\"><a href=\"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &ldquo;Hacking the DROID Signature File for Characterization&rdquo;<\/span>&hellip;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_268\" class=\"pvc_stats total_only  \" data-element-id=\"268\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":313,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[3],"tags":[32,71,15,17,34,33,16,35],"class_list":["post-268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-preservation","tag-characterization","tag-digital-preservation","tag-droid","tag-file-formats","tag-linked-data","tag-magic-numbers","tag-pronom","tag-sparql","entry"],"a3_pvc":{"activated":true,"total_views":6051,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog\" \/>\n<meta property=\"og:description\" content=\"Identification of a format can be approached from many angles. Often a magic number will be used at the beginning&hellip; Continue reading &ldquo;Hacking the DROID Signature File for Characterization&rdquo;&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/\" \/>\n<meta property=\"og:site_name\" content=\"ross spencer :: exponentialdecay.digipres :: blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-11-14T01:24:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T16:59:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"380\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ross Spencer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:site\" content=\"@beet_keeper\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ross Spencer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/\"},\"author\":{\"name\":\"Ross Spencer\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"headline\":\"Hacking the DROID Signature File for Characterization\",\"datePublished\":\"2012-11-14T01:24:17+00:00\",\"dateModified\":\"2025-12-01T16:59:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/\"},\"wordCount\":912,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/11\\\/eyeglass-hex.png\",\"keywords\":[\"Characterization\",\"Digital Preservation\",\"DROID\",\"File Formats\",\"Linked Data\",\"Magic Numbers\",\"PRONOM\",\"SPARQL\"],\"articleSection\":[\"Digital Preservation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/\",\"name\":\"Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/11\\\/eyeglass-hex.png\",\"datePublished\":\"2012-11-14T01:24:17+00:00\",\"dateModified\":\"2025-12-01T16:59:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#primaryimage\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/11\\\/eyeglass-hex.png\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/11\\\/eyeglass-hex.png\",\"width\":\"750\",\"height\":\"380\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/hacking-the-droid-signature-file-for-characterization\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hacking the DROID Signature File for Characterization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/\",\"name\":\"ross spencer :: exponentialdecay.digipres :: blog\",\"description\":\"Digital preservation analyst, researcher, and software developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/#\\\/schema\\\/person\\\/4cae0a954400f42b9c1b70c699837716\",\"name\":\"Ross Spencer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"contentUrl\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\",\"width\":2560,\"height\":2560,\"caption\":\"Ross Spencer\"},\"logo\":{\"@id\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/avatar-scaled.png\"},\"description\":\"Digital preservation domain expert and full-stack software developer.\",\"sameAs\":[\"http:\\\/\\\/www.exponentialdecay.co.uk\\\/blog\",\"https:\\\/\\\/www.instagram.com\\\/b33tk33p3r\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ross-spencer-b6b9b758\\\/\",\"https:\\\/\\\/x.com\\\/beet_keeper\"],\"url\":\"https:\\\/\\\/exponentialdecay.co.uk\\\/blog\\\/author\\\/exponentialdecay\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/","og_locale":"en_US","og_type":"article","og_title":"Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog","og_description":"Identification of a format can be approached from many angles. Often a magic number will be used at the beginning&hellip; Continue reading &ldquo;Hacking the DROID Signature File for Characterization&rdquo;&hellip;","og_url":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/","og_site_name":"ross spencer :: exponentialdecay.digipres :: blog","article_published_time":"2012-11-14T01:24:17+00:00","article_modified_time":"2025-12-01T16:59:56+00:00","og_image":[{"width":750,"height":380,"url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png","type":"image\/png"}],"author":"Ross Spencer","twitter_card":"summary_large_image","twitter_creator":"@beet_keeper","twitter_site":"@beet_keeper","twitter_misc":{"Written by":"Ross Spencer","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#article","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/"},"author":{"name":"Ross Spencer","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"headline":"Hacking the DROID Signature File for Characterization","datePublished":"2012-11-14T01:24:17+00:00","dateModified":"2025-12-01T16:59:56+00:00","mainEntityOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/"},"wordCount":912,"commentCount":1,"publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png","keywords":["Characterization","Digital Preservation","DROID","File Formats","Linked Data","Magic Numbers","PRONOM","SPARQL"],"articleSection":["Digital Preservation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/","url":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/","name":"Hacking the DROID Signature File for Characterization - ross spencer :: exponentialdecay.digipres :: blog","isPartOf":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#primaryimage"},"image":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#primaryimage"},"thumbnailUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png","datePublished":"2012-11-14T01:24:17+00:00","dateModified":"2025-12-01T16:59:56+00:00","breadcrumb":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#primaryimage","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2012\/11\/eyeglass-hex.png","width":"750","height":"380"},{"@type":"BreadcrumbList","@id":"https:\/\/exponentialdecay.co.uk\/blog\/hacking-the-droid-signature-file-for-characterization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/exponentialdecay.co.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Hacking the DROID Signature File for Characterization"}]},{"@type":"WebSite","@id":"https:\/\/exponentialdecay.co.uk\/blog\/#website","url":"https:\/\/exponentialdecay.co.uk\/blog\/","name":"ross spencer :: exponentialdecay.digipres :: blog","description":"Digital preservation analyst, researcher, and software developer","publisher":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exponentialdecay.co.uk\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/exponentialdecay.co.uk\/blog\/#\/schema\/person\/4cae0a954400f42b9c1b70c699837716","name":"Ross Spencer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","url":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","contentUrl":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png","width":2560,"height":2560,"caption":"Ross Spencer"},"logo":{"@id":"https:\/\/exponentialdecay.co.uk\/blog\/wp-content\/uploads\/2025\/06\/avatar-scaled.png"},"description":"Digital preservation domain expert and full-stack software developer.","sameAs":["http:\/\/www.exponentialdecay.co.uk\/blog","https:\/\/www.instagram.com\/b33tk33p3r\/","https:\/\/www.linkedin.com\/in\/ross-spencer-b6b9b758\/","https:\/\/x.com\/beet_keeper"],"url":"https:\/\/exponentialdecay.co.uk\/blog\/author\/exponentialdecay\/"}]}},"views":7411,"_links":{"self":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":51,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"predecessor-version":[{"id":1379,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/posts\/268\/revisions\/1379"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media\/313"}],"wp:attachment":[{"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exponentialdecay.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}