def main(): # creates the ADB object adb = ADB() # IMPORTANT: You should supply the absolute path to ADB binary if adb.set_adb_path( '/home/chema/.android-sdks/platform-tools/adb') is True: print("Version: %s" % adb.get_version()) else: print("Check ADB binary path") print("Waiting for device...") adb.wait_for_device() err, dev = adb.get_devices() if len(dev) == 0: print("Unexpected error, may be you're a very fast guy?") return print("Selecting: %s" % dev[0]) adb.set_target_device(dev[0]) print("Executing 'ls' command") adb.shell_command('ls') print("Output:\n%s" % adb.get_output())
def update_db(): adb = ADB() adb.set_adb_path('adb') adb.connect_remote(smartphone_addr) cmd = "su -c 'cat /data/data/com.android.providers.telephony/databases/mmssms.db > /sdcard/mmssms.db'" adb.shell_command(cmd) adb.get_remote_file('/sdcard/mmssms.db','./') cmd = "su -c 'rm /sdcard/mmssms.db'" adb.shell_command(cmd)
def main(): # creates the ADB object adb = ADB() # IMPORTANT: You should supply the absolute path to ADB binary if adb.set_adb_path('/usr/bin/adb') is True: print("Version: %s" % adb.get_version()) else: print("Check ADB binary path") apps = adb.shell_command("pm list packages") for app in apps: path = adb.shell_command("pm path {}".format(app.split(':')[1])) print("{}: {}".format(app, path))
def main(): # creates the ADB object adb = ADB() # set ADB path, using a couple of popular addresses. try: adb.set_adb_path('~/android-sdk-linux/platform-tools/adb') except ADB.BadCall: adb.set_adb_path(r'C:\Android\android-sdk\platform-tools\adb.exe') apps, error = adb.shell_command("pm list packages") for app in apps: path, error = adb.shell_command("pm path {}".format(app.split(':')[1])) print(("{}: {}".format(app, path)))
def main(): # creates the ADB object adb = ADB() # IMPORTANT: You should supply the absolute path to ADB binary if adb.set_adb_path('/usr/bin/adb') is True: print ("Version: %s" % adb.get_version()) else: print ("Check ADB binary path") apps = adb.shell_command("pm list packages") for app in apps: path = adb.shell_command("pm path {}".format(app.split(':')[1])) print ("{}: {}".format(app,path))
def main(): # creates the ADB object adb = ADB() # set ADB path, using a couple of popular addresses. try: adb.set_adb_path('~/android-sdk-linux/platform-tools/adb') except ADB.BadCall: adb.set_adb_path(r'C:\Android\android-sdk\platform-tools\adb.exe') print("Version: %s" % adb.get_version()) print("Waiting for device...") adb.wait_for_device() dev = adb.get_devices() if len(dev) == 0: print("Unexpected error, may be you're a very fast guy?") return print("Selecting: %s" % dev[0]) adb.set_target_device(dev[0]) print("Executing 'ls' command") output, error = adb.shell_command('ls') if output: print("Output:\n %s" % "\n ".join(output)) if error: print("Error:\n %s" % error)
def main(): # creates the ADB object adb = ADB() # IMPORTANT: You should supply the absolute path to ADB binary if adb.set_adb_path('/home/chema/.android-sdks/platform-tools/adb') is True: print "Version: %s" % adb.get_version() else: print "Check ADB binary path" print "Waiting for device..." adb.wait_for_device() err,dev = adb.get_devices() if len(dev) == 0: print "Unexpected error, may be you're a very fast guy?" return print "Selecting: %s" % dev[0] adb.set_target_device(dev[0]) print "Executing 'ls' command" adb.shell_command('ls') print "Output:\n%s" % adb.get_output()
def main(): adb = ADB() # set ADB path adb.set_adb_path('~/android-sdk-linux/platform-tools/adb') print("[+] Using PyADB version %s" % adb.pyadb_version()) # verity ADB path print("[+] Verifying ADB path...",) if adb.check_path() is False: print("ERROR") exit(-2) print("OK") # print(ADB Version) print("[+] ADB Version: %s" % adb.get_version()) print("") # restart server (may be other instances running) print("[+] Restarting ADB server...") adb.restart_server() if adb.last_failed(): print("\t- ERROR\n") exit(-3) # get detected devices dev = 0 while dev is 0: print("[+] Detecting devices..." ,) error,devices = adb.get_devices() if error is 1: # no devices connected print("No devices connected") print("[+] Waiting for devices...") adb.wait_for_device() continue elif error is 2: print("You haven't enought permissions!") exit(-3) print("OK") dev = 1 # this should never be reached if len(devices) == 0: print("[+] No devices detected!") exit(-4) # show detected devices i = 0 for dev in devices: print("\t%d: %s" % (i,dev)) i += 1 # if there are more than one devices, ask to the user to choose one of them if i > 1: dev = i + 1 while dev < 0 or dev > int(i - 1): print("\n[+] Select target device [0-%d]: " % int(i - 1) ,) dev = int(stdin.readline()) else: dev = 0 # set target device try: adb.set_target_device(devices[dev]) except Exception as e: print("\n[!] Error:\t- ADB: %s\t - Python: %s" % (adb.get_error(),e.args)) exit(-5) print("\n[+] Using \"%s\" as target device" % devices[dev]) # check if 'su' binary is available print("[+] Looking for 'su' binary: ",) supath = adb.find_binary("su") if supath is not None: print("%s" % supath) else: print("Error: %s" % adb.get_error()) # 'su' binary has been found if supath is not None: print("[+] Checking if 'su' binary can give root access:") rootid = adb.shell_command('%s -c id' % supath) if adb.last_failed() is False and 'root' in rootid.replace('(',')').split(')'): # it can provide root privileges print("\t- Yes") get_whatsapp_root(adb,supath) else: # only have normal-user print("\t- No: %s" % adb.get_error()) get_whatsapp_nonroot(adb) else: get_whatsapp_nonroot(adb) exit(0)
def mkdir(dir): adb = ADB('/Users/aadebuger/Documents/android-sdk-mac_x86/platform-tools/adb') print adb.pyadb_version() adb.shell_command("mkdir %s"%(dir))
parser = argparse.ArgumentParser(description='sat-panic-fetch fetch crash data from system') parser.add_argument('tracename', nargs='?', default=False, help='Panic trace matching trace filename') parser.add_argument('-p', '--panic', action='store', help='Panic tracing mode: 1=Normal, 2=Hooked(default)', required=False, default=2) args = parser.parse_args() def CrashlogKey(s): return int(s[8:]) print "... beginning" print "set adb to rootmode" print adb.set_adb_root(1) adb.wait_for_device() root = adb.shell_command("id") #print root path = os.getcwd() name = args.tracename if not (name and os.path.exists(path + '/' + name)): name = raw_input("Enter <<trace name>> to to fetch panic trace? :") if name: # Save the Traces path = path + '/' + name if not os.path.exists(path): print "Pre-trace info was not found from " + path sys.exit() # create symbols dir for ART binary support
class ADBFS(Fuse): opened = {} def __init__(self, *args, **kw): Fuse.__init__(self, *args, **kw) self.adb = ADB('adb') def connect(self): print 'Connect device to computer...' self.adb.wait_for_device() err = self.adb.get_error() if err: print 'ADB error:', err.strip() exit(5) print 'Driver enabled!' def _sh(self, cmd): try: return self.adb.shell_command("'%s'" % cmd) or "" except Exception as e: print 'Command ', cmd, 'failed:', self.adb.get_error() raise e def _ls(self, path): if USE_LS: return self._sh('ls "%s"' % path).split() return self._sh('ls -a "%s"' % path).splitlines() # ---- DIRECTORIES ---- def readdir(self, path, offset): if self._sh('test -d "%s"&&echo true' % path).strip() == 'true': if path[:-1] != '/': path += '/' dd = self._ls(path) for i in dd: yield Direntry(i) def rmdir(self, path): self.adb.shell_command('rmdir "%s"' % path) non_cached(path) def mkdir(self, path, mode): self.adb.shell_command('mkdir "%s"' % path) self.adb.shell_command('chmod %s "%s"' % (oct(mode), path)) non_cached(path) # ---- FILES ---- def create(self, path, mode): self.adb.shell_command('echo "" >"%s"' % path) self.adb.shell_command('chmod %s "%s"' % (oct(mode), path)) non_cached(path) def mknod(self, path, mode, dev): self.adb.shell_command('touch "%s"' % path) self.adb.shell_command('chmod %s "%s"' % (oct(mode), path)) non_cached(path) def open(self, path, flags): if self._sh('test -e "%s"&&echo true' % path).strip() != 'true': return -ENOENT if path in self.opened: self.opened[path][1] += 1 else: rfn = cached(path, lambda x: self.adb.get_remote_file(path, x)) self.opened[path] = [open(rfn, 'rb+'), 1] def release(self, path, flags): f = self.opened[path] f[1] -= 1 if f[1] == 0: f[0].close() del self.opened[path] def read(self, path, size, offset): f = self.opened[path][0] f.seek(0, 2) slen = f.tell() if offset < slen: if offset + size > slen: size = slen - offset f.seek(offset) return f.read(size) return '' def write(self, path, data, offset): f = self.opened[path][0] f.seek(0, 2) slen = f.tell() if offset < slen: f.seek(offset) l = f.write(data) rfn = cached(path, lambda x: self.adb.get_remote_file(path, x)) self.adb.push_local_file(rfn, path) return l return 0 def fsync(self, path): if path in FILES_CACHE: rfn = FILES_CACHE[path] self.adb.push_local_file(rfn, path) non_cached(path) def unlink(self, path): self.adb.shell_command('rm "%s"' % path) non_cached(path) # ---- OTHER ---- @lru_cache def getattr(self, path): st = Stat() st.st_nlink = 1 if self._sh('test -e "%s"&&echo true' % path).strip() != 'true': return -ENOENT elif self._sh('test -h "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFLNK elif self._sh('test -d "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFDIR elif self._sh('test -f "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFREG elif self._sh('test -c "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFCHR elif self._sh('test -b "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFBLK elif self._sh('test -p "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFIFO elif self._sh('test -s "%s"&&echo true' % path).strip() == 'true': st.st_mode = stat.S_IFSOCK else: st.st_mode = 0 st.st_mode |= int(self._sh('stat -c%%a "%s"' % path) or '0', 8) st.st_size = int(self._sh('stat -c%%s "%s"' % path) or '0') print "file:", path, "size: ", st.st_size, "mode:", oct(st.st_mode) return st def chmod(self, path, mode): self._sh('chmod %s "%s"' % (oct(mode), path)) non_cached(path) def chown(self, oid, gid, path): pass # TODO: chown def rename(self, path, new): self._shd('mv "%s" "%s"' % (path, new)) non_cached(path) non_cached(new) def statfs(self): st = StatVfs() st.f_bsize = 1024 st.f_frsize = 1024 st.f_bfree = 0 st.f_bavail = 0 st.f_files = 2 st.f_blocks = 4 st.f_ffree = 0 st.f_favail = 0 st.f_namelen = 255 return st
class HotplugManager(threading.Thread): _instance = None def __init__(self, lock, config_path): print config_path self.conf = ConfigObj(config_path) self.adb = ADB(self.conf['mainConfiguration'] ['adbConfiguration']['adbPath']) self.adb.restart_server() self.lock = lock self.storage = ZODB.DB(None) self.connection = self.storage.open() self.root = self.connection.root self.root.devices = BTrees.OOBTree.BTree() def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super(HotplugManager, cls).__new__(cls, *args, **kwargs) cls._ins = super(HotplugManager, cls).__new__(cls, *args, **kwargs) return cls._instance @retry(libusb1.LIBUSB_ERROR_ACCESS, tries=2) def _usb_connection(self, device, event): """ TODO: Manage missing udev rules """ key = "%04x:%04x" % (device.getVendorID(), device.getProductID()) if event == 2: self.lock.acquire() try: # Delete key object from ZODB del self.root.devices[key] transaction.get().commit() except Exception as e: print str(e.message) transaction.abort() pass self.lock.release() elif event == 1 and device.getSerialNumber() is not None: self.adb.restart_server() devices = list(self.adb.get_devices())[1:][0] try: if device.getSerialNumber() in devices: self.adb.set_target_device(device.getSerialNumber()) version = self.adb.shell_command('getprop ro.build.version.release').rstrip() model = ''.join((self.adb.shell_command('settings get secure android_id')).splitlines()) self.lock.acquire() try: dm = DeviceManager(model, version) self.root.devices[str(key)] = dm transaction.commit() except (Exception, AttributeError) as e: print str(e.message) transaction.abort() pass self.lock.release() except (IndexError, AttributeError, TypeError, KeyError) as e: print str(e.message) pass self.adb.kill_server() def callback(self, context, device, event): try: print "Device %s: %s" % ( { libusb1.LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED: 'arrived', libusb1.LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT: 'left', }[event], device ) self._usb_connection(device, event) except (AttributeError, libusb1.USBError) as e: print str(e.message) pass
from struct import * import os os_path=os.getcwd() #file_path=raw_input("please input .thumbdata file path:") print "initializing ADB... Please allow the permission on your phone." adb = ADB('/usr/bin/adb') print "Waiting for device..." adb.wait_for_device() print "getting devices list..." error,lst_device=adb.get_devices() print "found " + str(len(lst_device)/2) + " devices." print lst_device #device_id=raw_input("input device id:") print "locating thumbdata files.." thumbfiles=adb.shell_command("ls -a /sdcard/DCIM/.thumbnails/ ") lst_thumb=thumbfiles.split("\n") for item in lst_thumb: if item.find(".thumbdata")!=-1: print "found:" + item print "copying..." #adb.run_cmd("pull /storage/emulated/0/DCIM/.thumbnails/" + item[:-1] + " " + os.getcwd() + "/tmp/" + item[:-1] ) if not os.path.isfile(os.getcwd() + "/tmp/" + item[:-1]): adb.get_remote_file("/sdcard/DCIM/.thumbnails/" + item[:-1] ,os.getcwd() + "/tmp/" + item[:-1] ) print "copy OK!" else: print "cache found. skipping..." print "extracting thumb pictures..." if not os.path.exists(os.getcwd() + "/extract/" + item[:-1] ): # make a new dir os.makedirs(os.getcwd() + "/extract/" + item[:-1] )
def main(): adb = ADB() # set ADB path adb.set_adb_path('~/android-sdk-linux/platform-tools/adb') print("[+] Using PyADB version %s" % adb.pyadb_version()) # verity ADB path print("[+] Verifying ADB path...", ) if adb.check_path() is False: print("ERROR") exit(-2) print("OK") # print(ADB Version) print("[+] ADB Version: %s" % adb.get_version()) print("") # restart server (may be other instances running) print("[+] Restarting ADB server...") adb.restart_server() if adb.last_failed(): print("\t- ERROR\n") exit(-3) # get detected devices dev = 0 while dev is 0: print("[+] Detecting devices...", ) error, devices = adb.get_devices() if error is 1: # no devices connected print("No devices connected") print("[+] Waiting for devices...") adb.wait_for_device() continue elif error is 2: print("You haven't enought permissions!") exit(-3) print("OK") dev = 1 # this should never be reached if len(devices) == 0: print("[+] No devices detected!") exit(-4) # show detected devices i = 0 for dev in devices: print("\t%d: %s" % (i, dev)) i += 1 # if there are more than one devices, ask to the user to choose one of them if i > 1: dev = i + 1 while dev < 0 or dev > int(i - 1): print("\n[+] Select target device [0-%d]: " % int(i - 1), ) dev = int(stdin.readline()) else: dev = 0 # set target device try: adb.set_target_device(devices[dev]) except Exception as e: print("\n[!] Error:\t- ADB: %s\t - Python: %s" % (adb.get_error(), e.args)) exit(-5) print("\n[+] Using \"%s\" as target device" % devices[dev]) # check if 'su' binary is available print("[+] Looking for 'su' binary: ", ) supath = adb.find_binary("su") if supath is not None: print("%s" % supath) else: print("Error: %s" % adb.get_error()) # 'su' binary has been found if supath is not None: print("[+] Checking if 'su' binary can give root access:") rootid = adb.shell_command('%s -c id' % supath) if adb.last_failed() is False and 'root' in rootid.replace( '(', ')').split(')'): # it can provide root privileges print("\t- Yes") get_whatsapp_root(adb, supath) else: # only have normal-user print("\t- No: %s" % adb.get_error()) get_whatsapp_nonroot(adb) else: get_whatsapp_nonroot(adb) exit(0)
y = temp_y timestamp = temp_timestamp else: # computation on checking the difference and timestamp x_diff = abs(x - temp_x) y_diff = abs(y - temp_y) distance = math.sqrt((x_diff ** 2) + (y_diff ** 2)) if distance < radius: # case: new gaze location is within range of # standard point of gaze_location if (temp_timestamp - timestamp) > duration: # need to change to write to bash file result = cmd_out.format(x, y) # debugging aid print result adb.shell_command(result) x = -1.0 y = -1.0 timestamp = -1.0 else: # case: new gaze locataion is outside range # replace the standard point to new gaze_location x = temp_x y = temp_y timestamp = temp_timestamp else: # case: confidence less than lowest confident level pass except KeyError: print error_message break
def main(): logging.basicConfig(level=logging.WARNING) adb = ADB() # set ADB path, using a couple of popular addresses. try: adb.set_adb_path('~/android-sdk-linux/platform-tools/adb') except ADB.BadCall: adb.set_adb_path(r'C:\Android\android-sdk\platform-tools\adb.exe') print("[+] Using PyADB version %s" % adb.pyadb_version()) # verity ADB path print("[+] Verifying ADB path...", end='') if not adb.check_path(): print("ERROR") exit(-2) print("OK") # print ADB Version print("[+] ADB Version: %s" % adb.get_version()) print("") # restart server (may be other instances running) print("[+] Restarting ADB server...") try: adb.restart_server() except Exception as err: print("\t- ERROR\n", err) exit(-3) # get detected devices while True: print("[+] Detecting devices...", end=' ') try: devices = adb.get_devices() except adb.PermissionsError: devices = None print("You haven't enough permissions!") exit(-3) if devices: print("OK") break # no devices connected print("No devices connected") print("[+] Waiting for devices...") adb.wait_for_device() # this should never be reached if len(devices) == 0: print("[+] No devices detected!") exit(-4) # show detected devices i = 0 for dev in devices: print("\t%d: %s" % (i, dev)) i += 1 # if there are more than one devices, ask to the user to choose one of them if i > 1: dev = i + 1 while dev < 0 or dev > int(i - 1): print("\n[+] Select target device [0-%d]: " % int(i - 1), end=' ') dev = int(stdin.readline()) else: dev = 0 # set target device try: adb.set_target_device(devices[dev]) except Exception as e: print("\n[!] Error: " % e) exit(-5) print("\n[+] Using \"%s\" as target device" % devices[dev]) # check if 'su' binary is available print("[+] Looking for 'su' binary: ", end=' ') try: supath = adb.find_binary("su") except ADB.AdbException as err: if str(err) != "'su' was not found": print("Error: %s" % err) exit(-6) supath = None if supath is not None: # 'su' binary has been found print("[+] Checking if 'su' binary can give root access:") try: rootid = adb.shell_command('%s -c id' % supath) if 'root' in rootid.replace('(', ')').split(')'): # it can provide root privileges print("\t- Yes") get_whatsapp_root(adb, supath) else: print("\t- No: %s" % rootid) get_whatsapp_nonroot(adb) except adb.AdbException as err: print("\t- No: %s" % err) get_whatsapp_nonroot(adb) else: print("Not found.") get_whatsapp_nonroot(adb) exit(0)
y = temp_y timestamp = temp_timestamp else: # computation on checking the difference and timestamp x_diff = abs(x - temp_x) y_diff = abs(y - temp_y) distance = math.sqrt((x_diff**2) + (y_diff**2)) if distance < radius: # case: new gaze location is within range of # standard point of gaze_location if (temp_timestamp - timestamp) > duration: # need to change to write to bash file result = cmd_out.format(x, y) # debugging aid print result adb.shell_command(result) x = -1.0 y = -1.0 timestamp = -1.0 else: # case: new gaze locataion is outside range # replace the standard point to new gaze_location x = temp_x y = temp_y timestamp = temp_timestamp else: # case: confidence less than lowest confident level pass except KeyError: print error_message break
parser.add_argument('--keep', action='store_true', help='keep all pulled stickers') parser.add_argument('--skipadb', action='store_true', help='skip adb pull, just generate html') args = parser.parse_args() with open('stickers.json') as jf: stickers_json = json.load(jf) if not args.skipadb: adb = ADB('{0}/platform-tools/adb'.format(os.environ['ANDROID_HOME'])) if args.clean: adb.shell_command( 'rm -rf /sdcard/Android/data/jp.naver.line.android/stickers') exit(0) print json.dumps(stickers_json, sort_keys=True, indent=2, separators=(',', ': ')) adb.get_remote_file( '/sdcard/Android/data/jp.naver.line.android/stickers', 'stickers') for d in os.listdir('stickers'): if d in stickers_json: stickers = os.listdir('stickers/{0}'.format(d)) if len(stickers) == int(stickers_json[d]['count']) + 3: print 'keep {0}'.format(d) continue