Slashdot Mirror


Privatunes Anonymizes iTunes Plus

njondet writes "French-law.net reports that Ratatium.com, a French website specialized in technology news and software downloads, has just launched Privatunes, a free software that anonymizes DRM-free files bought on iTunes Plus. Last month's revelations that the DRM-free files sold by EMI on iTunes Plus came with user's full name and account e-mail embedded in them had raised serious privacy concerns. Ratatium.com explains (in French) that Privatunes is aimed at guaranteeing the privacy of users but also their rights as consumers to freely share and trade the songs they have purchased. However, the claim that this software is perfectly legal will surely be tested."

1 of 176 comments (clear)

  1. So does the Audio:M4P::QuickTime perl module by vtkstef · · Score: 4, Informative
    the method name is CleanAppleM4aPersonalData(). Here is an example on how to use it:

    #!/usr/bin/perl
    ##
    # A N O N C P . P L
    #
    # a script that takes the unix cp file specification options
    #
    # perl anoncp.pl source_file target_file
    # perl anoncp.pl source_file ... target_directory
    #
    # which reads the source file(s) and copies them to the
    # destination stripped of all the user identification gunk
    # that apple adds on iTunes "DRM free" songs
    #
    # NB: make sure you install the latest version of the
    # most excellent Audio::M4P::QuickTime perl module.
    ##

    use strict;
    use warnings;

    use Carp;
    use File::Basename;

    use Audio::M4P::QuickTime;

    my $usage = q{
    usage:
            perl anoncp.pl source_file target_file
            perl anoncp.pl source_file ... target_directory
    };

    @ARGV >=2 || croak "not enough files specified", $usage;

    my $destDN = pop(@ARGV);
    my $destFN = $destDN if (! -d $destDN && @ARGV == 1);

    $destDN = dirname($destFN) if( $destFN);

    -d $destDN || croak $destDN, ": is not a directory", $usage;
    (-r $destDN && -w _) || croak $destDN, ": cannot access ", $usage;

    $destDN =~ s{ (?new( file => $m4aFN);
            $qt->FindAtom("mp4a") || croak "$m4aFN: not a mpeg 4 file\n\t";

            $qt->CleanAppleM4aPersonalData();

            $toFN = $destFN ? $destFN : $destDN . basename($m4aFN);
            $qt->WriteFile($toFN);
    }

    0;