This article is a mirror article of machine translation, please click here to jump to the original article.

View: 436|Reply: 1

[Reverse Engineering] The server of a certain number and a certain currency notifies to obtain the QR code

[Copy link]
Posted on 2025-10-29 10:42:15 | | | |



The server notifies you to decrypt the QR code ----ea.getQrCode----ja.getQrCode
Base64 decoded 166666666666666666666666666666666666666666666666666666666666666666:
Base64 decoded 1: bankName
Base64 after decoding 1: useVpn
Base64 after decoding 1: vpnInfo
Base64 decoding 1: walletName
Base64 decoded 1: matchWalletName
Base64 decoded after 1: walletNo
Base64 decoded 1: walletNoPosition
Base64 decoded 1: walletList
Base64 decoded 1: walletNameList
Base64 decoded after 1: otherJson
Base64 after decoding 1: useVpn
Base64 after decoding 1: vpnInfo
Base64 decoding after 1: type
Base64 decoding after 1: tradeNo
Base64 decoded 1: bankName
Base64 after decoding 1: money
Base64 decoding 1: walletName
Base64 decoded 1: matchWalletName
Base64 decoded after 1: walletNo
Base64 decoded 1: walletNoPosition
Base64 decoded 1: walletList
Base64 decoded 1: walletNameList
Base64 after decoding1: com.qpay.dcep.qrcode.rec
After Base64 decoding 1: Digital assistant does not start, cannot generate :
After Base64 decoding 1: The current digital assistant is not started and the gateway cannot be generated
Base64 after decoding 1: useVpn
Base64 decoding 1:1
Base64 decoding 1:0
Base64 after decoding 1: waitVpnSuc
Base64 decoding after 1: none
Base64 after decoding 1: vpnInfo
Base64 decoding after 1: tradeNo
Base64 decoded 1: bankName
Base64 after decoding 1: bankNamePy
Base64 after decoding 1: bankNamePy
Base64 after decoding 1: money
Base64 decoded after 1: walletNo
Base64 decoding 1: walletName
Base64 decoded 1: matchWalletName
Base64 after decoding 1: queueTime
Base64 decoded 1: accountMoney
Base64 post-decoding 1: reTryNum
Base64 decoding 1:0
Base64 decoded after 1: otherJson
Base64 decoded after 1: hiFiWaitQueueBank orderNo:
Base64 post-decoding 1: Current queue task number:
Base64 decoded 166666666666666666666666666666666666666666666666666666666666666666:
function after encrypting the string
public void getQrCode(int i2, int i3, String str, String str2, BigDecimal bigDecimal, String str3) {
        if (!isAccountRunning() || this.b == null) {
            return;
        }
        try {
            JSONObject object = com.alibaba.fastjson.a.parseObject(str3);
            String string = object.getString(p3. OooOOoo0oo(new byte[]{4, 89, 11, 92, 123, 87, 11, 93}, "f8e756"));
            if (string != null && !string.equals("")) {
                boolean zBooleanValue = object.getBoolean(p3. OooOOoo0oo(new byte[]{71, 68, 92, 96, 65, 87}, "279619")).booleanValue();
                JSONObject jSONObject = object.getJSONObject(p3. OooOOoo0oo(new byte[]{70, 21, 11, 124, 93, 94, 95}, "0ee538"));
                String string2 = object.getString(p3. OooOOoo0oo(new byte[]{18, 84, 10, 90, 93, 22, 43, 84, 11, 83}, "e5f68b"));
                String string3 = object.getString(p3. OooOOoo0oo(new byte[]{93, 87, 66, 84, 90, 49, 81, 90, 90, 82, 70, 40, 81, 91, 83}, "06672f"));
                String string4 = object.getString(p3. OooOOoo0oo(new byte[]{22, 3, 9, 92, 83, 69, 47, 13}, "abe061"));
                String string5 = object.getString(p3. OooOOoo0oo(new byte[]{79, 0, 8, 13, 81, 71, 118, 14, 52, 14, 71, 90, 76, 8, 11, 15}, "8ada43"));
                String string6 = object.getString(p3. OooOOoo0oo(new byte[]{70, 82, 95, 10, 0, 23, 125, 90, 64, 18}, "133fec"));
                String string7 = object.getString(p3. OooOOoo0oo(new byte[]{21, 4, 84, 95, 83, 21, 44, 4, 85, 86, 122, 8, 17, 17}, "be836a"));
                String string8 = object.getString(p3. OooOOoo0oo(new byte[]{86, 16, 81, 1, 69, 115, 74, 11, 87}, "9d9d79"));
                if (com.qpay.wallet.common.a.runDcepAutoJs) {
                    Intent intent = new Intent();
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{19, 23, 80, 48, 66, 93}, "fd5f23"), zBooleanValue);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{69, 22, 15, 122, 90, 83, 92}, "3fa345"), com.alibaba.fastjson.a.toJSONString(jSONObject));
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{65, 77, 19, 85}, "54c0ec"), 1);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{23, 16, 82, 93, 3, 124, 12}, "cb39f2"), str);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{3, 86, 90, 9, 47, 80, 12, 82}, "a74ba1"), string);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{92, 91, 11, 81, 31}, "14e4f0"), bigDecimal.toString());
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{19, 4, 89, 91, 86, 65, 42, 4, 88, 82}, "de5735"), string2);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{12, 82, 18, 84, 89, 51, 0, 95, 10, 82, 69, 42, 0, 94, 3}, "a3f71d"), string3);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{20, 83, 88, 10, 6, 18, 45, 93}, "c24fcf"), string4);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{19, 86, 13, 95, 87, 69, 42, 88, 49, 92, 65, 88, 16, 94, 14, 93}, "d7a321"), string5);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{64, 3, 85, 84, 82, 69, 123, 11, 74, 76}, "7b9871"), string6);
                    intent.putExtra(p3. OooOOoo0oo(new byte[]{65, 82, 10, 13, 86, 66, 120, 82, 11, 4, 127, 95, 69, 71}, "63fa36"), string7);
                    intent.setAction(p3. OooOOoo0oo(new byte[]{90, 93, 91, 24, 67, 67, 88, 75, 24, 82, 81, 86, 73, 28, 71, 68, 81, 92, 93, 87, 24, 68, 87, 80}, "926623"));
                    AppApplication.getContext().sendBroadcast(intent);
                    return;
                }
                if (!this.o) {
                    com.qpay.wallet.utils.e.sendAppConsoleMsg2(p3. OooOOoo0oo(new byte[]{-125, -83, -44, -44, -50, -13, -128, -78, -51, -41, -22, -17, -125, -92, -50, -44, -13, -53, -128, -78, -52, -34, -33, -24, -125, -81, -60, -41, -48, -15, -126, -84, -5, -41, -21, - 12, 69, 2, 68}, "e8d1cd") + str);
                    hf.showShort(p3. OooOOoo0oo(new byte[]{-45, -124, -11, -36, -19, -21, -48, -84, -42, -36, -55, -15, -45, -77, -49, -33, -19, -19, -48, -91, -52, -36, -12, -55, -45, -77, -50, -42, -40, -22, -48, -82, -58, -33, -41, -13, - 47, -83, -7, -33, -20, -10, -47, -124, -9, -36, -31, -43}, "69f9df"));
                    return;
                }
                long jCurrentTimeMillis = System.currentTimeMillis();
                HashMap<String, String> map = new HashMap<>();
                map.put(p3. OooOOoo0oo(new byte[]{67, 74, 83, 111, 65, 10}, "69691d"), zBooleanValue ? p3. OooOOoo0oo(new byte[]{85}, "db6310") : p3. OooOOoo0oo(new byte[]{82}, "b5c0f5"));
                map.put(p3. OooOOoo0oo(new byte[]{78, 2, 8, 68, 97, 18, 87, 48, 20, 83}, "9ca07b"), p3. OooOOoo0oo(new byte[]{93, 10, 91, 80}, "3e553c"));
                map.put(p3. OooOOoo0oo(new byte[]{23, 17, 8, 44, 8, 84, 14}, "aafef2"), com.alibaba.fastjson.a.toJSONString(jSONObject));
                map.put(p3. OooOOoo0oo(new byte[]{17, 68, 80, 2, 86, 42, 10}, "e61f3d"), str);
                map.put(p3. OooOOoo0oo(new byte[]{1, 80, 11, 15, 120, 5, 14, 84}, "c1ed6d"), string);
                map.put(p3. OooOOoo0oo(new byte[]{85, 0, 89, 95, 124, 2, 90, 4, 103, 77}, "7a742c"), object.getString(p3. OooOOoo0oo(new byte[]{90, 87, 86, 14, 44, 0, 85, 83, 104, 28}, "868eba")));
                map.put(p3. OooOOoo0oo(new byte[]{91, 94, 10, 84, 73}, "61d108"), bigDecimal.toString());
                map.put(p3. OooOOoo0oo(new byte[]{68, 2, 85, 89, 80, 70, 125, 12}, "3c9552"), string4);
                map.put(p3. OooOOoo0oo(new byte[]{65, 7, 92, 84, 7, 16, 120, 7, 93, 93}, "6f08bd"), string2);
                map.put(p3. OooOOoo0oo(new byte[]{85, 0, 68, 1, 88, 97, 89, 13, 92, 7, 68, 120, 89, 12, 85}, "8a0b06"), string3);
                map.put(p3. OooOOoo0oo(new byte[]{68, 19, 82, 64, 84, 99, 92, 11, 82}, "5f7517"), jCurrentTimeMillis + "");
                map.put(p3. OooOOoo0oo(new byte[]{85, 85, 80, 14, 66, 90, 64, 123, 92, 15, 82, 77}, "463a74"), "");
                map.put(p3. OooOOoo0oo(new byte[]{20, 93, 48, 65, 72, 123, 19, 85}, "f8d315"), p3. OooOOoo0oo(new byte[]{86}, "f9a40e"));
                map.put(p3. OooOOoo0oo(new byte[]{87, 17, 95, 0, 64, 43, 75, 10, 89}, "8e7e2a"), string8);
                String str4 = i;
                com.qpay.wallet.utils.i.d(str4, p3. OooOOoo0oo(new byte[]{92, 93, 34, 91, 54, 2, 93, 64, 53, 71, 4, 22, 81, 118, 5, 92, 10, 67, 91, 70, 0, 87, 19, 45, 91, 14}, "44d2ac") + str);
                this.p.push(map);
                com.qpay.wallet.utils.e.sendAppConsoleMsg2(p3. OooOOoo0oo(new byte[]{-35, -119, -93, -43, -20, -23, -47, -84, -81, -43, -19, -13, -36, -113, -117, -43, -17, -59, -34, -95, -128, -39, -30, -21, 2}, "8400ed") + this.p.size());
                com.qpay.wallet.utils.i.d(str4, p3. OooOOoo0oo(new byte[]{-35, -36, -85, -45, -69, -17, -47, -7, -89, -45, -70, -11, -35, -42, -118, -48, -82, -21, -36, -38, -125, -45, -72, -61, -34, -12, -120, -33, -75, -19, 2}, "8a862b") + this.p.size());
                checkQueueOrder();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
Decryption function
public static String OooOOoo0oo(byte[] bArr, String str) {
        int length = bArr.length;
        int length2 = str.length();
        for (int i = 0; i < length; i++) {
            bArr= (byte) (bArr^ str.charAt(i % length2));
        }
        return new String(bArr);
    }
The full function after decrypting the string
public void getQrCode(int i2, int i3, String str, String str2, BigDecimal bigDecimal, String str3) {
    if (!isAccountRunning() || this.b == null) {
        return;
    }
    try {
        JSONObject object = com.alibaba.fastjson.a.parseObject(str3);
        String string = object.getString("bankName");
        if (string != null && !string.equals("")) {
            boolean zBooleanValue = object.getBoolean("useVpn").booleanValue();
            JSONObject jSONObject = object.getJSONObject("vpnInfo");
            String string2 = object.getString("walletName");
            String string3 = object.getString("matchWalletName");
            String string4 = object.getString("walletNo");
            String string5 = object.getString("walletNoPosition");
            String string6 = object.getString("walletList");
            String string7 = object.getString("walletNameList");
            String string8 = object.getString("otherJson");
            if (com.qpay.wallet.common.a.runDcepAutoJs) {
                Intent intent = new Intent();
                intent.putExtra("useVpn", zBooleanValue);
                intent.putExtra("vpnInfo", com.alibaba.fastjson.a.toJSONString(jSONObject));
                intent.putExtra("type", 1);
                intent.putExtra("tradeNo", str);
                intent.putExtra("bankName", string);
                intent.putExtra("money", bigDecimal.toString());
                intent.putExtra("walletName", string2);
                intent.putExtra("matchWalletName", string3);
                intent.putExtra("walletNo", string4);
                intent.putExtra("walletNoPosition", string5);
                intent.putExtra("walletList", string6);
                intent.putExtra("walletNameList", string7);
                intent.setAction("com.qpay.dcep.qrcode.rec");
                AppApplication.getContext().sendBroadcast(intent);
                return;
            }
            if (!this.o) {
                com.qpay.wallet.utils.e.sendAppConsoleMsg2("Digital assistant not started, cannot be generated: " + str);
                hf.showShort("The current digital assistant is not up and cannot generate a gateway");
                return;
            }
            long jCurrentTimeMillis = System.currentTimeMillis();
            HashMap<String, String> map = new HashMap<>();
            map.put("useVpn", zBooleanValue ? "1" : "0");
            map.put("waitVpnSuc", "none");
            map.put("vpnInfo", com.alibaba.fastjson.a.toJSONString(jSONObject));
            map.put("tradeNo", str);
            map.put("bankName", string);
            map.put("bankNamePy", object.getString("bankNamePy"));
            map.put("money", bigDecimal.toString());
            map.put("walletNo", string4);
            map.put("walletName", string2);
            map.put("matchWalletName", string3);
            map.put("queueTime", jCurrentTimeMillis + "");
            map.put("accountMoney", "");
            map.put("reTryNum", "0");
            map.put("otherJson", string8);
            String str4 = i;
            com.qpay.wallet.utils.i.d(str4, "hiFiWaitQueueBank orderNo:" + str);
            this.p.push(map);
            com.qpay.wallet.utils.e.sendAppConsoleMsg2("Current Queue Task Quantity:" + this.p.size());
            com.qpay.wallet.utils.i.d(str4, "Current Queue Task Quantity:" + this.p.size());
            checkQueueOrder();
        }
    } catch (Exception e2) {
        e2.printStackTrace();
    }
}
Run functions that can decrypt strings after being extracted independently within idea
package org.example;
import java.nio.charset.StandardCharsets;
public class Main {
    public static void main(String[] args) {
//
//        String aa=OooOOoo0oo(new byte[]{-43, -84, -17, -48, -18, -61, -44, -101, -51, -36, -28, -8, -44, -81, -57, -35, -22, -43, -42, -65, -12, -47, -34, -18, -44, -117, -42, -46, -60, -29, -36, -116, -8, 65, 22, 3, 87, 85, 44, 90, 89}, "30b5db")+OooOOoo0oo(new byte[]{69, 73, 16, 92, 8, 3, 23, 14, 95}, "eeb9eb") + OooOOoo0oo(new byte[]{25, 74, 88, 13, 13, 3, 64, 91}, "9f5bcf") + OooOOoo0oo(new byte[] {66, 79, 22, 28, 70, 83, 95}, "bcbe66");
System.out.println("Base64 decoded after 1: " + aa);
//        String bb=OooOOoo0oo(new byte[]{7, 6, 87, 91, 66, 13, 18, 49, 77, 68, 82, 67, 91, 69}, "fe447c");
//
System.out.println("Base64 decoded after 2: "+bb);
//        String cc=OooOOoo0oo(new byte[]{4, 64, 21, 122, 92, 2, 14, 24, 92, 19}, "a8a32d");
System.out.println("Base64 after decoding 3: "+cc);
//
//        String qq= OooOOoo0oo(new byte[]{44, 94, 85, 90, 101, 15, 4, 70, 117, 90, 87, 3, 13, 17, 95, 80, 71, 55, 19, 114, 87, 81, 86}, "a1853f");
System.out.println("Base64 after decoding 3: " + qq);
//        String  b=  OooOOoo0oo(new byte[]{18, 17, 3, 0, 7, 120, 9}, "fcbdb6");
System.out.println("Base64 decoded after 3: " + b);
//        String  l= OooOOoo0oo(new byte[]{14, 64, 85, 4, 19, 120, 5}, "a21aa1");
System.out.println("Base64 after decoding 3: "+l);
//        String i=  OooOOoo0oo(new byte[]{9, 87, 12, 6, 28}, "d8bced");
System.out.println("Base64 after decoding 3: "+i);
//        String y=  OooOOoo0oo(new byte[]{125, 107, 107, 126, 96, 20, 5, 25}, "899124");
System.out.println("Base64 decoded after 3: " + y);
        System.out.println("Base64 decoded 166666666666666666666666666666666666666666666666666666666666666666: ");
        String string11 = OooOOoo0oo(new byte[]{4, 89, 11, 92, 123, 87, 11, 93}, "f8e756");
        System.out.println("Base64 decoded after 1:"+string11);
        String string111 =   OooOOoo0oo(new byte[]{71, 68, 92, 96, 65, 87}, "279619");
        System.out.println("Base64 decoded after 1: " + string111);
        String string1111 =   OooOOoo0oo(new byte[]{70, 21, 11, 124, 93, 94, 95}, "0ee538");
        System.out.println("Base64 after decoding 1:" + string1111);
            String string2 = OooOOoo0oo(new byte[]{18, 84, 10, 90, 93, 22, 43, 84, 11, 83}, "e5f68b");
        System.out.println("Base64 decoded after 1: " + string2);
            String string3 = OooOOoo0oo(new byte[]{93, 87, 66, 84, 90, 49, 81, 90, 90, 82, 70, 40, 81, 91, 83}, "06672f");
        System.out.println("Base64 decoded after 1:" + string3);
            String string4 = OooOOoo0oo(new byte[]{22, 3, 9, 92, 83, 69, 47, 13}, "abe061");
        System.out.println("Base64 decoded after 1: "+string4);
            String string5 = OooOOoo0oo(new byte[]{79, 0, 8, 13, 81, 71, 118, 14, 52, 14, 71, 90, 76, 8, 11, 15}, "8ada43");
        System.out.println("Base64 decoded after 1: " + string5);
            String string6 = OooOOoo0oo(new byte[]{70, 82, 95, 10, 0, 23, 125, 90, 64, 18}, "133fec");
        System.out.println("Base64 decoded after 1:"+string6);
            String string7 = OooOOoo0oo(new byte[]{21, 4, 84, 95, 83, 21, 44, 4, 85, 86, 122, 8, 17, 17}, "be836a");
        System.out.println("Base64 decoded after 1:" + string7);
            String string8 =OooOOoo0oo(new byte[]{86, 16, 81, 1, 69, 115, 74, 11, 87}, "9d9d79");
        System.out.println("Base64 after decoding 1: " + string8);
        String string22 =     OooOOoo0oo(new byte[]{19, 23, 80, 48, 66, 93}, "fd5f23");
        System.out.println("Base64 decoded after 1: " + string22);
        String string2222 =      OooOOoo0oo(new byte[]{69, 22, 15, 122, 90, 83, 92}, "3fa345");
        System.out.println("Base64 decoded after 1:"+string2222);
        String string =       OooOOoo0oo(new byte[]{65, 77, 19, 85}, "54c0ec");
        System.out.println("Base64 decoded after 1: "+string);
        String string333 =      OooOOoo0oo(new byte[]{23, 16, 82, 93, 3, 124, 12}, "cb39f2");
        System.out.println("Base64 decoded after 1:"+string333);
        String string33333 =     OooOOoo0oo(new byte[]{3, 86, 90, 9, 47, 80, 12, 82}, "a74ba1");
        System.out.println("Base64 decoded post-1: "+string33333);
        String string32 =     OooOOoo0oo(new byte[]{92, 91, 11, 81, 31}, "14e4f0");
        System.out.println("Base64 after decoding 1: " + string32);
        String string23 =     OooOOoo0oo(new byte[]{19, 4, 89, 91, 86, 65, 42, 4, 88, 82}, "de5735");
        System.out.println("Base64 decoded after 1:" + string23);
        String string123 =     OooOOoo0oo(new byte[]{12, 82, 18, 84, 89, 51, 0, 95, 10, 82, 69, 42, 0, 94, 3}, "a3f71d");
        System.out.println("Base64 decoded after 1:"+string123);
        String string13 =      OooOOoo0oo(new byte[]{20, 83, 88, 10, 6, 18, 45, 93}, "c24fcf");
        System.out.println("Base64 after decoding 1:"+string13);
        String string15 =      OooOOoo0oo(new byte[]{19, 86, 13, 95, 87, 69, 42, 88, 49, 92, 65, 88, 16, 94, 14, 93}, "d7a321");
        System.out.println("Base64 after decoding 1: " + string15);
        String string17 =     OooOOoo0oo(new byte[]{64, 3, 85, 84, 82, 69, 123, 11, 74, 76}, "7b9871");
        System.out.println("Base64 decoded post-1:" + string17);
        String string156 =     OooOOoo0oo(new byte[]{65, 82, 10, 13, 86, 66, 120, 82, 11, 4, 127, 95, 69, 71}, "63fa36");
        System.out.println("Base64 after decoding 1: "+string156);
        String string18 =      OooOOoo0oo(new byte[]{90, 93, 91, 24, 67, 67, 88, 75, 24, 82, 81, 86, 73, 28, 71, 68, 81, 92, 93, 87, 24, 68, 87, 80}, "926623");
        System.out.println("Base64 decoded after 1:" + string18);
        String string9 =   OooOOoo0oo(new byte[]{-125, -83, -44, -44, -50, -13, -128, -78, -51, -41, -22, -17, -125, -92, -50, -44, -13, -53, -128, -78, -52, -34, -33, -24, -125, -81, -60, -41, -48, -15, -126, -84, -5, -41, -21, -12, 69, 2, 68}, "e8d1cd");
        System.out.println("Base64 decoded after 1:" + string9);
        String string99=   OooOOoo0oo(new byte[]{-45, -124, -11, -36, -19, -21, -48, -84, -42, -36, -55, -15, -45, -77, -49, -33, -19, -19, -48, -91, -52, -36, -12, -55, -45, -77, -50, -42, -40, -22, -48, -82, -58, -33, -41, -13, -47, -83, -7, -33, -20, -10, -47, -124, -9, -36, -31, -43}, "69f9df");
        System.out.println("Base64 after decoding 1:"+string99);
        String string98 =   OooOOoo0oo(new byte[]{67, 74, 83, 111, 65, 10}, "69691d");
        System.out.println("Base64 decoded after 1:" + string98);
        String string87 =   OooOOoo0oo(new byte[]{85}, "db6310");
        System.out.println("Base64 after decoding 1: "+string87);
        String string67 =   OooOOoo0oo(new byte[]{82}, "b5c0f5");
        System.out.println("Base64 decoded after 1: "+string67);
        String string65 =     OooOOoo0oo(new byte[]{78, 2, 8, 68, 97, 18, 87, 48, 20, 83}, "9ca07b");
        System.out.println("Base64 after decoding 1: "+string65);
        String string56 =    OooOOoo0oo(new byte[]{93, 10, 91, 80}, "3e553c");
        System.out.println("Base64 decoded after 1: "+string56);
        String string57 =    OooOOoo0oo(new byte[]{23, 17, 8, 44, 8, 84, 14}, "aafef2");
        System.out.println("Base64 decoded after 1: "+string57);
        String string871 =    OooOOoo0oo(new byte[]{17, 68, 80, 2, 86, 42, 10}, "e61f3d");
        System.out.println("Base64 decoded after 1: " + string871);
        String string872 =    OooOOoo0oo(new byte[]{1, 80, 11, 15, 120, 5, 14, 84}, "c1ed6d");
        System.out.println("Base64 after decoding 1:"+string872);
        String string78 =    OooOOoo0oo(new byte[]{85, 0, 89, 95, 124, 2, 90, 4, 103, 77}, "7a742c");
        System.out.println("Base64 after decoding 1: "+string78);
        String string556 =    OooOOoo0oo(new byte[]{90, 87, 86, 14, 44, 0, 85, 83, 104, 28}, "868eba");
        System.out.println("Base64 decoded after 1: "+string556);
        String string787 =    OooOOoo0oo(new byte[]{91, 94, 10, 84, 73}, "61d108");
        System.out.println("Base64 decoded after 1:" + string787);
        String string8987 =    OooOOoo0oo(new byte[]{68, 2, 85, 89, 80, 70, 125, 12}, "3c9552");
        System.out.println("Base64 decoded after 1:" + string8987);
        String string67688 =    OooOOoo0oo(new byte[]{65, 7, 92, 84, 7, 16, 120, 7, 93, 93}, "6f08bd");
        System.out.println("Base64 decoded after 1: "+string67688);
        String string667 =   OooOOoo0oo(new byte[]{85, 0, 68, 1, 88, 97, 89, 13, 92, 7, 68, 120, 89, 12, 85}, "8a0b06");
        System.out.println("Base64 decoded after 1:"+string667);
        String string557 =    OooOOoo0oo(new byte[]{68, 19, 82, 64, 84, 99, 92, 11, 82}, "5f7517");
        System.out.println("Base64 decoded after 1:" + string557);
        String string5567 =   OooOOoo0oo(new byte[]{85, 85, 80, 14, 66, 90, 64, 123, 92, 15, 82, 77}, "463a74");
        System.out.println("Base64 decoded after 1:" + string5567);
        String string9878 =    OooOOoo0oo(new byte[]{20, 93, 48, 65, 72, 123, 19, 85}, "f8d315");
        System.out.println("Base64 decoded after 1: "+string9878);
        String string987899 =  OooOOoo0oo(new byte[]{86}, "f9a40e");
        System.out.println("Base64 decoded after 1: "+string987899);
        String string098 =   OooOOoo0oo(new byte[]{87, 17, 95, 0, 64, 43, 75, 10, 89}, "8e7e2a");
        System.out.println("Base64 decoded 1:"+string098);
        String string655 =   OooOOoo0oo(new byte[]{92, 93, 34, 91, 54, 2, 93, 64, 53, 71, 4, 22, 81, 118, 5, 92, 10, 67, 91, 70, 0, 87, 19, 45, 91, 14}, "44d2ac");
        System.out.println("Base64 after decoding 1: "+string655);
        String string88776 =   OooOOoo0oo(new byte[]{-35, -119, -93, -43, -20, -23, -47, -84, -81, -43, -19, -13, -36, -113, -117, -43, -17, -59, -34, -95, -128, -39, -30, -21, 2}, "8400ed");
        System.out.println("Base64 decoded after 1:" + string88776);
        String string55444 =   OooOOoo0oo(new byte[]{-35, -36, -85, -45, -69, -17, -47, -7, -89, -45, -70, -11, -35, -42, -118, -48, -82, -21, -36, -38, -125, -45, -72, -61, -34, -12, -120, -33, -75, -19, 2}, "8a862b");
        System.out.println("Base64 decoded 166666666666666666666666666666666666666666666666666666666666666666: ");
        System.out.println("Base64 decoded 12222222222222222222: " + OooOOoo0oo(new byte[]{16, 31, 65, 64, 80, 8}, "cf245e"));
// Example byte array
//        byte[] byteArray =new byte[]{68, 14, 57, 4, 2, 15, 91, 62, 7, 5, 0, 14, 69, 15, 18, 47, 7};
//
// Method 1: Use the String constructor (recommended, specify the encoding)
//
System.out.println("Base64 after decoding: " + OooOOoo0oo(byteArray, "0affca"));
//        String string5544466 =  OooOOoo0oo(new byte[]{7, 5, 5}, "65584f");
System.out.println("Base64 decoded after 1:"+string5544466);
//        String string55444661 =    OooOOoo0oo(new byte[]{14, 68, 86, 90, 57, 76, 24, 68, 86}, "a434f8");
System.out.println("Base64 decoded after 1:"+string55444661);
//        String string5544477 =   OooOOoo0oo(new byte[]{86, 67, 86, 91, 57, 77, 64, 67, 86}, "9335f9");
System.out.println("Base64 decoded after 1:"+string5544477);
//        String string554448 =     OooOOoo0oo(new byte[]{68, 14, 57, 4, 2, 15, 91, 62, 7, 5, 0, 14, 69, 15, 18, 47, 7}, "0affca");
System.out.println("Base64 decoded after 1: "+string554448);
//        String string554449 =      OooOOoo0oo(new byte[]{17, 92, 106, 82, 88, 15, 14, 108, 84, 83, 90, 14, 16, 93, 65, 121, 93}, "e3509a");
System.out.println("Base64 after decoding 1: "+string554449);
//        String string554440 =  OooOOoo0oo(new byte[]{69, 17, 83, 105, 2, 90, 83, 4}, "7a06a5");
System.out.println("Base64 decoded after 1: "+string554440);
//        String string55444777 =  OooOOoo0oo(new byte[]{65, 67, 2, 106, 83, 4, 71, 82}, "33a57e");
System.out.println("Base64 decoded post-1:"+string55444777);
//
//        String string5544477777 =     OooOOoo0oo(new byte[]{87, 66, 83, 7, 23, 105, 81, 84}, "807be6");
System.out.println("Base64 decoded after 1:"+string5544477777);
//        String string55444090 =  OooOOoo0oo(new byte[]{87, 9, 86, 87}, "4f2207");
System.out.println("Base64 decoded after 1: "+string55444090);
//        String string55444778 =  OooOOoo0oo(new byte[]{2, 14, 92, 81, 108, 16, 24, 17, 93}, "aa843d");
//        String ere=OooOOoo0oo(new byte[]{-35, -119, -93, -43, -20, -23, -47, -84, -81, -43, -19, -13, -36, -113, -117, -43, -17, -59, -34, -95, -128, -39, -30, -21, 2}, "8400ed");
System.out.println("Base64 after decoding 1: 1111111111111111111" + ere);
    }
    public static String OooOOoo0oo(byte[] bArr, String str) {
        int length = bArr.length;
        int length2 = str.length();
        for (int i = 0; i < length; i++) {
            bArr= (byte) (bArr^ str.charAt(i % length2));
        }
        return new String(bArr);
    }
}
The ja.getQrCode analysis
The core logic of this function revolves around "parameter processing and task distribution related to QR code generation", in which the key functions and core functions are analyzed as follows:
isAccountRunning() - the pre-checking kernel
Function: Determining whether the current account is in a running state is the "switch" for the execution of the entire function.
Key reason: If the account is not running (returning false), the function will return directly, and all subsequent logic (parameter parsing, broadcast sending, queue processing, etc.) will not be executed. It is the basis for ensuring that the function only runs in a legitimate state.
com.alibaba.fastjson.a.parseObject(str3) - Data parsing core
Function: Parse the parameter str3 (JSON format string) into a JSONObject object and extract all business parameters (such as bankName, useVpn, walletName, etc.).
Key reason: All subsequent business logic (such as determining whether the bank name is valid, obtaining VPN status, wallet information, etc.) depends on the results of this analysis. If the parsing fails (such as str3 formatting is wrong), it will go directly to the catch block and interrupt the process.
AppApplication.getContext().sendBroadcast(intent) - The real-time task distribution core
Function: When runDcepAutoJs is true, send the parsed parameters (bank name, amount, wallet information, etc.) to the specified component (action is com.qpay.dcep.qrcode.rec) via broadcast.
Key reason: This is the "real-time processing branch" of the function, which directly triggers the response of external components to the QR code generation and is one of the direct executors of the core business logic.
this.p.push(map) - Queue task management core
Function: When the real-time processing conditions are not met (runDcepAutoJs is false and this.o is true), encapsulate the parameters as a HashMap and join the queue this.p.
Key reason: This is the "queue processing branch" of the function, which is responsible for staging tasks and waiting for subsequent processing (checkQueueOrder() to check the queue order), which is the core operation of asynchronous task scheduling.
checkQueueOrder() - Queue scheduling core
Function: Invoked after a task is added to the queue, speculated to check the order, priority, or trigger subsequent processing of tasks in the queue (such as executing tasks in the queue).
Key reason: It serves as a bridging point for queue tasks from "staging" to "executing," ensuring that the QR code generation tasks in the queue are handled as expected.
Summary: The most critical function
com.alibaba.fastjson.a.parseObject(str3) is the "data source" of the entire function, from which all business parameters come from.
AppApplication.getContext().sendBroadcast(intent) and this.p.push(map) are the core executors of branch logic, corresponding to two core business scenarios: real-time processing and queue processing, respectively.
Together, these three functions determine the function's core function: parsing parameters and distributing QR code generation tasks based on conditions.





Previous:A bank app turns on the monitoring service
Next:Charles Proxy is unable to crawl localhost, 127.0.0.1 native traffic
 Landlord| Posted on 2025-10-29 12:49:50 |

sa.onMessage accepts the data from the server and calls sa.goToListenMsg to get the QR code data

In the interface initialization oncreate, the webSocketInit is finally called, and the established socket connection is then sa.onMessage accepts the data call sent by the server sa.goToListenMsg to get the QR code data call
-ea.getQrCode----ja.getQrCode to the above decryption function, and then call checkQueueOrder and call doCheckBankVpnToStart
The above functions are yet to be confirmed by hook
Disclaimer:
All software, programming materials or articles published by Code Farmer Network are only for learning and research purposes; The above content shall not be used for commercial or illegal purposes, otherwise, users shall bear all consequences. The information on this site comes from the Internet, and copyright disputes have nothing to do with this site. You must completely delete the above content from your computer within 24 hours of downloading. If you like the program, please support genuine software, purchase registration, and get better genuine services. If there is any infringement, please contact us by email.

Mail To:help@itsvse.com