IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Pourriez vous me donnez une explication de cette portion de code


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 188
    Points : 184
    Points
    184
    Par défaut Pourriez vous me donnez une explication de cette portion de code
    Bonsoir, je désirerais avoir une explication assez détaillée pour cette portion de code qui decode la clé windows pour l'afficher sous sa forme originale et en particulier la portion "Value := (HN shl 8) or HexDigitalPID[N];" car je comprend pas tres bien comme s'effectue cette opération, en fait je n'arrive pas aà comprendre comment on peut passer d'une clé en hexadécimal a une clé en base 24. Merci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function TForm1.DecodeMSKey(const HexSrc: array of byte): string;
    const
      StartOffset: integer = $34;      // Offset 34 = Array[52]
      EndOffset:   integer = $34 + 15; // Offset 34 + 15(Bytes) = Array[64]
      Digits: array[0..23] of char =
        ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T',
        'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9');
      DecodedLen: integer = 29;       // Length of Decoded Product Key
      EncodedLen: integer = 15;
      // Length of Encoded Product Key in Bytes (An total of 30 in chars)
    var
      HexDigitalPID: array of cardinal;
      Des:   array[0..30] of char; // Length of Decoded Product Key + 1
      I:     integer;
      N:     integer;
      HN:    cardinal;
      Value: cardinal;
    begin
      Result := '';
      SetLength(HexDigitalPID, DecodedLen);
      for I := StartOffset to EndOffset do
        HexDigitalPID[I - StartOffSet] := HexSrc[I];
     
      // SetLength(Des, DecodedLen + 1);
     
      for I := DecodedLen - 1 downto 0 do
        if (((I + 1) mod 6) = 0) then
          Des[I] := '-'
        else
        begin
          HN := 0;
          for N := EncodedLen - 1 downto 0 do
          begin
            Value := (HN shl 8) or HexDigitalPID[N];
            HexDigitalPID[N] := Value div 24;
            HN    := Value mod 24;
          end;
          Des[I] := Digits[HN];
        end;
      Des[DecodedLen] := Chr(0);
     
      //  For I := 0 To Length(Des) Do
      //    begin
      //     Result := Result + Des[I];
      //    end;
      Result := StrPas(Des);
    end;

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    SHL est un décalage de bits vers la gauche, ce qui signifie qu'on multiplie la valeur.

    SHR est un décalage vers la droite.

    Dans ton cas il y a multiplication de la valeur par (2 puissance N)
    donc (2 puissance 8).

Discussions similaires

  1. pourriez-vous m'expliquer comment plaquer une texture à une image
    Par info_sara dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 12/05/2010, 21h55
  2. Réponses: 3
    Dernier message: 03/05/2010, 22h57
  3. Avez vous une explication à la chute de la mémoire disponible ?
    Par blue dans le forum Administration système
    Réponses: 5
    Dernier message: 05/06/2007, 14h49
  4. Plantage de programme : avez-vous une explication ?
    Par tlpwd dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/01/2007, 14h10
  5. Pourriez-vous m'aider pour cette simulation de ping ?
    Par andrianiaina dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 07/09/2006, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo