{"id":6618,"date":"2020-06-15T12:27:30","date_gmt":"2020-06-15T17:27:30","guid":{"rendered":"https:\/\/www.rushworth.us\/lisa\/?p=6618"},"modified":"2020-06-15T12:27:30","modified_gmt":"2020-06-15T17:27:30","slug":"decompiling-jython-class-files","status":"publish","type":"post","link":"https:\/\/www.rushworth.us\/lisa\/?p=6618","title":{"rendered":"Decompiling Jython Class Files"},"content":{"rendered":"<p>Looks like Jython that is compiled into a class file <em>can<\/em> be decompiled just like a Java class (I use <a href=\"https:\/\/github.com\/kwart\/jd-cmd\" target=\"_blank\" rel=\"noopener noreferrer\">jd-cmd<\/a> which is both simple and open source). But &#8230; you don&#8217;t get back Python. In a disaster recovery scenario, you get back <em>something<\/em> and could reconstruct your Python code from the Java-looking stuff you get back.<\/p>\n<p><a href=\"https:\/\/www.rushworth.us\/lisa\/?attachment_id=6619\" rel=\"attachment wp-att-6619\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-6619\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-1024x459.png\" alt=\"\" width=\"960\" height=\"430\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-1024x459.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-300x134.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-768x344.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-1536x688.png 1536w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython-750x336.png 750w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/decompilingJython.png 1616w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<p>I don&#8217;t normally type the entire command &#8212; a quick function in your .bashrc gives you a command alias that can be used instead.<\/p>\n<p><a href=\"https:\/\/www.rushworth.us\/lisa\/?attachment_id=6620\" rel=\"attachment wp-att-6620\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-6620\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias-1024x175.png\" alt=\"\" width=\"960\" height=\"164\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias-1024x175.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias-300x51.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias-768x131.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias-750x128.png 750w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2020\/06\/javaDecompileAlias.png 1180w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Looks like Jython that is compiled into a class file can be decompiled just like a Java class (I use jd-cmd which is both simple and open source). But &#8230; you don&#8217;t get back Python. In a disaster recovery scenario, you get back something and could reconstruct your Python code from the Java-looking stuff you &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[1018,578,1017],"class_list":["post-6618","post","type-post","status-publish","format-standard","hentry","category-coding","tag-decompile","tag-java","tag-jython"],"_links":{"self":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/6618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6618"}],"version-history":[{"count":1,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/6618\/revisions"}],"predecessor-version":[{"id":6621,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/6618\/revisions\/6621"}],"wp:attachment":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}