Clever-Excel-Forum

Normale Version: VBA Umkehrfunktion
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

der beigefügte Code wandelt 4 Strings mit Zeichen > 127 (hier entfernt) in Klartext um. Kann man das umkehren, also ein Klartext eingeben und die verschleierten Strings erhalten?

Code:
Public Sub Start() 'Auto_Open()
    Debug.Print (Fn_out(Fn_inn("ca 10 Zeichen > 127", "kq3OKLXwz"), Fn_inn("ca 10 Zeichen > 127", "yr2i39VP8")) + Fn_out(Fn_inn("ca 10 Zeichen > 127", "QldsyzwRE"), Fn_inn("ca 10 Zeichen > 127", "RBivIzKmM")))
End Sub

Public Function Fn_out(ByVal str_1 As String, ByVal str_2 As String) As String
    Dim i As Long
For i = 1 To Len(str_1)
    V_6 = V_6 & Chr(Asc(Mid(str_2, IIf(i Mod Len(str_2) <> 0, i Mod Len(str_2), Len(str_2)), 1)) Xor Asc(Mid(str_1, i, 1)))
Next i
Debug.Print , "Fn_out", V_6
    Fn_out = V_6
End Function

Public Function Fn_inn(ByVal T As String, P As String) As String
    On Error Resume Next

Dim s(0 To 255) As Integer, c As Integer, i, B
Dim L() As Byte, R() As Byte, D As Byte, By_1 As Byte

R() = StrConv(T, vbFromUnicode)
L() = StrConv(P, vbFromUnicode)

For i = 0 To 255
    s(i) = i
Next i

For i = 0 To 255
    D = s(i): Debug.Print i, D, s(i)
    s(i) = s((B + s(i) + L(i Mod Len(P))) Mod 256)
    s((B + s(i) + L(i Mod Len(P))) Mod 256) = D
    Debug.Assert D = i
Next i

B = 0

For i = 0 To UBound(R)
    c = (c + s((B + 1) Mod 256)) Mod 256
    s((B + 1) Mod 256) = s(c)
    s(c) = s((B + 1) Mod 256)
    R(i) = R(i) Xor (s((s((B + 1) Mod 256) + s(c)) Mod 256))
Next i

Fn_inn = StrConv(R(), vbUnicode)
Debug.Print "Fn_inn", Fn_inn
End Function

Die Debug-Befehle habe ich eingefügt.

Im Hintergrund steht die Frage, welche Kenntnisse und Motivation der Entwickler gehabt haben könnte.

In jeden Fall kein langweiliger VBA-Code.

Beim Wechsel von einer Windows- zu einer Linux-Umgebung machen die entfernten Zeichenketten Probleme, bei Bedarf kann ich sie aber als Hex-Code per PN zuschicken.

mfg
Na, Chef-Kryptologe? Smile

Kann man sicherlich oder vermutlich (der Ersteller muss es ja z.B. haben) ... braucht halt Gehirnschmalz.