Class: Rex::Post::Meterpreter::Extensions::Python::Python
- Inherits:
-
Rex::Post::Meterpreter::Extension
- Object
- Rex::Post::Meterpreter::Extension
- Rex::Post::Meterpreter::Extensions::Python::Python
- Defined in:
- lib/rex/post/meterpreter/extensions/python/python.rb
Overview
Python extension - gives remote python scripting capabilities on the target.
Constant Summary collapse
- PY_CODE_TYPE_STRING =
0
- PY_CODE_TYPE_PY =
1
- PY_CODE_TYPE_PYC =
2
- PY_CODE_FILE_TYPES =
[ '.py', '.pyc' ]
- PY_CODE_FILE_TYPE_MAP =
{ '.py' => PY_CODE_TYPE_PY, '.pyc' => PY_CODE_TYPE_PYC }
Instance Attribute Summary
Attributes inherited from Rex::Post::Meterpreter::Extension
Instance Method Summary collapse
-
#execute_string(code, result_var) ⇒ Hash<Symbol,Object>
Dump the LSA secrets from the target machine.
- #import(file, mod_name, result_var) ⇒ Object
-
#initialize(client) ⇒ Python
constructor
Typical extension initialization routine.
- #reset ⇒ Object
Constructor Details
#initialize(client) ⇒ Python
Typical extension initialization routine.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rex/post/meterpreter/extensions/python/python.rb', line 35 def initialize(client) super(client, 'python') client.register_extension_aliases( [ { 'name' => 'python', 'ext' => self } ]) end |
Instance Method Details
#execute_string(code, result_var) ⇒ Hash<Symbol,Object>
Dump the LSA secrets from the target machine.
80 81 82 83 84 85 86 87 |
# File 'lib/rex/post/meterpreter/extensions/python/python.rb', line 80 def execute_string(code, result_var) request = Packet.create_request('python_execute') request.add_tlv(TLV_TYPE_PYTHON_CODE, code) request.add_tlv(TLV_TYPE_PYTHON_CODE_TYPE, PY_CODE_TYPE_STRING) request.add_tlv(TLV_TYPE_PYTHON_RESULT_VAR, result_var) if result_var run_exec_request(request) end |
#import(file, mod_name, result_var) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rex/post/meterpreter/extensions/python/python.rb', line 54 def import(file, mod_name, result_var) unless ::File.file?(file) raise ArgumentError, "File not found: #{file}" end ext = ::File.extname(file).downcase unless PY_CODE_FILE_TYPES.include?(ext) raise ArgumentError, "File not a valid type: #{file}" end code = ::File.read(file) request = Packet.create_request('python_execute') request.add_tlv(TLV_TYPE_PYTHON_CODE, code) request.add_tlv(TLV_TYPE_PYTHON_CODE_LEN, code.length) request.add_tlv(TLV_TYPE_PYTHON_CODE_TYPE, PY_CODE_FILE_TYPE_MAP[ext]) request.add_tlv(TLV_TYPE_PYTHON_NAME, mod_name) if mod_name request.add_tlv(TLV_TYPE_PYTHON_RESULT_VAR, result_var) if result_var run_exec_request(request) end |
#reset ⇒ Object
47 48 49 50 51 52 |
# File 'lib/rex/post/meterpreter/extensions/python/python.rb', line 47 def reset request = Packet.create_request('python_reset') client.send_request(request) return true end |