{"id":1015,"date":"2013-04-02T22:53:34","date_gmt":"2013-04-02T21:53:34","guid":{"rendered":"http:\/\/www.phillips321.co.uk\/?p=1015"},"modified":"2013-04-02T22:53:34","modified_gmt":"2013-04-02T21:53:34","slug":"recreating-pattern_create-rb-in-python","status":"publish","type":"post","link":"https:\/\/www.phillips321.co.uk\/2013\/04\/02\/recreating-pattern_create-rb-in-python\/","title":{"rendered":"Recreating pattern_create.rb in python!"},"content":{"rendered":"<p>So, when you don&#8217;t have metasploit or ruby in your environment and you need to run pattern_create.rb what do you do?<\/p>\n<p>Well if you&#8217;ve got Python available you simply rewrite the code in python.<\/p>\n<p>Here&#8217;s the code (it&#8217;s used in exactly the same way as the metasploit version of pattern create):<\/p>\n<div class=\"codecolorer-container python vibrant\" style=\"overflow:auto;white-space:nowrap;width:100%;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/><\/div><\/td><td><div class=\"python codecolorer\"><span class=\"co1\">#!\/usr\/bin\/env python<\/span><br \/>\n<span class=\"co1\"># Author: phillips321<\/span><br \/>\n<span class=\"co1\"># Site: www.phillips321.co.uk<\/span><br \/>\n<span class=\"co1\"># Version 0.1<\/span><br \/>\n<span class=\"co1\"># Credits: metasploit project<\/span><br \/>\n<span class=\"co1\"># About: Replicates msf pattern_create.rb<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"kw3\">sys<\/span><br \/>\n<span class=\"kw1\">try<\/span>:length<span class=\"sy0\">=<\/span><span class=\"kw2\">int<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">except<\/span>:<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] Usage: %s &lt;length&gt; [set a] [set b] [set c]&quot;<\/span> % <span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span> <span class=\"kw3\">sys<\/span>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">try<\/span>:seta<span class=\"sy0\">=<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"kw1\">except<\/span>:seta<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;<\/span><br \/>\n<span class=\"kw1\">try<\/span>:setb<span class=\"sy0\">=<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">3<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"kw1\">except<\/span>:setb<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;abcdefghijklmnopqrstuvwxyz&quot;<\/span><br \/>\n<span class=\"kw1\">try<\/span>:setc<span class=\"sy0\">=<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">4<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"kw1\">except<\/span>:setc<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0123456789&quot;<\/span><br \/>\n<br \/>\n<span class=\"kw3\">string<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span> <span class=\"sy0\">;<\/span> a<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span> <span class=\"sy0\">;<\/span> b<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span> <span class=\"sy0\">;<\/span> c<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><br \/>\n<br \/>\n<span class=\"kw1\">while<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">string<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&lt;<\/span> length:<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">2<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">string<\/span> +<span class=\"sy0\">=<\/span> seta<span class=\"br0\">&#91;<\/span>a<span class=\"br0\">&#93;<\/span> + setb<span class=\"br0\">&#91;<\/span>b<span class=\"br0\">&#93;<\/span> + setc<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; c+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> c <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>setc<span class=\"br0\">&#41;<\/span>:c<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>b+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> b <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>setb<span class=\"br0\">&#41;<\/span>:b<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>a+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> a <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>seta<span class=\"br0\">&#41;<\/span>:a<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">elif<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">3<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[!] Error, cannot work with just one set!&quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] Usage: %s &lt;length&gt; [set a] [set b] [set c]&quot;<\/span> % <span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span> <span class=\"kw3\">sys<\/span>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">sys<\/span>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">elif<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">4<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">string<\/span> +<span class=\"sy0\">=<\/span> seta<span class=\"br0\">&#91;<\/span>a<span class=\"br0\">&#93;<\/span> + setb<span class=\"br0\">&#91;<\/span>b<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; b+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> b <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>setb<span class=\"br0\">&#41;<\/span>:b<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>a+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> a <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>seta<span class=\"br0\">&#41;<\/span>:a<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">elif<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"nu0\">5<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">string<\/span> +<span class=\"sy0\">=<\/span> seta<span class=\"br0\">&#91;<\/span>a<span class=\"br0\">&#93;<\/span> + setb<span class=\"br0\">&#91;<\/span>b<span class=\"br0\">&#93;<\/span> + setc<span class=\"br0\">&#91;<\/span>c<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; c+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> c <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>setc<span class=\"br0\">&#41;<\/span>:c<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>b+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> b <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>setb<span class=\"br0\">&#41;<\/span>:b<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>a+<span class=\"sy0\">=<\/span><span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> a <span class=\"sy0\">==<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span>seta<span class=\"br0\">&#41;<\/span>:a<span class=\"sy0\">=<\/span><span class=\"nu0\">0<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] Usage: %s &lt;length&gt; [set a] [set b] [set c]&quot;<\/span> % <span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span> <span class=\"kw3\">sys<\/span>.<span class=\"me1\">exit<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;-------------------------------------------------------------------------&quot;<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"kw3\">string<\/span><span class=\"br0\">&#91;<\/span>:length<span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;-------------------------------------------------------------------------&quot;<\/span><br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;Length: %i&quot;<\/span> % length<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] SetA: '%s'&quot;<\/span> % seta<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] SetB: '%s'&quot;<\/span> % setb<br \/>\n<span class=\"kw1\">if<\/span> <span class=\"kw2\">len<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">sys<\/span>.<span class=\"me1\">argv<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> <span class=\"nu0\">4<\/span>: <span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;[+] SetC: '%s'&quot;<\/span> % setc<br \/>\n<span class=\"kw1\">print<\/span> <span class=\"st0\">&quot;-------------------------------------------------------------------------&quot;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>From the looks of the <a href=\"https:\/\/github.com\/rapid7\/metasploit-framework\/blob\/master\/tools\/pattern_create.rb\" target=\"_blank\">pattern_create.rb code in the metasploit library<\/a> it doesn&#8217;t look like I&#8217;ve missed functionality. Would be good to know if I have any if anyone finds this useful.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, when you don&#8217;t have metasploit or ruby in your environment and you need to run pattern_create.rb what do you do? Well if you&#8217;ve got Python available you simply rewrite the code in python. Here&#8217;s the code (it&#8217;s used in exactly the same way as the metasploit version of pattern create): 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#!\/usr\/bin\/env python # Author: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[366,146,456,365,367,111,364],"_links":{"self":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1015"}],"collection":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/comments?post=1015"}],"version-history":[{"count":7,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1015\/revisions"}],"predecessor-version":[{"id":1309,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/posts\/1015\/revisions\/1309"}],"wp:attachment":[{"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/media?parent=1015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/categories?post=1015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phillips321.co.uk\/wp-json\/wp\/v2\/tags?post=1015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}