OpenDLC
Eine quelloffene Implementierung der Downloadcontainer-Standards.
github.com/nikeee/OpenDLC
Beschreibung:
Eine Bibliothek zum entschlüsseln und erstellen der 3 bekannten Link-Container-Formate (RSDF, CCF und DLC). Bis auf DLC werden keine weiteren Schlüssel benötigt, da DLC auf ein Client-Server-System setzt, welches so arbeitet, dass eine Anwendung einen Schlüssel von den JD-Entwicklern bekommt. Den müsste man sich beim JD-Team holen. Das machen die, um sich die Möglichkeit zu sichern, bestimmte Anwendungen zu sperren (ist natürlich nutzlos).
Hier ein paar Codebeispiele:
Durch die Abstraktion der Container und Packages kann man auch recht einfach Links aus verschiedenen Containern zusammenfassen:
DLC befindet sich noch in der Testphase und ist deshalb noch nicht in den Distribution-Builds enthalten. Außerdem ist das Erstellen von DLCs noch nicht implementiert.
Klassendiagramm:
Verwendete Programmiersprache(n) und IDE(s):
C# mit VS 2013
Systemanforderungen:
.NET 4.0 oder höher. DLC erst ab 4.5
Für DLC-Entschlüsselung wird eine Internetverbindung benötigt.
Download(s):
DLLs gibt es dort:
github.com/nikeee/OpenDLC/tree/master/dist/lib
oder via NuGet:
Source Code: github.com/nikeee/OpenDLC
Lizenz/Weitergabe:
LGPLv3
Nach dieser abenteuerlichen Reise bin ich erstaunt, wie viel man bei einer Formatspezifikation falsch machen kann. Die Containerformate sind natürlich alle broken by design.
DLC ist IMO mit Abstand das schlimmste Format, danach kommt CCF und dann RSDF.
TODO:
- DLCs erstellen
- Click'n'Load-Client(+Server?)
Edit:
Achja, RSDF geht unter Mono nicht, aufgrund eines Bugs in der Mono-Crypto-Library.
Eine quelloffene Implementierung der Downloadcontainer-Standards.
github.com/nikeee/OpenDLC
Beschreibung:
Eine Bibliothek zum entschlüsseln und erstellen der 3 bekannten Link-Container-Formate (RSDF, CCF und DLC). Bis auf DLC werden keine weiteren Schlüssel benötigt, da DLC auf ein Client-Server-System setzt, welches so arbeitet, dass eine Anwendung einen Schlüssel von den JD-Entwicklern bekommt. Den müsste man sich beim JD-Team holen. Das machen die, um sich die Möglichkeit zu sichern, bestimmte Anwendungen zu sperren (ist natürlich nutzlos).
Hier ein paar Codebeispiele:
C#-Quellcode
- // RSDF:
- var container = await RsdfContainer.FromFileAsync(pathToFile);
- Console.WriteLine("All links in this file:");
- foreach(RsdfEntry currentLink in container)
- {
- // Link entrys sind abstrahiert und implementieren ein implizites ToString, welches immer die URL gibt.
- Console.WriteLine(currentLink);
- }
- // CCF:
- var container = await CcfContainer.FromFileAsync(pathToFile);
- Console.WriteLine("All links in this file:");
- foreach(CcfPackage currentPackage in container)
- {
- foreach(CcfEntry currentLink in currentPackage)
- {
- Console.WriteLine(currentLink);
- }
- }
Durch die Abstraktion der Container und Packages kann man auch recht einfach Links aus verschiedenen Containern zusammenfassen:
C#-Quellcode
- var someRsdf = await RsdfContainer.FromFileAsync(pathToFile);
- var someCcf = await CcfContainer.FromFileAsync(pathToFile);
- var allLinks = someRsdf.Concat(someCcf.Packages.Concat());
- Console.WriteLine("All links in CCF/RSDF:");
- foreach(DownloadEntry currentLink in allLinks)
- {
- Console.WriteLine(currentLink);
- }
DLC befindet sich noch in der Testphase und ist deshalb noch nicht in den Distribution-Builds enthalten. Außerdem ist das Erstellen von DLCs noch nicht implementiert.
Klassendiagramm:
Verwendete Programmiersprache(n) und IDE(s):
C# mit VS 2013
Systemanforderungen:
.NET 4.0 oder höher. DLC erst ab 4.5
Für DLC-Entschlüsselung wird eine Internetverbindung benötigt.
Download(s):
DLLs gibt es dort:
github.com/nikeee/OpenDLC/tree/master/dist/lib
oder via NuGet:
Install-Package OpenDLC
Source Code: github.com/nikeee/OpenDLC
Lizenz/Weitergabe:
LGPLv3
Nach dieser abenteuerlichen Reise bin ich erstaunt, wie viel man bei einer Formatspezifikation falsch machen kann. Die Containerformate sind natürlich alle broken by design.
DLC ist IMO mit Abstand das schlimmste Format, danach kommt CCF und dann RSDF.
TODO:
- DLCs erstellen
- Click'n'Load-Client(+Server?)
Achja, RSDF geht unter Mono nicht, aufgrund eines Bugs in der Mono-Crypto-Library.
Von meinem iPhone gesendet
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „nikeee13“ ()