/* * The command tab panel. Listing the list of commands sent to the zombie. * Loaded in /ui/panel/index.html */ ZombieTab_Commands = function(zombie) { var command_module_config = new Ext.Panel({ id: 'zombie-command-module-config-'+zombie.session, region: 'center', border: false, layout: 'fit', html: "
Please select an command module in the command module tree on the left
" }); var command_module_grid = new Ext.grid.GridPanel({ store: new Ext.data.JsonStore({ url: '/ui/modules/commandmodule/commands.json', params: { // insert the nonce with the form nonce: Ext.get ("nonce").dom.value }, autoDestroy: false, autoLoad: false, root: 'commands', fields: ['label', 'creationdate', 'id', 'object_id'], sortInfo: {field: 'id', direction: 'ASC'} }), id: 'command-module-grid-zombie-'+zombie.session, sortable: true, autoWidth: false, region: 'west', stripeRows: true, autoScroll: true, border: false, width: 260, bodyStyle: 'border-right: 1px solid #99BBE8; border-left: 1px solid #99BBE8;', i:0, view: new Ext.grid.GridView({ forceFit: true, emptyText: "The results from executed command modules will be listed here.", enableRowBody:true }), columns: [ {header: 'id', width: 35, sortable: true, dataIndex: 'id'}, {header: 'date', width: 100, sortable: true, dataIndex: 'creationdate'}, {header: 'label', sortable: true, dataIndex: 'label', renderer: function(value) { if(value==null) {command_module_grid.i +=1; return 'command '+command_module_grid.i;} else return value;}}, {header: 'object_id', sortable: true, dataIndex: 'object_id', hidden: true, menuDisabled: true} ] }); command_module_grid.on('rowclick', function(grid, rowIndex, e) { var r = grid.getStore().getAt(rowIndex).data; var command_id = r.object_id || null; if(!command_id) return; genExisingExploitPanel(command_module_config, command_id, zombie, commands_statusbar); }); var command_module_tree = new Ext.tree.TreePanel({ border: false, region: 'west', width: 190, useArrows: true, autoScroll: true, animate: true, containerScroll: true, rootVisible: false, root: {nodeType: 'async'}, loader: new Ext.tree.TreeLoader({ dataUrl: '/ui/modules/select/commandmodules/tree.json', baseParams: {zombie_session: zombie.session} }), listeners: { 'click': function(node) { if(!node.leaf) return; commands_statusbar.showBusy('Loading ' + node.text); command_module_grid.i = 0; command_module_grid.store.baseParams = {command_module_id: node.attributes.id, zombie_session: zombie.session}; command_module_grid.store.reload({ //reload the command module grid params: { // insert the nonce with the request to reload the grid nonce: Ext.get ("nonce").dom.value } }); genNewExploitPanel(command_module_config, node.id, node.text, zombie, commands_statusbar); commands_statusbar.showValid('Ready'); }, 'afterrender' : function() { } } }); var commands_statusbar = new Beef_StatusBar(zombie.session); ZombieTab_Commands.superclass.constructor.call(this, { id: 'zombie-'+zombie.session+'-command-module-panel', title:'Commands', layout: 'fit', region: 'center', autScroll: true, items: { layout: 'border', border: false, items: [command_module_tree, new Ext.Panel({ id: 'zombie-command-module-west-'+zombie.session, region: 'center', layout: 'fit', border: false, items: { layout: 'border', border: false, items: [command_module_grid, command_module_config] } })] }, bbar: commands_statusbar }); var sb = Ext.getCmp('command-module-bbar-zombie-'+zombie.session); }; Ext.extend(ZombieTab_Commands, Ext.Panel, {});