module PWN::Plugins::Android
def self.adb_net_connect(opts = {})
def self.adb_net_connect(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) get].to_s.scrub rt] t].to_i ct #{target}:#{port}` => e
def self.adb_net_disconnect(opts = {})
def self.adb_net_disconnect(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) get].to_s.scrub rt] t].to_i nnect #{target}:#{port}` => e
def self.adb_pull(opts = {})
def self.adb_pull(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) .to_s.scrub .to_s.scrub :as_root] if as_root #{file} #{dest}` => e
def self.adb_push(opts = {})
def self.adb_push(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) .to_s.scrub .to_s.scrub :as_root] if as_root #{file} #{dest}` => e
def self.adb_sh(opts = {})
def self.adb_sh(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) mmand].to_s.scrub :as_root] if as_root #{command}` => e
def self.authors
def self.authors st.pentest@0dayinc.com>
def self.close_app(opts = {})
def self.close_app(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) o_s.scrub :as_root] if as_root am force-stop #{app}` => e
def self.dumpsys(opts = {})
def self.dumpsys(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) o_s.scrub :as_root] if as_root #{adb_path} shell dumpsys` #{adb_path} shell dumpsys package #{app}` => e
def self.find_hidden_codes(opts = {})
def self.find_hidden_codes(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) .to_i i [:interact] |n| nvoking keyevent: #{n}") } shell input keyevent #{n}` nter to continue...' => e
def self.help
def self.help connect( uired - path to adb binary', red - target host or IP to connect', l - defaults to tcp 5555' {self}.adb_sh( uired - path to adb binary', command to execute' onal - boolean (defaults to false)', ( uired - path to adb binary', d - source file to push', d - destination path to push file', onal - boolean (defaults to false)', ( uired - path to adb binary', d - source file to pull', d - destination path to pull file', onal - boolean (defaults to false)', eenshot( uired - path to adb binary', l - destination path to save screenshot file (defaults to /sdcard/screen.png)', onal - boolean (defaults to true)' ecord( uired - path to adb binary', l - destination path to save screen record file (defaults to /sdcard/screen.mp4)', onal - boolean (defaults to true)' rr = #{self}.list_installed_apps( uired - path to adb binary', onal - boolean (defaults to false)', {self}.dumpsys( uired - path to adb binary', - application app to detail otherwise display all (i.e. display info from an android app returned from #list_install_apps method)', onal - boolean (defaults to false)', {self}.open_app( uired - path to adb binary', - application app to run (i.e. open an android app returned from #list_install_apps method)', onal - boolean (defaults to false)' den_codes( uired - path to adb binary', d - start at keycode #' - end at keycode #', ional - defaults to false' uired - path to adb binary', quired - direction to swipe (:up|:down|:left|:right)' uired - path to adb binary', red - string to type' ecial( uired - path to adb binary', ed - special event to invoke ( kaku| t| e| ogramming| ial_digital| ial_analog| e_teletext| e_service| e| e_bs| e_cs| rvice| ntry| ntext_menu| a1| mi1| mi2| mi3| mi4| mposite1| mposite2| mponent1| mponent2| vice| _menu| sc| sc_mix_up| sc_mix_down| cable| set| y| | | ract| iply| _paren| t_paren| ls| r| a| s| enu| forward| back| forward| back| d| | | _track| | l| itch| ragana| e| ect| rt| mbl| mbr| up| down| eft| ight| t| ht| | | | | n| pause| ous| d| forward| | veloper.android.com/reference/android/view/KeyEvent.html for more info' {self}.close_app( uired - path to adb binary', - application app to run (i.e. open an android app returned from #list_install_apps method)', onal - boolean (defaults to false)' vent_listener( uired - path to adb binary', onal - boolean (defaults to false)', disconnect( uired - path to adb binary', red - target host or IP to connect', l - defaults to tcp 5555'
def self.input(opts = {})
def self.input(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) ing].to_s.scrub o |char| #{adb_path} shell input keyevent KEYCODE_0` #{adb_path} shell input keyevent KEYCODE_1` #{adb_path} shell input keyevent KEYCODE_2` #{adb_path} shell input keyevent KEYCODE_3` #{adb_path} shell input keyevent KEYCODE_4` #{adb_path} shell input keyevent KEYCODE_5` #{adb_path} shell input keyevent KEYCODE_6` #{adb_path} shell input keyevent KEYCODE_7` #{adb_path} shell input keyevent KEYCODE_8` #{adb_path} shell input keyevent KEYCODE_9` #{adb_path} shell input keyevent KEYCODE_STAR` #{adb_path} shell input keyevent KEYCODE_POUND` #{adb_path} shell input text '\\}'` #{adb_path} shell input text '\\{'` #{adb_path} shell input text '\\"'` #{adb_path} shell input text '\\?'` #{adb_path} shell input text '\\<'` #{adb_path} shell input text '\\>'` #{adb_path} shell input text '%'` #{adb_path} shell input text ':'` #{adb_path} shell input text '$'` #{adb_path} shell input text '!'` #{adb_path} shell input text '~'` #{adb_path} shell input text '\\|'` #{adb_path} shell input text '\\&'` #{adb_path} shell input text '^'` #{adb_path} shell input text '_'` #{adb_path} shell input text 'A'` #{adb_path} shell input text 'B'` #{adb_path} shell input text 'C'` #{adb_path} shell input text 'D'` #{adb_path} shell input text 'E'` #{adb_path} shell input text 'F'` #{adb_path} shell input text 'G'` #{adb_path} shell input text 'H'` #{adb_path} shell input text 'I'` #{adb_path} shell input text 'J'` #{adb_path} shell input text 'K'` #{adb_path} shell input text 'L'` #{adb_path} shell input text 'M'` #{adb_path} shell input text 'N'` #{adb_path} shell input text 'O'` #{adb_path} shell input text 'P'` #{adb_path} shell input text 'Q'` #{adb_path} shell input text 'R'` #{adb_path} shell input text 'S'` #{adb_path} shell input text 'T'` #{adb_path} shell input text 'U'` #{adb_path} shell input text 'V'` #{adb_path} shell input text 'W'` #{adb_path} shell input text 'X'` #{adb_path} shell input text 'Y'` #{adb_path} shell input text 'Z'` #{adb_path} shell input keyevent KEYCODE_A` #{adb_path} shell input keyevent KEYCODE_B` #{adb_path} shell input keyevent KEYCODE_C` #{adb_path} shell input keyevent KEYCODE_D` #{adb_path} shell input keyevent KEYCODE_E` #{adb_path} shell input keyevent KEYCODE_F` #{adb_path} shell input keyevent KEYCODE_G` #{adb_path} shell input keyevent KEYCODE_H` #{adb_path} shell input keyevent KEYCODE_I` #{adb_path} shell input keyevent KEYCODE_J` #{adb_path} shell input keyevent KEYCODE_K` #{adb_path} shell input keyevent KEYCODE_L` #{adb_path} shell input keyevent KEYCODE_M` #{adb_path} shell input keyevent KEYCODE_N` #{adb_path} shell input keyevent KEYCODE_O` #{adb_path} shell input keyevent KEYCODE_P` #{adb_path} shell input keyevent KEYCODE_Q` #{adb_path} shell input keyevent KEYCODE_R` #{adb_path} shell input keyevent KEYCODE_S` #{adb_path} shell input keyevent KEYCODE_T` #{adb_path} shell input keyevent KEYCODE_U` #{adb_path} shell input keyevent KEYCODE_V` #{adb_path} shell input keyevent KEYCODE_W` #{adb_path} shell input keyevent KEYCODE_X` #{adb_path} shell input keyevent KEYCODE_Y` #{adb_path} shell input keyevent KEYCODE_Z` #{adb_path} shell input keyevent KEYCODE_COMMA` #{adb_path} shell input keyevent KEYCODE_PERIOD` #{adb_path} shell input keyevent KEYCODE_SPACE` #{adb_path} shell input keyevent KEYCODE_GRAVE` #{adb_path} shell input keyevent KEYCODE_MINUS` #{adb_path} shell input keyevent KEYCODE_EQUALS` #{adb_path} shell input keyevent KEYCODE_LEFT_BRACKET` #{adb_path} shell input keyevent KEYCODE_RIGHT_BRACKET` #{adb_path} shell input keyevent KEYCODE_BACKSLASH` #{adb_path} shell input keyevent KEYCODE_SEMICOLON` #{adb_path} shell input keyevent KEYCODE_APOSTROPHE` #{adb_path} shell input keyevent KEYCODE_SLASH` #{adb_path} shell input keyevent KEYCODE_AT` #{adb_path} shell input keyevent KEYCODE_PLUS` #{adb_path} shell input keyevent KEYCODE_LEFT_PAREN` #{adb_path} shell input keyevent KEYCODE_RIGHT_PAREN` unknown char: #{char}" ub => e
def self.input_special(opts = {})
def self.input_special(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) t].to_s.scrub.to_sym b_path} shell input keyevent KEYCODE_ZOOM_IN` b_path} shell input keyevent KEYCODE_ZOOM_OUT` aku b_path} shell input keyevent KEYCODE_ZENKAKU_HANKAKU` b_path} shell input keyevent KEYCODE_YEN` b_path} shell input keyevent KEYCODE_WINDOW` b_path} shell input keyevent KEYCODE_WAKEUP` b_path} shell input keyevent KEYCODE_VOICE_ASSIST` b_path} shell input keyevent KEYCODE_TV_ZOOM_MODE` gramming b_path} shell input keyevent KEYCODE_TV_TIMER_PROGRAMMING` al_digital b_path} shell input keyevent KEYCODE_TV_TERRESTRIAL_DIGITAL` al_analog b_path} shell input keyevent KEYCODE_TV_TERRESTRIAL_ANALOG` _teletext b_path} shell input keyevent KEYCODE_TV_SATELLITE_TELETEXT` _service b_path} shell input keyevent KEYCODE_TV_SATELLITE_SERVICE` _bs b_path} shell input keyevent KEYCODE_TV_SATELLITE_BS` _cs b_path} shell input keyevent KEYCODE_TV_SATELLITE_CS` b_path} shell input keyevent KEYCODE_TV_SATELLITE` vice b_path} shell input keyevent KEYCODE_TV_RADIO_SERVICE` b_path} shell input keyevent KEYCODE_TV_POWER` try b_path} shell input keyevent KEYCODE_TV_NUMBER_ENTRY` b_path} shell input keyevent KEYCODE_TV_NETWORK` text_menu b_path} shell input keyevent KEYCODE_TV_MEDIA_CONTEXT_MENU` 1 b_path} shell input keyevent KEYCODE_TV_INPUT_VGA_1` i1 b_path} shell input keyevent KEYCODE_TV_INPUT_HDMI_1` i2 b_path} shell input keyevent KEYCODE_TV_INPUT_HDMI_2` i3 b_path} shell input keyevent KEYCODE_TV_INPUT_HDMI_3` i4 b_path} shell input keyevent KEYCODE_TV_INPUT_HDMI_4` posite1 b_path} shell input keyevent KEYCODE_TV_INPUT_COMPOSITE_1` posite2 b_path} shell input keyevent KEYCODE_TV_INPUT_COMPOSITE_2` ponent1 b_path} shell input keyevent KEYCODE_TV_INPUT_COMPONENT_1` ponent2 b_path} shell input keyevent KEYCODE_TV_INPUT_COMPONENT_2` b_path} shell input keyevent KEYCODE_TV_INPUT` ice b_path} shell input keyevent KEYCODE_TV_DATA_SERVICE` menu b_path} shell input keyevent KEYCODE_TV_CONTENTS_MENU` c b_path} shell input keyevent KEYCODE_TV_AUDIO_DESCRIPTION` c_mix_up b_path} shell input keyevent KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP` c_mix_down b_path} shell input keyevent KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN` able b_path} shell input keyevent KEYCODE_TV_ANTENNA_CABLE` b_path} shell input keyevent KEYCODE_TV` b_path} shell input keyevent KEYCODE_SYSRQ` et b_path} shell input keyevent KEYCODE_SWITCH_CHARSET` b_path} shell input keyevent KEYCODE_STEM_PRIMARY` b_path} shell input keyevent KEYCODE_STEM_1` b_path} shell input keyevent KEYCODE_STEM_2` b_path} shell input keyevent KEYCODE_STEM_3` b_path} shell input keyevent KEYCODE_STB_POWER` b_path} shell input keyevent KEYCODE_STB_INPUT` b_path} shell input keyevent KEYCODE_SLEEP` b_path} shell input keyevent KEYCODE_SETTINGS` b_path} shell input keyevent KEYCODE_SCROLL_LOCK` b_path} shell input keyevent KEYCODE_RO` b_path} shell input keyevent KEYCODE_PROG_BLUE` b_path} shell input keyevent KEYCODE_PROG_GREEN` b_path} shell input keyevent KEYCODE_PROG_RED` b_path} shell input keyevent KEYCODE_PROG_YELLOW` b_path} shell input keyevent KEYCODE_PARING` b_path} shell input keyevent KEYCODE_NUM_LOCK` act b_path} shell input keyevent KEYCODE_NUMPAD_SUBTRACT` ply b_path} shell input keyevent KEYCODE_NUMPAD_MULTIPLY` paren b_path} shell input keyevent KEYCODE_NUMPAD_LEFT_PAREN` _paren b_path} shell input keyevent KEYCODE_NUMPAD_RIGHT_PAREN` s b_path} shell input keyevent KEYCODE_NUMPAD_EQUALS` b_path} shell input keyevent KEYCODE_NUMPAD_ENTER` b_path} shell input keyevent KEYCODE_NUMPAD_DOT` e b_path} shell input keyevent KEYCODE_NUMPAD_DIVIDE` b_path} shell input keyevent KEYCODE_NUMPAD_COMMA` b_path} shell input keyevent KEYCODE_NUMPAD_ADD` b_path} shell input keyevent KEYCODE_NUMPAD_0` b_path} shell input keyevent KEYCODE_NUMPAD_1` b_path} shell input keyevent KEYCODE_NUMPAD_2` b_path} shell input keyevent KEYCODE_NUMPAD_3` b_path} shell input keyevent KEYCODE_NUMPAD_4` b_path} shell input keyevent KEYCODE_NUMPAD_5` b_path} shell input keyevent KEYCODE_NUMPAD_6` b_path} shell input keyevent KEYCODE_NUMPAD_7` b_path} shell input keyevent KEYCODE_NUMPAD_8` b_path} shell input keyevent KEYCODE_NUMPAD_9` b_path} shell input keyevent KEYCODE_NUM` b_path} shell input keyevent KEYCODE_NAVIGATE_IN` b_path} shell input keyevent KEYCODE_NAVIGATE_NEXT` b_path} shell input keyevent KEYCODE_NAVIGATE_OUT` b_path} shell input keyevent KEYCODE_NAVIGATE_PREVIOUS` b_path} shell input keyevent KEYCODE_MUSIC` b_path} shell input keyevent KEYCODE_MUHENKAN` b_path} shell input keyevent KEYCODE_META_LEFT` b_path} shell input keyevent KEYCODE_META_RIGHT` nu b_path} shell input keyevent KEYCODE_MEDIA_TOP_MENU` orward b_path} shell input keyevent KEYCODE_MEDIA_STEP_FORWARD` ack b_path} shell input keyevent KEYCODE_MEDIA_STEP_BACKWARD` orward b_path} shell input keyevent KEYCODE_MEDIA_SKIP_FORWARD` ack b_path} shell input keyevent KEYCODE_MEDIA_SKIP_BACKWARD` b_path} shell input keyevent KEYCODE_MEDIA_RECORD` b_path} shell input keyevent KEYCODE_MEDIA_PLAY` b_path} shell input keyevent KEYCODE_MEDIA_PAUSE` b_path} shell input keyevent KEYCODE_MEDIA_EJECT` b_path} shell input keyevent KEYCODE_MEDIA_CLOSE` track b_path} shell input keyevent KEYCODE_MEDIA_AUDIO_TRACK` b_path} shell input keyevent KEYCODE_MANNER_MODE` b_path} shell input keyevent KEYCODE_LAST_CHANNEL` tch b_path} shell input keyevent KEYCODE_LANGUAGE_SWITCH` agana b_path} shell input keyevent KEYCODE_KATAKANA_HIRAGANA` b_path} shell input keyevent KEYCODE_KANA` b_path} shell input keyevent KEYCODE_INSERT` b_path} shell input keyevent KEYCODE_INFO` b_path} shell input keyevent KEYCODE_HENKAN` b_path} shell input keyevent KEYCODE_HELP` b_path} shell input keyevent KEYCODE_GUIDE` b_path} shell input keyevent KEYCODE_FUNCTION` b_path} shell input keyevent KEYCODE_FORWARD_DEL` b_path} shell input keyevent KEYCODE_F1` b_path} shell input keyevent KEYCODE_F2` b_path} shell input keyevent KEYCODE_F3` b_path} shell input keyevent KEYCODE_F4` b_path} shell input keyevent KEYCODE_F5` b_path} shell input keyevent KEYCODE_F6` b_path} shell input keyevent KEYCODE_F7` b_path} shell input keyevent KEYCODE_F8` b_path} shell input keyevent KEYCODE_F9` b_path} shell input keyevent KEYCODE_F10` b_path} shell input keyevent KEYCODE_F11` b_path} shell input keyevent KEYCODE_F12` b_path} shell input keyevent KEYCODE_ESCAPE` b_path} shell input keyevent KEYCODE_EISU` b_path} shell input keyevent KEYCODE_DVR` b_path} shell input keyevent KEYCODE_CTRL_LEFT` b_path} shell input keyevent KEYCODE_CTRL_RIGHT` b_path} shell input keyevent KEYCODE_CUT` b_path} shell input keyevent KEYCODE_COPY` b_path} shell input keyevent KEYCODE_PASTE` b_path} shell input keyevent KEYCODE_CONTACTS` b_path} shell input keyevent KEYCODE_CHANNEL_DOWN` b_path} shell input keyevent KEYCODE_CHANNEL_UP` b_path} shell input keyevent KEYCODE_CAPTIONS` b_path} shell input keyevent KEYCODE_CAPS_LOCK` b_path} shell input keyevent KEYCODE_CALENDAR` b_path} shell input keyevent KEYCODE_CALCULATOR` b_path} shell input keyevent KEYCODE_BUTTON_1` b_path} shell input keyevent KEYCODE_BUTTON_2` b_path} shell input keyevent KEYCODE_BUTTON_3` b_path} shell input keyevent KEYCODE_BUTTON_4` b_path} shell input keyevent KEYCODE_BUTTON_5` b_path} shell input keyevent KEYCODE_BUTTON_6` b_path} shell input keyevent KEYCODE_BUTTON_7` b_path} shell input keyevent KEYCODE_BUTTON_8` b_path} shell input keyevent KEYCODE_BUTTON_9` b_path} shell input keyevent KEYCODE_BUTTON_10` b_path} shell input keyevent KEYCODE_BUTTON_11` b_path} shell input keyevent KEYCODE_BUTTON_12` b_path} shell input keyevent KEYCODE_BUTTON_13` b_path} shell input keyevent KEYCODE_BUTTON_14` b_path} shell input keyevent KEYCODE_BUTTON_15` b_path} shell input keyevent KEYCODE_BUTTON_16` b_path} shell input keyevent KEYCODE_BUTTON_A` b_path} shell input keyevent KEYCODE_BUTTON_B` b_path} shell input keyevent KEYCODE_BUTTON_C` b_path} shell input keyevent KEYCODE_BUTTON_L1` b_path} shell input keyevent KEYCODE_BUTTON_L2` b_path} shell input keyevent KEYCODE_BUTTON_MODE` b_path} shell input keyevent KEYCODE_BUTTON_R1` b_path} shell input keyevent KEYCODE_BUTTON_R2` ct b_path} shell input keyevent KEYCODE_BUTTON_SELECT` t b_path} shell input keyevent KEYCODE_BUTTON_START` bl b_path} shell input keyevent KEYCODE_BUTTON_THUMBL` br b_path} shell input keyevent KEYCODE_BUTTON_THUMBR` b_path} shell input keyevent KEYCODE_BUTTON_X` b_path} shell input keyevent KEYCODE_BUTTON_Y` b_path} shell input keyevent KEYCODE_BUTTON_Z` p b_path} shell input keyevent KEYCODE_BRIGHTNESS_UP` own b_path} shell input keyevent KEYCODE_BRIGHTNESS_DOWN` b_path} shell input keyevent KEYCODE_BREAK` b_path} shell input keyevent KEYCODE_BOOKMARK` b_path} shell input keyevent KEYCODE_AVR_POWER` b_path} shell input keyevent KEYCODE_AVR_INPUT` b_path} shell input keyevent KEYCODE_ASSIST` b_path} shell input keyevent KEYCODE_APP_SWITCH` b_path} shell input keyevent KEYCODE_3D_MODE` b_path} shell input keyevent KEYCODE_11` b_path} shell input keyevent KEYCODE_12` b_path} shell input keyevent KEYCODE_UNKNOWN` b_path} shell input keyevent KEYCODE_SOFT_LEFT` b_path} shell input keyevent KEYCODE_SOFT_RIGHT` b_path} shell input keyevent KEYCODE_SOFT_SLEEP` b_path} shell input keyevent KEYCODE_HOME` b_path} shell input keyevent KEYCODE_FORWARD` b_path} shell input keyevent KEYCODE_BACK` b_path} shell input keyevent KEYCODE_CALL` b_path} shell input keyevent KEYCODE_ENDCALL` b_path} shell input keyevent KEYCODE_DPAD_UP` b_path} shell input keyevent KEYCODE_DPAD_DOWN` b_path} shell input keyevent KEYCODE_DPAD_LEFT` b_path} shell input keyevent KEYCODE_DPAD_RIGHT` ft b_path} shell input keyevent KEYCODE_DPAD_DOWN_LEFT` ght b_path} shell input keyevent KEYCODE_DPAD_DOWN_RIGHT` b_path} shell input keyevent KEYCODE_DPAD_UP_LEFT` t b_path} shell input keyevent KEYCODE_DPAD_UP_RIGHT` b_path} shell input keyevent KEYCODE_DPAD_CENTER` b_path} shell input keyevent KEYCODE_VOLUME_UP` b_path} shell input keyevent KEYCODE_VOLUME_DOWN` b_path} shell input keyevent KEYCODE_POWER` b_path} shell input keyevent KEYCODE_CAMERA` b_path} shell input keyevent KEYCODE_CLEAR` b_path} shell input keyevent KEYCODE_ALT_LEFT` b_path} shell input keyevent KEYCODE_ALT_RIGHT` b_path} shell input keyevent KEYCODE_SHIFT_LEFT` b_path} shell input keyevent KEYCODE_SHIFT_RIGHT` b_path} shell input keyevent KEYCODE_TAB` b_path} shell input keyevent KEYCODE_SYM` b_path} shell input keyevent KEYCODE_EXPLORER` b_path} shell input keyevent KEYCODE_ENVELOPE` b_path} shell input keyevent KEYCODE_ENTER` b_path} shell input keyevent KEYCODE_DEL` b_path} shell input keyevent KEYCODE_HEADSETHOOK` b_path} shell input keyevent KEYCODE_FOCUS` b_path} shell input keyevent KEYCODE_MENU` b_path} shell input touchscreen swipe 0 0 0 1500 100` b_path} shell input keyevent KEYCODE_NOTIFICATION` b_path} shell input keyevent KEYCODE_SEARCH` ause b_path} shell input keyevent KEYCODE_MEDIA_PLAY_PAUSE` b_path} shell input keyevent KEYCODE_MEDIA_STOP` b_path} shell input keyevent KEYCODE_MEDIA_NEXT` us b_path} shell input keyevent KEYCODE_MEDIA_PREVIOUS` b_path} shell input keyevent KEYCODE_MEDIA_REWIND` orward b_path} shell input keyevent KEYCODE_MEDIA_FAST_FORWARD` b_path} shell input keyevent KEYCODE_MUTE` b_path} shell input keyevent KEYCODE_PAGE_UP` b_path} shell input keyevent KEYCODE_PAGE_DOWN` b_path} shell input keyevent KEYCODE_PICTSYMBOLS` b_path} shell input keyevent KEYCODE_MOVE_HOME` b_path} shell input keyevent KEYCODE_MOVE_END` known special event: #{event}" b => e
def self.invoke_event_listener(opts = {})
def self.invoke_event_listener(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) o_s.scrub :as_root] if as_root getevent -l` => e
def self.list_installed_apps(opts = {})
def self.list_installed_apps(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) :as_root] if as_root path} shell pm list packages` if as_root path} shell pm list packages --user 0` unless as_root ackage:", "\n").split("\n") => e
def self.open_app(opts = {})
def self.open_app(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) o_s.scrub :as_root] if as_root monkey -p #{app} -c android.intent.category.LAUNCHER 1` => e
def self.screen_record(opts = {})
def self.screen_record(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) st] t].to_s.scrub screen.mp4' :as_root] ss CTRL+C to complete...') if as_root screenrecord #{dest}` => e
def self.swipe(opts = {})
def self.swipe(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) direction].to_s.scrub.to_sym adb_path} shell input touchscreen swipe 300 1500 300 600 100` adb_path} shell input touchscreen swipe 300 600 300 1500 100` adb_path} shell input touchscreen swipe 1000 1000 90 1000 100` adb_path} shell input touchscreen swipe 90 1000 1000 1000 100` known direction to swipe: #{direction}" rub => e
def self.take_screenshot(opts = {})
def self.take_screenshot(opts = {}) db_path].to_s.scrub if File.exist?(opts[:adb_path].to_s.scrub) st] t].to_s.scrub screen.png' :as_root] if as_root screencap -p #{dest}` => e