{"id":22,"date":"2011-06-07T10:02:31","date_gmt":"2011-06-07T10:02:31","guid":{"rendered":"http:\/\/piratesecurityblog.com\/?p=22"},"modified":"2016-09-28T10:02:54","modified_gmt":"2016-09-28T10:02:54","slug":"gchq-challenge-solution-stage-2","status":"publish","type":"post","link":"http:\/\/piratesecurityblog.com\/?p=22","title":{"rendered":"GCHQ Challenge Solution \u2013 Stage 2"},"content":{"rendered":"<p>After cracking stage 1 of the GCHQ challenge, we get the URL to the Javascript code available <a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2011\/12\/15b436de1f9107f3778aad525e5d0b20.js.txt\">here<\/a>.<\/p>\n<p>It defines a virtual machine with four general registers, two segment registers, one flag register and of course the instruction pointer. It also includes an array of two values named \u201cfirmware\u201d, which seems rather strange. These values are not used, nor mentioned in the definition of the virtual machine that is included in a comment further down in the javascript code. The use for these values will actually become apparent in the third and final stage.<\/p>\n<p>Besides specifying the register values and an array with the current memory contents, there is a 54 line comment describing the virtual machine architecture, the instruction encoding and the instruction set:<\/p>\n<div id=\"crayon-57eb94cf11324111971431\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-22\">22<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-23\">23<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-24\">24<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-25\">25<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-26\">26<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-27\">27<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-28\">28<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-29\">29<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-30\">30<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-31\">31<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-32\">32<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-33\">33<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-34\">34<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-35\">35<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-36\">36<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-37\">37<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-38\">38<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-39\">39<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-40\">40<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-41\">41<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-42\">42<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-43\">43<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-44\">44<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-45\">45<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-46\">46<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-47\">47<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-48\">48<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-49\">49<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-50\">50<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-51\">51<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-52\">52<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-53\">53<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-54\">54<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-55\">55<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-56\">56<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-57\">57<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11324111971431-58\">58<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11324111971431-59\">59<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11324111971431-1\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">exec<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-t\">function<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ virtual machine architecture<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ ++++++++++++++++++++++++++++<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ segmented memory model with 16-byte segment size (notation seg:offset)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-7\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 4 general-purpose registers (r0-r3)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-9\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 2 segment registers (cs, ds equiv. to r4, r5)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 1 flags register (fl)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-11\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ instruction encoding<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-13\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ ++++++++++++++++++++<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-15\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte 2 (optional)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ 7 6 5 4 3 2 1 0 ]\u00a0\u00a0[ 7 6 5 4 3 2 1 0 ]<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-17\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ opcode\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211; &#8211; &#8211;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ mod\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-19\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ operand1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211; &#8211; &#8211; &#8211;<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ operand2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211; &#8211;<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-21\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ operand1 is always a register index<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-23\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ operand2 is optional, depending upon the instruction set specified below<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-24\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ the value of mod alters the meaning of any operand2<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-25\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 0: operand2 = reg ix<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-26\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 1: operand2 = fixed immediate value or target segment (depending on instruction)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-27\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-28\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ instruction set<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-29\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ +++++++++++++++<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-30\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-31\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ Notes:<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-32\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 * r1, r2 =&gt; operand 1 is register 1, operand 2 is register 2<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-33\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 * movr r1, r2 =&gt; move contents of register r2 into register r1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-34\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-35\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ opcode | instruction | operands (mod 0) | operands (mod 1)<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-36\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ &#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-37\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x00\u00a0\u00a0 | jmp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r2:r1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-38\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x01\u00a0\u00a0 | movr\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| r1, r2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | rx,\u00a0\u00a0 imm <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-39\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x02\u00a0\u00a0 | movm\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| r1, [ds:r2]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| [ds:r1], r2<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-40\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x03\u00a0\u00a0 | add\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1, r2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1,\u00a0\u00a0 imm<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-41\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x04\u00a0\u00a0 | xor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1, r2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1,\u00a0\u00a0 imm <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-42\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x05\u00a0\u00a0 | cmp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1, r2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r1,\u00a0\u00a0 imm <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-43\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x06\u00a0\u00a0 | jmpe\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| r1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | r2:r1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-44\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ 0x07\u00a0\u00a0 | hlt\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | N\/A\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| N\/A<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-45\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-46\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ flags<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-47\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ +++++<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-48\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-49\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ cmp r1, r2 instruction results in:<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-50\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 r1 == r2 =&gt; fl = 0<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-51\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 r1 &lt; r2\u00a0\u00a0=&gt; fl = 0xff<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-52\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 r1 &gt; r2\u00a0\u00a0=&gt; fl = 1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-53\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ <\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-54\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/ jmpe r1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-55\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0 =&gt; if (fl == 0) jmp r1<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-56\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-c\">\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else nop<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-57\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-58\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-st\">throw<\/span> <span class=\"crayon-s\">&#8220;VM.exec not yet implemented&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb94cf11324111971431-59\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>As you can see, it then throws an exception saying that VM.exec is not yet implemented. Our job is to implement this function, based on the information provided in the comment, and executing the embedded code in our virtual machine to see what it reveals. Although I don\u2019t really see how this would provide a demonstration of anything but quite basic skills, I decided to play along and continue with the challenge. I decided to make a C implementation instead though.<\/p>\n<p>First, I decided to only implement a disassembler and reverse-engineer the code by hand instead of actually implementing the virtual machine. After finding out that the initial piece of code actually decrypts the next part of the code, and that the decrypted code decrypts a string, I decided to actually implement the VM instead of just a disassembler.<\/p>\n<div id=\"crayon-57eb94cf11334945944912\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11334945944912-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11334945944912-13\">13<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11334945944912-1\" class=\"crayon-line\"><span class=\"crayon-cn\">0000<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x4<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">4<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">Start <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-i\">loop<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0002<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r3<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xaa<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r3<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">170<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">Value <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-i\">with<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-3\" class=\"crayon-line\"><span class=\"crayon-cn\">0004<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movm <\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Get <\/span><span class=\"crayon-e\">encrypted <\/span><span class=\"crayon-t\">byte<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0006<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">xor<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r3<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">Use<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">r3 <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-i\">decrypt<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-5\" class=\"crayon-line\"><span class=\"crayon-cn\">0008<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">movm<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Write <\/span><span class=\"crayon-e\">decrypted <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-e\">back <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-i\">memory<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">000a<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x1<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Increment <\/span><span class=\"crayon-e\">pointer <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">next <\/span><span class=\"crayon-e\">encrypted <\/span><span class=\"crayon-t\">byte<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-7\" class=\"crayon-line\"><span class=\"crayon-cn\">000c<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">r3<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x1<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Increment <\/span><span class=\"crayon-e\">value <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-i\">with<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">000e<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">cmp\u00a0\u00a0<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x50<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Compare <\/span><span class=\"crayon-e\">pointer <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-st\">end<\/span> <span class=\"crayon-e\">of <\/span><span class=\"crayon-e\">encrypted <\/span><span class=\"crayon-i\">data<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-9\" class=\"crayon-line\"><span class=\"crayon-cn\">0010<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x14<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Point <\/span><span class=\"crayon-e\">r0 <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">instruction <\/span><span class=\"crayon-e\">after <\/span><span class=\"crayon-e\">decryption <\/span><span class=\"crayon-i\">loop<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0012<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmpe <\/span><span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">r0 <\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-e\">decryption <\/span><span class=\"crayon-st\">is<\/span> <span class=\"crayon-e\">completed<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">r2<\/span> <span class=\"crayon-o\">==<\/span> <span class=\"crayon-cn\">0x50<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-11\" class=\"crayon-line\"><span class=\"crayon-cn\">0013<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmp\u00a0\u00a0<\/span><span class=\"crayon-i\">r1<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">r1<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">start <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-v\">loop<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0004<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0014<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">xor<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Decryption <\/span><span class=\"crayon-v\">completed<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-e\">Set <\/span><span class=\"crayon-v\">r0<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb94cf11334945944912-13\" class=\"crayon-line\"><span class=\"crayon-cn\">0016<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">jmp<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-cn\">0x10<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">0<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x0100<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">The <\/span><span class=\"crayon-e\">buffer <\/span><span class=\"crayon-e\">that <\/span><span class=\"crayon-e\">was <\/span><span class=\"crayon-e\">just <\/span><span class=\"crayon-i\">decrypted<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Corresponding C-code:<\/p>\n<div id=\"crayon-57eb94cf1133d390567738\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf1133d390567738-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf1133d390567738-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf1133d390567738-3\">3<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf1133d390567738-1\" class=\"crayon-line\"><span class=\"crayon-v\">key<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0xaa<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb94cf1133d390567738-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">for<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">i<\/span> <span class=\"crayon-o\">&lt;<\/span> <span class=\"crayon-cn\">0x50<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">i<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf1133d390567738-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">^=<\/span> <span class=\"crayon-v\">key<\/span><span class=\"crayon-o\">++<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The decrypted code is as follows, and quite similar to the previous code:<\/p>\n<div id=\"crayon-57eb94cf11343319542606\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11343319542606-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11343319542606-16\">16<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11343319542606-1\" class=\"crayon-line\"><span class=\"crayon-cn\">0100<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r2<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0102<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0xc<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">ds<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-v\">ds<\/span> <span class=\"crayon-o\">+<\/span> <span class=\"crayon-cn\">0xc<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x1C<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-3\" class=\"crayon-line\"><span class=\"crayon-cn\">0104<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r1<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x8<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r1<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">8<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">Start <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-i\">loop<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0106<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r3<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x32<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r3<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">50<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">Value <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-i\">with<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-5\" class=\"crayon-line\"><span class=\"crayon-cn\">0108<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movm <\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Get <\/span><span class=\"crayon-e\">encrypted <\/span><span class=\"crayon-t\">byte<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">010a<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-st\">xor<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r3<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">Use<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">r3 <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-i\">decrypt<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-7\" class=\"crayon-line\"><span class=\"crayon-cn\">010c<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">movm<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Write <\/span><span class=\"crayon-e\">decrypted <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-e\">back <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-i\">memory<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">010e<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x1<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Increment <\/span><span class=\"crayon-e\">pointer <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">next <\/span><span class=\"crayon-e\">encrypted <\/span><span class=\"crayon-t\">byte<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-9\" class=\"crayon-line\"><span class=\"crayon-cn\">0110<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">r3<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x3<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Increment <\/span><span class=\"crayon-e\">value <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-st\">XOR<\/span> <span class=\"crayon-e\">with <\/span><span class=\"crayon-e\">by <\/span><span class=\"crayon-i\">three<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0112<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">cmp\u00a0\u00a0<\/span><span class=\"crayon-v\">r2<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Compare <\/span><span class=\"crayon-e\">pointer <\/span><span class=\"crayon-i\">with<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">indicating <\/span><span class=\"crayon-e\">that <\/span><span class=\"crayon-e\">it <\/span><span class=\"crayon-e\">has <\/span><span class=\"crayon-e\">wrapped<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-i\">it<\/span>&#8216;<span class=\"crayon-i\">s<\/span> <span class=\"crayon-i\">only<\/span> <span class=\"crayon-i\">a<\/span> <span class=\"crayon-t\">byte<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-11\" class=\"crayon-line\"><span class=\"crayon-cn\">0114<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmpe <\/span><span class=\"crayon-i\">r3<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">r3 <\/span><span class=\"crayon-st\">if<\/span> <span class=\"crayon-e\">it <\/span><span class=\"crayon-e\">has <\/span><span class=\"crayon-v\">wrapped<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-r\">This<\/span> <span class=\"crayon-e\">will <\/span><span class=\"crayon-e\">never <\/span><span class=\"crayon-v\">happen<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0115<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">cmp\u00a0\u00a0<\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Compare <\/span><span class=\"crayon-e\">decrypted <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">with<\/span> <span class=\"crayon-cn\">0<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-13\" class=\"crayon-line\"><span class=\"crayon-cn\">0117<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">movr <\/span><span class=\"crayon-v\">r0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x1b<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-v\">r0<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x1b<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0119<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmpe <\/span><span class=\"crayon-i\">r0<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-st\">If<\/span> <span class=\"crayon-e\">decrypted <\/span><span class=\"crayon-t\">byte<\/span> <span class=\"crayon-i\">was<\/span> <span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-e\">jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-cn\">0x011b<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">Instruction <\/span><span class=\"crayon-e\">after <\/span><span class=\"crayon-e\">the <\/span><span class=\"crayon-i\">loop<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-15\" class=\"crayon-line\"><span class=\"crayon-cn\">011a<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmp\u00a0\u00a0<\/span><span class=\"crayon-i\">r1<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Jump <\/span><span class=\"crayon-st\">to<\/span> <span class=\"crayon-e\">r1<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-e\">start <\/span><span class=\"crayon-e\">of <\/span><span class=\"crayon-v\">loop<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x0108<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-57eb94cf11343319542606-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">011b<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">hlt<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">;<\/span> <span class=\"crayon-e\">Halt <\/span><span class=\"crayon-v\">execution<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Corresponding C-code (sort of):<\/p>\n<div id=\"crayon-57eb94cf1134a780881362\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf1134a780881362-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf1134a780881362-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf1134a780881362-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf1134a780881362-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf1134a780881362-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf1134a780881362-1\" class=\"crayon-line\"><span class=\"crayon-v\">key<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\">0x32<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb94cf1134a780881362-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-st\">do<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-57eb94cf1134a780881362-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-o\">^=<\/span> <span class=\"crayon-v\">key<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb94cf1134a780881362-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">key<\/span> <span class=\"crayon-o\">+=<\/span> <span class=\"crayon-cn\">3<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-57eb94cf1134a780881362-5\" class=\"crayon-line\"><span class=\"crayon-sy\">}<\/span> <span class=\"crayon-st\">while<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">buf<\/span><span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">i<\/span><span class=\"crayon-sy\">]<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The instructions at 0x0112-0x0114 are not necessary, and could either be there for misdirection or possibly to indicate a hidden challenge. Further signs of this lies in the fact that there are a couple of instructions further down that are never executed:<\/p>\n<div id=\"crayon-57eb94cf11351792680920\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11351792680920-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11351792680920-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11351792680920-1\" class=\"crayon-line\"><span class=\"crayon-cn\">0132<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">add\u00a0\u00a0<\/span><span class=\"crayon-v\">ds<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-cn\">0x10<\/span><\/div>\n<div id=\"crayon-57eb94cf11351792680920-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0134<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">jmp\u00a0\u00a0<\/span><span class=\"crayon-v\">r1<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>There is also a 0xcc at 0x0140, that isn\u2019t even a valid a valid instruction in the instruction set for the virtual machine, but corresponds to a breakpoint in x86 assembler. Last but not least there are large chunks of memory that are neither read, written or executed. First of all, there are some zero bytes that are obviously just there for filling. What is more suspicious are these:<\/p>\n<div id=\"crayon-57eb94cf11357475358426\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-16\">16<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-17\">17<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-18\">18<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-19\">19<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-20\">20<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11357475358426-21\">21<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-57eb94cf11357475358426-22\">22<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11357475358426-1\" class=\"crayon-line\"><span class=\"crayon-cn\">0150<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7D<\/span> <span class=\"crayon-cn\">1F<\/span> <span class=\"crayon-cn\">15<\/span> <span class=\"crayon-cn\">60<\/span> <span class=\"crayon-cn\">4D<\/span> <span class=\"crayon-cn\">4D<\/span> <span class=\"crayon-cn\">52<\/span> <span class=\"crayon-cn\">7D<\/span> <span class=\"crayon-cn\">0E<\/span> <span class=\"crayon-cn\">27<\/span> <span class=\"crayon-cn\">6D<\/span> <span class=\"crayon-cn\">10<\/span> <span class=\"crayon-cn\">6D<\/span> <span class=\"crayon-cn\">5A<\/span> <span class=\"crayon-cn\">06<\/span> <span class=\"crayon-cn\">56<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">`<\/span><span class=\"crayon-v\">MMR<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-s\">&#8216;m.mZ.V<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-s\">0160:\u00a0\u00a047 14 42 0E B6 B2 B2 E6 EB B4 83 8E D7 E5 D4 D9\u00a0\u00a0 G.B&#8230;&#8230;&#8230;&#8230;.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-3\" class=\"crayon-line\"><span class=\"crayon-s\">0170:\u00a0\u00a0C3 F0 80 95 F1 82 82 9A BD 95 A4 8D 9A 2B 30 69\u00a0\u00a0 &#8230;&#8230;&#8230;&#8230;.+0i<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-s\">0180:\u00a0\u00a04A 69 65 55 1C 7B 69 1C 6E 04 74 35 21 26 2F 60\u00a0\u00a0 JieU.{i.n.t5!&amp;\/`<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-5\" class=\"crayon-line\"><span class=\"crayon-s\">0190:\u00a0\u00a003 4E 37 1E 33 54 39 E6 BA B4 A2 AD A4 C5 95 C8\u00a0\u00a0 .N7.3T9&#8230;&#8230;&#8230;<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-s\">01a0:\u00a0\u00a0C1 E4 8A EC E7 92 8B E8 81 F0 AD 98 A4 D0 C0 8D\u00a0\u00a0 &#8230;&#8230;&#8230;&#8230;&#8230;.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-7\" class=\"crayon-line\"><span class=\"crayon-s\">01b0:\u00a0\u00a0AC 22 52 65 7E 27 2B 5A 12 61 0A 01 7A 6B 1D 67\u00a0\u00a0 .&#8221;Re~&#8217;<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">Z<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">a<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">zk<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">g<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-9\" class=\"crayon-line\"><span class=\"crayon-cn\">0200<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">37<\/span> <span class=\"crayon-cn\">7A<\/span> <span class=\"crayon-cn\">07<\/span> <span class=\"crayon-cn\">11<\/span> <span class=\"crayon-cn\">1F<\/span> <span class=\"crayon-cn\">1D<\/span> <span class=\"crayon-cn\">68<\/span> <span class=\"crayon-cn\">25<\/span> <span class=\"crayon-cn\">32<\/span> <span class=\"crayon-cn\">77<\/span> <span class=\"crayon-cn\">1E<\/span> <span class=\"crayon-cn\">62<\/span> <span class=\"crayon-cn\">23<\/span> <span class=\"crayon-cn\">5B<\/span> <span class=\"crayon-cn\">47<\/span> <span class=\"crayon-cn\">55<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">7z&#8230;.h<\/span><span class=\"crayon-o\">%<\/span><span class=\"crayon-cn\">2w.b<\/span><span class=\"crayon-p\">#[GU<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0210<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">53<\/span> <span class=\"crayon-cn\">30<\/span> <span class=\"crayon-cn\">11<\/span> <span class=\"crayon-cn\">42<\/span> <span class=\"crayon-e\">F6 <\/span><span class=\"crayon-e\">F1 <\/span><span class=\"crayon-e\">B1 <\/span><span class=\"crayon-e\">E6 <\/span><span class=\"crayon-e\">C3 <\/span><span class=\"crayon-e\">CC <\/span><span class=\"crayon-e\">F8 <\/span><span class=\"crayon-e\">C5 <\/span><span class=\"crayon-e\">E4 <\/span><span class=\"crayon-e\">CC <\/span><span class=\"crayon-e\">C0 <\/span><span class=\"crayon-e\">D3\u00a0\u00a0 <\/span><span class=\"crayon-v\">S0<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">B<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-11\" class=\"crayon-line\"><span class=\"crayon-cn\">0220<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">85<\/span> <span class=\"crayon-i\">FD<\/span> <span class=\"crayon-cn\">9A<\/span> <span class=\"crayon-e\">E3 <\/span><span class=\"crayon-i\">E6<\/span> <span class=\"crayon-cn\">81<\/span> <span class=\"crayon-e\">B5 <\/span><span class=\"crayon-e\">BB <\/span><span class=\"crayon-e\">D7 <\/span><span class=\"crayon-i\">CD<\/span> <span class=\"crayon-cn\">87<\/span> <span class=\"crayon-e\">A3 <\/span><span class=\"crayon-i\">D3<\/span> <span class=\"crayon-cn\">6B<\/span> <span class=\"crayon-cn\">36<\/span> <span class=\"crayon-cn\">6F<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">k6o<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0230<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">6F<\/span> <span class=\"crayon-cn\">66<\/span> <span class=\"crayon-cn\">55<\/span> <span class=\"crayon-cn\">30<\/span> <span class=\"crayon-cn\">16<\/span> <span class=\"crayon-cn\">45<\/span> <span class=\"crayon-cn\">5E<\/span> <span class=\"crayon-cn\">09<\/span> <span class=\"crayon-cn\">74<\/span> <span class=\"crayon-cn\">5C<\/span> <span class=\"crayon-cn\">3F<\/span> <span class=\"crayon-cn\">29<\/span> <span class=\"crayon-cn\">2B<\/span> <span class=\"crayon-cn\">66<\/span> <span class=\"crayon-cn\">3D<\/span> <span class=\"crayon-cn\">0D<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">ofU0<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">E<\/span><span class=\"crayon-o\">^<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">t<\/span><span class=\"crayon-sy\">\\<\/span><span class=\"crayon-sy\">?<\/span><span class=\"crayon-sy\">)<\/span><span class=\"crayon-o\">+<\/span><span class=\"crayon-v\">f<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-13\" class=\"crayon-line\"><span class=\"crayon-cn\">0240<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">02<\/span> <span class=\"crayon-cn\">30<\/span> <span class=\"crayon-cn\">28<\/span> <span class=\"crayon-cn\">35<\/span> <span class=\"crayon-cn\">15<\/span> <span class=\"crayon-cn\">09<\/span> <span class=\"crayon-cn\">15<\/span> <span class=\"crayon-e\">DD <\/span><span class=\"crayon-e\">EC <\/span><span class=\"crayon-e\">B8 <\/span><span class=\"crayon-e\">E2 <\/span><span class=\"crayon-e\">FB <\/span><span class=\"crayon-e\">D8 <\/span><span class=\"crayon-e\">CB <\/span><span class=\"crayon-e\">D8 <\/span><span class=\"crayon-i\">D1<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">0<\/span><span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">5&#8230;&#8230;&#8230;&#8230;<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0250<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">8B<\/span> <span class=\"crayon-i\">D5<\/span> <span class=\"crayon-cn\">82<\/span> <span class=\"crayon-i\">D9<\/span> <span class=\"crayon-cn\">9A<\/span> <span class=\"crayon-i\">F1<\/span> <span class=\"crayon-cn\">92<\/span> <span class=\"crayon-e\">AB <\/span><span class=\"crayon-e\">E8 <\/span><span class=\"crayon-e\">A6 <\/span><span class=\"crayon-e\">D6 <\/span><span class=\"crayon-i\">D0<\/span> <span class=\"crayon-cn\">8C<\/span> <span class=\"crayon-e\">AA <\/span><span class=\"crayon-i\">D2<\/span> <span class=\"crayon-cn\">94<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-15\" class=\"crayon-line\"><span class=\"crayon-cn\">0260<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">CF<\/span> <span class=\"crayon-cn\">45<\/span> <span class=\"crayon-cn\">46<\/span> <span class=\"crayon-cn\">67<\/span> <span class=\"crayon-cn\">20<\/span> <span class=\"crayon-cn\">7D<\/span> <span class=\"crayon-cn\">44<\/span> <span class=\"crayon-cn\">14<\/span> <span class=\"crayon-cn\">6B<\/span> <span class=\"crayon-cn\">45<\/span> <span class=\"crayon-cn\">6D<\/span> <span class=\"crayon-cn\">54<\/span> <span class=\"crayon-cn\">03<\/span> <span class=\"crayon-cn\">17<\/span> <span class=\"crayon-cn\">60<\/span> <span class=\"crayon-cn\">62<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">EFg<\/span> <span class=\"crayon-sy\">}<\/span><span class=\"crayon-v\">D<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">kEmT<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">`<\/span><span class=\"crayon-i\">b<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0270<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">55<\/span> <span class=\"crayon-cn\">5A<\/span> <span class=\"crayon-cn\">4A<\/span> <span class=\"crayon-cn\">66<\/span> <span class=\"crayon-cn\">61<\/span> <span class=\"crayon-cn\">11<\/span> <span class=\"crayon-cn\">57<\/span> <span class=\"crayon-cn\">68<\/span> <span class=\"crayon-cn\">75<\/span> <span class=\"crayon-cn\">05<\/span> <span class=\"crayon-cn\">62<\/span> <span class=\"crayon-cn\">36<\/span> <span class=\"crayon-cn\">7D<\/span> <span class=\"crayon-cn\">02<\/span> <span class=\"crayon-cn\">10<\/span> <span class=\"crayon-cn\">4B<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">UZJfa<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">Whu<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">b6<\/span><span class=\"crayon-sy\">}<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">K<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-17\" class=\"crayon-line\"><span class=\"crayon-cn\">0280<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">08<\/span> <span class=\"crayon-cn\">22<\/span> <span class=\"crayon-cn\">42<\/span> <span class=\"crayon-cn\">32<\/span> <span class=\"crayon-e\">BA <\/span><span class=\"crayon-e\">E2 <\/span><span class=\"crayon-e\">B9 <\/span><span class=\"crayon-e\">E2 <\/span><span class=\"crayon-e\">D6 <\/span><span class=\"crayon-e\">B9 <\/span><span class=\"crayon-e\">FF <\/span><span class=\"crayon-e\">C3 <\/span><span class=\"crayon-i\">E9<\/span> <span class=\"crayon-cn\">8A<\/span> <span class=\"crayon-cn\">8F<\/span> <span class=\"crayon-i\">C1<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span>&#8220;<span class=\"crayon-v\">B2<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-18\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">0290<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">8F<\/span> <span class=\"crayon-e\">E1 <\/span><span class=\"crayon-e\">B8 <\/span><span class=\"crayon-i\">A4<\/span> <span class=\"crayon-cn\">96<\/span> <span class=\"crayon-i\">F1<\/span> <span class=\"crayon-cn\">8F<\/span> <span class=\"crayon-cn\">81<\/span> <span class=\"crayon-i\">B1<\/span> <span class=\"crayon-cn\">8D<\/span> <span class=\"crayon-cn\">89<\/span> <span class=\"crayon-e\">CC <\/span><span class=\"crayon-i\">D4<\/span> <span class=\"crayon-cn\">78<\/span> <span class=\"crayon-cn\">76<\/span> <span class=\"crayon-cn\">61<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">xva<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-19\" class=\"crayon-line\"><span class=\"crayon-cn\">02a0<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">72<\/span> <span class=\"crayon-cn\">3E<\/span> <span class=\"crayon-cn\">37<\/span> <span class=\"crayon-cn\">23<\/span> <span class=\"crayon-cn\">56<\/span> <span class=\"crayon-cn\">73<\/span> <span class=\"crayon-cn\">71<\/span> <span class=\"crayon-cn\">79<\/span> <span class=\"crayon-cn\">63<\/span> <span class=\"crayon-cn\">7C<\/span> <span class=\"crayon-cn\">08<\/span> <span class=\"crayon-cn\">11<\/span> <span class=\"crayon-cn\">20<\/span> <span class=\"crayon-cn\">69<\/span> <span class=\"crayon-cn\">7A<\/span> <span class=\"crayon-cn\">14<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">r<\/span><span class=\"crayon-o\">&gt;<\/span><span class=\"crayon-cn\">7<\/span><span class=\"crayon-p\">#Vsqyc|.. iz.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-20\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">02b0<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">68<\/span> <span class=\"crayon-cn\">05<\/span> <span class=\"crayon-cn\">21<\/span> <span class=\"crayon-cn\">1E<\/span> <span class=\"crayon-cn\">32<\/span> <span class=\"crayon-cn\">27<\/span> <span class=\"crayon-cn\">59<\/span> <span class=\"crayon-e\">B7 <\/span><span class=\"crayon-e\">CF <\/span><span class=\"crayon-e\">AB <\/span><span class=\"crayon-e\">DD <\/span><span class=\"crayon-e\">D5 <\/span><span class=\"crayon-i\">CC<\/span> <span class=\"crayon-cn\">97<\/span> <span class=\"crayon-cn\">93<\/span> <span class=\"crayon-i\">F2<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-v\">h<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-o\">!<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-cn\">2<\/span>&#8216;<span class=\"crayon-v\">Y<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-21\" class=\"crayon-line\"><span class=\"crayon-cn\">02c0<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">E7 <\/span><span class=\"crayon-e\">C0 <\/span><span class=\"crayon-e\">EB <\/span><span class=\"crayon-e\">FF <\/span><span class=\"crayon-e\">E9 <\/span><span class=\"crayon-e\">A3 <\/span><span class=\"crayon-e\">BF <\/span><span class=\"crayon-e\">A1 <\/span><span class=\"crayon-i\">AB<\/span> <span class=\"crayon-cn\">8B<\/span> <span class=\"crayon-i\">BB<\/span> <span class=\"crayon-cn\">9E<\/span> <span class=\"crayon-cn\">9E<\/span> <span class=\"crayon-cn\">8C<\/span> <span class=\"crayon-e\">A0 <\/span><span class=\"crayon-i\">C1<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-57eb94cf11357475358426-22\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">02d0<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">9B<\/span> <span class=\"crayon-cn\">5A<\/span> <span class=\"crayon-cn\">2F<\/span> <span class=\"crayon-cn\">2F<\/span> <span class=\"crayon-cn\">4E<\/span> <span class=\"crayon-cn\">4E<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span> <span class=\"crayon-cn\">00<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">Z<\/span><span class=\"crayon-c\">\/\/NN&#8230;&#8230;&#8230;.<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>There are some interesting patterns in this data, especially when interpreting it as three 112 bytes chunks. Each chunk consists of 20 bytes &lt; 0x80, 25 bytes &gt;= 0x80, 26 bytes &lt; 0x80, 26 bytes &gt;= 0x80 and finally 15 bytes &lt; 0x80. In other words, there is a pattern in which bytes have the most significant bit set in each of these chunks. This pattern could be the result of each chunk being XOR-encoded using the same algorithm as has been used in the previous code, with some specific start and step values. I decided not to waste any more time on this track unless the challenge seemed to lead to a dead end though. After the second decryption loop it will reveal the following string at 0x01b0:<\/p>\n<div id=\"crayon-57eb94cf11360074466839\" class=\"crayon-syntax crayon-theme-solarized-dark crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-57eb94cf11360074466839-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-57eb94cf11360074466839-1\" class=\"crayon-line\"><span class=\"crayon-v\">GET<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">da75370fe15c4148bd4ceec861fbdaa5<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">exe <\/span><span class=\"crayon-v\">HTTP<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">1.0<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Yet another URL, this time to an x86 Windows\/cygwin executable. To get this string I could just have dumped the virtual machine memory after execution, since I had already reverse-engineered the code I decided to get each character after it has been decoded by reading r0 at ip = 0x010c (0x010c == 268), using the code available <a href=\"http:\/\/www.clevcode.org\/wp-content\/uploads\/2011\/12\/gchq-stage2.c.txt\">here<\/a>.<\/p>\n<p>Note that I have not bothered to implement any bounds checking when reading values from memory, so running the VM on arbitrary\/random code will most likely result in a crash. \ud83d\ude42 In this case I had already seen that the code was \u201cwell behaved\u201d and just wanted to go on to the next stage of the challenge though.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After cracking stage 1 of the GCHQ challenge, we get the URL to the Javascript code available here. It defines a virtual machine with four general registers, two segment registers, one flag register and of course the instruction pointer. It also includes an array of two values named \u201cfirmware\u201d, which seems rather strange. These values &hellip; <a href=\"http:\/\/piratesecurityblog.com\/?p=22\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">GCHQ Challenge Solution \u2013 Stage 2<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/22"}],"collection":[{"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22"}],"version-history":[{"count":1,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/22\/revisions"}],"predecessor-version":[{"id":23,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/22\/revisions\/23"}],"wp:attachment":[{"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/piratesecurityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}