KeyGenMe#1

Hallo, ich bin grad durch Zufall mal wieder auf das Board gestoßen.
Da ich vor ner Weile mal nen KeyGenMe geschrieben hatte, wollte ich das hier mal posten.

Würd mich freuen wenns jemand knackt (routine ist nicht schwer).

Name: KeyGenMe#1
Type: KeyGenMe
Description: read nfo
Language: Delphi
Level: -+-------- (easy)
Rules:
  • No Patching
  • No SerialFishing


Gruß Bonzai
 
wenn du dich schon nicht an meine regeln hälst, dann doch bitte die boardregeln einhalten.

Hints/Results mittels Spoiler-Tags posten.

Danke
 
Ich hoffe es ist kein Fehler drin, schon ein bisschen spät. ;)

Code:
function GenSerial(Name: String):String;
  function GetSerialToken(c: Char): String;
  var
    str1: String;
    rest, durch: Integer;
  begin
    str1 := '';
    rest  :=  (ord(c)-$14);
    durch :=  (ord(c)-$14);
    While (durch > 0) Do
      begin
        rest := durch mod $0A;
        durch := durch div $0A;
        if ((rest + $30) < $3A) Then
          str1 := str1 + chr(rest + $30)
        Else
          str1 := str1 + chr(rest + $37);
      end;
    result := str1;
  end;
  function TableConversion(Token: String):String;
  var
    i: Integer;
  begin
    case StrToIntDef(Token,91) of
      11: result := 'A';
      22: result := 'B';
      33: result := 'C';
      44: result := 'D';
      55: result := 'E';
      66: result := 'F';
      77: result := 'G';
      88: result := 'H';
      99: result := 'J';
      00: result := 'K';
      12: result := 'L';
      23: result := 'M';
      34: result := 'N';
      45: result := 'O';
      56: result := 'P';
      67: result := 'R';
      78: result := 'S';
      89: result := 'T';
      90: result := 'U';
      01: result := 'W';
      else result := Token;
    end;
  end;
  function FinalTableConversion(str: String):String;
  var
    i: Integer;
    token: String;
  begin
    result := str;
    i := 1;
    While i < Length(result) Do
      begin
        Token := TableConversion(result[i]+result[i+1]);
        If Token <> result[i]+result[i+1] Then
          begin
            Delete(result,i,2);
            Insert(Token,result,i);
          end;
        Inc(i);  
      end;
  end;
  procedure ReverseTokenOrder(const res: TStringList; var new: TStringList);
  var
    i: Integer;
  begin
    new := TStringList.Create;
    For i := res.Count -1 DownTo 0 Do
      begin
        new.Add(res.Strings[i]);
      end;
  end;
var
  i: Integer;
  strodd: TStringList;
  streven, strevenrev: TStringList;
  strfinal: String;
begin
  strfinal := '';
  streven := TStringList.Create;
  strodd := TStringList.Create;
  For i := Length(Name) DownTo 1 Do
    begin
      If odd((ord(Name[i])-$14)) Then
        begin
          strodd.Add(TableConversion(ReverseString(GetSerialToken(Name[i]))));
        end else
        begin
          streven.Add(TableConversion(ReverseString(GetSerialToken(Name[i]))));
        end;
      end;
  ReverseTokenOrder(streven, strevenrev);
  For i:= 0 To streven.Count -1 Do
    begin
      strfinal := strfinal + strevenrev.Strings[i];
    end;
  For i:= 0 To strodd.Count -1 Do
    begin
      strfinal := strfinal + strodd.Strings[i];
    end;
  result := FinalTableConversion(strfinal);
end;
 
Zurück
Oben