Skip to content

Instantly share code, notes, and snippets.

@dannote
Last active November 21, 2024 14:43
Show Gist options
  • Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Final Cut Pro X trial reset
#!/usr/bin/swift
// DISCLAIMER
// This script modifies an unencrypted file associated with the trial version of Final Cut Pro.
// Under the DMCA (17 U.S.C. § 1201), this modification does not qualify as circumvention of a technological
// protection measure (TPM), as it does not involve bypassing encryption, authentication, or similar protections.
// Distributing this code is therefore legal under the DMCA.
// This script is intended for educational and research purposes, such as exploring trial-related file structures,
// or for system troubleshooting in controlled environments with explicit permissions. It is not intended to be used
// in a manner that violates Apple's software license agreement.
// WARNING
// Using this script to reset or extend the trial period of Final Cut Pro without Apple's authorization likely violates
// the software license agreement. Such actions may lead to legal consequences. The responsibility for compliance with
// all applicable laws and agreements lies solely with the user. The author of this script assumes no liability for misuse
// or any resulting consequences.
import Foundation
let path = URL(fileURLWithPath: NSString(string: "~/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application Support/.ffuserdata").expandingTildeInPath)
let data = try! NSData(contentsOf: path) as Data
let dictionary = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! NSDictionary
let mutableDictionary = dictionary.mutableCopy() as! NSMutableDictionary
for (key, value) in mutableDictionary {
if value is NSDate {
mutableDictionary[key] = Date()
}
}
try! NSKeyedArchiver.archivedData(withRootObject: mutableDictionary, requiringSecureCoding: false).write(to: path)
print("You'd better buy it")
@tueng1
Copy link

tueng1 commented Oct 30, 2023

can it work on new macos 14 sonoma

Yes

@karanmgandhi
Copy link

@tueng1 I am trying to run your command in Sonoma but it doesn't work. Here's the error I get. Can you please help?

Screenshot 2024-02-20 at 5 29 33 PM
Screenshot 2024-02-20 at 5 30 28 PM

@TehBrian
Copy link

@tueng1 I am trying to run your command in Sonoma but it doesn't work. Here's the error I get. Can you please help?

@karanmgandhi, run it in the Terminal app.

Shortcuts is running it as administrator and therefore ~ refers to root's home (as opposed to your user's home) which is not where .ffuserdata is stored.

@karanmgandhi
Copy link

karanmgandhi commented Feb 21, 2024

Understood, tried it and it worked! Thanks a lot @TehBrian !

@andresreibel
Copy link

Install FCPX trial
Open terminal and run: crontab -e
Add line: 0 0 */90 * * rm -rf ~/Library/Application\ Support/.ffuserdata
Save in nano: CTRL + O, Enter, CTRL + X
Save in vim: ESC, :wq, Enter
Verify cronjob: crontab -l

@geetch
Copy link

geetch commented Sep 28, 2024

Can anyone confirm if it is working on macos sequoia?

@andresreibel
Copy link

It’s working for me on the latest fcp. Just run the rm command in the terminal and check the trial period length.

@geetch
Copy link

geetch commented Sep 28, 2024

It’s working for me on the latest fcp. Just run the rm command in the terminal and check the trial period length.

Did you execute it in macOS Sequoia?

@andresreibel
Copy link

andresreibel commented Sep 28, 2024 via email

@utkcodes
Copy link

utkcodes commented Oct 1, 2024

Please confirm if it still works on macOS Sequoia?

@andresreibel
Copy link

andresreibel commented Oct 1, 2024 via email

@l0u1sg
Copy link

l0u1sg commented Nov 15, 2024

The latest version of Final Cut Pro seems not to work with this script:

main/final-cut-pro-trial-reset.swift:6: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=260 "The file “.ffuserdata” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/[RESTRICTED]/Library/Application Support/.ffuserdata, NSURL=file:///Users/[RESTRICTED]/Library/Application%20Support/.ffuserdata, NSUnderlyingError=0x12e610c40 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

Does someone have a solution?

@TehBrian
Copy link

The latest version of Final Cut Pro seems not to work with this script:

main/final-cut-pro-trial-reset.swift:6: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=260 "The file “.ffuserdata” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/[RESTRICTED]/Library/Application Support/.ffuserdata, NSURL=file:///Users/[RESTRICTED]/Library/Application%20Support/.ffuserdata, NSUnderlyingError=0x12e610c40 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

Does someone have a solution?

Try this: https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3

@l0u1sg
Copy link

l0u1sg commented Nov 17, 2024 via email

@TehBrian
Copy link

@l0u1sg, I've updated https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3 with the correct path for newer versions of Final Cut Pro.

Additionally, I've made a similar Gist for Logic Pro, https://gist.github.com/TehBrian/1c236b6d9c58e736c0480a876759164d, which I'll keep updated as well.

@l0u1sg
Copy link

l0u1sg commented Nov 18, 2024 via email

@dannote
Copy link
Author

dannote commented Nov 21, 2024

@TehBrian thank you, updated the code accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment