![]() |
ActionScript=>Delphi
Hallo,
auf der Suche nach Hilfe zur Konvertierung von ActionScript zu Delphi bin ich auf euer Forum gestossen. Ich muss sagen, dass ich sehr selten solch ein gutes und organiesiertes Board gesehen haben :) Doch nun zu meiner Frage: Ich habe folgenden ActionScript-Code und würde diesen gerne zu Delphi konvertieren:
Code:
Leider habe ich absolut keinen Plan von ActionScript und würde mich freuen, wenn mir jemand dabei helfen könnte den Code zu übersetzen.
public static function decrypt(param1:String, param2:Number, param3:Number) : String
{ var _loc_15:* = undefined; var _loc_16:* = undefined; var _loc_17:* = undefined; var _loc_18:String = null; var _loc_4:Array = []; var _loc_5:* = 0; while (_loc_5 < param1.length) { switch(param1.charAt(_loc_5)) { case "0": { _loc_4.push("0000"); break; } case "1": { _loc_4.push("0001"); break; } case "2": { _loc_4.push("0010"); break; } case "3": { _loc_4.push("0011"); break; } case "4": { _loc_4.push("0100"); break; } case "5": { _loc_4.push("0101"); break; } case "6": { _loc_4.push("0110"); break; } case "7": { _loc_4.push("0111"); break; } case "8": { _loc_4.push("1000"); break; } case "9": { _loc_4.push("1001"); break; } case "a": { _loc_4.push("1010"); break; } case "b": { _loc_4.push("1011"); break; } case "c": { _loc_4.push("1100"); break; } case "d": { _loc_4.push("1101"); break; } case "e": { _loc_4.push("1110"); break; } case "f": { _loc_4.push("1111"); break; } default: { break; } } _loc_5 = _loc_5 + 1; } _loc_4 = _loc_4.join("").split(""); var _loc_6:Array = []; var _loc_7:* = 0; while (_loc_7 < 384) { param2 = (param2 * 11 + 77213) % 81371; param3 = (param3 * 17 + 92717) % 192811; _loc_6[_loc_7] = (param2 + param3) % 128; _loc_7 = _loc_7 + 1; } var _loc_8:* = 256; while (_loc_8 >= 0) { _loc_15 = _loc_6[_loc_8]; _loc_16 = _loc_8 % 128; _loc_17 = _loc_4[_loc_15]; _loc_4[_loc_15] = _loc_4[_loc_16]; _loc_4[_loc_16] = _loc_17; _loc_8 = _loc_8 - 1; } var _loc_9:* = 0; while (_loc_9 < 128) { _loc_4[_loc_9] = _loc_4[_loc_9] ^ _loc_6[_loc_9 + 256] & 1; _loc_9 = _loc_9 + 1; } var _loc_10:* = _loc_4.join(""); var _loc_11:Array = []; var _loc_12:* = 0; while (_loc_12 < _loc_10.length) { _loc_18 = _loc_10.substr(_loc_12, 4); _loc_11.push(_loc_18); _loc_12 = _loc_12 + 4; } var _loc_13:Array = []; var _loc_14:* = 0; while (_loc_14 < _loc_11.length) { switch(_loc_11[_loc_14]) { case "0000": { _loc_13.push("0"); break; } case "0001": { _loc_13.push("1"); break; } case "0010": { _loc_13.push("2"); break; } case "0011": { _loc_13.push("3"); break; } case "0100": { _loc_13.push("4"); break; } case "0101": { _loc_13.push("5"); break; } case "0110": { _loc_13.push("6"); break; } case "0111": { _loc_13.push("7"); break; } case "1000": { _loc_13.push("8"); break; } case "1001": { _loc_13.push("9"); break; } case "1010": { _loc_13.push("a"); break; } case "1011": { _loc_13.push("b"); break; } case "1100": { _loc_13.push("c"); break; } case "1101": { _loc_13.push("d"); break; } case "1110": { _loc_13.push("e"); break; } case "1111": { _loc_13.push("f"); break; } default: { break; } } _loc_14 = _loc_14 + 1; } return _loc_13.join(""); } Es muss nicht gleich eine komplette (ok, es wäre cooler wenn ja) Übersetzung sein, aber Hilfe wäre schon echt super. Vielen Dank :) |
AW: ActionScript=>Delphi
Hallo RodbarFY,
ich verstehe zwar auch nichts von ActionScript, mich erinnern die gezeigten Codezeilen aber stark an Java oder C++. Fang doch damit an, was Du wissen könntest:
Code:
ist die Funktionsdeklaration und sieht so ähnlich auch in Delphi aus. Danach folgen Variablen, die "While" Anweisung gibt es in Delphi auch, aus Switch|Case ... wird in Delphi nur Case etc. etc.
public static function decrypt(param1:String, param2:Number, param3:Number) : String{}
So kompliziert sieht das Ganze für mich nicht aus, aber erwarte nicht, das hier jemand deine Arbeit macht.:( Viel Erfolg Thomas |
AW: ActionScript=>Delphi
Was du nicht genau übertragen kannst, sind die push-Aufrufe.
In Delphi musst du für das Array selbst die Größe festlegen und in das jeweilige Element schreiben. Ein Push ließe sich damit übersetzen: (meinetwegen auch in eine Unterprozedur)
Delphi-Quellcode:
Das wäre allerdings sehr unperformant. Soweit du die Größe im Voraus kennst, solltest du sie auch schon vorher festlegen.
SetLength(array, length(array)+1);
array[length(array)-1] := element;
Code:
Würde ich so übersetzen:
while (_loc_5 < param1.length)
{ switch(param1.charAt(_loc_5)) {
Delphi-Quellcode:
Da ja in jedem Schleifendurchgang ein Push vorzukommen scheint, könntest du eigentlich im Voraus schon folgendes machen:
for _loc_5 := 1 to length(Param1) do
case param1[_loc_5] of ... end;
Delphi-Quellcode:
Auffällig ist allerdings, dass der Schreiber des Codes wenig von Variablenbenennung hält :lol:
SetLength(_loc_4,length(param1));
// und dann in der Schleife; _loc_4[_loc_5] := '0100'; |
AW: ActionScript=>Delphi
Man könnte auch vermuten, dass das aus einen Decompiler stammt :angel:
Schlage nach, wie sich join, split usw in ActionScript genau verhalten, dann solltest du den Code übersetzen können. |
AW: ActionScript=>Delphi
@RodbarFY: Was soll denn der Code entschlüsseln? Oder wie sieht die Verschlüsselung aus?
|
AW: ActionScript=>Delphi
Es geht wohl darum, Filme von der Seite "megavideo" herunter zu laden. Die versuchen, ihre Inhalte mittels eines Flash-Objekts zu schützen. Und was wir da oben sehen ist - dreimal darf man raten - ein dekompilierter Teil davon.
Nun ist "RodbarFY" keinesfalls der erste, der dies versucht. Es sind im Netz fertige Java- und Javascript-Lösungen zu finden. Allem Anschein nach ist es nicht im Sinne von "megavideo", sich deren Inhalte auf eigenem Weg zu besorgen. Aus diesem Grund ist hier für dieses Thema Schluss. Ich schließe mal bewusst nicht, sondern setze auf die Selbst-Verantwortung der Teilnehmer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz