日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

用javascript自制ctf词频分析工具

發布時間:2025/4/16 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用javascript自制ctf词频分析工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不廢話,上代碼:

<!DOCTYPE html> <html> <head><title></title> </head> <body style="margin:0;width:100%;height:100%;"> <!--created by zengzhaosi--> <p style="background-color:deepskyblue;width:100%;height:50px;color:white;font-size:26px;margin:0;padding:0;text-align:center;line-height:50px;">詞頻分析器</p> <table style="border-collapse:collapse;width:100%;height:100%;"> <tr valign="top"> <td style="width:65%;"> <div>請輸入密文:<input type="button" value="全部轉大寫" onclick="upperCase()" style="margin:10px 30px;"/> <input type="button" value="全部轉小寫" onclick="lowerCase()" style="margin:10px 30px;"/> <input type="button" value="加載測試內容" onclick="loadTest()" style="margin:10px 30px;"/></div> <textarea style="min-width:300px;min-height:150px;width:90%;" onchange="calc_letter_frequency()" onpropertychange="calc_letter_frequency()" oninput="calc_letter_frequency()" id="cipher"></textarea> <div>明文:</div><div style="min-width:300px;min-height:150px;width:90%;border:1px solid black;font-size:14px;" id="plain"></div> <input type="button" value="添加轉換條件" style="margin:10px 30px;" onclick="add_change()" /> <input type="button" value="轉換" style="margin:10px 50px;" onclick="change_cipher()" /> <div id="buttons"> </div> </td> <td style="width:20%;">當前詞頻<div id="current_letter_frequency"></div></td> <td style="width:15%;">一般英文詞頻<div id="english_letter_frequency"></div></td> </tr> </table> </body> <script type="text/javascript"> String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) { if (!RegExp.prototype.isPrototypeOf(reallyDo)) { return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith); } else { return this.replace(reallyDo, replaceWith); } } var plaincolor = "skyblue"; window.onload = function(){var str = "";var english_letter_frequency = [{"letter":"a","frequency":0.08167},{"letter":"b","frequency":0.01492},{"letter":"c","frequency":0.02782},{"letter":"d","frequency":0.04253},{"letter":"e","frequency":0.12702},{"letter":"f","frequency":0.02228},{"letter":"g","frequency":0.02015},{"letter":"h","frequency":0.06094},{"letter":"i","frequency":0.06966},{"letter":"j","frequency":0.00153},{"letter":"k","frequency":0.00772},{"letter":"l","frequency":0.04025},{"letter":"m","frequency":0.02406},{"letter":"n","frequency":0.06749},{"letter":"o","frequency":0.07507},{"letter":"p","frequency":0.01929},{"letter":"q","frequency":0.00095},{"letter":"r","frequency":0.05987},{"letter":"s","frequency":0.06327},{"letter":"t","frequency":0.09056},{"letter":"u","frequency":0.02758},{"letter":"v","frequency":0.00978},{"letter":"w","frequency":0.02360},{"letter":"x","frequency":0.00150},{"letter":"y","frequency":0.01974},{"letter":"z","frequency":0.00074}];function sortByFrequency(a,b){return b.frequency - a.frequency;}english_letter_frequency.sort(sortByFrequency);for(var i=0;i<english_letter_frequency.length;i++){str += '<span style="font-size:14px;background-color:'+(i%2?"white":"skyblue")+'">'+ english_letter_frequency[i].letter +',詞頻:' + english_letter_frequency[i].frequency + '</span><br>'}id("english_letter_frequency").innerHTML = str; } function id(x){ return document.getElementById(x);} function loadTest(){var str = `TW5650Y - 0TS UZ50S S0V LZW UZ50WKW 9505KL4G 1X WVMUSL510 S001M0UWV 910VSG S0 WFLW0K510 1X LZW54 WF5KL50Y 2S4L0W4KZ52 L1 50U14214SLW X5L0WKK S0V TSK7WLTS88 VWNW8129W0L 50 W8W9W0LS4G, 95VV8W S0V Z5YZ KUZ118K SU41KK UZ50S.LZW S001M0UW9W0L ESK 9SVW SL S K5Y050Y UW4W910G L1VSG TG 0TS UZ50S UW1 VSN5V KZ1W9S7W4 S0V FM LS1, V54WUL14 YW0W4S8 1X LZW 50LW40SL510S8 U112W4SL510 S0V WFUZS0YW VW2S4L9W0L 1X LZW 9505KL4G 1X WVMUSL510."EW S4W WFU5LWV L1 T41SVW0 1M4 2S4L0W4KZ52 E5LZ LZW 9505KL4G 1X WVMUSL510 L1 9S7W S 810Y-8SKL50Y 592SUL 10 LZW 85NWK 1X UZ50WKW KLMVW0LK LZ41MYZ S 6150L8G-VWK5Y0WV TSK7WLTS88 UM445UM8M9 S0V S E5VW 4S0YW 1X KUZ118 TSK7WLTS88 241Y4S9K," KS5V KZ1W9S7W4. "LZ5K U1995L9W0L 9S47K S01LZW4 958WKL10W 50 LZW 0TS'K G1MLZ S0V TSK7WLTS88 VWNW8129W0L WXX14LK 50 UZ50S."X8SY{YK182V9ZUL9STU5V}';`id("cipher").value = str; } function upperCase(){var str = id("cipher").value.toUpperCase();id("cipher").value = str;calc_letter_frequency(); } function lowerCase(){var str = id("cipher").value.toLowerCase();id("cipher").value = str;calc_letter_frequency(); } function calc_letter_frequency(x){var cipher = id("cipher").value.replace(/\s+/g,"");if(x){cipher = x;}var len = cipher.length;var counters = {};for(var i=0;i<len;i++){if(cipher[i] in counters){counters[cipher[i]] += 1}else{counters[cipher[i]] = 1} }var result = [];for(var i in counters){result.push({"char":i,"num":counters[i],"frequency":(counters[i]/len).toFixed(5),})}function sortByNum(a,b){return b.num - a.num;}result.sort(sortByNum);var current_letter_frequency = "";for(var i=0;i<result.length;i++){current_letter_frequency += '<span style="font-size:14px;background-color:'+(i%2?"white":"skyblue")+'">'+ result[i].char +',出現次數:'+ result[i].num +',詞頻:'+result[i].frequency+'</span><br>'}id("current_letter_frequency").innerHTML = current_letter_frequency; } var add_counter = 0; function add_change(){var buttons = id("buttons");var span = document.createElement("span");span.innerHTML = '<span style="background-color:deepskyblue;padding:5px;margin:5px;" id="add'+add_counter+'" class="add">\<input type="input" style="width:20px;" id="from'+add_counter+'" class="from"/>轉為\<input type="input" style="width:20px;" id="to'+add_counter+'" class="to"/>\<input type="button" value="刪除" style="font-size:8px;margin:3px;" onclick="del_add('+add_counter+')"/></span>'buttons.appendChild(span);add_counter += 1; }function del_add(n){id("add"+n).remove(); }function change_cipher(){var adds = document.getElementsByClassName("add");if(adds.length){var cipher = id("cipher").value;var plain = "";var real_plain = "";var froms = document.getElementsByClassName("from");var tos = document.getElementsByClassName("to");for(var i=0;i<cipher.length;i++){var notchange = true;for(var j=0;j<froms.length;j++){if(cipher[i] == froms[j].value){plain += "<span style='background-color:"+plaincolor+"'>"+tos[j].value+"</span>";real_plain += tos[j].value;notchange = false;break;}}if(notchange){plain += cipher[i];real_plain += cipher[i];}}id("plain").innerHTML = plain;calc_letter_frequency(real_plain.replace(/\s+/g,""));} }</script> </html>

這個東西是之前為了對付CTF里面的一種詞頻分析題而寫的一個javascript小工具,通過添加條件將特定的數字或字母替換成正確的字符來對加密的文本進行破譯,最終得到正確的flag的一種題型。

我已經將測試題目加到里面去了。用戶可以自行嘗試,還是蠻有意思的東西。?

總結

以上是生活随笔為你收集整理的用javascript自制ctf词频分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。