AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ActionScript=>Delphi

Ein Thema von RodbarFY · begonnen am 14. Jan 2012 · letzter Beitrag vom 16. Jan 2012
Antwort Antwort
RodbarFY

Registriert seit: 14. Jan 2012
1 Beiträge
 
#1

ActionScript=>Delphi

  Alt 14. Jan 2012, 23:00
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:
        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("");
        }
Leider habe ich absolut keinen Plan von ActionScript und würde mich freuen, wenn mir jemand dabei helfen könnte den Code zu übersetzen.
Es muss nicht gleich eine komplette (ok, es wäre cooler wenn ja) Übersetzung sein, aber Hilfe wäre schon echt super.
Vielen Dank
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#2

AW: ActionScript=>Delphi

  Alt 15. Jan 2012, 09:15
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:
public static function decrypt(param1:String, param2:Number, param3:Number) : String{}
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.

So kompliziert sieht das Ganze für mich nicht aus, aber erwarte nicht, das hier jemand deine Arbeit macht.

Viel Erfolg

Thomas
Thomas
Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#3

AW: ActionScript=>Delphi

  Alt 15. Jan 2012, 10:48
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:
SetLength(array, length(array)+1);
array[length(array)-1] := element;
Das wäre allerdings sehr unperformant. Soweit du die Größe im Voraus kennst, solltest du sie auch schon vorher festlegen.
Code:
        while (_loc_5 < param1.length)
             {
                 
                 switch(param1.charAt(_loc_5))
                 {
Würde ich so übersetzen:
Delphi-Quellcode:
for _loc_5 := 1 to length(Param1) do
  case param1[_loc_5] of
    ...
  end;
Da ja in jedem Schleifendurchgang ein Push vorzukommen scheint, könntest du eigentlich im Voraus schon folgendes machen:
Delphi-Quellcode:
SetLength(_loc_4,length(param1));
// und dann in der Schleife;
_loc_4[_loc_5] := '0100';
Auffällig ist allerdings, dass der Schreiber des Codes wenig von Variablenbenennung hält
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: ActionScript=>Delphi

  Alt 15. Jan 2012, 13:03
Man könnte auch vermuten, dass das aus einen Decompiler stammt

Schlage nach, wie sich join, split usw in ActionScript genau verhalten, dann solltest du den Code übersetzen können.

Geändert von BUG (15. Jan 2012 um 13:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: ActionScript=>Delphi

  Alt 15. Jan 2012, 16:09
@RodbarFY: Was soll denn der Code entschlüsseln? Oder wie sieht die Verschlüsselung aus?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ActionScript=>Delphi

  Alt 16. Jan 2012, 09:30
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz