weaponized/src-datacreator/x/StringEncryptor.java
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;
}
}