· 5 years ago · Oct 03, 2020, 09:54 AM
1package com.challenge.flagviewer;
2
3import android.content.Context;
4import android.util.Base64;
5import java.io.BufferedReader;
6import java.io.ByteArrayInputStream;
7import java.io.Closeable;
8import java.io.InputStream;
9import java.io.InputStreamReader;
10import java.io.Reader;
11import java.nio.charset.Charset;
12import java.security.Key;
13import java.security.spec.AlgorithmParameterSpec;
14import java.util.List;
15import java.util.zip.GZIPInputStream;
16import javax.crypto.Cipher;
17import javax.crypto.SecretKey;
18import javax.crypto.spec.IvParameterSpec;
19import javax.crypto.spec.SecretKeySpec;
20import kotlin.Metadata;
21import kotlin.io.ByteStreamsKt;
22import kotlin.io.CloseableKt;
23import kotlin.io.TextStreamsKt;
24import kotlin.jvm.internal.Intrinsics;
25import kotlin.sequences.SequencesKt;
26import kotlin.text.Charsets;
27
28@Metadata(
29 bv = {1, 0, 3},
30 d1 = {"\u0000,\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u0012\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0018\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\u0004H\u0002J\u0014\u0010\b\u001a\b\u0012\u0004\u0012\u00020\n0\t2\u0006\u0010\u000b\u001a\u00020\fJ\b\u0010\r\u001a\u00020\u0006H\u0002¨\u0006\u000e"},
31 d2 = {"Lcom/challenge/flagviewer/Vault;", "", "()V", "decrypt", "", "yourKey", "Ljavax/crypto/SecretKey;", "fileData", "getFlagsFromVault", "", "", "context", "Landroid/content/Context;", "getVaultKey", "app_release"},
32 k = 1,
33 mv = {1, 1, 15}
34)
35public final class Vault {
36 private final byte[] decrypt(SecretKey var1, byte[] var2) {
37 byte[] var3 = Base64.decode("QUVTL0NCQy9QS0NTNVBhZGRpbmc=", 0);
38 Intrinsics.checkExpressionValueIsNotNull(var3, "Base64.decode(\"QUVTL0NCQ…GRpbmc=\", Base64.DEFAULT)");
39 Charset var4 = Charset.forName("UTF-8");
40 Intrinsics.checkExpressionValueIsNotNull(var4, "Charset.forName(\"UTF-8\")");
41 Cipher var7 = Cipher.getInstance(new String(var3, var4));
42 Key var5 = (Key)var1;
43 Intrinsics.checkExpressionValueIsNotNull(var7, "cipher");
44 var7.init(2, var5, (AlgorithmParameterSpec)(new IvParameterSpec(new byte[var7.getBlockSize()])));
45 byte[] var6 = var7.doFinal(var2);
46 Intrinsics.checkExpressionValueIsNotNull(var6, "cipher.doFinal(fileData)");
47 return var6;
48 }
49
50 private final SecretKey getVaultKey() {
51 byte[] var1 = Base64.decode("T3BlblRoZVZhdWx0Tm93IQ==", 0);
52 return (SecretKey)(new SecretKeySpec(var1, 0, var1.length, Base64.decode("QUVT", 0).toString()));
53 }
54
55 public final List getFlagsFromVault(Context var1) {
56 Intrinsics.checkParameterIsNotNull(var1, "context");
57 InputStream var10 = var1.getResources().openRawResource(var1.getResources().getIdentifier("data", "raw", var1.getPackageName()));
58 Intrinsics.checkExpressionValueIsNotNull(var10, "context.resources.openRa…w\", context.packageName))");
59 Reader var11 = (Reader)(new InputStreamReader((InputStream)(new GZIPInputStream((InputStream)(new ByteArrayInputStream(this.decrypt(this.getVaultKey(), ByteStreamsKt.readBytes(var10)))))), Charsets.UTF_8));
60 BufferedReader var12;
61 if (var11 instanceof BufferedReader) {
62 var12 = (BufferedReader)var11;
63 } else {
64 var12 = new BufferedReader(var11, 8192);
65 }
66
67 var11 = (Reader)var12;
68 if (var11 instanceof BufferedReader) {
69 var12 = (BufferedReader)var11;
70 } else {
71 var12 = new BufferedReader(var11, 8192);
72 }
73
74 Closeable var14 = (Closeable)var12;
75 Throwable var2 = (Throwable)null;
76
77 List var13;
78 try {
79 var13 = SequencesKt.toList(TextStreamsKt.lineSequence((BufferedReader)var14));
80 } catch (Throwable var9) {
81 Throwable var3 = var9;
82
83 try {
84 throw var3;
85 } finally {
86 CloseableKt.closeFinally(var14, var9);
87 }
88 }
89
90 CloseableKt.closeFinally(var14, var2);
91 return var13;
92 }
93}