Beispiel #1
0
    def validate_pairing(self):
        record = readHomeFile(HOMEFOLDER, '%s.plist' % self.udid)
        if record:
            pair_record = plistlib.readPlistFromString(record)
            hostCertificate = pair_record['HostCertificate'].data
            hostPrivateKey = pair_record['HostPrivateKey'].data
            print "Found pairing record for device %s" % self.udid
        else:
            print "No pairing record found for device %s" % self.udid
            return False

        ValidatePair = self.service.sendRequest({
            'Request': 'ValidatePair',
            'PairRecord': pair_record
            })
        if not ValidatePair or 'Error' in ValidatePair:
            pair_record = None
            return False

        StartSession = self.service.sendRequest({
            'Request': 'StartSession',
            'HostID': pair_record.get('HostID', self.hostID)
            })
        self.SessionID = StartSession.get('SessionID')

        if StartSession.get('EnableSessionSSL'):
            keyfile = writeHomeFile(HOMEFOLDER, self.udid + "_ssl.txt", hostCertificate + '\n' + hostPrivateKey)
            self.service.start_ssl(keyfile)
            self.allValues = self.getValue()  # iDevice gives more information after being trusted
        return True
Beispiel #2
0
    def validate_pairing(self):
        record = readHomeFile(HOMEFOLDER, '%s.plist' % self.udid)
        if record:
            pair_record = plistlib.readPlistFromString(record)
            hostCertificate = pair_record['HostCertificate'].data
            hostPrivateKey = pair_record['HostPrivateKey'].data
            print "Found pairing record for device %s" % self.udid
        else:
            print "No pairing record found for device %s" % self.udid
            return False

        ValidatePair = self.service.sendRequest({
            'Request': 'ValidatePair',
            'PairRecord': pair_record
        })
        if not ValidatePair or 'Error' in ValidatePair:
            pair_record = None
            return False

        StartSession = self.service.sendRequest({
            'Request':
            'StartSession',
            'HostID':
            pair_record.get('HostID', self.hostID)
        })
        self.SessionID = StartSession.get('SessionID')

        if StartSession.get('EnableSessionSSL'):
            keyfile = writeHomeFile(HOMEFOLDER, self.udid + "_ssl.txt",
                                    hostCertificate + '\n' + hostPrivateKey)
            self.service.start_ssl(keyfile)
            self.allValues = self.getValue(
            )  # iDevice gives more information after being trusted
        return True
Beispiel #3
0
    def validate_pairing(self):
        pair_record = None
        certPem = None
        privateKeyPem = None

        if sys.platform == "win32":
            folder = os.environ["ALLUSERSPROFILE"] + "/Apple/Lockdown/"
        elif sys.platform == "darwin":
            folder = "/var/db/lockdown/"
        elif len(sys.platform) >= 5:
            if sys.platform[0:5] == "linux":
                folder = "/var/lib/lockdown/"
        try:
            pair_record = plistlib.readPlist(folder + "%s.plist" % self.identifier)
        except:
            pair_record = None
        if pair_record:
            print "Using iTunes pair record: %s.plist" % self.identifier
            certPem = pair_record["HostCertificate"].data
            privateKeyPem = pair_record["HostPrivateKey"].data

        else:
            print "No iTunes pairing record found for device %s" % self.identifier
            print "Looking for pymobiledevice pairing record"
            record = readHomeFile(HOMEFOLDER, "%s.plist" % self.identifier)
            if record:
                pair_record = plistlib.readPlistFromString(record)
                print "Found pymobiledevice pairing record for device %s" % self.udid
                certPem = pair_record["HostCertificate"].data
                privateKeyPem = pair_record["HostPrivateKey"].data
            else:
                print "No  pymobiledevice pairing record found for device %s" % self.identifier
                return False

        self.record = pair_record
        ValidatePair = {"Label": self.label, "Request": "ValidatePair", "PairRecord": pair_record}
        self.c = PlistService(62078,self.udid)
        self.c.sendPlist(ValidatePair)
        r = self.c.recvPlist()
        if not r or r.has_key("Error"):
            pair_record = None
            print "ValidatePair fail", ValidatePair
            return False

        self.hostID = pair_record.get("HostID", self.hostID)
        self.SystemBUID = pair_record.get("SystemBUID", self.SystemBUID)
        d = {"Label": self.label, "Request": "StartSession", "HostID": self.hostID, 'SystemBUID': self.SystemBUID}
        self.c.sendPlist(d)
        startsession = self.c.recvPlist()
        self.SessionID = startsession.get("SessionID")
        if startsession.get("EnableSessionSSL"):
            sslfile = self.identifier + "_ssl.txt"
            sslfile = writeHomeFile(HOMEFOLDER, sslfile, certPem + "\n" + privateKeyPem)
            self.c.ssl_start(sslfile, sslfile)

        self.paired = True
        return True
Beispiel #4
0
    def validate_pairing(self):
        pair_record = None
        certPem = None
        privateKeyPem = None

        if sys.platform == "win32":
            folder = os.environ["ALLUSERSPROFILE"] + "/Apple/Lockdown/"
        elif sys.platform == "darwin":
            folder = "/var/db/lockdown/"

        pair_record = plistlib.readPlist(folder + "%s.plist" % self.identifier)

        if pair_record:
            print "Using iTunes pair record: %s.plist" % self.identifier
            certPem = pair_record["HostCertificate"].data
            privateKeyPem = pair_record["HostPrivateKey"].data

        else:
            print "No iTunes pairing record found for device %s" % self.identifier
            print "Lokking for pymobiledevice pairing record"
            record = readHomeFile(HOMEFOLDER, "%s.plist" % self.identifier)
            if record:
                pair_record = plistlib.readPlistFromString(record)
                print "Found pymobiledevice pairing record for device %s" % self.udid
                certPem = pair_record["HostCertificate"].data
                privateKeyPem = pair_record["HostPrivateKey"].data
            else:
                print "No  pymobiledevice pairing record found for device %s" % self.identifier
                return False

        ValidatePair = {"Request": "ValidatePair", "PairRecord": pair_record}
        self.c = PlistService(62078, self.udid)
        self.c.sendPlist(ValidatePair)
        r = self.c.recvPlist()
        if not r or r.has_key("Error"):
            pair_record = None
            print "ValidatePair fail", ValidatePair
            return False

        d = {
            "Request": "StartSession",
            "HostID": pair_record.get("HostID", self.hostID)
        }
        self.c.sendPlist(d)
        startsession = self.c.recvPlist()

        self.SessionID = startsession.get("SessionID")
        if startsession.get("EnableSessionSSL"):
            sslfile = self.identifier + "_ssl.txt"
            sslfile = writeHomeFile(HOMEFOLDER, sslfile,
                                    certPem + "\n" + privateKeyPem)
            self.c.ssl_start(sslfile, sslfile)
            self.udid = self.getValue("", "UniqueDeviceID")
            self.allValues = self.getValue("", "")

        self.paired = True
        return True
Beispiel #5
0
 def validate_pairing(self):
     pair_record = None
     certPem = None
     privateKeyPem = None
     
     record = readHomeFile(HOMEFOLDER, "%s.plist" % self.identifier)
     if record:
         pair_record = plistlib.readPlistFromString(record)
         certPem = pair_record["HostCertificate"].data
         privateKeyPem = pair_record["HostPrivateKey"].data
         print "Found pairing record for device %s" % self.udid
     else:
         print "No pairing record found for device %s" % self.identifier
         return
     if False:
         if sys.platform == "win32":
             folder = os.environ["ALLUSERSPROFILE"] + "/Apple/Lockdown/"
         elif sys.platform == "darwin":
             folder = "/var/db/lockdown/"
         pair_record = plistlib.readPlist(folder + "%s.plist" % self.identifier)
         print "Using iTunes pair record"
         
     ValidatePair = {"Request": "ValidatePair", "PairRecord": pair_record}
     self.c.sendPlist(ValidatePair)
     ValidatePair = self.c.recvPlist()
     if not ValidatePair or ValidatePair.has_key("Error"):
         pair_record =None
         print "ValidatePair fail", ValidatePair
         return False
     self.paired = True
     #print "Validate Pairing OK", ValidatePair
     d = {"Request": "StartSession", "HostID": pair_record.get("HostID", self.hostID)}
     self.c.sendPlist(d)
     startsession = self.c.recvPlist() 
     #print "Starting session",startsession
     self.SessionID = startsession.get("SessionID")
     if startsession.get("EnableSessionSSL"):
         sslfile = self.identifier + "_ssl.txt"
         sslfile = writeHomeFile(HOMEFOLDER, sslfile, certPem + "\n" + privateKeyPem)
         self.c.ssl_start(sslfile, sslfile)
         #print "SSL started"
         self.udid = self.getValue("", "UniqueDeviceID")
         self.allValues = self.getValue("", "")
         #print "UDID", self.udid
     return True