bugku_托马斯.杰斐逊解题报告

在这里插入图片描述

解题思路:

看到这题的第一眼就很容易想到这是转轮密码。
所谓转轮密码就是先根据密匙将字符串的行号调整至与密匙相同,然后再根据密文将每一个密文字母调整为每一行的第一个字母,最后观察每一列,找到可阅读的字符串即为明文。

下面就本题进行演示:
1、首先依照密匙的序号排列好字符串的行号。

2<KPBELNACZDTRXMJQOYHGVSFUWI <
5<IHFRLABEUOTSGJVDKCPMNZQWXY <
1<ZWAXJGDLUBVIQHKYPNTCRMOSFE <
3<BDMAIZVRNSJUWFHTEQGYXPLOCK <
6<AMKGHIWPNYCJBFZDRUSLOQXVET <
4<RPLNDVHGFCUKTEBSXQYIZMJWAO <
9<QWATDSRFHENYVUBMCOIKZGJXPL <
7<GWTHSPYBXIZULVKMRAFDCEONJQ <
8<NOZUTWDCVRJLXKISEFAPMYGHBQ <
14<XPHKZGJTDSENYVUBMLAOIRFCQW <
10<WABMCXPLTDSRJQZGOIKFHENYVU <
13<BMCSRFHLTDENQWAOXPYVUIKZGJ <
11<XPLTDAOIKFZGHENYSRUBMCQWVJ <
12<TDSWAYXPLVUBOIKZGJRFHENMCQ <

2、将密文的每个字母调整至每行首字母。(将密文字母以前的所有字符放到该字符串的末尾)

2<HGVSFUWIKPBELNACZDTRXMJQOY <
5<CPMNZQWXYIHFRLABEUOTSGJVDK <
1<BVIQHKYPNTCRMOSFEZWAXJGDLU <
3<TEQGYXPLOCKBDMAIZVRNSJUWFH <
6<SLOQXVETAMKGHIWPNYCJBFZDRU <
4<XQYIZMJWAORPLNDVHGFCUKTEBS <
9<WATDSRFHENYVUBMCOIKZGJXPLQ <
7<CEONJQGWTHSPYBXIZULVKMRAFD <
8<RJLXKISEFAPMYGHBQNOZUTWDCV <
14<QWXPHKZGJTDSENYVUBMLAOIRFC <
10<GOIKFHENYVUWABMCXPLTDSRJQZ <
13<LTDENQWAOXPYVUIKZGJBMCSRFH <
11<ENYSRUBMCQWVJXPLTDAOIKFZGH <
12<SWAYXPLVUBOIKZGJRFHENMCQTD <

3、写个脚本令其按列输出字符串。

#include <bits/stdc++.h>
using namespace std;
int main()
{
	char a[14][26];
	for(int i=0;i<14;i++)
		for(int j=0;j<26;j++)
			cin>>a[i][j];
	cout<<endl;
	for(int k=0;k<26;k++)
	{
		for(int l=0;l<14;l++)
			cout<<a[l][k];
		cout<<endl;
	}		
} 
/*
输入:
HGVSFUWIKPBELNACZDTRXMJQOY
CPMNZQWXYIHFRLABEUOTSGJVDK
BVIQHKYPNTCRMOSFEZWAXJGDLU
TEQGYXPLOCKBDMAIZVRNSJUWFH
SLOQXVETAMKGHIWPNYCJBFZDRU
XQYIZMJWAORPLNDVHGFCUKTEBS
WATDSRFHENYVUBMCOIKZGJXPLQ
CEONJQGWTHSPYBXIZULVKMRAFD
RJLXKISEFAPMYGHBQNOZUTWDCV
QWXPHKZGJTDSENYVUBMLAOIRFC
GOIKFHENYVUWABMCXPLTDSRJQZ
LTDENQWAOXPYVUIKZGJBMCSRFH
ENYSRUBMCQWVJXPLTDAOIKFZGH
SWAYXPLVUBOIKZGJRFHENMCQTD

输出:
HCBTSXWCRQGLES
GPVELQAEJWOTNW
VMIQOYTOLXIDYA
SNQGQIDNXPKESY
FZHYXZSJKHFNRX
UQKXVMRQIKHQUP
WWYPEJFGSZEWBL
IXPLTWHWEGNAMV
KYNOAAETFJYOCU
PITCMONHATVXQB
BHCKKRYSPDUPWO
EFRBGPVPMSWYVI
LRMDHLUYYEAVJK
NLOMINBBGNBUXZ
AASAWDMXHYMIPG
CBFIPVCIBVCKLJ
ZEEZNHOZQUXZTR
DUZVYGIUNBPGDF
TOWRCFKLOMLJAH
RTANJCZVZLTBOE
XSXSBUGKUADMIN   <--flag-->
MGJJFKJMTOSCKM
JJGUZTXRWIRSFC
QVDWDEPADRJRZQ
ODLFRBLFCFQFGT
YKUHUSQDVCZHHD
*/

所以,倒数第六行就应该是flag,但是大写进去不对,所以换成小写即

flag{xsxsbugkuadmin}

通过!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值