QQ坦白说解密工具

GitHub链接:https://github.com/WarMj/tanbaishuo

  1. 参考下面教程获取密码文件。

https://tyjun.cn/qqtbsyl/

  1. 将得到的密码保存到桌面并命名为1.txt

    加密文件.png

  2. 运行程序后桌面会得到名为2.txt的解码文件。
    中间的就是QQ号,不能得到完整的QQ,但保证前几位无误,足够查出是谁了。

    解密文件.png

源码仅分享一种算法思路,若要使用源码,请自行修改文件路径。

源码

    package tanbaishuo;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /*
     * 解码表
     *  0 - "oe", "n", "z"
            1 - "oK", "6", "5"
            2 - "ow", "-", "A"
            3 - "oi", "o", "i"
            4 - "7e", "v", "P"
            5 - "7K", "4", "k"
            6 - "7w", "C", "s"
            7 - "7i", "S", "l"
            8 - "Ne", "c", "F"
            9 - "NK", "E", "q"
     */
    
    public class Main {
    
        private static ArrayList<String> result = new ArrayList<>();
    
        // 破解密码
        public static String returnPass(String str) {
            String regex = "(.)";
            String[] strs = new String[12];
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            for (int i = 0; i < 12; i++) {
                if (m.find()) {
                    strs[i] = m.group();
                }
            }
    
            String result = "";
            int count = 1;
            for (int i = 0; i < 12; i++) {
                if (count <= 4) {
                    if (count < 2) {
                        result += uncode(strs[i] + strs[i + 1]);
                        i++;
                        count++;
                    } else {
                        try {
                            result += uncode(strs[i]);
                        } catch (NullPointerException n) {
                        }
                    }
                } else {
                    count = 0;
                    i--;
                }
                count++;
            }
            return result;
        }
    
        // 密码本
        public static String uncode(String str) {
            switch (str) {
                case "oe":
                case "n":
                case "z":
                    return "0";
                case "oK":
                case "6":
                case "5":
                    return "1";
                case "ow":
                case "-":
                case "A":
                    return "2";
                case "oi":
                case "o":
                case "i":
                    return "3";
                case "7e":
                case "v":
                case "P":
                    return "4";
                case "7K":
                case "4":
                case "k":
                    return "5";
                case "7w":
                case "C":
                case "s":
                    return "6";
                case "7i":
                case "S":
                case "l":
                    return "7";
                case "Ne":
                case "c":
                case "F":
                    return "8";
                case "NK":
                case "E":
                case "q":
                    return "9";
                default:
                    return "-1";
            }
        }
    
        // 读取文件
        public static void readTxtFile(String filePath) {
            try {
                String encoding = "GBK";
                File file = new File(filePath);
                if (file.isFile() && file.exists()) {
                    InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
                    BufferedReader bufferedReader = new BufferedReader(read);
                    String lineTxt = null;
                    while ((lineTxt = bufferedReader.readLine()) != null) {
                        // 将文本切割成段
                        strSplit(lineTxt);
                    }
                    read.close();
                } else {
                    System.out.println("找不到指定的文件");
                }
            } catch (Exception e) {
                System.out.println("读取文件内容出错");
                e.printStackTrace();
            }
        }
    
        // 输出文件
        public static void writeTxtFile(String string) throws Exception {
            File file = new File("C:\\Users\\WarMj\\Desktop\\2.txt");
            FileWriter fw;
            try {
                fw = new FileWriter(file);
                fw.write(string);
                fw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 将整段切开
        private static void strSplit(String str) {
            String[] strs = str.split("\\},\\{");
            for (String s : strs) {
                returnResult(s);
            }
        }
    
        // 将结果保存到result中
        public static void returnResult(String str) {
            String regex = "\"fromNick\":\"([^\"]+)\".*fromEncodeUin\":" + "\"\\*S1\\*([^\"]+)\".*topicName\":\"([^\"]+)\"";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            while (m.find()) {
                result.add(m.group(1) + " " + returnPass(m.group(2)) + " " + m.group(3));
            }
        }
    
        public static void main(String argv[]) {
            String inputfilePath = "C:\\Users\\WarMj\\Desktop\\1.txt";
            readTxtFile(inputfilePath);
    
            String write = "";
            try {
                for (int i = 0; i < result.size(); i++) {
                    write += result.get(i) + "\n";
                }
                System.out.println(write);
                writeTxtFile(write);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容