bonjour,

je suis en train d'écrire une fonction permettant de lire des fichiers .dat, enregistrés par une vieille application propriétaire écrite en vb.
Ce sont des logs (évènements : date, heure, commentaire...). Ces fichiers ne sont pas lisibles en clair avec le notepad.
Apparemment, la fonction qui s'occupait de les lire (ligne par ligne, semble-t-il) était la suivante :

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
Private sub Proc_75_4_4C1988
  'Data Table: 402250
  Dim var_A2 As Integer
  Dim var_DC As Variant
  loc_4C179B: var_9C = vbNullString
              If CBool(Left(arg_10, 1) <> Chr(&H95)) Then '4C17E0
  loc_4C17D8:   var_94 = CVar(arg_10) 'Variant
  loc_4C17DC:   Result = arg_10: Exit Sub
              End If
  loc_4C1866: var_DC = Format(Asc(CStr(Mid$(arg_10, 2, 1))), "000")
  loc_4C189B: var_AC = CStr(1 & Format(Asc(CStr(Mid$(arg_10, 3, 1))), "000"))
              For var_144 = 4 To CInt(Len(arg_10)): var_96 = var_144 'Integer
  loc_4C1942:   var_A2 = (((224 + (Asc(CStr(Mid$(arg_10, CLng(var_96), 1))) - &H20)) - (Asc(CStr(Mid$(var_AC, (1 + (CLng((var_96 - 4)) Mod Len(var_AC))), 1))) - &H20)) Mod 224)
  loc_4C1968:   var_9C = CStr(CVar(var_9C) & Chr(CLng((((var_A2 + &H20) + &H20) + &H20))))
              Next var_144 'Integer
  loc_4C1980: var_94 = CVar(var_9C) 'Variant
  loc_4C1984: Result = arg_10: Exit Sub
End Sub
Je ne comprend pas à quoi servent toutes ces conversions chaines <-> codes ASCII, les ajouts/soustractions, les modulo...
Cela a du sens, cela vous rappelle un algorithme connu, ou c'est juste une tentative d'obfuscation des logs par le développeur d'origine ?
Qu'en pensez vous ?