Masked all libiMobileDevice return values with 0xFFFF

This commit is contained in:
GRiker 2013-04-27 04:52:48 -06:00
parent 76e80cea8f
commit bf329f533a

View File

@ -40,20 +40,50 @@ class AFC_CLIENT_T(Structure):
http://www.libimobiledevice.org/docs/html/structafc__client__private.html http://www.libimobiledevice.org/docs/html/structafc__client__private.html
''' '''
_fields_ = [ _fields_ = [
('connection', c_long), # afc_client_private (afc.h)
# service_client_private (service.h)
# idevice_connection_private (idevice.h)
('connection_type', c_int),
('data', c_void_p),
# ssl_data_private (idevice.h)
('session', c_void_p),
('ctx', c_void_p),
('bio', c_void_p),
# afc_client_private (afc.h)
('afc_packet', c_void_p), ('afc_packet', c_void_p),
('file_handle', c_int), ('file_handle', c_int),
('lock', c_int), ('lock', c_int),
('mutex', c_long),
('own_connection', c_int)] # mutex - (Windows only?) (WinNT.h)
('LockCount', c_long),
('RecursionCount', c_long),
('OwningThread', c_void_p),
('LockSemaphore', c_void_p),
('SpinCount', c_void_p),
# afc_client_private (afc.h)
('free_parent', c_int)]
class HOUSE_ARREST_CLIENT_T(Structure): class HOUSE_ARREST_CLIENT_T(Structure):
''' '''
http://www.libimobiledevice.org/docs/html/structhouse__arrest__client__private.html http://www.libimobiledevice.org/docs/html/structhouse__arrest__client__private.html
''' '''
_fields_ = [ _fields_ = [
("parent", c_long), # property_list_service_client
("mode", c_int)] # idevice_connection_private (idevice.h)
('type', c_int),
('data', c_void_p),
# ssl_data_private (idevice.h)
('session', c_void_p),
('ctx', c_void_p),
('bio', c_void_p),
# (house_arrest.h)
('mode', c_int)
]
class IDEVICE_T(Structure): class IDEVICE_T(Structure):
''' '''
@ -69,21 +99,56 @@ class INSTPROXY_CLIENT_T(Structure):
http://www.libimobiledevice.org/docs/html/structinstproxy__client__private.html http://www.libimobiledevice.org/docs/html/structinstproxy__client__private.html
''' '''
_fields_ = [ _fields_ = [
("parent", c_long), # instproxy_client_private (installation_proxy.h)
("mutex", c_long), # idevice_connection_private (idevice.h)
("status_updater", c_long)] ('connection_type', c_int),
('data', c_void_p),
# ssl_data_private (idevice.h)
('session', c_void_p),
('ctx', c_void_p),
('bio', c_void_p),
# mutex - Windows only (WinNT.h)
('LockCount', c_long),
('RecursionCount', c_long),
('OwningThread', c_void_p),
('LockSemaphore', c_void_p),
('SpinCount', c_void_p),
('status_updater', c_void_p)
]
class LOCKDOWND_CLIENT_T(Structure): class LOCKDOWND_CLIENT_T(Structure):
''' '''
http://www.libimobiledevice.org/docs/html/structlockdownd__client__private.html http://www.libimobiledevice.org/docs/html/structlockdownd__client__private.html
''' '''
_fields_ = [ _fields_ = [
('parent', c_long), # lockdownd_client_private
# property_list_service_client
# idevice_connection_private
('connection_type', c_int),
('data', c_void_p),
# ssl_data_private
('session', c_char_p),
('ctx', c_char_p),
('bio', c_char_p),
# lockdown_client_private
('ssl_enabled', c_int), ('ssl_enabled', c_int),
('session_id', c_char_p), ('session_id', c_char_p),
('udid', c_char_p), ('udid', c_char_p),
('label', c_char_p)] ('label', c_char_p)]
class LOCKDOWND_SERVICE_DESCRIPTOR(Structure):
'''
from libimobiledevice/include/libimobiledevice/lockdown.h
'''
_fields_ = [
('port', c_uint),
('ssl_enabled', c_ubyte)
]
class libiMobileDevice(): class libiMobileDevice():
''' '''
@ -245,6 +310,7 @@ class libiMobileDevice():
index += 1 index += 1
if self.verbose: if self.verbose:
self.log(" %s" % repr(device_list)) self.log(" %s" % repr(device_list))
#self.lib.idevice_device_list_free()
return device_list return device_list
def get_installed_apps(self, applist): def get_installed_apps(self, applist):
@ -475,7 +541,7 @@ class libiMobileDevice():
''' '''
self._log_location() self._log_location()
error = self.lib.afc_client_free(byref(self.afc)) error = self.lib.afc_client_free(byref(self.afc)) & 0xFFFF
if error and self.verbose: if error and self.verbose:
self.log(" ERROR: %s" % self.afc_error(error)) self.log(" ERROR: %s" % self.afc_error(error))
@ -486,7 +552,9 @@ class libiMobileDevice():
self._log_location() self._log_location()
self.afc = None self.afc = None
afc_client_t = POINTER(AFC_CLIENT_T)() afc_client_t = POINTER(AFC_CLIENT_T)()
error = self.lib.afc_client_new(byref(self.device), self.port, byref(afc_client_t)) error = self.lib.afc_client_new(byref(self.device),
self.lockdown,
byref(afc_client_t)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
@ -531,7 +599,8 @@ class libiMobileDevice():
self.afc = None self.afc = None
afc_client_t = POINTER(AFC_CLIENT_T)() afc_client_t = POINTER(AFC_CLIENT_T)()
error = self.lib.afc_client_new_from_house_arrest_client(byref(self.house_arrest), byref(afc_client_t)) error = self.lib.afc_client_new_from_house_arrest_client(byref(self.house_arrest),
byref(afc_client_t)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
@ -631,7 +700,8 @@ class libiMobileDevice():
''' '''
self._log_location(handle.value) self._log_location(handle.value)
error = self.lib.afc_file_close(byref(self.afc), handle) error = self.lib.afc_file_close(byref(self.afc),
handle) & 0xFFFF
if error and self.verbose: if error and self.verbose:
self.log(" ERROR: %s" % self._afc_error(error)) self.log(" ERROR: %s" % self._afc_error(error))
@ -662,9 +732,15 @@ class libiMobileDevice():
handle = c_ulonglong(0) handle = c_ulonglong(0)
if 'r' in mode: if 'r' in mode:
error = self.lib.afc_file_open(byref(self.afc), str(filename), self.AFC_FOPEN_RDONLY, byref(handle)) error = self.lib.afc_file_open(byref(self.afc),
str(filename),
self.AFC_FOPEN_RDONLY,
byref(handle)) & 0xFFFF
elif 'w' in mode: elif 'w' in mode:
error = self.lib.afc_file_open(byref(self.afc), str(filename), self.AFC_FOPEN_WRONLY, byref(handle)) error = self.lib.afc_file_open(byref(self.afc),
str(filename),
self.AFC_FOPEN_WRONLY,
byref(handle)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
@ -699,7 +775,11 @@ class libiMobileDevice():
if 'b' in mode: if 'b' in mode:
data = bytearray(size) data = bytearray(size)
datatype = c_char * size datatype = c_char * size
error = self.lib.afc_file_read(byref(self.afc), handle, byref(datatype.from_buffer(data)), size, byref(bytes_read)) error = self.lib.afc_file_read(byref(self.afc),
handle,
byref(datatype.from_buffer(data)),
size,
byref(bytes_read)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self._afc_error(error)) self.log(" ERROR: %s" % self._afc_error(error))
@ -743,7 +823,11 @@ class libiMobileDevice():
data = bytearray(content,'utf-8') data = bytearray(content,'utf-8')
datatype = c_char * len(content) datatype = c_char * len(content)
error = self.lib.afc_file_write(byref(self.afc), handle, byref(datatype.from_buffer(data)), len(content), byref(bytes_written)) error = self.lib.afc_file_write(byref(self.afc),
handle,
byref(datatype.from_buffer(data)),
len(content),
byref(bytes_written)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self._afc_error(error)) self.log(" ERROR: %s" % self._afc_error(error))
@ -775,7 +859,8 @@ class libiMobileDevice():
info_raw_p = c_char_p info_raw_p = c_char_p
info_raw = POINTER(info_raw_p)() info_raw = POINTER(info_raw_p)()
error = self.lib.afc_get_device_info(byref(self.afc), byref(info_raw)) error = self.lib.afc_get_device_info(byref(self.afc),
byref(info_raw)) & 0xFFFF
if not error: if not error:
num_items = 0 num_items = 0
item_list = [] item_list = []
@ -821,7 +906,9 @@ class libiMobileDevice():
infolist_p = c_char * 1024 infolist_p = c_char * 1024
infolist = POINTER(POINTER(infolist_p))() infolist = POINTER(POINTER(infolist_p))()
error = self.lib.afc_get_file_info(byref(self.afc), str(path), byref(infolist)) error = self.lib.afc_get_file_info(byref(self.afc),
str(path),
byref(infolist)) & 0xFFFF
file_stats = {} file_stats = {}
if error: if error:
if self.verbose: if self.verbose:
@ -868,7 +955,9 @@ class libiMobileDevice():
file_stats = {} file_stats = {}
dirs_p = c_char_p dirs_p = c_char_p
dirs = POINTER(dirs_p)() dirs = POINTER(dirs_p)()
error = self.lib.afc_read_directory(byref(self.afc), str(directory), byref(dirs)) error = self.lib.afc_read_directory(byref(self.afc),
str(directory),
byref(dirs)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self._afc_error(error)) self.log(" ERROR: %s" % self._afc_error(error))
@ -912,7 +1001,7 @@ class libiMobileDevice():
self._log_location() self._log_location()
error = self.lib.house_arrest_client_free(byref(self.house_arrest)) error = self.lib.house_arrest_client_free(byref(self.house_arrest)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self._house_arrest_error(error)) self.log(" ERROR: %s" % self._house_arrest_error(error))
@ -936,7 +1025,9 @@ class libiMobileDevice():
self._log_location() self._log_location()
house_arrest_client_t = POINTER(HOUSE_ARREST_CLIENT_T)() house_arrest_client_t = POINTER(HOUSE_ARREST_CLIENT_T)()
error = self.lib.house_arrest_client_new(byref(self.device), self.port, byref(house_arrest_client_t)) error = self.lib.house_arrest_client_new(byref(self.device),
self.lockdown,
byref(house_arrest_client_t)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -953,9 +1044,6 @@ class libiMobileDevice():
self.log(" 6. Bad version") self.log(" 6. Bad version")
return None return None
else: else:
if self.verbose:
self.log(" parent: %s" % house_arrest_client_t.contents.parent)
self.log(" mode: %s" % house_arrest_client_t.contents.mode)
return house_arrest_client_t.contents return house_arrest_client_t.contents
def _house_arrest_error(self, error): def _house_arrest_error(self, error):
@ -995,7 +1083,8 @@ class libiMobileDevice():
self._log_location() self._log_location()
plist = c_char_p() plist = c_char_p()
error = self.lib.house_arrest_get_result(byref(self.house_arrest), byref(plist)) error = self.lib.house_arrest_get_result(byref(self.house_arrest),
byref(plist)) & 0xFFFF
plist = c_void_p.from_buffer(plist) plist = c_void_p.from_buffer(plist)
# Convert the plist to xml # Convert the plist to xml
@ -1047,7 +1136,9 @@ class libiMobileDevice():
_command = create_string_buffer(command) _command = create_string_buffer(command)
_appid = create_string_buffer(appid) _appid = create_string_buffer(appid)
error = self.lib.house_arrest_send_command(byref(self.house_arrest), _command, _appid) error = self.lib.house_arrest_send_command(byref(self.house_arrest),
_command,
_appid) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -1086,7 +1177,8 @@ class libiMobileDevice():
''' '''
self._log_location() self._log_location()
error = self.lib.idevice_free(byref(self.device)) error = self.lib.idevice_free(byref(self.device)) & 0xFFFF
if error: if error:
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self._idevice_error(error)) self.log(" ERROR: %s" % self._idevice_error(error))
@ -1107,7 +1199,8 @@ class libiMobileDevice():
self._log_location() self._log_location()
idevice_t = POINTER(IDEVICE_T)() idevice_t = POINTER(IDEVICE_T)()
error = self.lib.idevice_new(byref(idevice_t), c_void_p()) error = self.lib.idevice_new(byref(idevice_t),
c_void_p()) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
@ -1121,7 +1214,6 @@ class libiMobileDevice():
self.log(" conn_type: CONNECTION_USBMUXD") self.log(" conn_type: CONNECTION_USBMUXD")
else: else:
self.log(" conn_type: Unknown (%d)" % idevice_t.contents.conn_type) self.log(" conn_type: Unknown (%d)" % idevice_t.contents.conn_type)
self.log(" conn_data: %s" % idevice_t.contents.conn_data)
self.log(" udid: %s" % idevice_t.contents.udid) self.log(" udid: %s" % idevice_t.contents.udid)
return idevice_t.contents return idevice_t.contents
@ -1144,7 +1236,9 @@ class libiMobileDevice():
self._log_location(applist) self._log_location(applist)
apps = c_void_p() apps = c_void_p()
error = self.lib.instproxy_browse(byref(self.instproxy), self.client_options, byref(apps)) error = self.lib.instproxy_browse(byref(self.instproxy),
self.client_options,
byref(apps)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
@ -1201,8 +1295,9 @@ class libiMobileDevice():
self._log_location() self._log_location()
instproxy_client_t = POINTER(INSTPROXY_CLIENT_T)() instproxy_client_t = POINTER(INSTPROXY_CLIENT_T)()
#error = self.lib.instproxy_client_new(byref(self.device), self.port.value, byref(instproxy_client_t)) error = self.lib.instproxy_client_new(byref(self.device),
error = self.lib.instproxy_client_new(byref(self.device), self.port, byref(instproxy_client_t)) self.lockdown,
byref(instproxy_client_t)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -1210,10 +1305,6 @@ class libiMobileDevice():
desc=self._instproxy_error(error)) desc=self._instproxy_error(error))
raise libiMobileDeviceException(error_description) raise libiMobileDeviceException(error_description)
else: else:
if self.verbose:
self.log(" parent: %s" % instproxy_client_t.contents.parent)
self.log(" mutex: %s" % instproxy_client_t.contents.mutex)
self.log(" status_updater: %s" % instproxy_client_t.contents.status_updater)
return instproxy_client_t.contents return instproxy_client_t.contents
def _instproxy_client_free(self): def _instproxy_client_free(self):
@ -1221,7 +1312,7 @@ class libiMobileDevice():
''' '''
self._log_location() self._log_location()
error = self.lib.instproxy_client_free(byref(self.instproxy)) error = self.lib.instproxy_client_free(byref(self.instproxy)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -1288,7 +1379,7 @@ class libiMobileDevice():
''' '''
self._log_location() self._log_location()
error = self.lib.lockdownd_client_free(byref(self.control)) error = self.lib.lockdownd_client_free(byref(self.control)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -1325,8 +1416,8 @@ class libiMobileDevice():
lockdownd_client_t = POINTER(LOCKDOWND_CLIENT_T)() lockdownd_client_t = POINTER(LOCKDOWND_CLIENT_T)()
SERVICE_NAME = create_string_buffer('calibre') SERVICE_NAME = create_string_buffer('calibre')
error = self.lib.lockdownd_client_new_with_handshake(byref(self.device), error = self.lib.lockdownd_client_new_with_handshake(byref(self.device),
byref(lockdownd_client_t), byref(lockdownd_client_t),
SERVICE_NAME) SERVICE_NAME) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
@ -1335,12 +1426,6 @@ class libiMobileDevice():
desc=self._lockdown_error(error)) desc=self._lockdown_error(error))
raise libiMobileDeviceException(error_description) raise libiMobileDeviceException(error_description)
else: else:
if self.verbose:
self.log(" parent: %s" % lockdownd_client_t.contents.parent)
self.log(" ssl_enabled: %s" % lockdownd_client_t.contents.ssl_enabled)
self.log(" session_id: %s" % lockdownd_client_t.contents.session_id)
self.log(" udid: %s" % lockdownd_client_t.contents.udid)
self.log(" label: %s" % lockdownd_client_t.contents.label)
return lockdownd_client_t.contents return lockdownd_client_t.contents
def _lockdown_error(self, error): def _lockdown_error(self, error):
@ -1405,7 +1490,8 @@ class libiMobileDevice():
device_name_b = c_char * 32 device_name_b = c_char * 32
device_name_p = POINTER(device_name_b)() device_name_p = POINTER(device_name_b)()
device_name = None device_name = None
error = self.lib.lockdownd_get_device_name(byref(self.control), byref(device_name_p)) error = self.lib.lockdownd_get_device_name(byref(self.control),
byref(device_name_p)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
@ -1434,7 +1520,7 @@ class libiMobileDevice():
self._log_location() self._log_location()
if self.control: if self.control:
error = self.lib.lockdownd_goodbye(byref(self.control)) error = self.lib.lockdownd_goodbye(byref(self.control)) & 0xFFFF
if self.verbose: if self.verbose:
self.log(" ERROR: %s" % self.error_lockdown(error)) self.log(" ERROR: %s" % self.error_lockdown(error))
else: else:
@ -1460,17 +1546,16 @@ class libiMobileDevice():
self._log_location(service_name) self._log_location(service_name)
SERVICE_NAME = create_string_buffer(service_name) SERVICE_NAME = create_string_buffer(service_name)
self.port = POINTER(c_uint)() self.lockdown = POINTER(LOCKDOWND_SERVICE_DESCRIPTOR)()
error = self.lib.lockdownd_start_service(byref(self.control), SERVICE_NAME, byref(self.port)) error = self.lib.lockdownd_start_service(byref(self.control),
SERVICE_NAME,
byref(self.lockdown)) & 0xFFFF
if error: if error:
error_description = self.LIB_ERROR_TEMPLATE.format( error_description = self.LIB_ERROR_TEMPLATE.format(
cls=self.__class__.__name__, cls=self.__class__.__name__,
func=sys._getframe().f_code.co_name, func=sys._getframe().f_code.co_name,
desc=self._lockdown_error(error)) desc=self._lockdown_error(error))
raise libiMobileDeviceException(error_description) raise libiMobileDeviceException(error_description)
else:
if self.verbose:
self.log(" port: %s" % self.port.contents.value)
def _log_location(self, *args): def _log_location(self, *args):