Help: Unable to play Dezyred scenes (downloaded with Play'A app; replayed with Windows Media Player)

I just purchased and downloaded Dezyred’s “Family Secrets in Cancun” videos using the Play’A app. When I try to play the MP4 videos using media player, they don’t work. The 6K versions play no video and show a duration of multiple hours (which is very incorrect), and the 8K versions result in a error about the file being corrupt.

Does anyone have any insights into whether Play’A or Dezyred is doing something unusual with the MP4 files?

I am able to download videos from VRBangers and VRConk using the Play’A app without issue.

They encrypt the newer videos now. Not sure if anyone found a way around them yet.

They “encrypt” the videos by inverting all the data in the MP4 files. You can quite easily use an LLM to generate a python script to flip the bits back.

1 Like

Are you saying it’s just a binary XOR against 11111111?

Correct… it would be generous to call it encryption :laughing:

1 Like

Here’s a quick and dirty solution…

#!/usr/bin/env python3
"""
XOR File Tool - XOR all bytes in a file with key 0xFF
"""

import sys
import os


def xor_file(input_path):
    """
    XOR all bytes in a file with 0xFF.
    
    Args:
        input_path: Path to input file
    
    Returns:
        Path to output file if successful, None otherwise
    """
    # Generate output filename by appending _XOR before extension
    base, ext = os.path.splitext(input_path)
    output_path = f"{base}_XOR{ext}"
    
    try:
        with open(input_path, 'rb') as infile, open(output_path, 'wb') as outfile:
            while True:
                chunk = infile.read(4096)  # Read in chunks for efficiency
                if not chunk:
                    break
                
                # XOR each byte with 0xFF
                xored = bytes([b ^ 0xFF for b in chunk])
                outfile.write(xored)
        
        print(f"Successfully XORed {input_path} -> {output_path}")
        return output_path
        
    except FileNotFoundError:
        print(f"Error: File '{input_path}' not found", file=sys.stderr)
        return None
    except PermissionError:
        print(f"Error: Permission denied", file=sys.stderr)
        return None
    except Exception as e:
        print(f"Error: {e}", file=sys.stderr)
        return None


def main():
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <input_file>", file=sys.stderr)
        print(f"\nXORs all bytes in the file with 0xFF", file=sys.stderr)
        print(f"Output file will be named: <input_file>_XOR<extension>", file=sys.stderr)
        sys.exit(1)
    
    input_file = sys.argv[1]
    result = xor_file(input_file)
    sys.exit(0 if result else 1)


if __name__ == '__main__':
    main()
2 Likes

Technically, it would be encryption… mainly because we have to accept that rot13 is technically encryption.

Thanks for the script!

1 Like

Hey, super non-tech nerd here; how would you run this script on either windows or mac (I can use either if necessary)? Got a few new DZR videos downloaded that I would like to script at some point.

Your Mac should have Python installed by default, so that’ll be easiest.

  1. Copy and paste the code I posted into a text file.
  2. Save it as “xor.py” or similar.
  3. Open “Terminal” on your Mac and change to the directory with the .mp4 and .py files.
  4. Type chmod +x xor.py. This is a one-time step to tell your Mac the .py file is eXecutable code.
  5. Type xor.py dezyred.mp4 substituting the dezyred for the file name.
  6. You should end up with a new file: dezyred_xor.mp4

Here are a couple of tutorials that go into more detail:

1 Like

Thank you a ton my friend. Greatly appreciated. Sent you a PM.

Just adding to this, ran @Islanti 's code through ChatGPT and it claims it cleaned it up a bit. Don’t know if matters much, but here’s the output:

#!/usr/bin/env python3
"""
XOR File Tool - XOR all bytes in a file with key 0xFF
"""

import sys
import os


def xor_file(input_path):
    """
    XOR all bytes in a file with 0xFF.

    Args:
        input_path (str): Path to input file

    Returns:
        str | None: Path to output file if successful, None otherwise
    """
    # Generate output filename by appending _XOR before extension
    base, ext = os.path.splitext(input_path)
    output_path = f"{base}_XOR{ext}"

    try:
        with open(input_path, "rb") as infile, open(output_path, "wb") as outfile:
            while True:
                chunk = infile.read(4096)
                if not chunk:
                    break

                # XOR each byte with 0xFF
                xored = bytes(b ^ 0xFF for b in chunk)
                outfile.write(xored)

        print(f"Successfully XORed {input_path} -> {output_path}")
        return output_path

    except FileNotFoundError:
        print(f"Error: File '{input_path}' not found", file=sys.stderr)
    except PermissionError:
        print("Error: Permission denied", file=sys.stderr)
    except Exception as e:
        print(f"Error: {e}", file=sys.stderr)

    return None


def main():
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <input_file>", file=sys.stderr)
        print("XORs all bytes in the file with 0xFF", file=sys.stderr)
        print("Output file will be named: <input_file>_XOR<extension>", file=sys.stderr)
        sys.exit(1)

    input_file = sys.argv[1]
    result = xor_file(input_file)
    sys.exit(0 if result else 1)


if __name__ == "__main__":
    main()

Mine was generated by ClaudeAI. Maybe we can get Grok to have a go as well! :smiley:

1 Like

Hey can you tell me how I would do this but not on a mac but windows pc

You can download and install Python for Windows here:
Python Releases for Windows | Python.org

WOW. why did they do something so weak when someone had to have purchased the video anyway? geesh. All the dezyred videos on here went from having the no-free-links tag to them being gone. and more available to people who haven’t paid.

Seems like more damage was done than good by implementing something this weak. I won’t be posting free links anymore though since this is available. Also nice to finally download a video that I purchased that wasn’t on EMP…

1 Like

Yeah, it makes you wonder. There was another method someone found for getting the decrypted video from Play’a too. Not sure either method works if you haven’t paid though. And I for one am OK with that. Ultimately, someone has to pay or no new content will be produced after all.

That said, if I HAVE paid I expect to be able to use and archive the content however I like. I’m clearly not alone given how people are protesting DRM and restrictions by sharing the content. Something all these porn companies should keep in mind.

1 Like

Call me a cynic if you’d like but ultimately I don’t think they give a shit what we think about their policies. At the end of the day, if imposing DRM on their content doesn’t really hurt their bottom line in any significant way, they’ll continue to do whatever keeps them profitable. And considering the porn industry still brings in billions of dollars each year in revenue, the studios aren’t clearly hurting THAT MUCH. That said, what it will start doing (at least IMO) is pushing more paying customers into a hybrid situation of paid and pirated content. You can look at what all of the main streaming sites (like Netflix, Hulu, etc) have done to digital content as an example. Piracy is now ramping back up because of boneheaded decisions by billionaires in search of more profit. I think it will only be a matter of time until the porn industry experiences a similar situation all over again.

1 Like

Thanks a lot for this.
I am getting a syntax error on the first line when I execute the .py file via Mac Terminal. Do I need to amend anything in the code you pasted or should it just work without further edits?

It’s meant to be saved to a file like xor.py. The first line may be tripping up the terminal because it tells the system how to interpret the rest of the file.

Once saved you’ll need to run chmod +x xor.py to tell your Mac it is an eXecutable (program or app) file that can be run as software.

Then type xor.py myfile.mp4 to use it.

Thanks a lot for your help, seemed to have got it working now!

1 Like