A python package which aims to wrap Apple's MobileDevice API; to provide complete support for all iOS, device services.
The project aims to provide both a native Pythin API (using ctypes) and a fully features command line interface.
You can run the project directory as a package e.g.
python MobileDevice/ afc put myfile.txt /var/mobile/Media/
or:
python MobileDevice.zip afc put myfile.txt /var/mobile/Media/
or, if you install the library using: sudo python setup.py install
mdf afc put myfile.txt /var/mobile/Media/
(will upload a file to the device)
at any point append -h to the command line to get more help
In general I recommend you install the package if you're ever going to write scripts using it, or just fancy typing less characters.
The basic structure of the package is as follows:
MobileDevice.py: this is a bare bones ctypes wrapper over the native C library
CoreFoundation.py: this is a simple ctypes wrapper around CoreFoundation and a few helper methods to convert between CFTypes and python types
All other classes: afc.py, syslog.py, filerelay.py, amdevice.py etc are more pythonic wrappers around the base C library.
The idea being that we give a python abstraction of all the services e.g.
from command line:
mdf afc ls /var/mobile/Media
or in code:
from MobileDevice import *
def printdir(afc, path):
for name in afc.listdir(path):
isdir = u''
if afc.lstat(path + name).st_ifmt == stat.S_IFDIR:
isdir = u'/'
print path + name + isdir
if afc.lstat(path + name).st_ifmt == stat.S_IFDIR:
printdir(afc, path + name + isdir)
dev = list_devices()[0]
dev.connect()
afc = AFC(dev)
printdir(afc, u'/var/mobile/Media') # recursive print of all files visible
afc.disconnect()
from command line:
mdf filerelay dump.cpio.gz
or in code:
from MobileDevice import *
dev = list_devices()[0]
dev.connect()
fr = FileRelay(dev)
f = open(u'dump.cpio.gz', 'wb')
f.write(fr.retrieve([
u'AppleSupport',
u'Network',
u'VPN',
u'WiFi',
u'UserDatabases',
u'CrashReporter',
u'tmp',
u'SystemConfiguration'
]))
f.close()
fr.disconnect()
from command line:
mdf syslog
or in code:
from MobileDevice import *
import sys
dev = list_devices()[0]
dev.connect()
sl = Syslog(dev)
while True:
msg = sl.read()
if msg is None:
break
sys.stdout.write(msg)
sl.disconnect()
iOS, iPad, iPhone, Apple, MobileDevice, python, command line, lockdownd, usbmuxd