{"id":25,"date":"2025-07-07T20:54:46","date_gmt":"2025-07-07T20:54:46","guid":{"rendered":"https:\/\/oerinet.net\/blog\/?p=25"},"modified":"2025-07-07T21:25:25","modified_gmt":"2025-07-07T21:25:25","slug":"recovering-the-operator-setup-pin-on-a-jvl-encore-or-echo","status":"publish","type":"post","link":"https:\/\/oerinet.net\/blog\/recovering-the-operator-setup-pin-on-a-jvl-encore-or-echo\/","title":{"rendered":"Recovering the operator setup PIN on a JVL Encore or Echo"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The JVL Echo and Encore are touchscreen arcade machines with 100+ games that used to be found in bars and restaurants.  Now they are part of a forgotten era of arcade gaming, largely replaced by cell phones.  However, a home collectors market is emerging for those who want to play these machines for their nostalgia.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/i.ebayimg.com\/images\/g\/iMwAAOSwZHpnKa0T\/s-l1600.webp\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">I recently had a customer bring in his Echo. He purchased it from a vendor, but the operator setup menu was locked with a PIN number that nobody knew. I was tasked with trying to recover and\/or reset it. JVL support said the only solution was a new I\/O board for $380 which I would then have to pass on to the customer, so I decided to try other means.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Performing a factory reset on the machine made no difference.  The PIN number still persisted even after replacing the internal SD card with a fresh installation. I assumed the PIN number must be stored somewhere on the internal I\/O board. Looking at the I\/O board, I saw an EEPROM which I dumped using a ch341a, but within the dump there was nothing remarkable.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"597\" src=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/07\/image-1.png\" alt=\"\" class=\"wp-image-28\" srcset=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/07\/image-1.png 698w, https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/07\/image-1-300x257.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">So, I resorted to poking around in the software itself.  The JVL software runs on top of a stripped down version of Linux.  Having experience already working on these machines, I knew there was a webserver running on port 88 that allowed access to operator setup, but I did not know if that also required a PIN or not.  Turns out it does not, and I was able to recover the PIN remotely via my web browser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below is the method I used to recover the operator setup PIN:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>I obtained a shell by booting into the game and pressing CTRL + ALT + F2 which dropped me to a console.<\/li>\n\n\n\n<li><strong>My original method (easier\/better method is below):<\/strong><br>I plugged in an Ethernet cable and set up networking by running <code>ifconfig eth0 10.0.3.5<\/code> and confirmed I could ping my router<\/li>\n\n\n\n<li>I navigated my desktop PC web browser to <code>http:\/\/10.0.3.5:88\/setuphd\/machine\/standalone\/setup\/setupsystem.htm<\/code> which brought up operator setup with no PIN check<\/li>\n\n\n\n<li>I navigated to Access Control and clicked the button &#8220;Change Operator&#8217;s PIN&#8221;.  For some reason, I was unable to change the PIN from this screen.  The web server appeared to hang and I had to restart the machine.  So I decided to focus my efforts on recovering the PIN.<\/li>\n\n\n\n<li>The PIN was prepopulated in the setup but obfuscated like a password, so I resorted to some jQuery.  I opened the browser console and entered this code to load the jQuery library:<br><code>var jq = document.createElement('script');<\/code><br><code>jq.src = \"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\";<\/code><br><code>document.getElementsByTagName('head')[0].appendChild(jq);<\/code><\/li>\n\n\n\n<li>Next, I ran this code to return the value of any password box:<br><code>$('[type=password]').val();<\/code><br>which yielded output<br><code>'2233'<\/code><\/li>\n\n\n\n<li>I went to the physical machine and entered 2233 and I was into operator setup!<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"529\" src=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/07\/pin-reveal.gif\" alt=\"\" class=\"wp-image-39\"\/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">As these games transition ownership from commercial vendors to home users, it&#8217;s inevitable that more games will be purchased with locked operator setups.  This was a fairly straightforward way of recovering a lost PIN on these JVL machines, and I&#8217;m glad I was able to help give this machine another life.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Update 7\/8\/25:<\/strong> The above can be simplified without the need to set up networking, jQuery, etc. The PIN is available in plain text via <code>http:\/\/machine_ip:88\/REQUEST\/SetupAccess_GetOperator<\/code>. A simple netcat console command on the machine itself will do the trick.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>echo GET \/REQUEST\/SetupAccess_GetOperator | nc localhost 88<\/code><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"615\" height=\"393\" src=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/06\/image-1.png\" alt=\"\" class=\"wp-image-52\" srcset=\"https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/06\/image-1.png 615w, https:\/\/oerinet.net\/blog\/wp-content\/uploads\/2025\/06\/image-1-300x192.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>The JVL Echo and Encore are touchscreen arcade machines with 100+ games that used to be found in bars and restaurants. Now they are part of a forgotten era of arcade gaming, largely replaced by cell phones. However, a home collectors market is emerging for those who want to play these machines for their nostalgia. &hellip; <a href=\"https:\/\/oerinet.net\/blog\/recovering-the-operator-setup-pin-on-a-jvl-encore-or-echo\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Recovering the operator setup PIN on a JVL Encore or Echo&#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-25","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/25","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=25"}],"version-history":[{"count":21,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/25\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/posts\/25\/revisions\/60"}],"wp:attachment":[{"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/media?parent=25"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/categories?post=25"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oerinet.net\/blog\/wp-json\/wp\/v2\/tags?post=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}