@@ -107,47 +107,48 @@ class Core
107
107
# Returns the list of commands supported by this command dispatcher
108
108
def commands
109
109
{
110
- "?" => "Help menu" ,
111
- "back" => "Move back from the current context" ,
112
- "banner" => "Display an awesome metasploit banner" ,
113
- "cd" => "Change the current working directory" ,
114
- "connect" => "Communicate with a host" ,
115
- "color" => "Toggle color" ,
116
- "exit" => "Exit the console" ,
117
- "edit" => "Edit the current module with $VISUAL or $EDITOR" ,
118
- "get" => "Gets the value of a context-specific variable" ,
119
- "getg" => "Gets the value of a global variable" ,
120
- "go_pro" => "Launch Metasploit web GUI" ,
121
- "grep" => "Grep the output of another command" ,
122
- "help" => "Help menu" ,
123
- "info" => "Displays information about one or more module" ,
124
- "irb" => "Drop into irb scripting mode" ,
125
- "jobs" => "Displays and manages jobs" ,
126
- "kill" => "Kill a job" ,
127
- "load" => "Load a framework plugin" ,
128
- "loadpath" => "Searches for and loads modules from a path" ,
129
- "popm" => "Pops the latest module off the stack and makes it active" ,
130
- "pushm" => "Pushes the active or list of modules onto the module stack" ,
131
- "previous" => "Sets the previously loaded module as the current module" ,
132
- "quit" => "Exit the console" ,
133
- "resource" => "Run the commands stored in a file" ,
134
- "makerc" => "Save commands entered since start to a file" ,
110
+ "?" => "Help menu" ,
111
+ "back" => "Move back from the current context" ,
112
+ "banner" => "Display an awesome metasploit banner" ,
113
+ "cd" => "Change the current working directory" ,
114
+ "connect" => "Communicate with a host" ,
115
+ "color" => "Toggle color" ,
116
+ "exit" => "Exit the console" ,
117
+ "edit" => "Edit the current module with $VISUAL or $EDITOR" ,
118
+ "get" => "Gets the value of a context-specific variable" ,
119
+ "getg" => "Gets the value of a global variable" ,
120
+ "go_pro" => "Launch Metasploit web GUI" ,
121
+ "grep" => "Grep the output of another command" ,
122
+ "help" => "Help menu" ,
123
+ "info" => "Displays information about one or more module" ,
124
+ "irb" => "Drop into irb scripting mode" ,
125
+ "jobs" => "Displays and manages jobs" ,
126
+ "rename_job" => "Rename a job" ,
127
+ "kill" => "Kill a job" ,
128
+ "load" => "Load a framework plugin" ,
129
+ "loadpath" => "Searches for and loads modules from a path" ,
130
+ "popm" => "Pops the latest module off the stack and makes it active" ,
131
+ "pushm" => "Pushes the active or list of modules onto the module stack" ,
132
+ "previous" => "Sets the previously loaded module as the current module" ,
133
+ "quit" => "Exit the console" ,
134
+ "resource" => "Run the commands stored in a file" ,
135
+ "makerc" => "Save commands entered since start to a file" ,
135
136
"reload_all" => "Reloads all modules from all defined module paths" ,
136
- "route" => "Route traffic through a session" ,
137
- "save" => "Saves the active datastores" ,
138
- "search" => "Searches module names and descriptions" ,
139
- "sessions" => "Dump session listings and display information about sessions" ,
140
- "set" => "Sets a context-specific variable to a value" ,
141
- "setg" => "Sets a global variable to a value" ,
142
- "show" => "Displays modules of a given type, or all modules" ,
143
- "sleep" => "Do nothing for the specified number of seconds" ,
144
- "threads" => "View and manipulate background threads" ,
145
- "unload" => "Unload a framework plugin" ,
146
- "unset" => "Unsets one or more context-specific variables" ,
147
- "unsetg" => "Unsets one or more global variables" ,
148
- "use" => "Selects a module by name" ,
149
- "version" => "Show the framework and console library version numbers" ,
150
- "spool" => "Write console output into a file as well the screen"
137
+ "route" => "Route traffic through a session" ,
138
+ "save" => "Saves the active datastores" ,
139
+ "search" => "Searches module names and descriptions" ,
140
+ "sessions" => "Dump session listings and display information about sessions" ,
141
+ "set" => "Sets a context-specific variable to a value" ,
142
+ "setg" => "Sets a global variable to a value" ,
143
+ "show" => "Displays modules of a given type, or all modules" ,
144
+ "sleep" => "Do nothing for the specified number of seconds" ,
145
+ "threads" => "View and manipulate background threads" ,
146
+ "unload" => "Unload a framework plugin" ,
147
+ "unset" => "Unsets one or more context-specific variables" ,
148
+ "unsetg" => "Unsets one or more global variables" ,
149
+ "use" => "Selects a module by name" ,
150
+ "version" => "Show the framework and console library version numbers" ,
151
+ "spool" => "Write console output into a file as well the screen"
151
152
}
152
153
end
153
154
@@ -780,6 +781,50 @@ def cmd_irb(*args)
780
781
end
781
782
end
782
783
784
+ def cmd_rename_job_help
785
+ print_line "Usage: rename_job [ID] [Name]"
786
+ print_line
787
+ print_line "Example: rename_job 0 \" meterpreter HTTPS special\" "
788
+ print_line
789
+ print_line "Rename a job that's currently active."
790
+ print_line "You may use the jobs command to see what jobs are available."
791
+ print_line
792
+ end
793
+
794
+ def cmd_rename_job ( *args )
795
+ if args . include? ( '-h' ) || args . length != 2 || args [ 0 ] !~ /^\d +$/
796
+ cmd_rename_job_help
797
+ return false
798
+ end
799
+
800
+ job_id = args [ 0 ] . to_s
801
+ job_name = args [ 1 ] . to_s
802
+
803
+ unless framework . jobs [ job_id ]
804
+ print_error ( "Job #{ job_id } does not exist." )
805
+ return false
806
+ end
807
+
808
+ # This is not respecting the Protected access control, but this seems to be the only way
809
+ # to rename a job. If you know a more appropriate way, patches accepted.
810
+ framework . jobs [ job_id ] . send ( :name= , job_name )
811
+ print_status ( "Job #{ job_id } updated" )
812
+
813
+ true
814
+ end
815
+
816
+ #
817
+ # Tab completion for the rename_job command
818
+ #
819
+ # @param str [String] the string currently being typed before tab was hit
820
+ # @param words [Array<String>] the previously completed words on the command line. words is always
821
+ # at least 1 when tab completion has reached this stage since the command itself has been completed
822
+
823
+ def cmd_rename_job_tabs ( str , words )
824
+ return [ ] if words . length > 1
825
+ framework . jobs . keys
826
+ end
827
+
783
828
def cmd_jobs_help
784
829
print_line "Usage: jobs [options]"
785
830
print_line
0 commit comments