前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2021年12月 攻防世界-简单题-MOBILE-012(你是谁)

【愚公系列】2021年12月 攻防世界-简单题-MOBILE-012(你是谁)

作者头像
愚公搬代码
发布2022-12-01 10:31:11
3680
发布2022-12-01 10:31:11
举报
文章被收录于专栏:历史专栏

文章目录


一、你是谁

题目链接:https://adworld.xctf.org.cn/task/task_list?type=mobile&number=6&grade=0&page=1

二、使用步骤

1.运行app

发现是游戏,需要找到语音函数

2.jadx反编译app

代码语言:javascript
复制
package xyz.konso.testsrtp;

import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.Toast;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import org.json.JSONObject;

/* loaded from: classes.dex */
public class MainActivity extends Activity {
    private Button button1;
    private Button button2;
    private AudioManager mAudioManager;
    private SpeechRecognizer mIat;
    private SpeechSynthesizer mTts;
    private JSONObject res;
    private String ss;
    private String TAG = "shitou";
    private InitListener mInitListener = new InitListener() { // from class: xyz.konso.testsrtp.MainActivity.1
        @Override // com.iflytek.cloud.InitListener
        public void onInit(int code) {
            Log.d(MainActivity.this.TAG, "SpeechRecognizer init() code = " + code);
        }
    };
    private SynthesizerListener mSynListener = new SynthesizerListener() { // from class: xyz.konso.testsrtp.MainActivity.2
        @Override // com.iflytek.cloud.SynthesizerListener
        public void onCompleted(SpeechError error) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakBegin() {
            Log.d(MainActivity.this.TAG, "speakcheck");
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakPaused() {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakResumed() {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
        }
    };
    private RecognizerListener recognizerListener = new RecognizerListener() { // from class: xyz.konso.testsrtp.MainActivity.3
        @Override // com.iflytek.cloud.RecognizerListener
        public void onBeginOfSpeech() {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onError(SpeechError error) {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onEndOfSpeech() {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onResult(RecognizerResult results, boolean isLast) {
            Log.d(MainActivity.this.TAG, results.getResultString());
            try {
                JSONObject res = new JSONObject(results.getResultString()).getJSONArray("ws").getJSONObject(0).getJSONArray("cw").getJSONObject(0);
                MainActivity.this.ss = res.getString("w");
            } catch (Exception e) {
                Log.d(MainActivity.this.TAG, "catch Excepetion");
            }
            if (MainActivity.this.ss.equals("你好")) {
                MainActivity.this.getsna();
            }
            Log.d(MainActivity.this.TAG, MainActivity.this.ss);
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onVolumeChanged(int volume, byte[] var2) {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
        }
    };

    @Override // android.app.Activity
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new background(this));
        this.mAudioManager = (AudioManager) getSystemService("audio");
        this.mAudioManager.setBluetoothScoOn(true);
        this.mAudioManager.startBluetoothSco();
        SpeechUtility.createUtility(this, "appid=561e6833");
        this.mIat = SpeechRecognizer.createRecognizer(this, this.mInitListener);
        this.mTts = SpeechSynthesizer.createSynthesizer(this, null);
    }

    public void setParam() {
        this.mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        this.mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        this.mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
    }

    public void getsna() {
        Toast.makeText(this, "haha", 0).show();
    }

    @Override // android.app.Activity
    protected void onDestroy() {
        super.onDestroy();
        this.mAudioManager.setBluetoothScoOn(false);
        this.mAudioManager.stopBluetoothSco();
    }
}

真正有用的是getsna函数。得到语音识别的字符串arg11,并比较计算结果。

代码语言:javascript
复制
package xyz.konso.testsrtp;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import java.lang.reflect.Array;
import org.json.JSONObject;

/* loaded from: classes.dex */
public class background extends SurfaceView implements View.OnTouchListener {
    private Button button1;
    private Button button2;
    private AudioManager mAudioManager;
    private SpeechRecognizer mIat;
    private SpeechSynthesizer mTts;
    private JSONObject res;
    private String ss;
    private String TAG = "shitou";
    private final int WIDTH = 106;
    private final int LENGTH = 10;
    private final int COL = 10;
    private final int ROW = 10;
    SurfaceHolder.Callback c = new SurfaceHolder.Callback() { // from class: xyz.konso.testsrtp.background.1
        @Override // android.view.SurfaceHolder.Callback
        public void surfaceCreated(SurfaceHolder holder) {
            background.this.redraw();
        }

        @Override // android.view.SurfaceHolder.Callback
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        }

        @Override // android.view.SurfaceHolder.Callback
        public void surfaceDestroyed(SurfaceHolder holder) {
        }
    };
    private InitListener mInitListener = new InitListener() { // from class: xyz.konso.testsrtp.background.2
        @Override // com.iflytek.cloud.InitListener
        public void onInit(int code) {
            Log.d(background.this.TAG, "SpeechRecognizer init() code = " + code);
        }
    };
    private SynthesizerListener mSynListener = new SynthesizerListener() { // from class: xyz.konso.testsrtp.background.3
        @Override // com.iflytek.cloud.SynthesizerListener
        public void onCompleted(SpeechError error) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakBegin() {
            Log.d(background.this.TAG, "speakcheck");
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakPaused() {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onSpeakResumed() {
        }

        @Override // com.iflytek.cloud.SynthesizerListener
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
        }
    };
    private RecognizerListener recognizerListener = new RecognizerListener() { // from class: xyz.konso.testsrtp.background.4
        @Override // com.iflytek.cloud.RecognizerListener
        public void onBeginOfSpeech() {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onError(SpeechError error) {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onEndOfSpeech() {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onResult(RecognizerResult results, boolean isLast) {
            Log.d(background.this.TAG, results.getResultString());
            try {
                JSONObject res = new JSONObject(results.getResultString()).getJSONArray("ws").getJSONObject(0).getJSONArray("cw").getJSONObject(0);
                background.this.ss = res.getString("w");
            } catch (Exception e) {
                Log.d(background.this.TAG, "catch Excepetion");
            }
            background.this.getsna(background.this.ss);
            Log.d(background.this.TAG, background.this.ss);
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onVolumeChanged(int volume, byte[] var2) {
        }

        @Override // com.iflytek.cloud.RecognizerListener
        public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
        }
    };
    private circle[][] matrix = (circle[][]) Array.newInstance(circle.class, 10, 10);

    public boolean check() {
        return this.matrix[1][1].getStatus() == 1 && this.matrix[1][2].getStatus() == 1 && this.matrix[1][7].getStatus() == 1 && this.matrix[1][8].getStatus() == 1 && this.matrix[2][0].getStatus() == 1 && this.matrix[2][3].getStatus() == 1 && this.matrix[2][6].getStatus() == 1 && this.matrix[2][9].getStatus() == 1 && this.matrix[3][0].getStatus() == 1 && this.matrix[3][4].getStatus() == 1 && this.matrix[3][5].getStatus() == 1 && this.matrix[3][9].getStatus() == 1 && this.matrix[4][0].getStatus() == 1 && this.matrix[4][9].getStatus() == 1 && this.matrix[5][1].getStatus() == 1 && this.matrix[5][8].getStatus() == 1 && this.matrix[6][2].getStatus() == 1 && this.matrix[6][7].getStatus() == 1 && this.matrix[7][3].getStatus() == 1 && this.matrix[7][6].getStatus() == 1 && this.matrix[8][4].getStatus() == 1 && this.matrix[8][5].getStatus() == 1;
    }

    public background(Context context) {
        super(context);
        getHolder().addCallback(this.c);
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                this.matrix[i][j] = new circle(j, i);
            }
        }
        setOnTouchListener(this);
        initGame();
        SpeechUtility.createUtility(getContext(), "appid=561e6833");
        this.mIat = SpeechRecognizer.createRecognizer(getContext(), this.mInitListener);
        this.mTts = SpeechSynthesizer.createSynthesizer(getContext(), null);
    }

    private circle getcircle(int x, int y) {
        return this.matrix[y][x];
    }

    public void getsna(String flag) {
        if (flag.length() == 4) {
            int[] as = new int[flag.length()];
            for (int i = 0; i < flag.length(); i++) {
                as[i] = flag.charAt(i) & 65535;
            }
            for (int j = 0; j < 4; j++) {
                for (int k = j + 1; k < 4; k++) {
                    if (as[j] > as[k]) {
                        int temp = as[j];
                        as[j] = as[k];
                        as[k] = temp;
                    }
                }
            }
            if (as[0] == 20667 && as[1] == 25105 && as[2] == 26159 && as[3] == 36924) {
                Toast.makeText(getContext(), "You get the sorted flag:20667 25105 26159 36924", 0).show();
            } else {
                Toast.makeText(getContext(), "wrong input", 0).show();
            }
        }
    }

    /* JADX INFO: Access modifiers changed from: private */
    public void redraw() {
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
        Canvas c = getHolder().lockCanvas();
        c.drawBitmap(bmp, 0.0f, 0.0f, (Paint) null);
        Paint paint = new Paint();
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                circle one = getcircle(j, i);
                switch (one.getStatus()) {
                    case 0:
                        paint.setColor(-1118482);
                        break;
                    case 1:
                        paint.setColor(-20807);
                        break;
                }
                c.drawOval(new RectF((float) (one.getx() * 106), (float) ((one.gety() + 7) * 106), (float) ((one.getx() + 1) * 106), (float) ((one.gety() + 8) * 106)), paint);
            }
        }
        getHolder().unlockCanvasAndPost(c);
    }

    private void initGame() {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                this.matrix[i][j].setStatus(0);
            }
        }
    }

    @Override // android.view.View.OnTouchListener
    public boolean onTouch(View arg0, MotionEvent e) {
        if (e.getAction() == 1) {
            if (e.getY() < 815.0f) {
                this.mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
                this.mTts.setParameter(SpeechConstant.SPEED, "50");
                this.mTts.setParameter(SpeechConstant.VOLUME, "80");
                this.mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
                this.mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
                if (!check()) {
                    this.mTts.startSpeaking("你是个好人,但是我们不适合。 ", this.mSynListener);
                    Toast.makeText(getContext(), "你根本不知道什么叫做爱", 0).show();
                } else {
                    setParam();
                    Log.d(this.TAG, "startListening ret:" + this.mIat.startListening(this.recognizerListener));
                    Toast.makeText(getContext(), "通过爱的验证", 0).show();
                }
            } else {
                int y = (int) ((e.getY() / 106.0f) - 7.0f);
                int x = (int) (e.getX() / 106.0f);
                getcircle(x, y).setStatus(getcircle(x, y).getStatus() ^ 1);
                redraw();
                if (check()) {
                    Toast.makeText(getContext(), "Right design", 0).show();
                }
            }
        }
        return true;
    }

    public void setParam() {
        this.mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        this.mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        this.mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
    }
}

发现flag:You get the sorted flag:20667 25105 26159 36924

把20667 25105 26159 36924转成中文是傻我是逼

傻我是逼变成我是傻逼

得到flag:flag{25105 26159 20667 36924}


总结

提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、你是谁
  • 二、使用步骤
    • 1.运行app
    • 2.jadx反编译app
    • 总结
    相关产品与服务
    语音识别
    腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档