Gracefully fallback to sesion.ui.screenshot when espia is not supported

This commit is contained in:
adfoster-r7 2021-09-23 15:03:19 +01:00
parent 6072382666
commit e81f1b5687
No known key found for this signature in database
GPG Key ID: 3BD4FA3818818F04
1 changed files with 15 additions and 3 deletions

View File

@ -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)