[Day 15] Reverse 小忙碌

今天我过得很充实,
前几天有看到读者的留言
很感激你们愿意花时间看我的文章
看我分享我每日小生活
为了庆祝第15天铁人文已经一半ㄌ
我正事结束後搭捷运去文心森林公园散步思考人生
没想出啥解决之道,就跑去吃肉圆-35元(我吃货我骄傲
皮Q弹肉扎实酱料恰到好处
还有综合汤-20元(豆腐鱼丸和猪血)
55元就让我感到幸福,心花开 :)
晚上参加黑客社和台科资安社线上社课
有来听的朋友,下面留言让我知道你:)
8:00又赶去上北运的 tabata 团课
此时此刻在打铁人文
我在做我想做的事,所以忙得很值得 心甘情愿
对比去年的自己我知道我有进步,勇敢跨出舒适圈

好啦,我话捞完毕,开始解题吧

vault-door-1 (100 points)

This vault uses some complicated arrays! I hope you can make sense of it, special agent. The source code for this vault is here: VaultDoor1.java

Hints
Look up the charAt() method online.

先打开 VaultDoor1.java

import java.util.*;

class VaultDoor1 {
    public static void main(String args[]) {
        VaultDoor1 vaultDoor = new VaultDoor1();
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter vault password: ");
	String userInput = scanner.next();
	String input = userInput.substring("picoCTF{".length(),userInput.length()-1);
	if (vaultDoor.checkPassword(input)) {
	    System.out.println("Access granted.");
	} else {
	    System.out.println("Access denied!");
	}
    }

    // I came up with a more secure way to check the password without putting
    // the password itself in the source code. I think this is going to be
    // UNHACKABLE!! I hope Dr. Evil agrees...
    //
    // -Minion #8728
    public boolean checkPassword(String password) {
        return password.length() == 32 &&
               password.charAt(0)  == 'd' &&
               password.charAt(29) == '3' &&
               password.charAt(4)  == 'r' &&
               password.charAt(2)  == '5' &&
               password.charAt(23) == 'r' &&
               password.charAt(3)  == 'c' &&
               password.charAt(17) == '4' &&
               password.charAt(1)  == '3' &&
               password.charAt(7)  == 'b' &&
               password.charAt(10) == '_' &&
               password.charAt(5)  == '4' &&
               password.charAt(9)  == '3' &&
               password.charAt(11) == 't' &&
               password.charAt(15) == 'c' &&
               password.charAt(8)  == 'l' &&
               password.charAt(12) == 'H' &&
               password.charAt(20) == 'c' &&
               password.charAt(14) == '_' &&
               password.charAt(6)  == 'm' &&
               password.charAt(24) == '5' &&
               password.charAt(18) == 'r' &&
               password.charAt(13) == '3' &&
               password.charAt(19) == '4' &&
               password.charAt(21) == 'T' &&
               password.charAt(16) == 'H' &&
               password.charAt(27) == 'f' &&
               password.charAt(30) == 'b' &&
               password.charAt(25) == '_' &&
               password.charAt(22) == '3' &&
               password.charAt(28) == '6' &&
               password.charAt(26) == 'f' &&
               password.charAt(31) == '0';
    }
}

提示告诉我们要去查charAt()函式
我很贴心帮大家找了教学,请服用[http://tw.gitbook.net/java/java_string_charat.html]
一言以蔽之就是返回索引值的字符。注意索引值是从 0 开始

“Coding” 一共有 6 个字符

charAT(0) 就是 C
charAt(1) 就是 o
charAt(2) 就是 d

这题跟昨天一样,不需要任何逆向技巧
只需耐心就好

从索引值 0 开始一值到索引值 31 ,总共 32 位的长度,
重组一遍就会知道密码是什麽。

但我等等还要做图,就先不排罗

大家晚安


<<:  [Day 15] Swift UI 介绍

>>:  Day15 iPhone捷径-媒体Part5

新手任务

新手任务 ...

【Online Assessment】CS fundamentals、资结、演算法

前测是敲门砖,决定他们要不要和你面试, 我听说过有人前测找代打, 也碰过某个公司的前测题目同期完全一...

ASP.NET MVC 从入门到放弃(Day12) -Class funtion return void 函式写法

接着来讲讲Class一些基本概念.... 我顺序有点搞错...这个要放在物件导向前面讲的才对 1.X...

多线程(Multithreading)

程序是指位於存储器中的代码的静态映像。旧的单 CPU 计算机系统一个一个地加载和执行程序。如果程序花...

好的履历是面试的入门票

标题开头可能大家读起来不就是废话吗,履历怎麽写,Google 关键字详细到有成千上万页的各种样式可做...