Code Monkey home page Code Monkey logo

itunes-backup-explorer's Introduction

iTunes Backup Explorer

iTunes Backup Explorer is a graphical open-source tool that can show, extract, and replace files in iPhone and iPad backups.

It supports both encrypted and non-encrypted backups, currently from iOS 10.2 onwards.

Most programs that support encrypted backups are either limited trials or expensive. There are apparently only very few open-source projects that target this issue and none that are also useful for the average user.

Program screenshot

Installation

  • Open your terminal and type in java -version.
  • If the command was not found or the version is below 18, download and install Java for your operating system, e.g. from here.
  • Download the jar file of the latest release of iTunes Backup Explorer.

Windows

  • Simply double-click the downloaded file to start the program.
  • From the command line: java -jar JARFILE.jar. Replace JARFILE.jar with the name of the file you downloaded.

macOS

  • cd to the download directory and type in chmod +x JARFILE.jar.
  • Now, you should be able to simply double-click the file to start the program.
  • If that does not work, you may need to type java -jar JARFILE.jar into the terminal to run it.

If you have permission issues

When exporting data from the backup files, you might get Operation not permitted errors on your MacBook. To fix this, go to System Settings > Privacy & Security > Full Disk Access and add both java binary file and the jar file you downloaded.

More detailed information can be checked here.

Linux

  • cd to the download directory and type in chmod +x JARFILE.jar.
  • Depending on your specific system, you should be able to double-click the file to start the program.
  • If that does not work, use java -jar JARFILE.jar to run it.

How to build

  1. Run mvn install
  2. Run mvn clean compile assembly:single

File Search

In the "File Search" tab, you can search for files using case-insensitive SQLite LIKE syntax. It supports two wildcards: % and _.

  • % matches any sequence of zero or more characters.
  • _ matches any single character.
  • \ is used as the escape character.

Here are a few examples:

Domain Relative Path
Videos in the camera roll CameraRollDomain %.mov
Files under the DCIM directory CameraRollDomain Media/DCIM/%
All .sqlite files % %.sqlite
.db databases in the home domain HomeDomain %.db
All WhatsApp files %whatsapp% %
App documents on iCloud HomeDomain Library/Mobile Documents/iCloud~%
All files (can take a bit of time) % %

After you clicked on the Search button, you can also sort by clicking on a column name.

To find the largest files, type in a query, click on Search and then twice on Size.

With the Export matching button on the bottom right, you can export all files that match your query to a directory you choose.

By right-clicking on a file row, you can open, extract, replace or delete a single file. This works the same as in the hierarchical "Files" tab. If it is a symbolic link, you can show the target location.

Privacy

For me, this was a matter of course, but it was pointed out that I should clarify it anyway. I do not collect any personal data. In fact, the program does not even use an internet connection at this time. If that should change at some point in the future, I will update this notice.

Credits

I started looking into this after I saw this brilliant answer on StackOverflow by andrewdotn to a question that has already been viewed more than 220.000 times. It explains in detail how iOS backups are structured and how they are encrypted, even providing a working code example.

So a huge thanks to him,

his sources iPhone Data Protection in Depth, iOS Hacker's Handbook, a GitHub comment, the iphone-dataprotection project and the Apple iOS Security Guide for iOS 11 (in the Web Archive)

and Forensic Analysis of iTunes Backups by Jack Farley

itunes-backup-explorer's People

Contributors

brunogeronimo avatar dependabot[bot] avatar maxihuhe04 avatar rikysonic avatar tetrahedrl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

itunes-backup-explorer's Issues

Can't open the backup file

I'm trying to open the file on Mac OS 11.7 where my backups are stored at ~/Library/Application Support/MobileSync

I changed the path under preferences, but I still can't open the backup. When double clicking on the specific backup folder it opens the folder and lists the files in it. The only files I can open from now are manifest.plist and Status.plist. See below.
I expect to double click on the folder and load it in the application, not?

Backups are older maybe this might be a problem?

image

image

`NSInternalInconsistencyException` on macOS 13.6.1

Both on the latest available JAR file and after compiling locally, I get the following exception when running:

2023-12-06 15:30:33.118 java[29424:296213] *** Assertion failure in -[_NSTrackingAreaAKViewHelper removeTrackingRect:], _NSTrackingAreaAKManager.m:1637
2023-12-06 15:30:33.119 java[29424:296213] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '0x0 is an invalid NSTrackingRectTag. Common possible reasons for this are: 1. already removed this trackingRectTag, 2. Truncated the NSTrackingRectTag to 32bit at some point.'
*** First throw call stack:
(
	0   CoreFoundation                      0x00007ff8088cc11a __exceptionPreprocess + 242
	1   libobjc.A.dylib                     0x00007ff8083f20b7 objc_exception_throw + 48
	2   Foundation                          0x00007ff8097a2cd8 -[NSCalendarDate initWithCoder:] + 0
	3   AppKit                              0x00007ff80bfa0fe3 -[_NSTrackingAreaAKViewHelper removeTrackingRect:] + 190
	4   libglass.dylib                      0x000000010d960449 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 3593
	5   libglass.dylib                      0x000000010d965038 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 23032
	6   AppKit                              0x00007ff80b930091 -[NSView setFrame:] + 347
	7   libglass.dylib                      0x000000010d965095 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 23125
	8   AppKit                              0x00007ff80b940ec8 -[NSView resizeWithOldSuperviewSize:] + 694
	9   AppKit                              0x00007ff80b9407fb -[NSView resizeSubviewsWithOldSize:] + 499
	10  AppKit                              0x00007ff80b91ff26 -[NSView setFrameSize:] + 1460
	11  AppKit                              0x00007ff80b930091 -[NSView setFrame:] + 347
	12  AppKit                              0x00007ff80b940ec8 -[NSView resizeWithOldSuperviewSize:] + 694
	13  AppKit                              0x00007ff80b9407fb -[NSView resizeSubviewsWithOldSize:] + 499
	14  AppKit                              0x00007ff80b91ff26 -[NSView setFrameSize:] + 1460
	15  AppKit                              0x00007ff80b93ec03 -[NSThemeFrame setFrameSize:] + 464
	16  AppKit                              0x00007ff80b93e30f -[NSWindow _oldPlaceWindow:fromServer:] + 831
	17  AppKit                              0x00007ff80b93cda2 -[NSWindow _setFrameCommon:display:fromServer:] + 3089
	18  libglass.dylib                      0x000000010d95827f getImage + 6799
	19  libglass.dylib                      0x000000010d957cec getImage + 5372
	20  libglass.dylib                      0x000000010d957f59 getImage + 5993
	21  libglass.dylib                      0x000000010d96f2ce Java_com_sun_glass_ui_mac_MacWindow__1setBounds2 + 446
	22  ???                                 0x000000011edf2980 0x0 + 4812908928
	23  ???                                 0x000000011edee362 0x0 + 4812890978
	24  ???                                 0x000000011edee362 0x0 + 4812890978
	25  ???                                 0x000000011edee362 0x0 + 4812890978
	26  ???                                 0x000000011edee7ee 0x0 + 4812892142
)
libc++abi: terminating due to uncaught exception of type NSException
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 134 (Exit value: 134)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:982)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:929)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:457)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

I've read and attempted everything suggested in #3, but nothing has helped thus far.

Windows10 ERROR Backup Read Exception

Hi, I'm trying to read a backup on an external HD it's not encrypted and I get this error.

me.maxih.itunes_backup_explorer.api.BackupReadException:
java.util.NoSuchElementException: No value present

same error on Manifest.db or .plist

Files are there and if manually add the extension it works fine but I hoped this could save me some time. Can you please help me?

Ability to bulk-delete files and folders?

Due to a memory problem I'm facing on the phone, I am trying to make a smaller backup from an existing large one.

Will there be an update to rebuild a backup file, import selected domains, or remove some parts of an existing backup to make it smaller?

Thanks.

Can't extract photos from backup

WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @44a7e2d8'
Connection to the backup database of 'repo4ka?' has been established.
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1857)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1724)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8797)
at javafx.scene.control.Button.fire(Button.java:203)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:208)
at com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3881)
at javafx.scene.Scene.processMouseEvent(Scene.java:1874)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2607)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at com.sun.glass.ui.View.handleMouseEvent(View.java:551)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:115)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:77)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:275)
at com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:84)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1854)
... 50 more
Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.control.TreeItem.isLeaf()" because "parent" is null
at me.maxih.itunes_backup_explorer.ui.FilesTabController.flattenAllChildren(FilesTabController.java:272)
at me.maxih.itunes_backup_explorer.ui.FilesTabController.exportSelectedFiles(FilesTabController.java:283)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
... 57 more

Can't open backup

I get an error that says me.maxih.itunes_backup_explorer.api.BackupReadException: java.util.NoSuchElementException: No value present

java.util.NoSuchElementException: No value present

Hi there. Thank you for this nice tool!
I was trying to run it though, and get the following error.
The program does open but won't let me open my backup file.

D:\test-temp>java -jar itunes-backup-explorer-1.2.jar
ืื•ื’? 12, 2022 4:35:20 ืื—ื”?ืฆ com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @78b0aab6'
me.maxih.itunes_backup_explorer.api.BackupReadException: me.maxih.itunes_backup_explorer.api.BackupReadException: java.util.NoSuchElementException: No value present
        at me.maxih.itunes_backup_explorer.api.ITunesBackup.loadInfo(ITunesBackup.java:93)
        at me.maxih.itunes_backup_explorer.api.ITunesBackup.<init>(ITunesBackup.java:70)
        at me.maxih.itunes_backup_explorer.api.ITunesBackup.lambda$getBackups$0(ITunesBackup.java:31)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at me.maxih.itunes_backup_explorer.api.ITunesBackup.getBackups(ITunesBackup.java:41)
        at me.maxih.itunes_backup_explorer.ui.WindowController.loadBackups(WindowController.java:135)
        at me.maxih.itunes_backup_explorer.ui.WindowController.initialize(WindowController.java:76)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:577)
        at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:77)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:577)
        at com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:275)
        at com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:84)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2673)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
        at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2516)
        at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.start(ITunesBackupExplorer.java:21)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
        at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
        at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
        at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: me.maxih.itunes_backup_explorer.api.BackupReadException: java.util.NoSuchElementException: No value present
        at me.maxih.itunes_backup_explorer.api.BackupInfo.<init>(BackupInfo.java:74)
        at me.maxih.itunes_backup_explorer.api.ITunesBackup.loadInfo(ITunesBackup.java:91)
        ... 32 more
Caused by: java.util.NoSuchElementException: No value present
        at java.base/java.util.Optional.orElseThrow(Optional.java:377)
        at me.maxih.itunes_backup_explorer.api.BackupInfo.<init>(BackupInfo.java:59)
        ... 33 more

My Java version is

java version "18.0.2" 2022-07-19
Java(TM) SE Runtime Environment (build 18.0.2+9-61)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.2+9-61, mixed mode, sharing

Thanks!

Can't execute on MacOS Ventura on M1 Pro

Hello,
I'm uncertain if this problem is on my side or wherever, but when I'm trying to open the .jar nothing happens when I just click on it (yes I've done all steps and also got Java 20 installed) if I try to execute from the terminal though I get the error
(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
after googling it I only found people having this problem in python but this is java, ChatGPT said it's compiled for the wrong architecture, but I thought java is universal and also you can't trust ChatGPT, then I tried running terminal with Rosetta and also the Java Launcher but nothing worked. Looking forward to you suggestions and help.
Thanks!

Add specific error message for folders with unpermitted name or add a workaround to copy files in it

#31 (comment)

In contrast to iOS, Windows has some limitations on how files and folders can be named. You can read more about it here: https://stackoverflow.com/a/36227372/8868841. Basically, folders are not allowed to be called AUX, or AUx in your case. I can't do much about this. An option would be to export it to a folder with a slightly changed name, but I should definitely add a better error message. I won't have time to do this very soon as I'm busy with studying. But it would be very nice if you could open a new issue for this that I don't forget about it.

Backup corrupt after photo delete

Hi,

I'm having an issue similar to what others have reported. I ran into the "not enough space" issue when trying to restore a backup of an iPhone 13 onto a different, identical iPhone 13. My plan was to use iTunes-Backup-Explorer to delete photos, there by reducing the backup size.

Working on a copy of the original backup, I used version 1.4 to open the backup and navigated to the CameraRollDomain. I expanded Media and selected DCIM, right clicked and selected delete. Once the deletion process completed, I quit the application and proceeded to restore the backup to the iPhone using Finder on my Mac. After the restore process ran for about an hour, it abruptly aborted, gave a message indicating the backup was corrupt, and rebooted the iPhone.

Any ideas how I can solve this problem or how the backup became corrupted? Should I have deleted the folders below DCIM?

Thanks
Mike

Can't read old iOS backups

I found some of my old backups. one of them is from iPhone 5s (iOS 8.4) :D & other one is from iPhone 6 (iOS 9.0.2)

When I try opening them, I get only failed msg as below:

ice_video_20240824-191626

Is it able to read old iOS versions ? if the issue is from my side. what to do ?

Note: I'm able to open both using another software but I dnt really comfortable with it.

Large exports fail after a time with no error

Hi, trying to export my SMS attachments (on windows).

I select MediaDomain/Library/SMS/Attachments, it works for a while trying to export, then the progress bar unceremoniously closes and the tasbar icon blinks orange, no error box. A significant amount of it does get exported, but much of it doesn't. All of the folders one step below attachments get created, but some of these are left empty.

I suspect it's having trouble with specific files, because...

  • If I try to export in the same location and skip already exported, it stops immediately with no further progress (hits file it has trouble with immediately)
  • If I deselect the subfolders where it's already tried to create the subfolders beneath, it will continue further and get more of the export complete, but then fails again later.

Is there any kind of logging I can turn on to find the specific files it's failing on? Thanks.

Unsupported JavaFX configuration: classes were loaded from unnamed module

          I'm sorry I haven't got around to fixing this until now. I'd appreciate it if someone could test it and reopen the issue if there are still problems.

Originally posted by @MaxiHuHe04 in #8 (comment)

Hi Maxi!!

First of all...you rock providing such a tool as open source!!

Just tried to install it and ran into a problem open the jar file...here is the error:

com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @3086edd8'
objc[9879]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8e477c90) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x16a656cd8). One of the two will be used. Which one is undefined.

it has a different outcome after the second line because i am on a MAC but the first line of error is identical, it has something todo with javaFX...i am not a coder but i found something here i think? (lol):
https://stackoverflow.com/questions/67854139/javafx-warning-unsupported-javafx-configuration-classes-were-loaded-from-unna

i also have to tell you that the GUI loaded but when i browsed to the backup the files where grayed out(and when i open the "info.plist file which i assume i get an error message that"manifest.db" is missing

Now, here is my system config( and i know you don't have a MAC):

MAC Book (intel), High Sierra, Java SDK 20.0.2

Now, one thing i also have to tell....its an older iphone and i believe IOS version is something around 9.6.2 or similar, could this be a problem?

Anyway, hope you have any idea about this issue, looking forward to hear from you!

Best,

Frank
Primetechstar

Unable to access jar file?

I know nothing about GitHub or coding so I'm sorry if I'm missing something really obvious. I tried renaming the folder and moving it from downloads to desktop but I can't get anything to work. What am I doing wrong?
terminal

Skip button not shown in UI

Hello, I can see in FilesTabController.java that there is there skipButtonType in exportFiles, but when I export same file twice the FileAlreadyExistsException raise the Alert with correct message but only one "OK" button.
I'm running itunes-backup-explorer-1.4.jar in windows 10 pro, using java:
java 21.0.1 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
image

MacOS compatibility changes

Hi,

As someone that's not comfortable with Java, after a bit of effort, I managed to run iTunes Backup Explorer on OS X.

While I won't grab the time to put effort into a coherent PR, here's some things (a mixture of instructions for Mac OS users with some small patches):

  1. I had Java 8 installed; I believe it was some sort of "system" Java. Not sure if it was the old Apple-provided build. I needed to bump Java to something newer. As I have Homebrew installed, I used:

    brew install java
    

    This installed OpenJDK 17.

    Per instructions printed by Homebrew, I exposed this to Apple's wrappers like so:

    sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
    

    I'm not sure if I had to export JAVA_HOME=$(/usr/libexec/java_home -v17).

    I had Maven installed from before. It was a Homebrew version (brew install maven).

  2. At this point I could build iTunes-Backup-Explorer using mvn compile.

    java -jar target/itunes-backup-explorer-1.0-SNAPSHOT.jar did not work, but mvn javafx:run did.

  3. JavaFX 13 has bugs on MacOS Catalina+. https://bugs.openjdk.java.net/browse/JDK-8234916

    image

    I've switched javafx-controls and javafx-fxml to version 15 in pom.xml

    This fixes the UI and now it renders correctly.

  4. I had to run this from Terminal.app or iTerm.app which has been first allowlisted in System Preferences's Security & Privacy pane for "Full Disk Access" -- otherwise I could not ls ~/Library/Application Support/MobileSync/Backup, and neither could it be accessed by iTunes-Backup-Explorer.

    By allowlisting the terminal app, java process inherits these permissions.

    There is likely an API to request full disk access, but I have not done serious Cocoa work in years, and definitely not in Java.

  5. Unfortunately, the code also hardcodes the path to MobileSync/Backup to System.getenv("APPDATA"), "Apple Computer\\MobileSync\\Backup".

    This is easy to resolve with System.getenv("HOME"), "Library/Application Support/MobileSync/Backup".

    Even though that's technically incorrect: one should use +[NSFileManager URLForDirectory:inDomains:] to find the paths to NSApplicationSupportDirectory in NSUserDomainMask or NSAllDomainsMask -- accepting there can be more than one such directory. Now, how to do that in Java? I don't really know.

    Of course, this is very much a Mac-specific code change, meaning it should be isolated from other supported OSes, so in lieu of spending time figuring that out, I'm just writing this issue and going back to recovering my Safari tabs :-)

.mbdb vs .db

I have older backups that uses .mbdb back up files that isnt compatible with this. Is there anyway to get it to work with older iphone backups.

Unable to access SMS db (malformed)

Hi,

Awesome work on this project- thank you.

When I try to open /HomeDomain/Library/SMS/sms.db, it tells me "database disk image is malformed".

So I tried:
sqlite3 sms.db > .tables > ERROR: database disk image is malformed

I tried to take a dump to remove any issues- sqlite3 sms.db ".dump" | sqlite3 new.db but kept getting no such table errors such as
main.chat_handle_join.

Any ideas on how to fix this issue?

Java Exception

Hi, I'm a bit of a noob. I'm trying to run the jar file on Windows and it's coming up with Java Exception error. I'm not sure what to do, my Java is updated and I can't run it through command prompt either. Thanks!

How to run?

Sorry for my lack of knowledge.
For someone who is not familiar with Java, how to actually run the GUI? It is currently not mentioned in README.md

I am running on Ubuntu 20.04

Error message MacStudio Monterey

Hi, I have installed Java on MacOS Monterey using the Oracle link you give, running on MacStudio (ARM).

In the Terminal I tried to start

sudo java -jar itunes-backup-explorer-1.4.jar

and get a long error (see below). Any idea?
Best regards
falkuh
################

Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /private/var/root/.openjfx/cache/18+12/libprism_es2.dylib: dlopen(/private/var/root/.openjfx/cache/18+12/libprism_es2.dylib, 0x0001): tried: '/private/var/root/.openjfx/cache/18+12/libprism_es2.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
java.lang.UnsatisfiedLinkError: /private/var/root/.openjfx/cache/18+12/libprism_es2.dylib: dlopen(/private/var/root/.openjfx/cache/18+12/libprism_es2.dylib, 0x0001): tried: '/private/var/root/.openjfx/cache/18+12/libprism_es2.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2399)
at java.base/java.lang.Runtime.load0(Runtime.java:852)
at java.base/java.lang.System.load(System.java:2030)
at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at com.sun.prism.es2.ES2Pipeline.(ES2Pipeline.java:52)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:413)
at java.base/java.lang.Class.forName(Class.java:404)
at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:1570)
Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: /private/var/root/.openjfx/cache/18+12/libprism_sw.dylib: dlopen(/private/var/root/.openjfx/cache/18+12/libprism_sw.dylib, 0x0001): tried: '/private/var/root/.openjfx/cache/18+12/libprism_sw.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
java.lang.UnsatisfiedLinkError: /private/var/root/.openjfx/cache/18+12/libprism_sw.dylib: dlopen(/private/var/root/.openjfx/cache/18+12/libprism_sw.dylib, 0x0001): tried: '/private/var/root/.openjfx/cache/18+12/libprism_sw.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2399)
at java.base/java.lang.Runtime.load0(Runtime.java:852)
at java.base/java.lang.System.load(System.java:2030)
at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
at com.sun.prism.sw.SWPipeline.lambda$static$0(SWPipeline.java:43)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at com.sun.prism.sw.SWPipeline.(SWPipeline.java:42)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:413)
at java.base/java.lang.Class.forName(Class.java:404)
at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:1570)
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:266)
at javafx.scene.image.Image.loadImage(Image.java:1081)
at javafx.scene.image.Image.initialize(Image.java:816)
at javafx.scene.image.Image.(Image.java:706)
at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.(ITunesBackupExplorer.java:46)
at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:1570)
Exception in thread "main" java.lang.ExceptionInInitializerError
at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:278)
at javafx.scene.image.Image.loadImage(Image.java:1081)
at javafx.scene.image.Image.initialize(Image.java:816)
at javafx.scene.image.Image.(Image.java:706)
at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.(ITunesBackupExplorer.java:46)
... 1 more

Export selected domains only export one domain

Hi, thanks for this great app!
When I select multiple domains and chose "export selected domains" it only exports one of them, but not all. It should put each domain in a subfolder.

Using itunes-backup-explorer-1.2.jar and java 17.0.5 2022-10-18 LTS.

java.lang.UnsatisfiedLinkError: Can't load library: libprism_es2.dylib

When I try to load the program via java -jar itunes-backup-explorer-1.2.jar, I get the following error on a M1 Pro MacBook Pro with macOS Ventura 13.0:

java.lang.UnsatisfiedLinkError: Can't load library: /Users/username/.openjfx/cache/18+12/libprism_es2.dylib
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2408)
	at java.base/java.lang.Runtime.load0(Runtime.java:785)
	at java.base/java.lang.System.load(System.java:2011)
	at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
	at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
	at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:390)
	at java.base/java.lang.Class.forName(Class.java:381)
	at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: Can't load library: /Users/username/.openjfx/cache/18+12/libprism_sw.dylib
java.lang.UnsatisfiedLinkError: Can't load library: /Users/username/.openjfx/cache/18+12/libprism_sw.dylib
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2408)
	at java.base/java.lang.Runtime.load0(Runtime.java:785)
	at java.base/java.lang.System.load(System.java:2011)
	at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
	at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
	at com.sun.prism.sw.SWPipeline.lambda$static$0(SWPipeline.java:43)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at com.sun.prism.sw.SWPipeline.<clinit>(SWPipeline.java:42)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:390)
	at java.base/java.lang.Class.forName(Class.java:381)
	at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
	at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
	at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
	at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:266)
	at javafx.scene.image.Image.loadImage(Image.java:1081)
	at javafx.scene.image.Image.initialize(Image.java:816)
	at javafx.scene.image.Image.<init>(Image.java:706)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.<clinit>(ITunesBackupExplorer.java:46)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Exception in thread "main" java.lang.ExceptionInInitializerError
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: No toolkit found
	at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:278)
	at javafx.scene.image.Image.loadImage(Image.java:1081)
	at javafx.scene.image.Image.initialize(Image.java:816)
	at javafx.scene.image.Image.<init>(Image.java:706)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.<clinit>(ITunesBackupExplorer.java:46)
	... 1 more```

Similar to what is described here, the program seems to download the wrong architecture for JavaFX: openjfx/javafx-gradle-plugin#112

Unable to access the jar file

Hi, i'm using windows to install this program but i can't. It says that it's unable to run the jar file in the cmd or double-clicking the file. Here the picture. Help me please 'cause i really need to backup my photoes and file on my iPhone. Thank you.
image
image

Question regarding the privacy policy

First of all I want to say that this is great software and it works exceptionally well and I totally appreciate your investment here!

I wanted to ask about the privacy policy of this tool, I know that of course if it appears on GitHub
it is open source and anyone can see edit and suggest changes to the code
but anyway I don't usually read the code in its entirety and I usually access the privacy policy provided by the developer
I haven't seen mention of this in the Read_me.md file so I wanted to ask if this software/code collects any data?

Thanks!

sms.db malformed

Hi,
I have exported sms.db but am unable to use it with sqlite3:
Error: database disk image is malformed
Any idea what could be the issue and how I could troubleshoot?
Thank you.

"Unable to install java"

Ive tried restarting my computer, redownloading and deleting java but it does not work and no matter what I do I cannot run the java to run the itunes backup explorer please help me.
Screenshot 2023-07-12 181135

Java Exception

`java -jar "C:\Users\Ryzen\Downloads\itunes-backup-explorer-1.4.jar"

Exception in thread "main" java.lang.UnsupportedClassVersionError: me/maxih/itunes_backup_explorer/ITunesBackupExplorerLauncher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

Already installed Java JDK latest and set java environment.

Unable to access the Jar file.

So I tried using the command prompt and it says unable to access this jar file, then I tried double clicking and Java gave me the error of. A Java Exception has occured, I really don't know much about those, think i could get some guidance?

Cannot run app on macOS 15

OUTPUT: Jun 20, 2024 10:18:36 AM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @6d6a0534'
Jun 20, 2024 10:18:41 AM com.sun.glass.ui.mac.MacApplication lambda$waitForReactivation$6
WARNING: Timeout while waiting for app reactivation
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '0x0 is an invalid NSTrackingRectTag. Common possible reasons for this are: 1. already removed this trackingRectTag, 2. Truncated the NSTrackingRectTag to 32bit at some point.'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff816a30946 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff8165180f0 objc_exception_throw + 62
2 Foundation 0x00007ff817a97599 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 362
3 AppKit 0x00007ff81ab7b51c -[_NSTrackingAreaAKViewHelper removeTrackingRect:] + 199
4 libglass.dylib 0x000000010f7ca449 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 3593
5 libglass.dylib 0x000000010f7cf038 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 23032
6 AppKit 0x00007ff81a2f0233 -[NSView setFrame:] + 347
7 libglass.dylib 0x000000010f7cf095 Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 23125
8 AppKit 0x00007ff81a30032a -[NSView resizeWithOldSuperviewSize:] + 816
9 AppKit 0x00007ff81a2ffbc2 -[NSView resizeSubviewsWithOldSize:] + 499
10 AppKit 0x00007ff81a2dfea7 -[NSView setFrameSize:] + 1198
11 AppKit 0x00007ff81a2f0233 -[NSView setFrame:] + 347
12 AppKit 0x00007ff81a30032a -[NSView resizeWithOldSuperviewSize:] + 816
13 AppKit 0x00007ff81a2ffbc2 -[NSView resizeSubviewsWithOldSize:] + 499
14 AppKit 0x00007ff81a2dfea7 -[NSView setFrameSize:] + 1198
15 AppKit 0x00007ff81a2fe63b -[NSThemeFrame setFrameSize:] + 466
16 AppKit 0x00007ff81a2fdd3f -[NSWindow _oldPlaceWindow:fromServer:] + 822
17 AppKit 0x00007ff81a2fc68c -[NSWindow _setFrameCommon:display:fromServer:] + 1859
18 libglass.dylib 0x000000010f7c227f getImage + 6799
19 libglass.dylib 0x000000010f7c1cec getImage + 5372
20 libglass.dylib 0x000000010f7c1f59 getImage + 5993
21 libglass.dylib 0x000000010f7d92ce Java_com_sun_glass_ui_mac_MacWindow__1setBounds2 + 446
22 ??? 0x0000000120630b3c 0x0 + 4838329148
23 ??? 0x000000012062c411 0x0 + 4838310929
24 ??? 0x000000012062c411 0x0 + 4838310929
25 ??? 0x000000012062c411 0x0 + 4838310929
26 ??? 0x000000012062c917 0x0 + 4838312215
)
libc++abi: terminating due to uncaught exception of type NSException
[1] 7602 abort java -jar itunes-backup-explorer-1.4.jar

How to open encrypted backup?

Hi! I managed to get the program running but I don't know how to input the password for the encrypted backup. Am I supposed to pass any parameter when executing the file or something?

Thank you for your help :)

Date of photos does not appear correctly

I want to say thanks again for this amazing extension!
There is something I noticed that when I export any photo the original date the photo was taken does not appear
and instead the date the backup was taken appears
Even in the EXIF of the photo, the original date does not appear

Do you know how to fix it?
Thank you for your wonderful work

Notes in backup

What path and domain can I find notes and note attachments?

Unable to insert files

I'm able to look through, delete, and replace files in my AppDomain but I am not able to insert new files. I was hoping to insert an entirely new Library folder into one AppDomain, but the insert statement is grayed out no matter where I right click. Edit is also grayed out.
This is not working on both an iPhone 5 and an iPhone 13. I created the backups using the most recent version of iTunes, and the Version on both backups says 10.0. I'm running Windows 10. Please let me know if you need anymore information.

Can't load library libprism_es2.dylib

Thank you for this amazing project!

When I am trying to launch the program with the configuration below, I get a few errors.

Using the latest iTunes Backup Explorer v1.4

My configuration

openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment Homebrew (build 19.0.2)
OpenJDK 64-Bit Server VM Homebrew (build 19.0.2, mixed mode, sharing)
Chip: Apple M1 Pro
Memory: 16 GB
macOS: 13.5.2 (22G91)

The errors

java -jar itunes-backup-explorer-1.4.jar 
Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: Can't load library: /Users/bech/.openjfx/cache/18+12/libprism_es2.dylib
java.lang.UnsatisfiedLinkError: Can't load library: /Users/bech/.openjfx/cache/18+12/libprism_es2.dylib
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2408)
	at java.base/java.lang.Runtime.load0(Runtime.java:785)
	at java.base/java.lang.System.load(System.java:2011)
	at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
	at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
	at com.sun.prism.es2.ES2Pipeline.lambda$static$0(ES2Pipeline.java:63)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at com.sun.prism.es2.ES2Pipeline.<clinit>(ES2Pipeline.java:52)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:390)
	at java.base/java.lang.Class.forName(Class.java:381)
	at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: Can't load library: /Users/bech/.openjfx/cache/18+12/libprism_sw.dylib
java.lang.UnsatisfiedLinkError: Can't load library: /Users/bech/.openjfx/cache/18+12/libprism_sw.dylib
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2408)
	at java.base/java.lang.Runtime.load0(Runtime.java:785)
	at java.base/java.lang.System.load(System.java:2011)
	at com.sun.glass.utils.NativeLibLoader.installLibraryFromResource(NativeLibLoader.java:217)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryFromResource(NativeLibLoader.java:197)
	at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:138)
	at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:54)
	at com.sun.prism.sw.SWPipeline.lambda$static$0(SWPipeline.java:43)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at com.sun.prism.sw.SWPipeline.<clinit>(SWPipeline.java:42)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:390)
	at java.base/java.lang.Class.forName(Class.java:381)
	at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:218)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:92)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
	at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
	at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
	at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:266)
	at javafx.scene.image.Image.loadImage(Image.java:1081)
	at javafx.scene.image.Image.initialize(Image.java:816)
	at javafx.scene.image.Image.<init>(Image.java:706)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.<clinit>(ITunesBackupExplorer.java:46)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Exception in thread "main" java.lang.ExceptionInInitializerError
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorerLauncher.main(ITunesBackupExplorerLauncher.java:6)
Caused by: java.lang.RuntimeException: No toolkit found
	at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:278)
	at javafx.scene.image.Image.loadImage(Image.java:1081)
	at javafx.scene.image.Image.initialize(Image.java:816)
	at javafx.scene.image.Image.<init>(Image.java:706)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.getIcon(ITunesBackupExplorer.java:43)
	at me.maxih.itunes_backup_explorer.ITunesBackupExplorer.<clinit>(ITunesBackupExplorer.java:46)
	... 1 more

Blank window

Hello,
I am getting nowhere on this app. For some reason.m it opens into a blank page. When I click on "Open Backup..." and navigate to my mobile sync folders, the files are grayed out. Not sure what is missing here.
Thanks, Terry
see screenshots
Screen Shot 2023-11-13 at 12 51 33 PM
Screen Shot 2023-11-13 at 12 50 37 PM
Screen Shot 2023-11-13 at 12 50 25 PM

A few questions regarding the development of this repo

Hey first of all tysm for making this!

I have a few questions regarding your project. I want to extend its functionality to be able delete or compress some junk data of apps like WhatsApp. At least on Android you can safely remove some files that are otherwise not easily deletable via the app natively but on iOS (since there is no file access) this is not possible which is why I want to attempt doing just that via backups.

  • During development, did you use any kind of profiler? I'm asking because as soon as I open some folders in the WhatsApp container it will start to freeze with the CPU usage going close to 400% for half an hour until I close the process. I'd be happy to investigate but I'd like to know whether that's something you've already done before

  • Commit 985906e that adds the possibility to replace files also comes with the reEncryptDatabase() function call. Does that work in a way that I can straight up "edit" any file in a backup, then play back that backup (that then contains the edited file) onto the device, essentially editing the otherwise closed-down iOS file system?

  • As I have previously mentioned, I'd like to be able to manage some common storage-hungry data. That would be something along the lines of "we don't need full resolution images in there, let's compress them" for example - would you be willing to merge such additions or should I run it as an independent project, only merging your upstream changes each time? I'd be fine with both ways, I'd just like to know your preference on that.

the backup is corrupted after deleting some files

I made a backup for my iPhone and somehow it was bigger than available storage even after erasing my iPhone so I tried this tool to delete some image folders and and now I get an error that the backup file is corrupt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.