
heute nachmittag wars dann aber soweit
so wie es jetzt hier gepostet ist wird es nur eine begrenzte zeit funktionieren, kommt darauf an wie schnell die jdownloader programmierer im umändern sind
wenn es geändert wird:
werte b, p und v bekommt man mit wireshark falls dort eine änderung notwendig sein sollte
die methode zum erstellen des jdownloader keys müssen sie natürlich auch ändern, da muss man sich dann wohl wieder den quelltext vom jdownloader angucken um das anzupassen
den rest werden sie eher nicht ändern, weil ansonsten eine anpassung aller programme die dlc dateien öffnen können nötig wäre
Code: Alles auswählen
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import re
import urllib2
import base64
import hashlib
from Crypto.Cipher import AES
dlcfile = "c:\\bla.dlc"
jdhashlist = "C:\\JDownloader\\tmp\\hashlist.lst"
b = "last09"
p = "2009"
v = "9.581"
jdkey = []
for x in re.findall("=(.*?);", open(jdhashlist,"r").read()):
jdkey.append(x[0])
jdkey.reverse()
jdkey = hashlib.md5("".join(jdkey)).digest()
file = open(dlcfile).read()
data = "destType=jdtc5&b=" + b + "&p=" + p + "&srcType=dlc&data=" + file[-88:] + "&v=" + v
header = {'User-agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10', 'rev': v}
req = urllib2.Request('http://service.jdownloader.org/dlcrypt/service.php', data, header)
h = urllib2.urlopen(req)
key2 = re.search("<rc>(.*?)</rc>", h.read()).group(1)
key2 = base64.b64decode(key2)
decryptor = AES.new(jdkey, AES.MODE_ECB)
key3 = base64.b64decode(decryptor.decrypt(key2))
decryptor2 = AES.new(key3, AES.MODE_CBC, key3)
f = decryptor2.decrypt(base64.b64decode(file[:-88]))
content = base64.b64decode(f)
for x in re.findall("<file>.*?<url>(.*?)</url>", content, re.DOTALL):
print base64.b64decode(x)