VideoHelp Forum



Support our site by donate $5 directly to us Thanks!!!

Try StreamFab Downloader and download streaming video from Netflix, Amazon!



+ Reply to Thread
Results 1 to 5 of 5
  1. hello, i want to know how to decrypt the subtitle also please tell me the steps because i have no idea about this thing, i am using windows.
    video link: https://kisskh.co/Drama/Friendly-Rivalry/Episode-3?id=10160&ep=174850&page=0&pageSize=100
    subtitle: https://sub.streamsub.top/Friendly-Rivalry.2025.Ep3.en.srt.txt1?v=092 (coded)
    Quote Quote  
  2. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Thank youuu!!
    How do you do it ? Theres others eps coming up too i wanna learn if you can explain
    Quote Quote  
  3. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    It's a bit ridiculous they did more to secure their subtitles than their video. Anyway, I'm 100% sure there's an easier way. If it's too complicated, just wait for an easier solution from other users. But until someone bothers to understand their code and convert it into python, I'll briefly present my way

    Use chrome. Identify the js file responsible for the srt by scrolling downwards.

    Image
    [Attachment 85429 - Click to enlarge]


    Click on it. You'll be redirected to the sources tab. Ctrl+f search txt1

    Image
    [Attachment 85430 - Click to enlarge]


    The code of interest should look like
    Code:
    switch (m) {
        case "txt":
            for (var r = 0; r < t.length; r++) {
                var s = t[r];
                try {
                    s.text = h.cryptoService.b1(s.text)
                } catch (i) {}
            }
            break;
        case "txt1":
            for (var l = 0; l < t.length; l++) {
                s = t[l];
                try {
                    s.text = h.cryptoService.b2(s.text)
                } catch (d) {}
            }
            break;
        default:
            for (var a = 0; a < t.length; a++) {
                s = t[a];
                try {
                    s.text = h.cryptoService.b3(s.text)
                } catch (d) {}
            }
    }
    h.FomateVtt()
    Change it to
    Code:
    var plaintexts = [];
    switch (m) {
        case "txt":
            for (var r = 0; r < t.length; r++) {
                var s = t[r];
                try {
                    s.text = h.cryptoService.b1(s.text)
                    plaintexts.push(s.text)
                } catch (i) {}
            }
            break;
        case "txt1":
            for (var l = 0; l < t.length; l++) {
                s = t[l];
                try {
                    s.text = h.cryptoService.b2(s.text)
                    plaintexts.push(s.text)
                } catch (d) {}
            }
            break;
        default:
            for (var a = 0; a < t.length; a++) {
                s = t[a];
                try {
                    s.text = h.cryptoService.b3(s.text)
                    plaintexts.push(s.text)
                } catch (d) {}
            }
    }
    console.log(plaintexts);
    h.FomateVtt()
    Make sure enable local override is checked. Ctrl+S to save and overwrite js code. Ctrl+shift+f5 to force refresh without cache and play the video. Choose the subtitle you want and in the console tab you'll see a list of decrypted dialogue lines. Right click copy object.

    Image
    [Attachment 85431 - Click to enlarge]


    Install python (including pip). Install pysrt using pip.
    Code:
    pip install pysrt
    Make an empty folder. Create the files (double check so they're the right extension)
    1. main.py
    2. input_decrypted.txt (in this file drop the copied object from the console decrypted)
    3. input_encrypted.srt (in this file drop the encrypted content from srt url like https://sub.streamsub.top/Friendly-Rivalry.2025.Ep3.ms.srt.txt1 )

    In main.py drop this script
    Code:
    import json
    
    import pysrt
    
    INPUT_ENC = "input_encrypted.srt"
    INPUT_DEC = "input_decrypted.txt"
    OUTPUT_DEC = "output.srt"
    
    
    def replace_srt_dialogues(subs, text_list, output_file):
        if len(subs) != len(text_list):
            raise ValueError("Mismatch: The number of subtitles and text entries must be the same!")
    
        for i, sub in enumerate(subs):
            sub.text = text_list[i]
        subs.save(output_file, encoding='utf-8')
    
    
    if __name__ == '__main__':
        with open(INPUT_DEC, "r") as file:
            data_dec = json.loads(file.read().strip())
        data_enc = pysrt.open(INPUT_ENC)
        replace_srt_dialogues(data_enc, data_dec, OUTPUT_DEC)
    Then open cmd in that folder and run
    Code:
    python main.py
    You'll see the proper subtitle in output.srt
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  4. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    It's a bit ridiculous they did more to secure their subtitles than their video. Anyway, I'm 100% sure there's an easier way. If it's too complicated, just wait for an easier solution from other users. But until someone bothers to understand their code and convert it into python, I'll briefly present my way

    Use chrome. Identify the js file responsible for the srt by scrolling downwards.

    Image
    [Attachment 85429 - Click to enlarge]


    Click on it. You'll be redirected to the sources tab. Ctrl+f search txt1

    Image
    [Attachment 85430 - Click to enlarge]


    The code of interest should look like
    Code:
    switch (m) {
        case "txt":
            for (var r = 0; r < t.length; r++) {
                var s = t[r];
                try {
                    s.text = h.cryptoService.b1(s.text)
                } catch (i) {}
            }
            break;
        case "txt1":
            for (var l = 0; l < t.length; l++) {
                s = t[l];
                try {
                    s.text = h.cryptoService.b2(s.text)
                } catch (d) {}
            }
            break;
        default:
            for (var a = 0; a < t.length; a++) {
                s = t[a];
                try {
                    s.text = h.cryptoService.b3(s.text)
                } catch (d) {}
            }
    }
    h.FomateVtt()
    Change it to
    Code:
    var plaintexts = [];
    switch (m) {
        case "txt":
            for (var r = 0; r < t.length; r++) {
                var s = t[r];
                try {
                    s.text = h.cryptoService.b1(s.text)
                    plaintexts.push(s.text)
                } catch (i) {}
            }
            break;
        case "txt1":
            for (var l = 0; l < t.length; l++) {
                s = t[l];
                try {
                    s.text = h.cryptoService.b2(s.text)
                    plaintexts.push(s.text)
                } catch (d) {}
            }
            break;
        default:
            for (var a = 0; a < t.length; a++) {
                s = t[a];
                try {
                    s.text = h.cryptoService.b3(s.text)
                    plaintexts.push(s.text)
                } catch (d) {}
            }
    }
    console.log(plaintexts);
    h.FomateVtt()
    Make sure enable local override is checked. Ctrl+S to save and overwrite js code. Ctrl+shift+f5 to force refresh without cache and play the video. Choose the subtitle you want and in the console tab you'll see a list of decrypted dialogue lines. Right click copy object.

    Image
    [Attachment 85431 - Click to enlarge]


    Install python (including pip). Install pysrt using pip.
    Code:
    pip install pysrt
    Make an empty folder. Create the files (double check so they're the right extension)
    1. main.py
    2. input_decrypted.txt (in this file drop the copied object from the console decrypted)
    3. input_encrypted.srt (in this file drop the encrypted content from srt url like https://sub.streamsub.top/Friendly-Rivalry.2025.Ep3.ms.srt.txt1 )

    In main.py drop this script
    Code:
    import json
    
    import pysrt
    
    INPUT_ENC = "input_encrypted.srt"
    INPUT_DEC = "input_decrypted.txt"
    OUTPUT_DEC = "output.srt"
    
    
    def replace_srt_dialogues(subs, text_list, output_file):
        if len(subs) != len(text_list):
            raise ValueError("Mismatch: The number of subtitles and text entries must be the same!")
    
        for i, sub in enumerate(subs):
            sub.text = text_list[i]
        subs.save(output_file, encoding='utf-8')
    
    
    if __name__ == '__main__':
        with open(INPUT_DEC, "r") as file:
            data_dec = json.loads(file.read().strip())
        data_enc = pysrt.open(INPUT_ENC)
        replace_srt_dialogues(data_enc, data_dec, OUTPUT_DEC)
    Then open cmd in that folder and run
    Code:
    python main.py
    You'll see the proper subtitle in output.srt
    thank you so much, yeah it is kinda complicated since i know nothing but i was able to do it with your guidance 🫶
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!