• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Base64

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
Тут на коленке лепил код для кодера/декодера...
для вывода ошибки в бридж использовал "подход"
На 7-ке будет работать, на 8-ке - зависит от версии жвм (в позних версиях могет не быть sun.misc.*)
использовать можно и через бридж
Java:
import java.io.*;

public class Base64 {
    
    public void decodeFile(String ifname, String ofname) throws Exception {
        String sErr = null;
        try {
            byte decoded[] = new sun.misc.BASE64Decoder().decodeBuffer(new FileInputStream(ifname));
            // save it to a binary stream
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(ofname);
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            
            fos.write(decoded);
            fos.close();
        }
        catch (IOException e1) {
            e1.printStackTrace();
            sErr = e1.getLocalizedMessage();
            System.out.println("send error > " + sErr);
        }
        finally {
            if (sErr != null) {throw new Exception(sErr);}
        }
    }
    
    public static void main(String[] args) {
        final Base64 obj = new Base64();
        final int params = args.length;
        assert params < 1;
        final String ifname = args[0];
        String ofname = "dst.out";
        if (params >= 2) {ofname = args[1];}
        try {
            obj.decodeFile(ifname, ofname);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        finally {
            System.exit(0);
        }
    }
    
}
Visual Basic:
%REM
    Library FileUtilsLS
    Created Feb 6, 2012 by Michael N. Cholokov
    Description:
%END REM
Option Public
Option Declare
Use "ErrorHandling"
Use "FileUtils"

Public jSession As JavaSession

Sub Initialize
    Set jSession = New JAVASESSION
End Sub

%REM
    Sub DecodeFile
    Description:
%END REM
Sub DecodeFile(inFile As String, outFile As String)
    On Error GoTo ErrH
    Dim Base64 As JAVACLASS
    Dim Base64obj As JAVAOBJECT
    Set Base64 = jSession.GetClass({Base64})
    Set Base64obj = Base64.CreateObject()
    Print {decoding...}
    Call Base64obj.decodeFile(inFile, outFile)
    Print {exit}
Quit:
    Exit Sub
ErrH:
    Call RaiseError_mod()
    Resume Quit
End Sub

Function RaiseError_mod() As String
    Dim jError As JavaError
    Dim modInfo As String   
    modInfo = GetThreadInfo(LSI_THREAD_MODULE) & "::" & GetThreadInfo(LSI_THREAD_CALLPROC) & ": "
    Set jError = jSession.getLastJavaError()
    Dim es As String
    If (Len(jError.errorMsg) = 0) Then
        es = modInfo
        If Err = 0 Then
            es = es + "Manually raised an error"
        Else
            es = es + "Run time error: (" + Trim(Str(Err)) + ") " + Error$ + " at line: " + Trim(Str(Erl))
        End If
    Else
        es = modInfo + "Error at line " & Erl & ": " & jError.errorMsg
        jSession.ClearJavaError           
    End If
    Print es
    RaiseError_mod = es
End Function
java класс можно скомпилить и использовать с командной строки: java Base64 <file from> [file to]
file from - обязательный путь к исходному файлу
file to - путь к результату (если не указан - выведет в dst.out)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!