From 899fd419ae737dbab985c9510056a50e7b536b03 Mon Sep 17 00:00:00 2001 From: Apprentice Alf Date: Tue, 11 Sep 2012 17:57:03 +0100 Subject: [PATCH] tools v5.3 --- Calibre_Plugins/K4MobiDeDRM ReadMe.txt | 2 +- .../K4MobiDeDRM_plugin/__init__.py | 43 ++++++++++++------ Calibre_Plugins/k4mobidedrm_plugin.zip | Bin 224312 -> 224780 bytes .../k4mobidedrm_plugin/k4mutils.py | 43 ++++++++++++------ DeDRM_Macintosh_Application/DeDRM ReadMe.rtf | 5 +- .../DeDRM.app/Contents/Info.plist | 6 +-- .../Contents/Resources/Scripts/main.scpt | Bin 253382 -> 254846 bytes .../DeDRM.app/Contents/Resources/k4mutils.py | 43 ++++++++++++------ DeDRM_Windows_Application/DeDRM_ReadMe.txt | 8 ++-- Other_Tools/KindleBooks/lib/k4mutils.py | 43 ++++++++++++------ ReadMe_First.txt | 6 +-- 11 files changed, 130 insertions(+), 69 deletions(-) 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 59318c25e547c3cdd5fbf96a5ac90df763e24478..91249f0e6dbe6bdbc489678319f2652037505eb3 100644 GIT binary patch delta 14231 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 delta 13704 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 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 aa5c55acea5ca150c521d98f13c52167266b779b..fb9c2bc55881bacdbb86d4022ac5cf0f3422d928 100644 GIT binary patch delta 19343 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 Vy)T+Mkp>>F0Hcol{nDlV{{yfp8Z!U@ delta 18111 zcmaic2YeL8`}f{$>P~XGOS^=Wo6tL<_uhLif|QU12&9pODphRQC=nM>X-W~LDT<;r z6}vPWDpD<(hF!7pKF{n0LHPe({djqHc6Rrfr+nvm=9%%IH)Gy>C1%lGuDjfO&6N%9 z)eX%i-pe&ESHE1%b-ANqcmrP=6YS3$n)@TwQT2v;om{TEqJM@-E@!Mb7l1#se6Xtq z{0)?U;i?0F)9uEYW?ZW@BP!E~$j;BrD#CYg!u%gOe}m1dluTuw4PnT9nfFF!YTc3x>&DL&@6&v!O!!M762Pu9Y3C)nP` zW^z)z5u0gvW)$WZWlt+8nwW=AVSjsLu`3~kT#mi&es1xMiIw+#_VmVPVh6AO)Re5k zoc!F%TQP<=(})VT73JsTmf#CL&QOYG6qZ$XjJD|@v!?rUlzr@e6XineAD(idoUHP} zv(w;jq}^bVSq+E?d#$aBaC?0dGuahpXI3{8;6|u@vWc1I3bDUyV%Bn*_MjTN*=;v! zYSwYN?3iO_y8E(WkKTfhtE=|(0yn%_{bLVaZ6>+Z-}cyfZuq47%U*n!zVoMj;RCaZ zTm4~YzHg?$o!@QtDzc}p*n=}P@teJ3o(o_1t9_)I8F2k#U%)><+pgxo%TM;856o1z z`mub_e*DxA_SoiT4cGT};2smd^xewd0XI?QjYCu6O066W>QK^-X<=4#iSpuB_$h90 z=mD={_Q4+T;tKo130GVlqP|7thZN`Klo}y}dUq=&>Kjx*=!_g}3LV}}w|#9-f5D7* ztFLU=D`s`Kx@2d~Gi$*o?M^vv3U9w)PmgusXU>aaRQDa}v^ zi8`VUWL8ODS#DX8wrY<$j1L~5RZVrkaCvA|!)2&fiF#FA2=pl}E6FPa`**8D;7pVP z@rv3{)GPn(K-7Nwhc>1^J;R7nFRPc-K4YhPQN5t{s^`^nYLD8jb`kY54l>$OFBu_L zac)V0rS_GRgp|6LdJ$Smawip9>II-?m1LD!YOfJNN^)kE z<PfYUsHcPMZo9_rR%90jumxI5bIY1oYO`J3)=Vo8cv69% zC-Lo@ke_Gl7u%W*nr$>rstsyAtwC$5bwq9aFNnC+27F{aGE@T?dV;7Y9ENHFLyxP+ z)LOMhtyZ>rRIMWFaWszjDD~JihSmldT62w|)tVuf9Td@{`2JPM(mG_Rc87~bxK}-5 zRH$;blGdWN)d~Wa2zUP?nOl|PV=IxZT1JRku9m5X)k8!rw_CM0GhEA%NAP*|aQSpU zz@~brd_!_VxR=&8VvWo8;r3=~q*|cnt9e8{sCjm)2ar?KQumj?laSKdQcHp3lAK9k z1NQ-ylbfGsse6ISo{|OHzQ?dEbvGEmv`Hley}MCpx(jZqCHBUSu9TXVx)ZLlO0!EW zwHT9T4aD~7Q*GQ?xTiTYC%v0^KmTmPy{RN6CKPP?;WnjYOb0?>(IJtHc@xj zS;Jh3acVC1n}cJn1FD!s)GWK8BLH(0s1iL`tA{0N8v$Q4)p#{dja9d+F_s#CjjwUn z_!{f*bvyDk2KmZHzG`_#yY5rBsZq2sZK6gJH5%v2I!U)77b9p>Q;k3_nj#m&i5hNa zbTN~CqmYNjhN*_Bp=tIHEcYy1F>aY6IX0*BLOVj|Iv_WD0k)=Mgg{k@= zOD&M4-bD3wSn7u?H3OD3 z-BN9VNpuuTwE?Q6Yz{a`YaB<}Y{2$b{vCV zw#rbHwx(@VfT*h1g=+tXavqg|Mw3q4nkpTQrY#yx8c}KG8}l-nx)nuDwKn2Zs!CB+ zRI*A^ewC;aRJ@8)vC5~sDn@x!w2D$hSwyAcb0C|P^2HPVexj=A2&Am2IBTvEI&9#e z&ZCJ+w$Bxsb=@k-o<7n{a4Ub%5)*^Ykx+hQ8O9y)MDyJWJ0wv*q6&I+B=P<|u74t-R9B`<|; z3Vk+or@R@`KPA9jpQGAw=k=K$lrrmg}mZq74o-W zWGR1jjFre=(6g#VTk>ak3g;;zf5N!5n%|N?LesRO?0if9fG;naIMtHh+bhPnA?%jl zVRlfGB$-e5st@&uTX)WP<3@d=UNXfrG;D$B~x1-VUw%*v8q!&{0=izZp}D^2AUTJjQP z0qbc7**ysqbA>SqPU37oT zEk8imXm9xKGb7B}k@5w(S3XbVI}SL=x67|?g4s~Mg+Nfx^(Nv#qU)#w1M&@ofoiVT z9TbqSl@EFk;yQW6{%53_;yPSD<~R=UQ2Bymkg>{x-wi(={!#d6;orzd!+(;i!he^KM1;z6xl*o(NROZkNfjFw9xtI9j& z;>hNagCmE^MRK8BAm>~1IWQWHB61H<8b#!8KoPmixhyf|PCya411{yWMp8q2?`X3M zc?NJqZbzv+?V!iDAbMi31~RfpTDEO(l%1#u*--v*DHlKaV;9vg#H9 z^2p5qQXT}5mD*T36S?9)X^SP7!>hre0Rfg>=WmvL7}|AGARj`$po=9R#Ki%~NaO?M zXWqlV_uCshCQS4aQH(kYg_&pzD7l@dqfz5lVkdxEZix9$4Xot9zAyWp9!5`1O} zP!0-Vj#6BTD709k5E%L*2O}10jEG$T9UP39Z$$g#`{o6E?GUr-zOCcTH%;%n$b5N+ zoJ%{=&JuiRo;`n}=})=?!C*G+V#?VF23-&gW)V3n2nLYEcxfji&i-X za%?rm<%f8ovymsW<;2KkGD}X7<0BuH)NBuUu1=}6=Z>rN+_6E=y}iuJ+O`(dV}KKatNwv@PE9K$UzPm4MZ@?wB!KzDu595}!m_9jY-|0NFXNb2^)H2yn zHlST;Hwg~W2p4kWt9WEXbn$w$yD1^(_t5U>;&q9vi%wk2EgPVVcQvAA9a&q}k~L)w zSzT6>Rb_^xG9c4s8j*FdZ!(d!bpT$RGpRIhvJp0@TaTf6fY-Gg7^vyMK#d>_RCi#Y z+J9l7s&?GOj9Ym()zSmG1hj7gksbt#H0`zEtlf-OQIE@1nIfymWSJ!WGBN4}nIPk% z-js1s6*5-(q&Mn286!PWS7o$}icXDg6x}+yqa@OjkuoBBv<#0PADt7O7d=ykMK6(| zG9-GLG^Ja*qPInFmxj11{t!w}pU5cfRmjG* z)qhE}A%VGB@VsNBm^wH{8WA+oaAA?5kHHci13BzpqlNAZLB-cwV2CoT)+>EY=kq-TI&2dYLN`nB!PgNbfD!Efabo zDsC096Y=eJ-LEUvh;Ouqn?7-6YwRr3)&6VG8{#W*iT0*_#6=>$zD2plBfdh(UZ8zV zaRDXU7bSb1i1T*VOjp%-aR~(rkSWfIv*Jr}hKO@`CnJrBvpSeYsQ`GE84*bJ1B!?* zZP!9q%19#4Xd^0{l2H?6ndubmiA)FFlh|k4m;0T<=Fhcr7Mp(iQ+j1Nx3+N;u(PA`GANIDh&@3NH6UNhWEaBPrOUS z`;~_GUeNH~MZ;_6rTvZY7_WFoye-}mZ;GSh4NJUpZJcidl@_ z5pQUOydf#|iR1QzcbFZ$ug5eOuZbgcARQzQ6Y)Bx)HM>_;x#}YaRhlB2*e?AkcdOL z_EMjSgBrU_b4&8F@{O>e`mdJ`0yf)<1L9Tjir631BW4g02e7JCC*f7#%+bXw$fMT9 zetXXXnB)%I2j`p35`KVHU-5FxZQ>=dj}E3o#EV3{th0LHA%}@A4inGX#}|NJHpgrgPl+e#a5_S4 zB4RTvZKNlNr;rDz=6LCFAU28(L~OJNFNAXEhDr`b00%q7da+JCAs&x;Dds2<>uWg4x5cAk zm3V{*+n%u21&em#QTzTy5Rk93pM~12>k%|)>ZPNMsF+VhxmYPyh~;9LcsS-q@sM~h z=1*@Z5#_=8N36WY*ote6E!Xo;U9k*WbfhLQandWc0uv|4=O4to0I)u>+Fr8Q9O8Yz z>k;>hrSvvBTHHs(1G+*C7Ii)?au35Y0ZeZN6YH^RRS*^ZA5wF z#ogjAu|(YIt?F&yZRhPQ7JG+#bBVY+7~KiXv>e02Ov{nzozBE57DEe0cRq2SedJDa zmUof2SS%C^=oostm`}ta`%rb$U&SL9B5KT|V@)v+QDZEk#vMf5VQ*Y&rqytZ1<3Un zBTCE_bHr>hOUx8AM42cRC1ScL7DYtN#jb(4Ioj~C>T85x(U*wXmBu;?mpLyWif@Rvi73MB>)i2nqpx?iDD>Xv zUFLnnyWYFeyG0a;eD90i{bHJ!D)Ph>G1>c$m?UyVj`xz6d4CbvVxspCU#Q3u6U2Bi z&X?dz_fcPcUqfGeF;?6z#`wng#`>~-d0sJE+~%9(yTdo%x5T$pjIzhwZKlMJ6eE0B zVk2V{VpC%SvDIT65K*YN3}jlO0F5dO(eYvk5ySOX39!ClXnlj}1XBz~ z>zjbq2RJ@RTVIM>3`Of3XM~G^Vu0u``iZ`xkLXRrKy7or0XG-`5&bnxyZSly*0<8$ z`c&FmZ+qD(SMpRZ9d9&_Z6|ug_KO`FJ1RCiHaB*v=qY-{&W&9lx{Ge2tLP#+$37%F ziH@R!XfN8u?umUq_T|_^qOE8X`+n?+*iT~5#C{zsW3R+sjdRC^i`Jr*Xc^~?%ZO_b z*DS7OT)VjLMD)TbC8J?alqHDU5}3d_c7O?-V+WYPId;$$?Vt6Il?rNx3d#ZnWr{|kp=coLi+Z9i z5t&*+{zkW$xru1#)Ko+RM^E)D^;EA?Pj&4951Sb|6OBf3!$h69oVaOm#c_AU&5yfN z)E2ekR>nOlYKj`7x~L|q#%&fEf{K7hk9$p|iPX4bai`)=$DI`^qDtJiahK!%hfBXRg{D( zf{e^3n(jNc%pB?RCdLmC2_l~6&|DEmL?Ui4faKo!N(Nv4QJ6-`1F`H1jo6(zVu zJgNvlS$IW^@Q7$4yjnSFF-9WnhXhC#;7pC)bib{t<5QOJ4ZljXHDlQ!pp< zllTd&yz>*+p@GGZL%ZIa!H?lLaBl|x04Us>VemCJZHPM-e-mDuH7PTvq!@OXS^Oy6m{d|!VDUHL#-#k50{Cx+#b1YZ+@@gi*MQLii!QH!<4c2jLd32@!q(_9cKUFzM3K2-kHl*t+)b{yK~A*9$VS{N)=A zhk#~u4aMa90QC5afOq`2eOK0)!%XiB{*inyf1XaI)A)0Qzku5(YgO^^z36*;Xuiq! zAl~Hz-tpap@7Dg7;^xnzzfCp5`7XYb@8Hk!XZUvhG~v5~ezr51H1Hik_j+=r8pz@GtV;&A0l?{WjmiH}j|XlYEnZ3*YE}iErTR z`8xgtf877J|CIkT|JQ!$|IYt2f6V_kU(44JzD;i!ayerHk(zL+oK3;6;*pU>lWBz59*`5Zo*&q^AcG%{&2pUGz=kpeU~ z`8>3aJM2Rv+)&KmbFp2!gytND$Ruk*+(wlM! z!b@&iS>@B6l~rD>l{4JUi%|B3|5;wOIOaZ%S!3>l#%%FxxewR5j|Mx)eXeB}CZB@n zIvLF!Y;x7U)Xio?mv>UqNuJAdXfd76vk9Ms8>ed|;f6duk(QWTZ^$b_lguJK%eJ?e z0iWKES8SMk0w2%E5kA3w3z`eY>t)K~qSCzCn8F7OYkZs@`^2o$+!oE8HZPqHm^_x> z&d2c4{I(>X^a~%A^gAC3jW8aa|MS~{LV;U+3{Z}aF>liA1pGEh?)Afw zW!r1En$5f;lHGhbA4W@Q86Qgc2<^H3JRFuibtAMeZiBvtCZoDhu{ez2nykBtlIq$2jsh7q3TpKSevj(->3n)jsJ%MuIs|U7e?RLLGyWLQ` zU4z;kYA<-&Z0qfk+=_SRo#;$Di+3cvi+!@h?H}afolyoI=xmdBKp8-Z*Wm35Z-3(u z-MkaZV5Sku+wr!%4R6g`5#H{`PK37&%At*x1GrpkC!A@83q`OYa+Z<6TPFA7Et1Fb z=DZni%A4@U$;CV~c@}S!JfAn@4U(7e`n(>m%K?vCR*I;F77hpd3Lq0Ll?$eQeW$tapPT>!Kj*1O?gAu6V|r z=&han0I$Vs(m8Z4uR(ZiJyEB6cr6rUb$W-%t7E7NRda(^<5dZ-X4}s~EMC>#nCD7L z;x$o_bBr*a!6^^$be_gj3D0mkQD=#m2W;;WcUmIh=^7a@q|C-OXvBcDppa8>YbR{W zoeS?u;Z=BY@@qUP`7Odzw3nfnu2q3}l}b@2JGBR%1Vcut`FIW6zthb1`jgM{M4mwB z(fJ$#UcVOkP!CVUamCRECXYh{S%3x-OL(lFD{d&9yLkeRZJrU$eca1qxQ9pcC{DP= zBY6Z5=V3gQaGw+UdL7G%u^aD#8oj4-l8UxF+gSGGQO;~d^lSx!ux=JaWKa+h5b?X= zAO#P%r`zsoDTIgVatNeZH}FSzsE#*a+xUEgCd0Pz-Ddnk_6Pf&U8&+@zp-E0FYIUb z6Z?_I`%TYejo7cy zMbBgm^C3NxG2CmXXENrbJ~?G3`w`|Z_Jf|k{Dggfvwg7dg7(2KqkZ@-rr{|d)_6^#`Lc?TVu}kbCVPDzfH@h3a%P!d+54aN+5_ZuDh3(#X*l&?hi(O#n**SKW zeaX(SFWBeoGj^JN%06Kqvya$^ReocqQX<(&c7h#e$5Ixu57_%Db=Z6CUG`2&%araZ zLsPO+ic;pWx7k}MFR?c*cHst1oQFZ_n4Fz+G?C#1@$?-4Rrv*PUAV81lXYm+Z}O-9-hL1v3{%}9`yN9kei&`(rJW!7|hezDd$iQ zJE;Xc_ylqZerz$!PISz{j@_g^i(#HpoS!$zV(&Xtp2aX(nVFT}&&A$F@xKGP4|^NK zl(YoQRP-`7dlM+svX6be@4}1b?=J7rl#kdO>~*@B-pO7g?5I8omE>k`;7eXd-7E$j z9$|;sA;OMm9VQZXSbHZqZ&KN4zO3*D{Mb|nZ1?PD-bBpbR3&(5l5D>@>r1b()81=EecsH*w z$70U|RRXwcvFEhwOtlzRmK;IvMk>1y9@vExAhgAH0_C{g4xq3EYO!a5LNyTf%zq5W zWZR7}!fvi25w@+;UbZ^+v&FHd&B1hnJ>}SokG-~U@hj#im-orkC)p;pkuITku?>Vh ziO1G57H$IQX6xzQCR>lteK$ZiTSwSB9Yhvn%??f}ZnhEiy2Nm?CkT7uKX<+KE+d6K z&K^sBnXP4O*y^+hW~aWB`W|~U^<%aw^%Q#~^^4T6Q!l3e#L82@XDic;)W6vZwwzU4 zM%d$enz*4tX|cyZCVER8TWg3A;zH6KYwN<=O|B zJGvTSci))Ev%4yc2Hk(ajQ&}FH z!X~pxESKfb`_rCF+sm@k4zY=8M_Cq|z{az2Y;4+zv`^D6rtvhHb~QaTJ(As?9-E$= zUOl~jdPDovVb}z`z~0poHutmnxPLj_&E}PNiiFgZ-2o+XSPf)zosCOuj@~okXK<O2CSN%FQk- zwOA2Qh^`(ACBrz26~c940W3|i0_+XJ5n=gSP1;egD+1dztRo96^QvjV@bYk5LXGBA;H^42WRq{P1A#E-IMnsKTnNj>34gW7ueRo5e6G(tFw2=*mvoIKtR%2>RJ@TZg%9A~Jw0?ko!^9R#xpNMY#9 z#siFAJBY%@LFmiI2A6ruuXKu!Fxl-!n2$ZM@7>qUac=LZ^fhcG8$lnS53=Eejly%W z)$6j6=nhb+^3n(J=RqTs4NKp~hO!}Su*HVK*Bs9usy)Bc5NL2be=tzRB{K?rY`76y z_xy#aQHJ|c%|>6<&oyEO4vO*6aM(-02BjZh1K9xj5Pg{SCv1>CxWttPz6yI8LRde# z%w+vA`d$XnH|xv#5Z2e3nTm?0mF1N=3hbj5m{SA?O|K!~0Av;%p7mzE2zpoGr*y_TvJR|0VLi145KP#d;dj@= z?};@jXZT(5mPWKLKskuk87K$QIw7SItt0j;LL7r*R&LfFajd`H{B5(pw_W<5tSxIp zm(vxjHDPe{3QVV#o3+J`ZE%19eO|i4h+wT)%RmHc!J4yXtSM_kSSyFYmiTrs7K=e; z3XqvJhX#kiX1G~7HHtOGw>81fwzfySV>b6T4)|CmYeZMla@NpdjbR6)nX=HuGO=SL z{GvYAS#C674FV~wejvc=1!@NB1{$!stPZQqYO$KE2CL4hv8pU1&?V3}FoaPS2#jOt zERCfGa#>2CC{P-h6IjBk1eUVoz%rH;u$e#b1WOETVhJpsum*bT(d68+G6-i%4LiND z8QH;NnAthTUk@n9`0E1Y7=In4wDH&e*Z5r~gELtctEuxo!fI3^YIQsvo)TA0PmtFg z)n`@p@?B$#W#Bhp;gB#IJXTPk4~xLDf+77iWw8MC(MyUf9hVg0R543KNu?sTqy&$d zvnp5^1Vl^@9(HF*c=#RSFn{ovJ4?iM+S+cGfc2@GZWfP`TAHh&J>Y%wM{itUJBwvL z`UqXcycUbYt>+{}j>g4ISALs-mB_q}wL;bk5c&7v4#R^VM0892cr0w1w( z7REwZ2s4?RFb^I81n!`Yg(8Z&Nkjxi6mVI3e4rPsL^;~PN|d9aaG)H$gdwH%0!NrC zK?(E{f_gE7dT~1g_S$bBGy8`<>Z6YuEA12K%nW;as5{a2eq@H&!#**+t|s>76J}#O z>V%mZX8WjZtp2~d4GmlEqpOWa{_h@5?KY?2MQeO?jq&*Z-L0|R|3kB8*jgW5`@g=Y zyLrk*|LABB^%|}{^f4cO?0*mBnNLm2e&}N}Htca9ef)p%+St~8H+*8ohdtq=PyB!1 zn;N#xN7oq-|F3Z!JZ&b0t@qLO#)kjZ?Ss$EI>TLb1A{3DGh_4%58Z%6+~}hl4a?|i z@-AuR8tseR$KDy0Ex7h)%# z8(;REk3I+AXlhI{TEM?8?TKHQy%s{tc)^xdT0{9 z^e?*CtoRFGx)=DNFVGh&{;c?;;`fRx6~9&dTJcN8&lNva{8;fr#rGB8Rb2Ma7w{oP z_n8&SFgb*|_?P_zg)9niUeiaS*?8h#sa#JoFGg@S2alX1Dm# ztXuOiUcT<5uixtBNATtwKKh2e>Pxfr09VELP#UTD4u3AA#*^_gf*v(1pl0l$@IRS= z-zwP1>6>N+M>BX6&EPHiHhqV_OW*U*xA2|s`{?_2^jWid5+#3%en>y6sHph1;+u-E zE553@RB^H5LdE%ta}{SRzN|Rop{MZikA3uGW1Szy$BQ3=_N^eaXy8bzQE3*VXZ- S8b}n=DKO&bKhB=r@&5o|Bz|20 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.