rapid7/metasploit-framework

View on GitHub
external/source/msfJavaToolkit/javaCompile/SignJar.java

Summary

Maintainability
A
0 mins
Test Coverage
// Based on the example from http://www.java2s.com/Code/Java/JDK-6/CompilingfromMemory.htm

package javaCompile;

import java.io.PrintStream;
import java.io.FilterOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.IOException;
import sun.security.tools.KeyTool;
import sun.security.tools.JarSigner;

public class SignJar {
    
    static PrintStream filteredstream =  
        new PrintStream(
            new FilteredStream(
                new ByteArrayOutputStream()));

    public static void KeyToolMSF( String[] args ) {
        try {
            RedirectStd();
            KeyTool.main( args );
        } catch( Exception ex ) { ex.printStackTrace(); }
    } 

    public static void JarSignerMSF( String[] args ) {
        try {
            RedirectStd();
            JarSigner.main( args );
        } catch( Exception ex ) { ex.printStackTrace(); }
    }

    private static void RedirectStd() {
        try {
            System.setOut( filteredstream );
            System.setErr( filteredstream );
        } catch( Exception ex ) { ex.printStackTrace(); }
    }

    static class FilteredStream extends FilterOutputStream {
        public FilteredStream( OutputStream aStream ) { super ( aStream ); }
        
        public void write( byte b[] ) throws IOException {
            String aString = new String( b );
            // Do stuff with the output.
        }

        public void write( byte b[], int off, int len) throws IOException {
            String aString = new String( b, off, len );
            // Do stuff with the output.
        }
    }
}