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

闲着,发现昨天网上流传甚广的光棍节程序员闯关秀,死磕硬碰到了最后一关,按网上攻略提示,总算把第十关给破了。

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

//攻略提示:
//有人提示要应景光棍节,空格全替换成1。然后8位2进制,转换成一个byte,
//然后有了byte Array,转成ASCII码,就会看到一个Base64的字符串,
//把字符串存成文件,文件解压缩,就看到通关的Key了


import  java.io.BufferedReader;
import  java.io.BufferedWriter;
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.FileOutputStream;
import  java.io.FileReader;
import  java.io.FileWriter;
import  java.io.IOException;
import  java.io.InputStream;
import  java.io.OutputStream;
import  java.util.zip.ZipEntry;
import  java.util.zip.ZipOutputStream;
import  sun.misc.BASE64Decoder;
import  sun.misc.BASE64Encoder;


public   class  DoubleEleven {
      
       public   static   void  main(String[] args)  throws  Exception{
            
             char [] str = readFile( "D://code.txt" );
         //code中存放的为第九关上的字符,已在文本编辑器里将下划线"____"替换为"1111"             
         //readFIle实现:将8位2进制→1个byte→ASCII码→char Array
            
            String cc =  new  String(str); //char Array→Base64的字符串
            System. out .print(cc ); 
            GenerateFile(cc); //Base64的字符串string → 解码decoder后生成zip文件
    
//PS:一开始直接写成jpg文件老是打不开,后面改为zip,嘿嘿,解压缩后仓老师出现了~with key to level 10
       
      }
       public   static   char [] readFile(String fileName) { 
         //byte num;
         
         char [] coutput=  new   char [8112];
         int  j=0;
        String stroutput =  "" ;
       
        File file =  new  File(fileName);               
         if (file.exists()){ 
             if (file.isFile()){ 
                 try
                    BufferedReader input =  new  BufferedReader ( new  FileReader(file)); 
                    String text; 
                        
                    String[] texts =  new  String[8];
                     byte  temp;
                               while ((text = input.readLine()) !=  null
                              {
                                texts = text.split( " " ); //将每行字符串分为8段(按空格分离)
                               for ( int  i=0;i<8;i++,j++){
                                    temp=Byte.valueOf(texts[i],2);  //将每个byte转换成char
                                    coutput[j]=( char )temp;
                                   }
                                                
               
                 catch (IOException ioException){ 
                  
                 System. err .println( "File Error!" ); 
 
               
           
             else   if (file.isDirectory()){ 
                String[] dir = file.list(); 
                stroutput +=  "Directory contents:/n" ;                        
                 for ( int  i=0; i<dir. length ; i++){ 
                  stroutput += dir[i] + "/n"
               
           
       
         else
            System. err .println( "Does not exist!" ); 
       
         return  coutput; 
     }
      
       //base64字符串转化成文件(zip格式)
     public   static   boolean  GenerateFile(String imgStr) 
      //对字节数组字符串进行Base64解码并生成图片 
         if  (imgStr ==  null //图像数据为空 
             return   false
        BASE64Decoder decoder =  new  BASE64Decoder(); 
         try   
       
             //Base64解码 
             byte [] b = decoder.decodeBuffer(imgStr); 
             for ( int  i=0;i<b. length ;++i) 
           
                 if (b[i]<0) 
                { //调整异常数据 
                    b[i]+=256; 
               
           
             //生成zip压缩文件 
            String imgFilePath =  "d://光棍2012.zip" ; //新生成的文件 
            OutputStream out =  new  FileOutputStream(imgFilePath);     
            out.write(b); 
            out.flush(); 
            out.close(); 
             return   true
        
         catch  (Exception e)  
       
             return   false
       
    }  
}  



过关其他策略问题:
1.谷歌浏览器必备工具,Ctrl+shirt+I 熟练操作之,抓包嘿嘿。
2.谷姐,度娘~必修之课
3.常用加密解密方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值