{"id":284375,"date":"2017-04-03T19:05:02","date_gmt":"2017-04-03T15:05:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284375"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284375","title":{"rendered":"UFOCTF 2017: \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c Python \u0432 \u0437\u0430\u0434\u0430\u043d\u0438\u0438 King Arthur (PPC600)"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/9ea\/6ce\/d68\/9ea6ced680854d2d9697763a380d8047.png\"\/><br \/>  \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0442\u0435\u0431\u044f \u0445\u0430\u0431\u0440\u0430\u044e\u0437\u0435\u0440! \u041d\u0435\u0434\u0430\u0432\u043d\u043e, \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u0430\u044f \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0430 \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 UFO CTF 2017. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0439\u0442\u0430\u043f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 <i>PPC<\/i>, \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <i>\u00abKing Arthur\u00bb<\/i>, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0447\u043a\u043e\u0432 \u2014 600.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u041d\u0430\u0447\u043d\u0451\u043c<\/h3>\n<p>  \u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a \u0437\u0430\u0434\u0430\u043d\u0438\u044e \u0431\u044b\u043b\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<blockquote><p>\u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 e-mail \u043e\u0442 \u0444\u0430\u043d\u0430\u0442\u0430 \u0440\u044b\u0446\u0430\u0440\u0435\u0439. \u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u043c\u0435\u043b \u0432 \u0432\u0438\u0434\u0443 \u0430\u0432\u0442\u043e\u0440.<\/p><\/blockquote>\n<p>  \u0418 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">sword.py<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">#!\/usr\/bin\/python import serpent &quot;&quot;&quot;            ___           { _ }            |\/|           {___}            |_|            |\/|  .         |\/|         .  (\\________|w|________\/)  ( ___________________ )   v       | | |       v           | | |           | | |           | | |PO0.HN7           | | |   *   TP0~~~&lt;          z| | |ON4.YH1        OP6| | |          ON2| |           |PO3|           | |PY0           | | PY0           | | |PY0          z| | |PY0         PY0 | |z        PY0| | |          PY0| |           |PY0|           | |PH0           | | PY0           | | |PY0          z| | |PY0         PY0 | |z        PY0| | |          PY0| |           |PY0|           | |HN3           | | PY1           | | |PY0          z| | |PY0         PY0 | |z        PN3| | |          PT0| |           |PY0|           | |PN3           | | PY0           | | |PY0          z| | |TH3         PY0 | |z        PY0| | |          NY2| |           |PY0|           | |PY0           | | PN3           | | |PH0          z| | |PY0         PN4 | |z        PY0| | |          PY0| |           |NY2|           | |PT0           | | PY0           | | |YP3          z| | |PT0         PY0 | |z        PO4| | |          PY0| |           |PY0|           | |PT0           | | PN3           | | |PY0          z| | |PY0         HN2 | |z        YO1| | |          PO0| |           |PY0|           | |PY0           | | PY0           | | |TN2          z| | |YN3         YY7 | |z        YY7| | |          YY7| |           |YY7|           | |PO3           | | PY0           | | |PY0          z| | |PY0         PY0 | |z        PH0| | |          PY0| |           |PY0|           | |PY0           | | HO0           | | |PY0          z| | |PY0         PY0 | |z        PO0| | |          PY0| |           |PY0|           | |PY0           | | HN3           | | |YY4          z| | |PY0         PY0 | |z        PY0| | |          OP3| |           |PY0|           | |PY0           | | PN3           | | |PT0          z| | |PY0         PO4 | |z        PT0| | |          PY0| |           |NO3|           | |PT0           | | PY0           | | |NH3          z| | |PT0         PY0 | |z        PN3| | |          PY0| |           |PY0|           | |PN3           | | PH0           | | |PY0          z| | |PN3         PO0 | |z        PY0| | |          YP4| |           |PO0|           | |PY0           | | NP0           | | |PN3          z| | |PN0         PY0 | |z        TY3| | |          PO0| |           |PY0|           | |HO3           | | TO1           | | |PY0          z| | |PN3         YP0 | |z        PY0| | |          YH2| |           |YO2|           | |TN3           | | TN3           | | |PY0          z| | |NH3         PT0 | |z        PY0| | |          PN3| |           |PH0|           | |PY0           | | PN3           | | |PY0          z| | |PY0         PN3 | |z        PO0| | |          PY0| |           |YP4|           | |PO0           | | PY0           | | |NP0          z| | |PN3         YT0 | |z        PY0| | |          TY3| |           |PO0|           | |PY0           | | HO3           | | |HO3          z| | |PY0         PN3 | |z        YP0| | |          PY0| |           |YH2|           | |YO2           | | TN3           | | |TO2          z| | |PY0         NH3 | |z        PT0| | |          PY0| |           |PN3|           | |YH0           | | PY0           | | |TY0          z| | |PN3         YO0 | |z        PY0| | |          TY0| |           |PN3|           | |PO0           | | PY0           | | |TY0          z| | |YP4         PO0 | |z        PY0| | |          NP0| |           |PN3|           | |YN0           | | PY0           | | |TY3          z| | |PO0         PY0 | |z        HO3| | |          OT4| |           |PY0|           | |PN3           | | YP0           | | |PY0          z| | |YH2         YO2 | |z        TN3| | |          YN1| |           |PY0|           | |NH3           | | PT0           | | |PY0          z| | |PN3         TP0 | |z        PY0| | |          TY0| |           |PN3|           | |PH0           | | PY0           | | |TY0          z| | |PN3         PO0 | |z        PY0| | |          TY0| |           |YP4|           | |PO0           | | PY0           | | |NP0          z| | |PN3         TY0 | |z        PY0| | |          TY3| |           |PO0|           | |PY0           | | HO3           | | |TN2          z| | |PY0         PN3 | |z        YP0| | |          PY0| |           |YH2|           | |YO2           | | TN3           | | |YP0          z| | |PY0         PN3 | |z        TH0| | |          PY0| |           |YH2|           | |YO2           | | PN3           | | |PY0          z| | |PY0         HN2 | |z        YO1| | |          TO0| |           |PY0|           | |PY0           | | PY0           | | |TN2          z| | |HN3         TO0 | |z        PY0| | |          PY0| |           |PY0|           | |YP2           | | TN3           | | |OP3          z| | |YP3         HO3 | |z        PY1| | |          TH3| |           |YN3|           | |TN3           | | YP3           | | |NY1          z| | |PY1         TP0 | |z        YN3| | |          TN0| |           |PY0|           | |PY0           | | PY0           | | |YN3          z| | |PH0         PY0 | |z        PY0| | |          PY0| |           |OP3|           | |YH0           | | PY0           | | |PY0          z| | |PY0         ON2 | |z        TO2| | |          YH3| |           |NP1|           | |OT3           | | OT1           | | |OT1          z| | |HN3         YP0 | |z        PY0| | |          PY0| |           |PY0|           | |YT2           | | PT3           | | |YN3          z| | |TH3         PT1 | |z        OP3| | |          YO0| |           |PY0|           | |PY0           | | PY0           | | |NP3          z| | |PH2         YT3 | |z        PH2| | |          YH3| |           |NP1|           | |OT3           | | PT3           | | |YN3          z| | |HP0         PY0 | |z        PY0| | |          PY0| |           |YN3|           | |PP0           | | PY0           | | |PY0          z| | |PY0         OP3 | |z        YO0| | |          PY0| |           |PY0|           | |PY0           | | NP2           | | |HT1          z| | |HY2         ON2 | |z        HT3| | |          YH3| |           |YH3|           | |PH2           | | YN3           | | |PT0          z| | |PY0         PY0 | |z        PY0| | |          OP3| |           |YH0|           | |PY0           | | PY0           | | |PY0          z| | |HN1         OH2 | |z        OH1| | |          OP1| |           |TY3|           | |YO3           | | OH3           | | |HN3          z| | |YO0         PY0 | |z        PY0| | |          PY0| |           |HN2|           | |OY3           | | PO3           | | |PO3          z| | |YP3         HN3 | |z        HN3| | |          PT1| |           |YO1|           | |PH0           | | PY0           | | |PY0          z| | |PY0         OP3 | |z        YN0| | |          PY0| |           |PY0|           | |PY0           | | HO3           | | |PT3          z| | |OH3         YY2 | |z        YN3| | |          TN3| |           |HY3|           | |OY3           | | OP3           | | |OP3          z| | |PN0         PY0 | |z        PY0| | |          PY0| |           |TH3|           | |YN3           | | TN3           | | |YP3          z| | |YO1         PH0 | |z        PY0| | |          PY0| |           |PY0|           | |HO2           | | PN0           | | |PY0          z| | |PY0         PY0 | |z        HO2| | |          YP0| |           |PY0|           | |PY0           | | PY0           | | |YO1          z| | |PY0         PY0 | |z        PY0| | |          PY0| |           |YO1|           | |PY0           | | PY0           | | |PY0          z| | |PY0         HN3 | |z        HP2| | |          PY0| |           |PY0|           | |PY0           | | PN2           | | |NY1          z| | |NH2         PN2 | |z        HP3| | |          OH3| |           |TN3|           | |TH3           | | HP3           | | |PT3          z| | |PN3         HN3 | |z        NH2| | |          OY2| |           |YT2|           | |HP2           | | PO2           | | |OP2          z| | |YT2         NH2 | |z        OP2| | |          PT2| |           |HN2|           | |TY2           | | HN2           | | |NH2          z| | |HN3         YP3 | |z        HO3| | |          HY3| |           |YP3|           | |TN3           | | OP3           | | |NH2          z| | |HN3         HP3 | |z        OY3| | |          HO3| |           |PO3|           | |YP3           | | HN3           | | |NH2          z| | |HN2         YP3 | |z        HO3| | |          HY3| |           |YP3|           | |TN3           | | OP3           | | |TO1          z| | |TO3         PT3 | |z        HN3| | |          OP3| |           |YP3|           | |HO3           | | NH2           | | |HN2          z| | |YP3         HO3 | |z        HY3| | |          YP3| |           |TN3|           | |OP3           | | TO1           | | |TO3          z| | |PT3         HN3 | |z        OP3| | |          YP3| |           |HO3|           | |NH2           | | OP3           | | |YP3          z| | |HN3         OP3 | |z        TN1| | |          HY3| |           |NP3|           | |HN3           | | PN0           | | |PY0          z| | |PY0         PY0 | |z        OP3| | |          PT3| |           |HN3|           | |TY3           | | PN0           | | |PY0          z| | |PY0         PY0 | |z        HN3| | |          HY0| |           |PY0|           | |PY0           | | PY0           | | |PY0          z| | |PT0         TH0 | |z        PT0| | |          NP0| |           |PT0|           | |YO0           | | PT0           | | |NP0          z| | |PT0         YO0 | |z        PO0| | |          NH0| |           |PT0|           | |TH1           | | PH0           | | |YO1          z| | |PH0         PY0 | |z        PY0| | |          PY0| |           |OP3|           | |YH0           | | PY0           | | |PY0          z| | |PY0         HN3 | |z        YP3| | |          HO3| |           |HY3|           | |YP3           | | TN3           | | |OP3          z| | |OP3         PN0 | |z        PY0| | |          PY0| |           |PY0|           | |OP3           | | PT3           | | |HN3          z| | |TY3         YO1 | |z        PH0| | |          PY0| |           |PY0|           | |PY0           | | HO2           | | |YT0          z| | |PY0         PY0 | |z        PY0| | |          HO2| |           |YH0|           | |PY0           | | PY0           | | |PY0          z| | |YO1         PY0 | |z        PY0| | |          PY0| |           |PY0|           | |YO1           | | PY0           | | |PY0          z| | |PY0         PY0 | |z        HN3| | |          HP2| |           |PY0|           | |PY0           | | PY0           | | |PN2          z| | |NY1         NH2 | |z        PN2| | |          HP3| |           |OH3|           | |TN3           | | TH3           | | |HP3          z| | |PT3         PN3 | |z        HN3| | |          NH2| |           |OY2|           | |YT2           | | HP2           | | |PO2          z| | |OP2         YT2 | |z        NH2| | |          OP2| |           |PT2|           | |HN2           | | TY2           | | |HN2          z| | |NH2         HN3 | |z        YP3| | |          HO3| |           |HY3|           | |YP3           | | TN3           | | |OP3          z| | |NH2         HN3 | |z        HP3| | |          OY3| |           |HO3|           | |PO3           | | YP3           | | |HN3          z| | |NH2         HN2 | |z        YP3| | |          HO3| |           |HY3|           | |YP3           | | TN3           | | |OP3          z| | |TO1         TO3 | |z        PT3| | |          HN3| |           |OP3|           | |YP3           | | HO3           | | |NH2          z| | |HN2         YP3 | |z        HO3| | |          HY3| |           |YP3|           | |TN3           | | OP3           | | |TO1          z| | |TO3         PT3 | |z        HN3| | |          OP3| |           |YP3|           | |HO3           | | NH2           | | |OP3          z| | |YP3         HN3 | |z        OP3| | |          TN1| |           |HY3|           | |NP3           | | HN3           | | |YO0          z| | |PY0         PY0 | |z        PY0| | |          NH1| |           |TO3|           | |HP3           | | PN3           | | |OY3          z| | |TH3         YP3 | |z        PP1| | |          PT0| |           |PY0|           | |PY0           | | PY0           | | |HN3          z| | |PN0         PY0 | |z        PY0| | |          PY0| |           |TH0|           | |PO0           | | YN0           | | |TO0          z| | |zz            z | |           z | |           | | |           | | |            \\|\/             v &quot;&quot;&quot;<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 <i>import serpent<\/i>. \u041f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 <i>\u00abpython serpent sword\u00bb<\/i> \u0432 \u0433\u0443\u0433\u043b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 <a href=\"https:\/\/github.com\/kharland\/Serpent\">git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0443\u0434\u044f \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u2014 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u0418\u0437\u0443\u0447\u0438\u0432 \u043a\u043e\u0434 <i>serpent.py<\/i> \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u0430\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u00ab\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u00bb \u043a\u043e\u0434\u0430 \u0432 \u043c\u0435\u0447:<\/p>\n<blockquote><p>Given the hex digit 65:<br \/>   65 % 32 = 1<br \/>   floor( 65 \/ 32 ) = 2<br \/>   so the alphabet symbol for 65 is the symbol at index 1: &#8216;PT&#8217;.<br \/>   65 is also the 3rd occurrence of a 32-modulus of 1 (with 1 <br \/>   being the first occurrence and 33 being the second of course.)<br \/>   so the code for this hex symbol is PT2<\/p><\/blockquote>\n<p>  \u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"python\">elif scriptType is _SERPENT:      pyc = _serpent_sword_alphabet_to_hex(_lex_hex(sys.argv[0]))     pycout = &quot;.&quot;.join(sys.argv[0].split(&quot;.&quot;)[0:-1])+&quot;.pyc&quot;      with open(pycout, &quot;wb&quot;) as f:         for val in pyc:         f.write(chr(val))<\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u043e\u0434, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 <i>.pyc<\/i>. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0444\u0430\u0439\u043b <i>sword.py<\/i> \u0432 <i>sword.ss.py<\/i> \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c:<\/p>\n<pre><code class=\"bash\">gh0st3rs@gh0st3rs-pc:KingArthur$ python sword.ss.py  RuntimeError: Bad magic number in .pyc file<\/code><\/pre>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043a\u043e\u0434, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0439\u043b <i>sword.ss.pyc<\/i> \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u043b\u0441\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u0438\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 <a href=\"https:\/\/github.com\/Risto-Stevcev\/python-bytecode\/blob\/master\/README.md\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/a> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 <i>.pyc<\/i> \u0444\u0430\u0439\u043b\u0430. \u041d\u043e \u0432\u0441\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0432\u0435\u0440\u043d\u044b\u0439 \u043d\u0435 \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0438\u0441\u044c \u0443\u0441\u043f\u0435\u0445\u043e\u043c.<\/p>\n<p>  \u0422\u0430\u043c \u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043a\u043e\u0434\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043c\u0438\u043d\u0443\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430. \u041d\u0430\u043a\u0438\u0434\u0430\u0435\u043c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">unserpent.py<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">#!\/usr\/bin\/python import re import sys import marshal  alphabet = [     &quot;PY&quot;, &quot;PT&quot;, &quot;PH&quot;, &quot;PO&quot;, &quot;PN&quot;, &quot;YP&quot;, &quot;YT&quot;, &quot;YH&quot;, &quot;YO&quot;, &quot;YN&quot;, &quot;TP&quot;, &quot;TY&quot;, &quot;TH&quot;, &quot;TO&quot;, &quot;TN&quot;,     &quot;HP&quot;, &quot;HY&quot;, &quot;HT&quot;, &quot;HO&quot;, &quot;HN&quot;, &quot;OP&quot;, &quot;OY&quot;, &quot;OT&quot;, &quot;OH&quot;, &quot;ON&quot;, &quot;NP&quot;, &quot;NY&quot;, &quot;NT&quot;, &quot;NH&quot;, &quot;NO&quot;,     &quot;PP&quot;, &quot;YY&quot; ]   def _serpent_sword_alphabet_to_hex(sentence):     &quot;Convert the serpent alphabet string back to python bytecode&quot;     return [alphabet.index(symbol[0:-1]) + int(symbol[-1]) * 32 for symbol in sentence]   def _lex_hex(infile):     &quot;Extract the serpent string from the ss file&quot;     with open(infile, 'r') as source:         regex = re.compile(r'[PYTHON][PYTHON][0-9]')         tokens = []         for line in source:             pos = 0             while(pos &lt; len(line)):                 match = regex.match(line, pos)                 if match:                     tokens.append(match.group(0))                 pos += 1         return tokens   def convert_to_pyc(fname):     pyc = _serpent_sword_alphabet_to_hex(_lex_hex(fname))     pycout = &quot;.&quot;.join(fname.split(&quot;.&quot;)[0:-1]) + &quot;.pyc&quot;     with open(pycout, &quot;wb&quot;) as f:         for val in pyc:             f.write(chr(val))     f.close()     return pycout   fname = sys.argv[1] pycout = convert_to_pyc(fname) f = open(pycout, &quot;rb&quot;).read() for x in range(len(f)):     try:         code = marshal.loads(f[x:])         print('Offset found: %d' % x)         print('\\targcount: %s' % code.co_argcount)         print('\\tcode: %s' % code.co_code.encode('hex'))         print('\\tconsts count: %d' % len(code.co_consts))         for item in code.co_consts:             print('\\t\\t%s: %r' % (type(item), item))         print('\\tfilename: %s' % code.co_filename)         print('\\tfirstlineno: %s' % code.co_firstlineno)         print('\\tflags: %s' % code.co_flags)         print('\\tname: %s' % code.co_name)         print('\\tnlocals: %s' % code.co_nlocals)         print('\\tstacksize: %s' % code.co_stacksize)         print('\\tvarnames count: %d' % len(code.co_varnames))         for item in code.co_varnames:             print('\\t\\t%r' % item)         break     except ValueError:         continue<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434:<\/p>\n<pre><code class=\"bash\">gh0st3rs@gh0st3rs-pc:KingArthur$ .\/unserpent.py sword.ss.py Offset found: 7 \targcount: 0 \tcode: 6401006400006c00005a00006402008400005a01006501008300000164000053 \tconsts count: 3 \t\t&lt;type 'NoneType'&gt;: None \t\t&lt;type 'int'&gt;: -1 \t\t&lt;type 'code'&gt;: &lt;code object task at 0x7f7e85aa9eb0, file &quot;D:\\Downloads\\UFOCTF\\TASKS\\serpent\\sources\\Serpent-master\\Serpent-master\\test.py&quot;, line 4&gt; \tfilename: D:\\Downloads\\UFOCTF\\TASKS\\serpent\\sources\\Serpent-master\\Serpent-master\\test.py \tfirstlineno: 1 \tflags: 0 \tname: &lt;module&gt; \tnlocals: 0 \tstacksize: 2 \tvarnames count: 2 \t\t'serpent' \t\t'task'<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 1 \u043e\u0431\u044a\u0435\u043a\u0442 <i>code<\/i>, \u043e\u043d \u0442\u043e \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a, \u0434\u043b\u044f \u0435\u0433\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\">import uncompyle6 ... uncompyle6.main.uncompyle(2.7, code.co_consts[2], sys.stdout)<\/code><\/pre>\n<p>  \u0421\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre><code class=\"python\"># uncompyle6 version 2.9.10 # Python bytecode 2.7 # Decompiled from: Python 2.7.6 (default, Oct 26 2016, 20:30:19)  # [GCC 4.8.4] # Embedded file name: D:\\Downloads\\UFOCTF\\TASKS\\serpent\\sources\\Serpent-master\\Serpent-master\\test.py line = raw_input('Enter line: \\n') if line[:14:2] != 'XMg9v66':     print 'Fail!' elif line[14::2] != 'yBfBg9va':     print 'Fail!' elif line[-15:-30:-2] != 'Y1PXqggB':     print 'Fail!' elif line[-1:-14:-2] != '3W74khw':     print 'Fail!' else:     print 'Success!'<\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c, \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433:  <\/p>\n<blockquote><p>ufoctf{XBMggg9qvX6P61yYBwfhBkg497vWa3}<\/p><\/blockquote>\n<p>  \u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043e! +600 \u043a \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0443!<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/325580\/\"> https:\/\/habrahabr.ru\/post\/325580\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/9ea\/6ce\/d68\/9ea6ced680854d2d9697763a380d8047.png\"\/><br \/>  \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0442\u0435\u0431\u044f \u0445\u0430\u0431\u0440\u0430\u044e\u0437\u0435\u0440! \u041d\u0435\u0434\u0430\u0432\u043d\u043e, \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u0430\u044f \u043e\u043b\u0438\u043c\u043f\u0438\u0430\u0434\u0430 \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 UFO CTF 2017. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0439\u0442\u0430\u043f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 <i>PPC<\/i>, \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <i>\u00abKing Arthur\u00bb<\/i>, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0447\u043a\u043e\u0432 \u2014 600.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-284375","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284375"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284375\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}