{"id":89,"date":"2025-09-15T07:35:23","date_gmt":"2025-09-15T11:35:23","guid":{"rendered":"https:\/\/oerinet.net\/blog\/?p=89"},"modified":"2025-09-15T07:42:17","modified_gmt":"2025-09-15T11:42:17","slug":"bypassing-the-dallas-ds1991-key-on-a-star-trek-voyager-arcade","status":"publish","type":"post","link":"https:\/\/oerinet.net\/blog\/bypassing-the-dallas-ds1991-key-on-a-star-trek-voyager-arcade\/","title":{"rendered":"Bypassing the Dallas DS1991 Key on a Star Trek Voyager Arcade"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bringing old arcade machines back to life is part repair, part detective work. My latest project: a <strong>Star Trek: Voyager arcade cabinet<\/strong> that refused to boot because of a failed security device\u2014the <strong>Dallas DS1991 iButton<\/strong>. With its internal battery long dead and no manufacturer support, the game only showed a bright red <strong>\u201cNot Authorized\u201d<\/strong> screen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"964\" src=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/09\/1000007750-1024x964.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/09\/1000007750-1024x964.png 1024w, https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/09\/1000007750-300x282.png 300w, https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/09\/1000007750-768x723.png 768w, https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/09\/1000007750.png 1147w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Following the Trail<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The first clue was right in the binary: the \u201cNot Authorized\u201d string. Cross-referencing it in <strong>IDA Pro<\/strong> led me to the code path that displayed the failure message.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I noticed the message was triggered when a <strong>DWORD variable, <code>ibok<\/code>, was set to zero<\/strong>. Tracing it further, I saw that <code>ibok<\/code> was set by the return value of a function named <code>verify_ib<\/code>\u2014the routine in charge of checking the iButton.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A Simple Fix<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of trying to emulate or repair the dead iButton, I decided to patch the function directly. The logic was straightforward:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If <code>verify_ib<\/code> returned 0 \u2192 fail, show red screen.<\/li>\n\n\n\n<li>If <code>verify_ib<\/code> returned 1 \u2192 success, boot the game.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">So I replaced the body of <code>verify_ib<\/code> with just two instructions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mov eax, 1\nret<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This forces the function to always succeed, no iButton required.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Back on the Bridge<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With the patch applied, the game now boots cleanly and plays perfectly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes arcade preservation isn\u2019t about fixing hardware\u2014it\u2019s about understanding the software well enough to get it running again. In this case, a little reverse-engineering brought Voyager back online, ready to defend the Delta Quadrant once more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bringing old arcade machines back to life is part repair, part detective work. My latest project: a Star Trek: Voyager arcade cabinet that refused to boot because of a failed security device\u2014the Dallas DS1991 iButton. With its internal battery long dead and no manufacturer support, the game only showed a bright red \u201cNot Authorized\u201d screen. &hellip; <a href=\"https:\/\/oerinet.net\/blog\/bypassing-the-dallas-ds1991-key-on-a-star-trek-voyager-arcade\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Bypassing the Dallas DS1991 Key on a Star Trek Voyager Arcade&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-89","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/89","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/comments?post=89"}],"version-history":[{"count":3,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":93,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions\/93"}],"wp:attachment":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}