Du bist nicht angemeldet.
Naja, so aufwändig sieht es nicht aus.
Ich schaue mir das mal an. Da ich aber Fritz!Load derzeit nicht einsetze bzw. installiert habe, kann ich es nicht richtig testen.
Das müssten dann andere tun.
Habe mal eben nachgeschaut. RecaptchaV2 (interaktives Captcha) wird von 9kw unterstützt.
Das wäre vermutlich die einfachste Möglichkeit. Selber lösen kann man die eigenen Captchas wie es scheint auch.
Vielleicht ist ja thecoder2012 noch aktiv. Er ist glaube ich ein Admin bei 9kw.eu und hat sich später auch um das Plugin gekümmert.
Der Code kann meiner Meinung nach auch weg.
Das liegt daran, dass Keepvid einen falschen Parameter signature zurückgibt.
Erst der Browser korrigiert ihn per Javascript.
Hier wäre der Code zum Dekodieren.
function jms(sign) {
sign = yw13(sign);
sign = thzf(sign);
return sign
}
function thzf(sign) {
var code = {
"A": "Q",
"Q": "A",
"B": "C",
"C": "B",
"D": "H",
"H": "D",
"E": "J",
"J": "E",
"F": "U",
"U": "F",
"G": "Y",
"Y": "G",
"I": "M",
"M": "I",
"K": "X",
"X": "K",
"L": "N",
"N": "L",
"O": "P",
"P": "O",
"S": "T",
"T": "S",
"R": "W",
"W": "R",
"V": "Z",
"Z": "V",
"1": "2",
"2": "1",
"0": "7",
"7": "0",
"3": "9",
"9": "3",
"5": "4",
"4": "5",
"6": "8",
"8": "6",
".": "."
};
var str = [];
for (var i = 0; i < sign.length; i++) {
if (code.hasOwnProperty(sign[i])) {
str.push(code[sign[i]])
} else {
str.push(sign[i])
}
}
return str.join("")
}
function yw13(str) {
var str1 = [];
for (var i = 0; i < str.length; i++) {
var num = str[i].charCodeAt();
if (num >= 65 && num <= 77) {
num = num + 13
} else {
if (num > 77 && num < 91) {
num = num - 13
} else {
if (num >= 48 && num <= 57) {
num = num + 5;
if (num > 57) {
num = num - 10
}
}
}
}
str1.push(String.fromCharCode(num))
}
return str1.join("")
}
var signature="der extrahierte parameter signature"
print(jms(signature))Es wird nun erkannt, ob 'tr' vorhanden ist oder nicht.
Ich denke nicht, dass das das Problem ist. 'tr' war in den vorliegenden Fällen vorhanden, verhielt sich nur nicht so wie erwartet.
Das scheint wohl an der aktuellen Busybox-Version zu liegen.
Eine andere Reihenfolge der Zeichen wie zum Beispiel
tr '.-' '_'sollte funktionieren. Oder man nimmt einfach den sed-Befehl.
tr scheint bei dir nicht richtig zu funktionieren. Es sollte eigentlich youtube_com rauskommen.
Als Übergangslösung kannst du in der Datei Fritzload/lib/download.sh in Zeile 326
local modulename=$(echo $hosterdomain | tr '\-.' '_')durch
local modulename=$(echo $hosterdomain | sed 's/[-.]/_/g')ersetzen
Gib mal auf der Konsole (telnet oder ssh) folgendes ein.
echo youtube.com | tr '\-.' '_'Und schreib was ausgegeben wird.
Die Zeile ist wohl einfach zu lang.
Aber Übergangslösung könnte man einfach
else
tldlist=$(echo "$response" | parse_json_array tldlist)
echo "$tldlist" | grep -q "$hosterdomain" || return 1
fidurch das hier ersetzen
else
#tldlist=$(echo "$response" | parse_json_array tldlist)
echo "$response" | grep -q "$hosterdomain" || return 1
fiEigentlich müsste man die Hilfsfunktionen anpassen, damit nicht auf einmal zu lange Zeichenfolgen verarbeitet werden.
Für diesen Fall hier sollte aber folgendes reichen:
echo "\"tldlist${response#*tldlist}" | parse_json_array tldlistbzw. wahrscheinlich etwas schneller
echo "$response" | grep -o "\"tldlist\":.*" | parse_json_array tldlistMan könnte versuchen den String vorher auf mehrere Zeilen zu verteilen.
Zum Beispiel mit
status=$(echo "$response" | tr , '\n' | parse_json_number status)Da fehlt was, du meinst sicher beantragen? Der bisherige Zugang bedient sich der Cryptload Keys?
Genau.
Sehe ich das richtig, daß dieser secretkey getauscht werden muß?
Und den bekommt man, wenn man bei den JDownloader Leuten fragt?secretkey = [68, 126, 120, 115, 198, 169, 107, 57, 100, 190, 12, 81, 230, 14, 41, 189];
Auch das ist richtig.
Der Code befindet sich in der FritzLoad/html/modules.js (Zeile 215) und FritzLoad/cgi/dlchelper.xml
Wahrscheinlich kann man wirklich einfach einen eigenen Zugang vom JDownloader-Team.
Dann müsste man die Kennung in der dlchelper.xml und Cryptokey und/oder -methode im Javascript-Code anpassen.
Der Javascript-Code ist in der modules.js schlecht lesbar.
Hier eine besser lesbare Form (entstanden aus Coffeescript-Code):
(function() {
var adddlcfile, addjdcfile, addtextfile, b64decode, dlcdecryptfinal, dropZone, fileExtension, handleDragOver, handleFileSelect, initDropZone;
addtextfile = function(fname, fcontent) {
return dropZone.append("\n### " + fname + " ###\n" + fcontent);
};
b64decode = this.atob || function(bstring) {
return Crypto.charenc.Binary.bytesToString(Crypto.util.base64ToBytes(bstring));
};
dlcdecryptfinal = function(dlccontent, serverkey) {
var burl, dlckey, secretkey, x, xml, xmlstring;
secretkey = [68, 126, 120, 115, 198, 169, 107, 57, 100, 190, 12, 81, 230, 14, 41, 189];
serverkey = Crypto.AES.decrypt(serverkey, secretkey, {
mode: new Crypto.mode.ECB(Crypto.pad.NoPadding),
iv: 0
});
dlckey = serverkey.substring(0, 24);
dlckey = Crypto.util.base64ToBytes("" + dlckey);
xml = Crypto.AES.decrypt(dlccontent, dlckey, {
mode: new Crypto.mode.CBC(Crypto.pad.NoPadding),
iv: dlckey
});
xml = xml.replace(/[\0 ]/g, '');
xmlstring = b64decode(xml);
xml = $.parseXML(xmlstring);
x = xml.getElementsByTagName("url");
return ((function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = x.length; _i < _len; _i++) {
burl = x[_i];
_results.push(b64decode(burl.childNodes[0].nodeValue));
}
return _results;
})()).slice(1);
};
adddlcfile = function(fname, dlcfile) {
var dlccontent, dlckey, request;
dlckey = dlcfile.substring(dlcfile.length - 88);
dlccontent = dlcfile.substring(0, dlcfile.length - 88);
request = $.get("dlchelper.xml?"+dlckey);
request.dataType = 'xml';
return request.success(function(data) {
var $rc, $xml, serverkey, urls;
$xml = $(data);
$rc = $xml.find("rc");
serverkey = $rc.text();
urls = dlcdecryptfinal(dlccontent, serverkey);
return dropZone.append("\n### " + fname + " ###\n" + (urls.join('\n')));
});
};
addjdcfile = function(fname, fcontent) {
var cryptbytes, databytes, datastring, defaultkey, hexdata, linklength, start, urls;
cryptbytes = Crypto.charenc.Binary.stringToBytes(fcontent);
defaultkey = [213, 202, 118, 177, 125, 31, 243, 2, 13, 186, 157, 13, 151, 60, 42, 196];
hexdata = Crypto.AES.decrypt(cryptbytes, defaultkey, {
mode: new Crypto.mode.CBC(Crypto.pad.NoPadding),
iv: defaultkey
});
databytes = Crypto.util.hexToBytes(hexdata);
datastring = Crypto.charenc.Binary.bytesToString(databytes);
start = datastring.indexOf("http", 0);
urls = [];
while (start >= 0) {
linklength = databytes[start - 1];
urls.push(datastring.substr(start, linklength));
start = datastring.indexOf("http", start + 1);
}
return dropZone.append("\n### " + fname + " ###\n" + (urls.join('\n')));
};
fileExtension = function(filename) {
return filename.split('.').pop();
};
handleDragOver = function(evt) {
evt.stopPropagation();
evt.preventDefault();
return evt.originalEvent.dataTransfer.dropEffect = 'copy';
};
handleFileSelect = function(evt) {
var fext, file, files, _i, _len, _ref, _results;
evt.stopPropagation();
evt.preventDefault();
files = evt.originalEvent.dataTransfer.files;
_results = [];
for (_i = 0, _len = files.length; _i < _len; _i++) {
file = files[_i];
if ((_ref = "" + (fext = fileExtension(file.name))) === 'dlc' || _ref === 'txt' || _ref === 'jdc') {
_results.push((function() {
var f, r;
f = file;
r = new FileReader();
r.onload = function(evt) {
switch (fext) {
case "txt":
return addtextfile("" + f.name, "" + evt.target.result);
case "dlc":
return adddlcfile("" + f.name, "" + evt.target.result);
case "jdc":
return addjdcfile("" + f.name, "" + evt.target.result);
}
};
return r.readAsBinaryString(f);
})());
}
}
return _results;
};
initDropZone = function() {
return dropZone.bind("dragenter", handleDragOver).bind("dragover", handleDragOver).bind("drop", handleFileSelect);
};
dropZone = null;
$(function() {
dropZone = $('#addLinks,#linkList');
return initDropZone();
});
}).call(this);EDIT: Testurl entfernt und durch richtige ersetzt.
Der Cryptload-Zugang scheint wieder freigeschaltet zu sein. Könnte gut sein, dass Drag'n'Drop mit DLCs wieder geht.
dcrypt.it funktioniert zumindest wieder.
@Fireball3
Die Containerdropfunktion benutzt nicht dcrypt.it. Sie verwendet aber die Crypload-Kennung und -Keys zum Entschlüsseln.
Diese wurden, wie ich gerade getestet habe, wohl serverseitig vom JDownloader-Team gesperrt.
Die Keys müssten ausgetauscht werden. Da ich aber derzeit kein Fritzload verwende und auch keine Zugriff auf eine Fritzloadinstallation habe, kann ich Änderungen nur schwer testen.
Die Erweiterung habe ich bisher nur für Chrome erstellt. Firefox besitzt aber mittlerweile viele "Chrome"-Funkionen, weshalb eine Anpassung nicht allzu kompliziert sein sollte.
Um mit Firefox Links abzugreifen fallen mir nur die allgemeinen Methoden ein:
- Das Tool, auf das TomTomNavigator verlinkt
- Das Sammeln im JDownloader und Exportieren als JDC
Habe gar nicht, gewusst, dass die Erweiterung verwendet wird.
Hier eine aktuelle Version.
Um die Version 6.51 auswählen zu können, musst du bei "Level of User competence" Advanced oder Expert auswählen.
Wenn ich mich recht entsinne, wird in FritzLoad diese js-Version verwendet:
ftp://ftp.ossp.org/pkg/lib/js/js-1.6.20070208.tar.gz
Sollte wieder gehen.
Sollte jetzt funktionieren.
Wie ich das sehe, liegt das Problem nicht im Plugin, sondern in den Segmentation faults. Wenn es gestern noch funktioniert hat, ist vermutlich eine Binärdatei (wahrscheinlich js) defekt. Teste mal einen anderen USB-Stick/Festplatte.