diff --git a/Calibre_Plugins/K4MobiDeDRM ReadMe.txt b/Calibre_Plugins/K4MobiDeDRM ReadMe.txt index 07abb62..e892d11 100644 --- a/Calibre_Plugins/K4MobiDeDRM ReadMe.txt +++ b/Calibre_Plugins/K4MobiDeDRM ReadMe.txt @@ -1,4 +1,4 @@ -K4MobiDeDRM_v04.4_plugin.zip +K4MobiDeDRM_v04.5_plugin.zip Credit given to The Dark Reverser for the original standalone script. Credit also to the many people who have updated and expanded that script since then. diff --git a/Calibre_Plugins/K4MobiDeDRM_plugin/__init__.py b/Calibre_Plugins/K4MobiDeDRM_plugin/__init__.py index 7326e0f..48a3d23 100644 --- a/Calibre_Plugins/K4MobiDeDRM_plugin/__init__.py +++ b/Calibre_Plugins/K4MobiDeDRM_plugin/__init__.py @@ -19,7 +19,7 @@ class K4DeDRM(FileTypePlugin): description = 'Removes DRM from eInk Kindle, Kindle 4 Mac and Kindle 4 PC ebooks, and from Mobipocket ebooks. Provided by the work of many including DiapDealer, SomeUpdates, IHeartCabbages, CMBDTC, Skindle, DarkReverser, mdlnx, ApprenticeAlf, etc.' supported_platforms = ['osx', 'windows', 'linux'] # Platforms this plugin will run on author = 'DiapDealer, SomeUpdates, mdlnx, Apprentice Alf' # The author of this plugin - version = (0, 4, 4) # The version number of this plugin + version = (0, 4, 5) # The version number of this plugin file_types = set(['prc','mobi','azw','azw1','azw3','azw4','tpz']) # The file types that this plugin will be applied to on_import = True # Run this plugin during the import priority = 520 # run this plugin before earlier versions @@ -173,6 +173,9 @@ class K4DeDRM(FileTypePlugin): print " Getting PIDs from WINE" outfile = os.path.join(self.alfdir + 'winepids.txt') + # Remove any previous winepids.txt file. + if os.path.exists(outfile): + os.remove(outfile) cmdline = 'wine python.exe ' \ + '"'+self.alfdir + '/getk4pcpids.py"' \ @@ -193,19 +196,31 @@ class K4DeDRM(FileTypePlugin): print cmdline - cmdline = cmdline.encode(sys.getfilesystemencoding()) - p2 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=sys.stdout, stderr=STDOUT, close_fds=False) - result = p2.wait("wait") - print "Conversion returned ", result + try: + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p2 = Process(cmdline, shell=True, bufsize=1, stdin=None, stdout=sys.stdout, stderr=STDOUT, close_fds=False) + result = p2.wait("wait") + except Exception, e: + print "WINE subprocess error ", str(e) + return [] + print "WINE subprocess returned ", result + WINEpids = [] - customvalues = file(outfile, 'r').readline().split(',') - for customvalue in customvalues: - customvalue = str(customvalue) - customvalue = customvalue.strip() - if len(customvalue) == 10 or len(customvalue) == 8: - WINEpids.append(customvalue) - else: - print "'%s' is not a valid PID." % customvalue + if os.path.exists(outfile): + try: + customvalues = file(outfile, 'r').readline().split(',') + for customvalue in customvalues: + customvalue = str(customvalue) + customvalue = customvalue.strip() + if len(customvalue) == 10 or len(customvalue) == 8: + WINEpids.append(customvalue) + else: + print "'%s' is not a valid PID." % customvalue + except Exception, e: + print "Error parsing winepids.txt: ", str(e) + return [] + else: + print "No PIDs generated by Wine Python subprocess." return WINEpids def is_customizable(self): @@ -240,4 +255,4 @@ class K4DeDRM(FileTypePlugin): for candidate in zf.namelist(): if candidate in names: ans[candidate] = zf.read(candidate) - return ans + return ans \ No newline at end of file diff --git a/Calibre_Plugins/k4mobidedrm_plugin.zip b/Calibre_Plugins/k4mobidedrm_plugin.zip index 59318c2..91249f0 100644 Binary files a/Calibre_Plugins/k4mobidedrm_plugin.zip and b/Calibre_Plugins/k4mobidedrm_plugin.zip differ diff --git a/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py b/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py index e51b094..c4a6322 100644 --- a/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py +++ b/Calibre_Plugins/k4mobidedrm_plugin/k4mutils.py @@ -233,7 +233,7 @@ def GetVolumeSerialNumber(): def GetUserHomeAppSupKindleDirParitionName(): home = os.getenv('HOME') - dpath = home + '/Library/Application Support/Kindle' + dpath = home + '/Library' cmdline = '/sbin/mount' cmdline = cmdline.encode(sys.getfilesystemencoding()) p = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -358,6 +358,10 @@ def isNewInstall(): # soccer game fan anyone dpath = home + '/Library/Application Support/Kindle/storage/.pes2011' # print dpath, os.path.exists(dpath) + if os.path.exists(dpath): + return True + dpath = home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/storage/.pes2011' + # print dpath, os.path.exists(dpath) if os.path.exists(dpath): return True return False @@ -491,8 +495,30 @@ class CryptUnprotectDataV3(object): # Locate the .kindle-info files def getKindleInfoFiles(kInfoFiles): - # first search for current .kindle-info files home = os.getenv('HOME') + # search for any .kinf2011 files in new location (Sep 2012) + cmdline = 'find "' + home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kinf2011 files + cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kindle-info files cmdline = 'find "' + home + '/Library/Application Support" -name ".kindle-info"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -505,7 +531,7 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found K4Mac kindle-info file: ' + resline) found = True - # add any .rainier*-kinf files + # search for any .rainier*-kinf files cmdline = 'find "' + home + '/Library/Application Support" -name ".rainier*-kinf"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -516,17 +542,6 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found k4Mac kinf file: ' + resline) found = True - # add any .kinf2011 files - cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' - cmdline = cmdline.encode(sys.getfilesystemencoding()) - p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) - out1, out2 = p1.communicate() - reslst = out1.split('\n') - for resline in reslst: - if os.path.isfile(resline): - kInfoFiles.append(resline) - print('Found k4Mac kinf2011 file: ' + resline) - found = True if not found: print('No k4Mac kindle-info/kinf/kinf2011 files have been found.') return kInfoFiles diff --git a/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf b/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf index 61c74bf..ce1a71f 100644 --- a/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf +++ b/DeDRM_Macintosh_Application/DeDRM ReadMe.rtf @@ -30,7 +30,7 @@ This program requires Mac OS X 10.5 or above. \ \b \cf0 Installation \b0 \ -Drag the DeDRM application from from tools_vX.X\\DeDRM_Applications\\Macintosh (the location of this ReadMe) to your Applications folder, or anywhere else you find convenient.\ +Drag the DeDRM application from from tools_v5.3\\DeDRM_Applications\\Macintosh (the location of this ReadMe) to your Applications folder, or anywhere else you find convenient.\ \ \ @@ -42,5 +42,6 @@ Drag the DeDRM application from from tools_vX.X\\DeDRM_Applications\\Macintosh ( \ \b Troubleshooting\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural -\b0 A log is created on your desktop containing detailed information from all the scripts. If you have any problems decrypting your ebooks, quote the contents of this log in a comment at Apprentice Alf's blog.} \ No newline at end of file +\b0 \cf0 A log is created on your desktop containing detailed information from all the scripts. If you have any problems decrypting your ebooks, quote the contents of this log in a comment at Apprentice Alf's blog.} \ No newline at end of file diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist index 960cd29..8cea34e 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Info.plist @@ -24,17 +24,17 @@ CFBundleExecutable droplet CFBundleGetInfoString - DeDRM 5.2, Written 2010–2012 by Apprentice Alf and others. + DeDRM 5.3, Written 2010–2012 by Apprentice Alf and others. CFBundleIconFile DeDRM CFBundleInfoDictionaryVersion 6.0 CFBundleName - DeDRM 5.2 + DeDRM 5.3 CFBundlePackageType APPL CFBundleShortVersionString - 5.2 + 5.3 CFBundleSignature dplt LSMinimumSystemVersion diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/Scripts/main.scpt b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/Scripts/main.scpt index aa5c55a..fb9c2bc 100644 Binary files a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/Scripts/main.scpt and b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/Scripts/main.scpt differ diff --git a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/k4mutils.py b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/k4mutils.py index e51b094..c4a6322 100644 --- a/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/k4mutils.py +++ b/DeDRM_Macintosh_Application/DeDRM.app/Contents/Resources/k4mutils.py @@ -233,7 +233,7 @@ def GetVolumeSerialNumber(): def GetUserHomeAppSupKindleDirParitionName(): home = os.getenv('HOME') - dpath = home + '/Library/Application Support/Kindle' + dpath = home + '/Library' cmdline = '/sbin/mount' cmdline = cmdline.encode(sys.getfilesystemencoding()) p = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -358,6 +358,10 @@ def isNewInstall(): # soccer game fan anyone dpath = home + '/Library/Application Support/Kindle/storage/.pes2011' # print dpath, os.path.exists(dpath) + if os.path.exists(dpath): + return True + dpath = home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/storage/.pes2011' + # print dpath, os.path.exists(dpath) if os.path.exists(dpath): return True return False @@ -491,8 +495,30 @@ class CryptUnprotectDataV3(object): # Locate the .kindle-info files def getKindleInfoFiles(kInfoFiles): - # first search for current .kindle-info files home = os.getenv('HOME') + # search for any .kinf2011 files in new location (Sep 2012) + cmdline = 'find "' + home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kinf2011 files + cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kindle-info files cmdline = 'find "' + home + '/Library/Application Support" -name ".kindle-info"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -505,7 +531,7 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found K4Mac kindle-info file: ' + resline) found = True - # add any .rainier*-kinf files + # search for any .rainier*-kinf files cmdline = 'find "' + home + '/Library/Application Support" -name ".rainier*-kinf"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -516,17 +542,6 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found k4Mac kinf file: ' + resline) found = True - # add any .kinf2011 files - cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' - cmdline = cmdline.encode(sys.getfilesystemencoding()) - p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) - out1, out2 = p1.communicate() - reslst = out1.split('\n') - for resline in reslst: - if os.path.isfile(resline): - kInfoFiles.append(resline) - print('Found k4Mac kinf2011 file: ' + resline) - found = True if not found: print('No k4Mac kindle-info/kinf/kinf2011 files have been found.') return kInfoFiles diff --git a/DeDRM_Windows_Application/DeDRM_ReadMe.txt b/DeDRM_Windows_Application/DeDRM_ReadMe.txt index 4f87e62..e5e7774 100644 --- a/DeDRM_Windows_Application/DeDRM_ReadMe.txt +++ b/DeDRM_Windows_Application/DeDRM_ReadMe.txt @@ -1,7 +1,7 @@ -ReadMe_DeDRM_v5.2_WinApp +ReadMe_DeDRM_v5.3_WinApp ----------------------- -DeDRM_v5.2_WinApp is a pure python drag and drop application that allows users to drag and drop ebooks or folders of ebooks onto the DeDRM_Drop_Target to have the DRM removed. It repackages the"tools" python software in one easy to use program that remembers preferences and settings. +DeDRM_v5.3_WinApp is a pure python drag and drop application that allows users to drag and drop ebooks or folders of ebooks onto the DeDRM_Drop_Target to have the DRM removed. It repackages the"tools" python software in one easy to use program that remembers preferences and settings. It should work out of the box with Kindle for PC ebooks and Adobe Adept epub and pdf ebooks. @@ -19,9 +19,9 @@ This program requires that the proper 32 bit version of Python 2.X (tested with Installation ------------ -1. In tools_v5.2\DeDRM_Applications\Windows, right click on DeDRM_5.2_Win.zip and fully extract its contents using "Extract All...", saving to your "My Documents" folder. +1. In tools_v5.3\DeDRM_Applications\Windows, right click on DeDRM_5.3_Win.zip and fully extract its contents using "Extract All...", saving to your "My Documents" folder. -2. Open the DeDRM_5.2_Win folder you've just created, and make a short-cut of the DeDRM_Drop_Target.bat file (right-click/Create Shortcut). Drag the shortcut file onto your Desktop. +2. Open the DeDRM_5.3_Win folder you've just created, and make a short-cut of the DeDRM_Drop_Target.bat file (right-click/Create Shortcut). Drag the shortcut file onto your Desktop. 3. To set the preferences simply double-click on your just created short-cut. diff --git a/Other_Tools/KindleBooks/lib/k4mutils.py b/Other_Tools/KindleBooks/lib/k4mutils.py index e51b094..c4a6322 100644 --- a/Other_Tools/KindleBooks/lib/k4mutils.py +++ b/Other_Tools/KindleBooks/lib/k4mutils.py @@ -233,7 +233,7 @@ def GetVolumeSerialNumber(): def GetUserHomeAppSupKindleDirParitionName(): home = os.getenv('HOME') - dpath = home + '/Library/Application Support/Kindle' + dpath = home + '/Library' cmdline = '/sbin/mount' cmdline = cmdline.encode(sys.getfilesystemencoding()) p = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -358,6 +358,10 @@ def isNewInstall(): # soccer game fan anyone dpath = home + '/Library/Application Support/Kindle/storage/.pes2011' # print dpath, os.path.exists(dpath) + if os.path.exists(dpath): + return True + dpath = home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/storage/.pes2011' + # print dpath, os.path.exists(dpath) if os.path.exists(dpath): return True return False @@ -491,8 +495,30 @@ class CryptUnprotectDataV3(object): # Locate the .kindle-info files def getKindleInfoFiles(kInfoFiles): - # first search for current .kindle-info files home = os.getenv('HOME') + # search for any .kinf2011 files in new location (Sep 2012) + cmdline = 'find "' + home + '/Library/Containers/com.amazon.Kindle/Data/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kinf2011 files + cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' + cmdline = cmdline.encode(sys.getfilesystemencoding()) + p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) + out1, out2 = p1.communicate() + reslst = out1.split('\n') + for resline in reslst: + if os.path.isfile(resline): + kInfoFiles.append(resline) + print('Found k4Mac kinf2011 file: ' + resline) + found = True + # search for any .kindle-info files cmdline = 'find "' + home + '/Library/Application Support" -name ".kindle-info"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -505,7 +531,7 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found K4Mac kindle-info file: ' + resline) found = True - # add any .rainier*-kinf files + # search for any .rainier*-kinf files cmdline = 'find "' + home + '/Library/Application Support" -name ".rainier*-kinf"' cmdline = cmdline.encode(sys.getfilesystemencoding()) p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) @@ -516,17 +542,6 @@ def getKindleInfoFiles(kInfoFiles): kInfoFiles.append(resline) print('Found k4Mac kinf file: ' + resline) found = True - # add any .kinf2011 files - cmdline = 'find "' + home + '/Library/Application Support" -name ".kinf2011"' - cmdline = cmdline.encode(sys.getfilesystemencoding()) - p1 = subprocess.Popen(cmdline, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=False) - out1, out2 = p1.communicate() - reslst = out1.split('\n') - for resline in reslst: - if os.path.isfile(resline): - kInfoFiles.append(resline) - print('Found k4Mac kinf2011 file: ' + resline) - found = True if not found: print('No k4Mac kindle-info/kinf/kinf2011 files have been found.') return kInfoFiles diff --git a/ReadMe_First.txt b/ReadMe_First.txt index 5a9e433..2ce4030 100644 --- a/ReadMe_First.txt +++ b/ReadMe_First.txt @@ -1,7 +1,7 @@ Welcome to the tools! ===================== -This ReadMe_First.txt is meant to give users a quick overview of what is available and how to get started. This document is part of the Tools v5.2 archive. +This ReadMe_First.txt is meant to give users a quick overview of what is available and how to get started. This document is part of the Tools v5.3 archive. The is archive includes tools to remove DRM from: @@ -33,7 +33,7 @@ These plugins work for Windows, Mac OS X and Linux. For ebooks from Kindle 4 PC DeDRM application for Mac OS X users: (Mac OS X 10.5 and above) ---------------------------------------------------------------------- -Drag the "DeDRM 5.2.app" application from the DeDRM_Applications/Macintosh folder to your Desktop (or your Applications Folder, or anywhere else you find convenient). Double-click on the application to run it and it will guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. +Drag the "DeDRM 5.3.app" application from the DeDRM_Applications/Macintosh folder to your Desktop (or your Applications Folder, or anywhere else you find convenient). Double-click on the application to run it and it will guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. To use the DeDRM application, simply drag ebooks, or folders containing ebooks, onto the DeDRM application and it will remove the DRM of the kinds listed above. @@ -46,7 +46,7 @@ DeDRM application for Windows users: (Windows XP through Windows 7) ***This program requires that Python and PyCrypto be properly installed.*** ***See below for details on recommended versions are where to get them.*** -Unzip the DeDRM_5.2_Win.zip archive that's in the DeDRM_Applications/Windows folder, saving the resulting DeDRM_5.2_Win folder in your "My Documents" folder (or anywhere else you find convenient). Make a short-cut on your Desktop of the DeDRM_Drop_Target.bat file that's in the DeDRM_5.2_Win folder. Double-click on the shortcut and the DeDRM application will run and guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. +Unzip the DeDRM_5.3_Win.zip archive that's in the DeDRM_Applications/Windows folder, saving the resulting DeDRM_5.3_Win folder in your "My Documents" folder (or anywhere else you find convenient). Make a short-cut on your Desktop of the DeDRM_Drop_Target.bat file that's in the DeDRM_5.3_Win folder. Double-click on the shortcut and the DeDRM application will run and guide you through collecting the data it needs to remove the DRM from any of the kinds of DRMed ebook listed in the first section of this ReadMe. To use the DeDRM application, simply drag ebooks, or folders containing ebooks, onto the DeDRM_Drop_Target.bat shortcut and it will remove the DRM of the kinds listed above.