在大连做安天技术论坛 GuessMe3

本文详细描述了一个解密挑战的过程,涉及多个步骤,包括处理二进制文件、PGP加密、RAR压缩、文件编码、Base64解密以及十六进制数据解析,最终揭示隐藏在文件中的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三关涉及了各种二进制文件的处理,比较蛋疼,但幸好不用猜密码,密码包含在前几关的密码中,大概就是这些。

ren
喜羊羊
pig
gou
miao
丫
闻鸡起舞
cock

180
人归落雁后
总把新桃换旧符


第一层,压缩包解压出来是一个,二进制文件


把后缀换成rar,解压之,出现第二层的文件2.bin

接着把后缀换成rar,解压之,出现第三层二进制文件3.bin,RAR强大的地方在于基本支持所有压缩格式。

3.bin没有密码,解压之出现3.rar.out  是一个pgp加密文件,使用第一关的密钥解密之,发现是一个rar文件,没有密码,内容如下

这里顺便说一下,windows下的PGP工具叫做Pgp Desktop,用起来虽然没有linux下的方便,但是不会存在编码问题,

linux为终端设置了GBK编码之后,会看不到命令的回显,比较蛋疼。

解压之,飞狼旗就得到了。



打开5.bin发现他是一个,docfile文件全名为,微软复合文档二进制结构(Compound File Binary Format),

文件头为

D0 CF 11 E0
很像docfile的英文,这个格式一般用来存储office的各种格式文件,内部是模拟磁盘存储格式,用Docfile Viewer打开(不支持中文目录)

详细看这里http://hi.baidu.com/umu618/item/5b21d981a6c6235d26ebd908
几番尝试,使用excel打开,密码为 “丫”,内容为文本表示的二进制文件。

类似于

00000000   1F 8B 08 08 9E 68 8B 4B  00 00 38 2E 62 69 6E 00   .?.瀐婯..8.bin.
00000010   EC 5C 67 8F 83 CC 11 FE  9C 93 4E 4A FE C1 AB 7C   靄g.兲.揘J珅
00000020   25 89 01 63 1B D2 14 D3  C1 F4 66 20 8A 22 3A D8   %?c.?恿鬴 ?:?

写了一个小程序把它转换为真正的二进制,这里啰嗦两句,文本和二进制的区别在于文本的存储是经过编码的,

每个字符占一个字节,比如1234占4个字节,二进制格式是直接按二进制编码的方式储存,比如1234,换算成2进制

只占2个字节。

2进制的读写一般用write() read(),文件一定要以二进制方式打开,不然0A等特殊字符会被转换成换行符。

这里我吐槽一下,之前看过一篇网上水友的文章,口口声声说不加打开方式无所谓,害我错了很久还不知道哪里错的,

在这我就不挖坟掘墓的把那帖子找出来了。

#include 
 
  
#include 
  
   
#include 
   
    
#include 
    
     
#include 
     
      
using namespace std;


int main(int argc, char* argv[])
{
	ifstream txtfile;
	ofstream txtfiletran;
	string s;
	stringstream ss;
	int i;

	txtfile.open("1.txt");
	txtfiletran.open("2.txt",ios::binary);
	while(getline(txtfile,s)){
		if (60<=s.length()){
			ss.clear();
			ss<<s.substr(11,48)<
      
       >hex>>i){ //cout<<((char *)(&i))<<endl; txtfiletran.write((char *)(&i),sizeof(char)); } } } txtfile.close(); txtfiletran.close(); return 0; } }
      
     
    
   
  
 



转换完成之后的rar内容如下


直接使用文本文件打开,是一封MINE格式的邮件,内容使用base64加密,一般base64加密的话只有大小写字母数字和'+'  '='  '/',这几个字符

末尾等号用来占位。

解密之后内容如下

不过这里应该是写错了,黄沙百战穿金甲,六宫粉黛无颜色。才是

从军行·青海长云暗雪山 王昌龄 

青海长云暗雪山, 孤城遥望玉门关。 

黄沙百战穿金甲, 不破楼兰终不还。 


2010-03-01 



Swordlea

下一封是这样

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18882"><LINK rel=stylesheet 
href="BLOCKQUOTE{margin-Top: 0px; margin-Bottom: 0px; margin-Left: 2em}"></HEAD>
<BODY style="MARGIN: 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt">
<DIV><FONT size=2 face=Verdana>从军行·青海长云暗雪山 王昌龄 <BR><BR>青海长云暗雪山, 孤城遥望玉门关。 
<BR><BR>黄沙百战穿金甲, 不破楼兰终不还。 <BR></FONT></DIV>
<DIV><FONT size=2 face=Verdana></FONT> </DIV>
<DIV align=left><FONT color=#c0c0c0 size=2 face=Verdana>2010-03-01 
</FONT></DIV><FONT size=2 face=Verdana>
<HR style="WIDTH: 122px; HEIGHT: 2px" align=left SIZE=2>

<DIV><FONT color=#c0c0c0 size=2 face=Verdana><SPAN 
id=_FoxFROMNAME>Swordlea</SPAN> </FONT></DIV></FONT></BODY></HTML>

最后两封是重头戏,第二封是飞豹旗


第一封是一个doc文件,密码为 “人归落雁后”,打开后出现一幅画。



图片的后面有一个,10.bin文件,直接用rar打开它,压缩密码是'cock',

将11.bin解压出来发现是一串文本格式的十六进制数据,类似这样

5B8530000000912A2A4143452A2A141402006475613CECF3FB3500000000045573657200004143454543C0400C4C0000000

使用一个小程序转换成二进制,

注意file.eof()的判断会有延迟,在读取了文件结束符之后才为真,

可以用file.peek()来代替。

#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;


int main(int argc, char* argv[])
{
	ifstream txtfile;
	ofstream txtfiletran;
	string s;
	char c;
	stringstream ss;
	int i;

	txtfile.open("1.txt");
	txtfiletran.open("2.txt",ios::binary);
	while(txtfile.peek()!=EOF){
		ss.clear();
		txtfile>>c;
		ss<<c;
		txtfile>>c;
		ss<<c;
		ss>>hex>>i;
		txtfiletran.write((char *)(&i),sizeof(char));
	}
	txtfile.close();
	txtfiletran.close();
	return 0;

}

转换之后的压缩包的密码为ren,内容如下


这样就得到了飞熊旗



分析另一个二进制文件,发现是一个种子,果断开迅雷下载,无奈无人做种,明天再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值