hackedteam/vector-applet

View on GitHub
weaponized/src-datacreator/x/StringEncryptor.java

Summary

Maintainability
A
2 hrs
Test Coverage
package x;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Encrypt Strings in Java files. This is done by replacing any occurance
 * of "text" with x.Strings.dec("enodedText")
 *
 */
public class StringEncryptor {

    public static void main(String[] args) throws Exception {
//        System.out.println("text");
//        System.out.println(x.Strings.enc("text"));
//        System.out.println(x.Strings.dec("ufyu"));
//        
        encodeFile(args[0],args[1]);
//        System.out.println(x.Strings.dec("ufyu")+2+x.Strings.dec("Qfufs"));
//        System.out.println(encodedContents("System.out.println(\"text\"+2+\"Peter\")"));
//        
    }
    
    public static void encodeFile(String input, String output) throws Exception {
        byte[] bytes = new byte[128*1024]; // large enough
        FileInputStream in = new FileInputStream(input);
        int bytesRead = in.read(bytes);
        in.close();
        String content = new String(bytes,0,bytesRead,"ISO8859-1");
        content = encodedContents(content);
        bytes = content.getBytes("ISO8859-1");
        FileOutputStream fout = new FileOutputStream(output);
        fout.write(bytes);
        fout.close();
    }
    
    public static String encodedContents(String contents) {
        Pattern p = Pattern.compile("\"[^\"]+\"");
        Matcher m = p.matcher(contents);
        int delta = 0;
        while( m.find() ) {
            System.out.println("encoding string "+ m.start()+" "+m.end());
            String start = contents.substring(0,m.start()+delta);
            String text = contents.substring(m.start()+delta+1,m.end()+delta-1);
            String end = contents.substring(m.end()+delta);
            if( !"all".equals(text) && !"unused".equals(text) ) { // Annotations
                contents = start + "x.Strings.dec(\""+Strings.enc(text)+"\")" + end;
                delta += 15;
            }
        }
        return contents;
    }
    
}