看了这些帖子:
1、http://blog.csdn.net/mtawaken/article/details/8145282
2、http://bbs.saraba1st.com/2b/thread-858664-2-1.html
原图:
图片中的0、1其实隐藏着有用的信息。
感觉灰常有意思,自己也动手跟着做着。
orc部分没做,直接拿来正确的识别结果:
文件ori 的内容如下:
00011111100010110000100000000000000000000000000000000000000000000000001000000011011011010101000011001011010011
10110000100100000000010100001111010101001100011110100001010101101010110101100000001110000000000011010100001101
10000101000100010011011010001110001000010110001100010011000110101100010011000011010010011010011000001101100010
11100000011010011010101001010111100001110100010011011001110101100000001011000011110111010010111101110010111000
11010110000001010010011000101110111111000000000011111111110000111000111101110000111000011110001100010110010011
01000011001000100110010011110011001001110010111001111101111001111010010011011110111110111001111101111111010111
11000111111000000001101100001000011110110010000001100001010100101011010010011010110011000010010010000010000010
10010100100001100011011000110010000110001101010110010001010101111001000101010010101100001100111100010011110111
10000101001010111110010000000001010000111010010001100010101101100001100110100010010011011110111111010010001000
01000110000111001011100001001100101110010000101010000101111100011100111101001111101110011011010110100000001011
10111101011101010110010010110000011011000010101111011010111010000111101101001110010110010110111001000111011011
11111110000100111110111110011110111100001100110111000001110100001001001001000001010100101100011010000101100011
00010011010110110000110011100110101001001100101001000111110000010110000000100010011011010101011100111000000100
11101011110110011001010101011001011010110111011111111010110000111010100100100110001111101011000010011100110110
10101001111011010101000111110000011110100011110110100001010101110111010101001110010001110101000101000101000001
01010010110001101011010110001100000111001001010000011000100110000110001000110010111111100101101010011110011101
10011110011000111100101110000101010101000110101101111010001000111001110100100001111110011111010101000110010101
00110010001111111011111000000100111001111001110101010001101110011000100100010110010111010011111000101100001011
11100010100010011000110110111010011001001001111011010010111000001111000011100100100100010011101011010001110010
01100101001101100001101100110000111111010010101000011010011000000111110100011000100001101010010110100110110110
01010001010000101001110011010110000101110001111010000101001011100100110100001001000001101000110101111110001010
01010000100100011000011000110110110111110100000010011110111001100000010011100100100101100010000010111111100101
10110110111000100000100010100000100001100001001110011101001000101000000110001110011000011101111100101000111101
01000011010010100100011000001000010001111011110001101010100110001111110100001101110100100001101101100010101101
11000010111011101011111111011110010000100010100101101101100100110101111000001101110010100000011100110101011000
01111011110010100000000010110111111110101010100011000010011100000110111110000000010000000000000000
每8个0或1组成一个字节。程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
/*
* 读取01,每8位组成一个字节。
* gcc -Wall main.c -o main
*/
#define BITS 1
int main(int argc, char *argv[])
{
int fdin, fdout;
char bit;
char byte;
int rnum;
int loc;
if(argc != 3){
fprintf(stderr, "%s <infile> <outfile>\n", argv[0]);
exit(-1);
}
fdin = open(argv[1], O_RDONLY);
if(-1 == fdin){
perror("open infile");
exit(-1);
}
fdout = open(argv[2],O_CREAT | O_RDWR);
if(-1 == fdout){
perror("open outfile");
exit(-1);
}
loc = 7;
byte = 0;
while((rnum = read(fdin, &bit, BITS)) != 0){
if( bit == '0' || bit == '1'){
printf("get bit %c\n", bit);
byte = byte | ((bit - '0') << (loc--));
if(loc < 0){
printf("get one byte: %c, 0x%x\n", byte, byte);
write(fdout, &byte, BITS);
loc = 7 ;
byte = 0;
}
}
}
close(fdin);
close(fdout);
return 0;
}
将上面的程序编译得: $gcc -Wall main.c -o main
然后 $ ./main ori first
得到first文件,判断first文件的类型可以用file命令。当然也可以将它的前3个字节google之。
$file first
first: gzip compressed data, from Unix, max compression
$mv first first.gz
$gzip -d first.gz
解压之后得到一个名为first的文件,继续判断类型
$ file first
first: compiled Java class data, version 50.0 (Java 1.6)
可以使用jd-gui反编译次文件。
$mv first first.class
打开jd-gui,选取first.class
将first.class 该为 i.class, 然后运行:
$java i
www.i.u-tokyo.ac.jp/fun/hikari-loveletter
进入这个网页,可以听一首歌。这里就不再分析了。
详细解答在这里: http://blog.csdn.net/mtawaken/article/details/8145269