summaryrefslogtreecommitdiffstats
path: root/module/plugins/container
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/container')
-rw-r--r--module/plugins/container/CCF.py4
-rw-r--r--module/plugins/container/DLC.py71
-rw-r--r--module/plugins/container/DLC_25.pycbin8340 -> 0 bytes
-rw-r--r--module/plugins/container/DLC_26.pycbin8313 -> 0 bytes
-rw-r--r--module/plugins/container/DLC_27.pycbin8237 -> 0 bytes
-rw-r--r--module/plugins/container/LinkList.py8
-rw-r--r--module/plugins/container/RSDF.py6
7 files changed, 80 insertions, 9 deletions
diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py
index bca535175..c6e642cca 100644
--- a/module/plugins/container/CCF.py
+++ b/module/plugins/container/CCF.py
@@ -16,9 +16,9 @@ from module.utils import save_join
class CCF(Container):
__name__ = "CCF"
- __version__ = "0.20"
+ __version__ = "0.21"
- __pattern__ = r'.+\.ccf'
+ __pattern__ = r'.+\.ccf$'
__description__ = """CCF container decrypter plugin"""
__license__ = "GPLv3"
diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py
new file mode 100644
index 000000000..53349c5c7
--- /dev/null
+++ b/module/plugins/container/DLC.py
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import with_statement
+
+import re
+import xml.dom.minidom
+
+from base64 import standard_b64decode
+from Crypto.Cipher import AES
+
+from module.plugins.Container import Container
+from module.utils import decode
+
+
+class DLC(Container):
+ __name__ = "DLC"
+ __version__ = "0.22"
+ __pattern__ = r'.+\.dlc$'
+
+ __description__ = """DLC container decrypter plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("RaNaN", "RaNaN@pyload.org"),
+ ("spoob", "spoob@pyload.org"),
+ ("mkaay", "mkaay@mkaay.de"),
+ ("Schnusch", "Schnusch@users.noreply.github.com"),
+ ("Walter Purcaro", "vuolter@gmail.com")]
+
+
+ def setup(self):
+ self.key = "cb99b5cbc24db398"
+ self.iv = "9bc24cb995cb8db3"
+ self.api_url = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data="
+
+
+ def decrypt(self, pyfile):
+ with open(pyfile.url.replace("\n", "")) as dlc:
+ data = dlc.read().strip()
+
+ data += '=' * (-len(data) % 4)
+
+ dlckey = data[-88:]
+ dlcdata = data[:-88]
+ dlcdata = standard_b64decode(dlcdata)
+
+ rc = self.load(self.api_url + dlckey)
+ rc = re.search(r'<rc>(.+)</rc>', rc).group(1)
+ rc = standard_b64decode(rc)
+
+ obj = AES.new(self.key, AES.MODE_CBC, self.iv)
+ dlckey = obj.decrypt(rc)
+ obj = AES.new(dlckey, AES.MODE_CBC, dlckey)
+
+ self.data = standard_b64decode(obj.decrypt(dlcdata))
+ self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \
+ for entry in self.getPackages()]
+
+
+ def getPackages(self):
+ root = xml.dom.minidom.parseString(self.data).documentElement
+ content = root.getElementsByTagName("content")[0]
+ return self.parsePackages(content)
+
+
+ def parsePackages(self, startNode):
+ return [(standard_b64decode(decode(node.getAttribute("name"))), self.parseLinks(node)) \
+ for node in startNode.getElementsByTagName("package")]
+
+
+ def parseLinks(self, startNode):
+ return [standard_b64decode(node.getElementsByTagName("url")[0].firstChild.data) \
+ for node in startNode.getElementsByTagName("file")]
diff --git a/module/plugins/container/DLC_25.pyc b/module/plugins/container/DLC_25.pyc
deleted file mode 100644
index b8fde0051..000000000
--- a/module/plugins/container/DLC_25.pyc
+++ /dev/null
Binary files differ
diff --git a/module/plugins/container/DLC_26.pyc b/module/plugins/container/DLC_26.pyc
deleted file mode 100644
index 41a4e0cb8..000000000
--- a/module/plugins/container/DLC_26.pyc
+++ /dev/null
Binary files differ
diff --git a/module/plugins/container/DLC_27.pyc b/module/plugins/container/DLC_27.pyc
deleted file mode 100644
index a6bffaf74..000000000
--- a/module/plugins/container/DLC_27.pyc
+++ /dev/null
Binary files differ
diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py
index c6173ad73..9c76c4341 100644
--- a/module/plugins/container/LinkList.py
+++ b/module/plugins/container/LinkList.py
@@ -8,9 +8,9 @@ from module.utils import fs_encode
class LinkList(Container):
__name__ = "LinkList"
- __version__ = "0.12"
+ __version__ = "0.13"
- __pattern__ = r'.+\.txt'
+ __pattern__ = r'.+\.txt$'
__config__ = [("clear", "bool", "Clear Linklist after adding", False),
("encoding", "string", "File encoding (default utf-8)", "")]
@@ -23,7 +23,7 @@ class LinkList(Container):
def decrypt(self, pyfile):
try:
file_enc = codecs.lookup(self.getConfig("encoding")).name
- except:
+ except Exception:
file_enc = "utf-8"
file_name = fs_encode(pyfile.url)
@@ -64,7 +64,7 @@ class LinkList(Container):
try:
txt = open(file_name, 'wb')
txt.close()
- except:
+ except Exception:
self.logWarning(_("LinkList could not be cleared"))
for name, links in packages.iteritems():
diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py
index 0c43f0e6c..0c36293ec 100644
--- a/module/plugins/container/RSDF.py
+++ b/module/plugins/container/RSDF.py
@@ -12,9 +12,9 @@ from module.utils import fs_encode
class RSDF(Container):
__name__ = "RSDF"
- __version__ = "0.24"
+ __version__ = "0.25"
- __pattern__ = r'.+\.rsdf'
+ __pattern__ = r'.+\.rsdf$'
__description__ = """RSDF container decrypter plugin"""
__license__ = "GPLv3"
@@ -39,7 +39,7 @@ class RSDF(Container):
with open(infile, 'r') as rsdf:
data = rsdf.read()
except IOError, e:
- self.fail(str(e))
+ self.fail(e)
if re.search(r"<title>404 - Not Found</title>", data) is None:
data = binascii.unhexlify(''.join(data.split()))