예제 #1
0
 def get_target(self):
     self.wait_ready()
     target = str(adb.shell('cat', '/pip/CLOVER_TARGET'))
     url = str(adb.shell('cat', '/pip/CLOVER_CLOUD_URL'))
     if re.match('http://.*', url):
         url = url[7:]
     return (target, url)
예제 #2
0
파일: device.py 프로젝트: mattrixman/scOOBE
def get_cpuid(codename):
    if codename in ["KNOTTY_PINE","GOLDEN_OAK","BAYLEAF"]:
        return  sorted(list(sed(adb.shell('getprop'), '-n',
                r's/^.*clover_cpuid.*\[\([0-9a-fA-F]\{16\}\).*$/\1/p')))[-1].strip()
    else:
        return  sorted(list(sed(adb.shell('getprop'), '-n',
                r's/^.*cpuid.*\[\([0-9a-fA-F]\{32\}\).*$/\1/p')))[-1].strip()
예제 #3
0
파일: ui.py 프로젝트: mattrixman/scOOBE
def has_text(text):
    try:
        egrep(adb.shell(['uiautomator dump /dev/tty']), ".*" + text + ".*")
        return True
    except ErrorReturnCode:
        pass
    return False
예제 #4
0
def ready():
    try:
        if str(adb.shell(['getprop', 'sys.boot_completed'])).strip() == '1':
            return True
            return False
    except sh.ErrorReturnCode:
        return False
예제 #5
0
파일: device.py 프로젝트: mattrixman/scOOBE
 def get_target(self):
     self.wait_ready()
     target_url = str(sed(adb.shell('mmc_access', 'r_yj2_target'), '-n',
             r's/^.*YJ2[^:]*: \([^:]*\):\(.*\).*$/\1,\2/p')).strip()
     assert(len(target_url) > 0)
     (target, url) = target_url.split(',')
     return (target, url)
예제 #6
0
파일: device.py 프로젝트: mattrixman/scOOBE
def screenshot(device, printer=StatusPrinter()):
    printer("Dumping screenshot for Device: {}".format(device.serial))
    with Indent(printer):

        # make way for new file
        outfile_name = "{}_{}.png".format(device.serial,
                                          datetime.now().strftime("%Y-%m-%d_%H%M%S"))
        outfile_path = os.path.join(os.getcwd(), outfile_name)
        rm('-f', outfile_path)

        # get the screencap
        tempfile_path = '/sdcard/{}'.format(outfile_name)
        adb.shell('screencap', '-p', tempfile_path)
        adb.pull(tempfile_path)
        adb.shell('rm', tempfile_path)

        printer("Wrote " + outfile_path)
예제 #7
0
    def get_position(self):
        def dump(line, stdin, process):
            try:
                line = line.split(' ')
                if line[0] == '/dev/input/event1:':
                    if line[2] == '0035':
                        self.x = int(line[3], 16)
                    elif line[2] == '0036':
                        self.y = int(line[3], 16)
            except Exception:
                pass

            if self.x and self.y:
                print(self.x, self.y)
                process.kill()
                return True

        print('Please tap your phone screen.')
        adb.shell('getevent', _bg=True, _out=dump, _bg_exc=False)
예제 #8
0
    def set_target(self, target, url):
        self.wait_ready()

        if re.match('http://.*', url):
            url = url[7:]

        print("targeting device to: " + url)

        cmd = [
            'su', '1000', 'content', 'call', '--uri',
            'content://com.clover.service.provider', '--method',
            'changeTarget', '--extra', 'target:s:{}:{}'.format(target, url)
        ]

        # print(' '.join(cmd))
        adb.shell(cmd)

        # the above call causes a reset
        # wait until the adb connection is lost
        sleep(self.get_shutdown_delay())
예제 #9
0
파일: device.py 프로젝트: mattrixman/scOOBE
    def set_target(self, target, url, printer=StatusPrinter()):
        self.wait_ready()

        if re.match('http://.*', url):
            url = url[7:]

        printer("Targeting device to: " + url)
        with Indent(printer):

            cmd = ['su', '1000', 'content', 'call', '--uri', 'content://com.clover.service.provider',
                '--method', 'changeTarget', '--extra', 'target:s:{}:{}'.format(target, url)]

            printer('\'' + ' '.join(cmd) + '\'')
            adb.shell(cmd)

        # the above call causes a reset
        # wait until the adb connection is lost
        printer("Waiting {} seconds for device to begin reboot..."
                .format(self.get_shutdown_delay()))
        sleep(self.get_shutdown_delay())
예제 #10
0
def get_connected_device():
    wait_ready()

    # tested for flex and mini
    serial = str(
        sed(
            adb.shell('getprop'), '-n',
            r's/^.*serial.*\[\(C[A-Za-z0-9]\{3\}[UE][CQNOPRD][0-9]\{8\}\).*$/\1/p'
        )).split('\n')[0]
    assert (len(serial) > 0)

    # tested for flex and mini
    cpuid = str(
        sed(adb.shell('getprop'), '-n',
            r's/^.*cpuid.*\[\([0-9a-fA-F]\{32\}\).*$/\1/p')).split('\n')[0]
    assert (len(cpuid) > 0)

    codename = prefix2codename[serial[2:4]]

    device = codename2class[codename]()
    device.serial = serial
    device.cpuid = cpuid
    device.codename = codename
    return device
예제 #11
0
파일: device.py 프로젝트: mattrixman/scOOBE
def get_connected_device(printer=StatusPrinter()):
    wait_ready(printer)

    # tested for flex, mini, and station_2018
    serial = str(sed(adb.shell('getprop'), '-n',
        r's/^.*serial.*\[\(C[A-Za-z0-9]\{3\}[UEL][CQNOPRD][0-9]\{8\}\).*$/\1/p')).split('\n')[0]
    assert(len(serial) > 0)

    codename = prefix2codename[serial[2:4]]

    device = codename2class[codename]()

    cpuid = get_cpuid(codename)
    assert(len(cpuid) > 0)

    device.serial = serial
    device.cpuid = cpuid
    device.codename = codename

    printer("Found attached device: " + str(device))

    return device
예제 #12
0
 def click(self):
     while CLICK_FLAG:
         adb.shell('input tap {} {}'.format(self.x, self.y))
         sleep(self.interval)
예제 #13
0
def click(x, y, interval=0.15):
    while CLICK_FLAG:
        adb.shell('input tap {} {}'.format(x, y))
        sleep(interval)