2020JTWLB-个人CTF-reverse-bmw

本文记录了一次个人CTF比赛中遇到的Android逆向题目,涉及凯撒密码解密。通过使用jadx工具打开APK,分析关键代码段,发现是3位循环移位的变种凯撒密码。作者提供了解密脚本,并以此反思平时学习的懈怠。
摘要由CSDN通过智能技术生成


每天一题,只能多不能少(已过0点,就算我今天完成指标了?😃)

bmw

题目分析

简单的android逆向,当时竟然没做出来,这次比赛脑袋进的水真的是太平洋啊。

开始

1.题目

解压得到一个apk
bmw6.apk

2.用jadx打开

找到关键代码段
代码段

package com.deepnoite.bmw2;

public class TheFlagIsNotHere {
    public static final int LEN = SOURCE.length();
    public static final String SOURCE = "!0123456789abcdefghijklmnopqrstuvwxyz{}";
    public static String key = "iodj078atis6mng5yodbe!lch1";

    public static void getKey() {
        StringBuilder flag = new StringBuilder();
        int length = key.length();
        for (int i = 0; i < key.length(); i++) {
            int a = SOURCE.indexOf(key.charAt(i));
            if (a == 2) {
                a = LEN + 2;
            }
            if (a == 1) {
                a = LEN + 1;
            }
            if (a == 0) {
                a = LEN;
            }
            flag.append(SOURCE.charAt(a - 3));
        }
    }
}

分析代码

明显就是个变种的凯撒!!!!凯撒!!!!真的想对自己爆粗口。。SOURCE是码表,把key在码表范围内,循环移位,3位。

上脚本

#!python3
# -*- coding: utf-8 -*-
# @Time : 2020/10/21 16:52
# @Author : A.James
# @FileName: tt.py
source = "!0123456789abcdefghijklmnopqrstuvwxyz{}"
key = "iodj078atis6mng5yodbe!lch1"
LEN = len(source)
flag = ''
for i in range(len(key)):
    for j in range(len(source)):
        if source[j] == key[i]:
            k = j
            if k == 2:
                k = LEN + 2
            if k == 1:
                k = LEN + 1
            if k == 0:
                k = LEN
            print(j)
            print(source[k-3])
            flag += source[k-3]
print (flag)

get flag

flag{457qfp3jkd2vla8bzi9e}

结语

比赛的时候脑袋进的水就是平时自己懈怠的时光。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值