Nada especia. solo matando el aburrimiento.
' =================================================================
' =================================================================
' => Autor: Pink
' => Base64_E_D
' => Fecha : 04|10|2013
' => Uso: cadena=Base64_E_D("Hola Mundo")
' =>  True For Encode, False For Decode:  Default True
' =>  All Credits Shellcode's owners (I Do not know them)
' =================================================================
' =================================================================


Option Explicit

Private Declare Function CallWindowProcW Lib "USER32" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Public Function Base64_E_D(cadena As String, Optional E_D As Boolean = True) As String
Dim datos() As Byte
Dim datosalida() As Byte
Dim B_B64() As Byte
Dim Str_OP  As String
Dim i As Long
Dim LineBreak As Long
Dim SalidaSize As Long


If E_D = True Then
LineBreak = 76
LineBreak = Int(LineBreak / 4) * 4
SalidaSize = Int(Len(cadena) * 4 / 3)
SalidaSize = SalidaSize + Int(SalidaSize / LineBreak) * 2 + 4
Debug.Print SalidaSize
datos() = StrConv(cadena, vbFromUnicode)
ReDim datosalida(SalidaSize - 1)

Str_OP = "5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A06"
Str_OP = Str_OP & "88470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000"
Else
Str_OP = "C81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D7"
Str_OP = Str_OP & "5014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000"
ReDim datosalida(Len(cadena) - 1)
datos() = StrConv(cadena, vbFromUnicode)
End If


ReDim B_B64((Len(Str_OP) / 2) - 1)
For i = 1 To Len(Str_OP) - 1 Step 2
B_B64(Int(i / 2)) = CByte("&h" & Mid(Str_OP, i, 2))
Next

If E_D = True Then
CallWindowProcW VarPtr(B_B64(0)), VarPtr(datos(0)), Len(cadena), VarPtr(datosalida(0)), LineBreak
Else
CallWindowProcW VarPtr(B_B64(0)), VarPtr(datos(0)), VarPtr(datosalida(0)), 0, 0
End If
Base64_E_D = StrConv(datosalida(), vbUnicode)

End Function

saludos
Imagen
Responder

Volver a “Fuentes”