%!
final static String[][] tab = {
{ "C3", "n", "Z" },
{ "CN", "j", "Y" },
{ "Cx", "f", "X" },
{ "Ch", "b", "W" },
{ "D3", "D", "3" },
{ "DN", "z", "2" },
{ "Dx", "v", "1" },
{ "Dh", "r", "0" },
{ "E3", "T", "7" },
{ "EN", "P", "6" }
};
final static char[] base64Alphabet = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', ',', '/'
};
private static byte[] base64Reverse;
// Populate the base64Reverse lookup table from the base64Alphabet table.
static {
base64Reverse = new byte[128];
// Set all entries to 0xFF, which means that that particular letter
// is not a legal base64 letter.
for (int i = 0; i < base64Reverse.length; i++)
base64Reverse[i] = (byte) 0xFF;
for (int i = 0; i < base64Alphabet.length; i++)
base64Reverse[(int) base64Alphabet[i]] = (byte) i;
}
%>
CueCat page
<%
java.util.Map dataMap;
synchronized(this) {
dataMap=(java.util.Map)pageContext.getAttribute("dataMap",PageContext.APPLICATION_SCOPE);
if(dataMap==null){
dataMap=java.util.Collections.synchronizedMap(new java.util.HashMap());
pageContext.setAttribute("dataMap",dataMap,PageContext.APPLICATION_SCOPE);
}
}
%>
<%
String input=request.getParameter("cuecatdata");
//String input=(String)request.getAttribute("cuecatdata");
String output="";
String output2="";
if(input!=null && input.length()>0) {
StringBuffer sb=new StringBuffer();
int counter=0;
for(int i=0;i0)
sb.append(" ");
counter=0;
continue;
}
boolean found=false;
for(int j=0;j0) {
java.util.StringTokenizer st=new java.util.StringTokenizer(input,".");
while(st.hasMoreTokens()) {
String tok=st.nextToken();
//out.print("Processing " + tok +"
");
out.println("
");
int counter=0;
while(counter");
char[] in = inStr.toCharArray();
int inLength = in.length;
// Strip trailing equals signs.
while (inLength > 0 && in[inLength-1] == '_')
inLength--;
int blocks = inLength/4;
int remainder = inLength & 3;
// wholeInLen and wholeOutLen are the the length of the input and output
// sequences respectively, not including any partial block at the end.
int wholeInLen = blocks*4;
int wholeOutLen = blocks*3;
int outLen = wholeOutLen;
switch (remainder) {
//case 1: throw new IllegalBase64Exception("illegal Base64 length");
case 2: outLen = wholeOutLen+1; break;
case 3: outLen = wholeOutLen+2; break;
default: outLen = wholeOutLen;
}
byte[] outArr = new byte[outLen];
int o = 0;
int i;
for (i = 0; i < wholeInLen;) {
int in1 = (int) base64Reverse[in[i]];
int in2 = (int) base64Reverse[in[i+1]];
int in3 = (int) base64Reverse[in[i+2]];
int in4 = (int) base64Reverse[in[i+3]];
int orValue = in1|in2|in3|in4;
if ((orValue & 0x80) != 0){
// throw new IllegalBase64Exception("illegal Base64 character");
}
int outVal = (in1 << 18) | (in2 << 12) | (in3 << 6) | in4;
outArr[o] = (byte) (outVal>>16);
outArr[o+1] = (byte) (outVal>>8);
outArr[o+2] = (byte) outVal;
i += 4;
o += 3;
}
int orValue;
switch (remainder) {
case 2:
{
int in1 = (int) base64Reverse[in[i]];
int in2 = (int) base64Reverse[in[i+1]];
orValue = in1|in2;
int outVal = (in1 << 18) | (in2 << 12);
outArr[o] = (byte) (outVal>>16);
}
break;
case 3:
{
int in1 = (int) base64Reverse[in[i]];
int in2 = (int) base64Reverse[in[i+1]];
int in3 = (int) base64Reverse[in[i+2]];
orValue = in1|in2|in3;
int outVal = (in1 << 18) | (in2 << 12) | (in3 << 6);
outArr[o] = (byte) (outVal>>16);
outArr[o+1] = (byte) (outVal>>8);
}
break;
default:
// Keep compiler happy
orValue = 0;
}
if ((orValue & 0x80) != 0){
// throw new IllegalBase64Exception("illegal Base64 character");
}
//return outArr;
//output2=new String(outArr);
for(int i1=0;i1");
}
}
}
%>
input=<%= input %>
decoded=<%= output %>
decoded with new algo=<%= output2 %>
Here's the list of all translated codes since the last reboot:
<%
for(java.util.Iterator keys=dataMap.keySet().iterator();keys.hasNext();) {
String hashed=(String)keys.next();
String xlated=(String)dataMap.get(hashed);
%>
- <%= hashed %>
- <%= xlated %>
<%
}
%>