#!/usr/bin/python # unRoll.py # Jon Oberheide # http://jon.oberheide.org/iroll/ import os, sys, cPickle import gpod MOUNT_POINT = '/mnt/ipod' BACKUP = '%s/.rickroll' % MOUNT_POINT def main(): print 'unRoll.py by Jon Oberheide ' print if not os.path.exists(BACKUP): print '[-] This iPod is missing the iRoll backup file' sys.exit(1) try: print '[+] Loading iTunes database' db = gpod.Database(MOUNT_POINT) except gpod.DatabaseException, e: print '[-] Error opening iTunes database' print '[-] Check path to iPod mount point' print '[-] %s' % e sys.exit(1) print '[+] Restoring original track paths in iTunes database' try: backup = open(BACKUP, 'r') map = cPickle.load(backup) backup.close() except: print '[-] Error reading backup file' sys.exit(1) for iter in db.get_master(): key = (iter['artist'], iter['album'], iter['title']) iter['ipod_path'] = map[key] print '[+] Saving and closing iTunes database' db.copy_delayed_files() db.close() os.unlink(BACKUP) print '[+] unRoll complete!!' if __name__ == '__main__': main()