您的位置:首页 > 职场人生

屌丝破光棍节程序员闯关秀第十关

2014-01-10 17:16 309 查看
闲着,发现昨天网上流传甚广的光棍节程序员闯关秀,死磕硬碰到了最后一关,按网上攻略提示,总算把第十关给破了。
[align=left]
[/align]

故小结一番,java编程如下:

//攻略提示:

//有人提示要应景光棍节,空格全替换成1。然后8位2进制,转换成一个byte,

//然后有了byte
Array,转成ASCII码,就会看到一个Base64的字符串,

//把字符串存成文件,文件解压缩,就看到通关的Key了

[align=left][/align]
[align=left]import java.io.BufferedReader;[/align]
[align=left]import java.io.BufferedWriter;[/align]
[align=left]import java.io.File;[/align]
[align=left]import java.io.FileInputStream;[/align]
[align=left]import java.io.FileOutputStream;[/align]
[align=left]import java.io.FileReader;[/align]
[align=left]import java.io.FileWriter;[/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.io.InputStream;[/align]
[align=left]import java.io.OutputStream;[/align]
[align=left]import java.util.zip.ZipEntry;[/align]
[align=left]import java.util.zip.ZipOutputStream;[/align]
[align=left]import sun.misc.BASE64Decoder;[/align]
[align=left]import sun.misc.BASE64Encoder;[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]public class DoubleEleven {[/align]
[align=left] [/align]
public static void main(String[]
args) throws Exception{
[align=left] [/align]
char[] str
= readFile("D://code.txt");
//code中存放的为第九关上的字符,已在文本编辑器里将下划线"____"替换为"1111"

//readFIle实现:将8位2进制→1个byte→ASCII码→char
Array
[align=left] [/align]
String
cc = new String(str);//char
Array→Base64的字符串
[align=left] System.out.print(cc); [/align]

GenerateFile(cc);//Base64的字符串string →
解码decoder后生成zip文件
[align=left] [/align]
//PS:一开始直接写成jpg文件老是打不开,后面改为zip,嘿嘿,解压缩后仓老师出现了~with key to level
10
[align=left] [/align]
[align=left] }[/align]
public static char[]
readFile(String fileName) {
[align=left] //byte num;[/align]
[align=left] [/align]
char[]
coutput= new char[8112];
[align=left] int j=0;[/align]

String stroutput = "";
[align=left] [/align]

File file = new File(fileName);
[align=left] if(file.exists()){ [/align]
[align=left] if(file.isFile()){ [/align]
[align=left] try{ [/align]

BufferedReader input = new BufferedReader
(new FileReader(file));

String text;
[align=left] [/align]

String[] texts = new String[8];
[align=left] byte temp;[/align]
while((text =
input.readLine()) != null)
[align=left] {[/align]

texts =
text.split("
");//将每行字符串分为8段(按空格分离)

for(int i=0;i<8;i++,j++){
[align=left] temp=Byte.valueOf(texts,2); //将每个byte转换成char[/align]

coutput[j]=(char)temp;

}
[align=left] } [/align]

}
catch(IOException
ioException){

System.[i]err
.println("File
Error!");
[align=left] [/align]

}

}
[align=left] else if(file.isDirectory()){ [/align]

String[] dir = file.list();

stroutput += "Directory contents:/n";

for(int i=0;
i<dir.length;
i++){

stroutput += dir
+"/n";

}

}

}
[align=left] else{ [/align]

System.[i]err
.println("Does
not exist!");

}
[align=left] return coutput; [/align]

}
[align=left] [/align]
[align=left] //base64字符串转化成文件(zip格式)[/align]
public static boolean GenerateFile(String
imgStr)

{ //对字节数组字符串进行Base64解码并生成图片
if (imgStr
== null) //图像数据为空
[align=left] return false; [/align]

BASE64Decoder decoder = new BASE64Decoder();
[align=left] try [/align]

{
[align=left] //Base64解码 [/align]
byte[] b =
decoder.decodeBuffer(imgStr);
[align=left] for(int i=0;i<b.length;++i) [/align]

{
[align=left] if(b[i]<0) [/align]

{//调整异常数据

b[i]+=256;

}

}
[align=left] //生成zip压缩文件 [/align]

String imgFilePath = "d://光棍2012.zip";//新生成的文件

OutputStream out = new FileOutputStream(imgFilePath);

out.write(b);

out.flush();

out.close();
[align=left] return true; [/align]

}
catch (Exception
e)

{
[align=left] return false; [/align]

}

}
}

[align=left]
[/align]
[align=left]
[/align]
[align=left]运行最终结果:http://segmentfault.com/game/?k=e4a4a96a69a1b2b530b3bec6734cdf52[/align]
[align=left]
[/align]
[align=left]过关其他策略问题:[/align]
[align=left]1.谷歌浏览器必备工具,Ctrl+shirt+I 熟练操作之,抓包嘿嘿。[/align]
[align=left]2.谷姐,度娘~必修之课[/align]
[align=left]3.常用加密解密方法[/align]
[align=left]
[/align]
[align=left]
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: