真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CTF&爬蟲:掌握這些特征,一秒識(shí)別密文加密方式

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、華陰網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為華陰等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

關(guān)注微信公眾號(hào):K哥爬蟲,持續(xù)分享爬蟲進(jìn)階、JS/安卓逆向等技術(shù)干貨!

前言

爬蟲工程師在做加密參數(shù)逆向的時(shí)候,經(jīng)常會(huì)遇到各種各樣的加密算法、編碼、混淆,每個(gè)算法都有其對(duì)應(yīng)的特征,對(duì)于一些較小的網(wǎng)站,往往直接引用這些官方算法,沒有進(jìn)行魔改等其他操作,這種情況下,如果我們能熟悉常見算法的特征,通過密文就能猜測出使用的哪種算法、編碼、混淆,將會(huì)大大提高工作效率!在 CTF 中通常也會(huì)有密碼類的題目,掌握一些常見密文特征也是 CTFer 們必備的技能!

本文將介紹以下編碼和加密算法的特征:

  • 編碼:Base 系列、Unicode、Escape、URL、Hex;
  • 算法:MD5、SHA 系列、HMAC 系列、RSA、AES、DES、3DES、RC4、Rabbit、SM 系列;
  • 混淆:Obfuscator、JJEncode、AAEncode、JSFuck、Jother、Brainfuck、Ook!、Trivial brainfuck substitution;
  • 其他:愷撒密碼、柵欄密碼、豬圈密碼、摩斯密碼、培根密碼、維吉尼亞密碼、與佛論禪、當(dāng)鋪密碼。

PS:常見加密算法原理以及在 Python 和 JavaScript 中的實(shí)現(xiàn)方法可參見K哥以前的文章:【爬蟲知識(shí)】爬蟲常見加密解密算法

編碼系列

Base 系列編碼

Base64 是我們最常見的編碼,除此之外,其實(shí)還有 Base16、Base32、Base58、Base85、Base100 等,他們之間最明顯的區(qū)別就是使用了不同數(shù)量的可打印字符對(duì)任意字節(jié)數(shù)據(jù)進(jìn)行編碼,比如 Base64 使用了64個(gè)可打印字符(A-Z、a-z、0-9、+、/),Base16 使用了16個(gè)可打印字符(A-F、0-9),這里主要講怎么快速識(shí)別,其具體原理可自行百度,Base 系列主要特征如下:

  • Base16:結(jié)尾沒有等號(hào),數(shù)字要多于字母;
  • Base32:字母要多于數(shù)字,明文數(shù)量超過10個(gè),結(jié)尾可能會(huì)有很多等號(hào);
  • Base58:結(jié)尾沒有等號(hào),字母要多于數(shù)字;
  • Base64:一般情況下結(jié)尾都會(huì)有1個(gè)或者2個(gè)等號(hào),明文很少的時(shí)候可能沒有;
  • Base85:等號(hào)一般出現(xiàn)在字符串中間,含有一些奇怪的字符;
  • Base100:密文由 Emoji 表情組成。

示例:

編碼類型 示例一 示例二
明文 0 administrators
Base16 D696EF7273
Base32 GAYTEMZUGU3DOOBZGA====== MFSG22LONFZXI4TBORXXE4Y=
Base58 cX8j8pvGzppMKVb BNF5dFLUTN5XwM1yLoF
Base64 MDEyMzQ1Njc4OTA= YWRtaW5pc3RyYXRvcnM=
Base85 0JP==1c70M3&rY @:X4hDJ=06Eaa'.EcV
Base100 ???????????????????????????????????????????? ????????????????????????????????????????????????????????

Unicode 編碼

Unicode 又稱為統(tǒng)一碼、萬國碼、單一碼,是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。其主要特征如下:

  • \u、&#&#x 開頭,后面是數(shù)字加字母組合

PS:\u 開頭和 &#x 開頭是一樣的,都是16進(jìn)制 Unicode 字符的不同寫法,&# 則是 Unicode 字符10進(jìn)制的寫法,此外,&#&#x 開頭的,也稱為 HTML 字符實(shí)體轉(zhuǎn)換,字符實(shí)體是用一個(gè)編號(hào)寫入 HTML 代碼中來代替一個(gè)字符,在 HTML 中,某些字符是預(yù)留的,如果希望正確地顯示預(yù)留字符,就必須在 HTML 源代碼中使用字符實(shí)體。

編碼類型 示例一 示例二
明文 admin
Unicode \u0031\u0032\u0033\u0034\u0035 \u0061\u0064\u006d\u0069\u006e

Escape 編碼

Escape 編碼又叫 %u 編碼,Escape 編碼就是字符對(duì)應(yīng) UTF-16BE 表示方式前面加 %u,Escape 不會(huì)對(duì) ASCII 字母和數(shù)字進(jìn)行編碼,也不會(huì)對(duì)下面這些 ASCII 標(biāo)點(diǎn)符號(hào)進(jìn)行編碼: * @ - _ + . /,其他所有的字符都會(huì)被轉(zhuǎn)義序列替換。其主要特征如下:

  • %u 開頭,后面是數(shù)字加字母組合
編碼類型 示例一 示例二
明文 K哥爬蟲 我愛Python
Escape K%u54E5%u722C%u866B %u6211%u7231Python

URL / Hex 編碼

URL 和 Hex 編碼的結(jié)果是一樣的,不同的是當(dāng)你用 URL 編碼網(wǎng)址時(shí)是不會(huì)把 http、https 關(guān)鍵字和 /?、&= 等連接符進(jìn)行編碼的,而 Hex 編碼則全部轉(zhuǎn)化了,其主要特征如下:

  • % 開頭,后面是數(shù)字加字母組合
編碼類型 示例
明文 https://www.kuaidaili.com/
Unicode https://%77%77%77%2E%6B%75%61%69%64%61%69%6C%69%2E%63%6F%6D/
Hex %68%74%74%70%73%3a%2f%2f%77%77%77%2e%6b%75%61%69%64%61%69%6c%69%2e%63%6f%6d%2f

加密算法

MD5

MD5 實(shí)質(zhì)是一種消息摘要算法,一個(gè)數(shù)據(jù)的 MD5 值是唯一的,同一個(gè)數(shù)據(jù)不可能計(jì)算出多個(gè)不同的 MD5 值,但是,不同數(shù)據(jù)計(jì)算出來的 MD5 值是有可能一樣的,知道一個(gè) MD5 值,理論上是無法還原出它的原始數(shù)據(jù)的,MD5 是最容易辨別的,主要特征如下:

  • 密文一般為 16 位或者 32 位,其中 16 位是取的 32 位第 9~25 位的值;
  • 組成方式為字母(a-f)和數(shù)字(0-9)混合,字母可以全部是大寫或者小寫。

除了通過密文特征來判斷以外,我們還可以搜索源代碼,標(biāo)準(zhǔn) MD5 的源碼里是包含了一些特定的值的,沒有這些特定值,就無法實(shí)現(xiàn) MD5:

  • 0ABCDEF、0abcdef
  • -、-

PS:某些特殊情況下,密文的長度也有可能不止 16 位或者 32 位,有可能是在官方算法上有一些魔改,通常也是在 16 位的基礎(chǔ)上,左右填充了一些隨機(jī)字符串。

示例:

編碼類型 示例一 示例二
明文 admin
MD5(16位小寫) 49ba59abbe56e057 7a57a5aa0e
MD5(16位大寫) 49BA59ABBE56E057 7A57A5AA0E
MD5(32位小寫) e10adc3949ba59abbe56e057f20f883e f297a57a5aa0e4a801fc3
MD5(32位大寫) E10ADC3949BA59ABBE56E057F20F883E F297A57A5AA0E4A801FC3

SHA 系列

SHA 是比 MD5 更安全一點(diǎn)的摘要算法,SHA 通常指 SHA 家族算法,分別是 SHA-1、SHA-2、SHA-3,其中 SHA-2 是 SHA-224、SHA-256、SHA-384、SHA-512 的并稱,SHA-3 是 SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256 的并稱,其名字的后綴的數(shù)字就代表了結(jié)果的大?。╞it),注意,SHAKE 算法結(jié)果的大小并不是固定的,其他算法特征如下:

  • SHA-1:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 40 位;
  • SHA-224/SHA3-224:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 56 位;
  • SHA-256/SHA3-256:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 64 位;
  • SHA-384/SHA3-384:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 96 位;
  • SHA-512/SHA3-512:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 128 位。

示例:

編碼類型 示例
明文
SHA-1 7c4a8d09ca3762af61edcf8941b
SHA-256 8d969eef6ecad3c29a3ae686cf0c3f5d5a86aff3cac923adc6c92
SHA3-256 c888c9ce9e098d5864d3ded6ebcc140abace3a23a36f9905f12bd64a

HMAC 系列

HMAC 這種算法就是在 MD5、SHA 兩種加密的基礎(chǔ)上引入了秘鑰,其密文也和 MD5、SHA 類似,密文的長度和使用的 MD5、SHA 算法對(duì)應(yīng)密文的長度是一樣的。特征如下:

  • HMAC-MD5:字母(a-f)和數(shù)字(0-9)混合,位數(shù)一般為 32 位;
  • HMAC-SHA-1:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 40 位;
  • HMAC-SHA-224 / HMAC-SHA3-224:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 56 位;
  • HMAC-SHA-256 / HMAC-SHA3-256:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 64 位;
  • HMAC-SHA-384 / HMAC-SHA3-384:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 96 位;
  • HMAC-SHA-512 / HMAC-SHA3-512:字母(a-f)和數(shù)字(0-9)混合,固定位數(shù) 128 位。

HMAC 和 SHA、MD5 的密文都很像,當(dāng)無法確定是否為 HMAC 時(shí),可以通過其名稱搜索到加密方法,如果傳入了密鑰 key,說明就是 HMAC,當(dāng)然你也可以直接當(dāng)做是 SHA 或 MD5 來解,解密失敗時(shí)就得考慮是否有密鑰,是否為 HMAC 了,在 JS 中,通常一個(gè) HMAC 加密方法是這樣寫的:

function HmacSHA1Encrypt(word, key) {
    return CryptoJS.HmacSHA1(word, key).toString();
}

示例(密鑰 abcde):

編碼類型 示例
明文
HMAC-MD5 432bb95bb00005ddce4a1ced95
HMAC-SHA-1 37a04076b7736cd330ee0d000b175e
HMAC-SHA-256 50cbdffb91b43caafe3fddf6b0d0caee585
HMAC-SHA3-256 b808ed9fe89fba527a01d1dfea8599d9f39bfb6becbf3

RSA

RSA 加密算法是一種非對(duì)稱加密算法,通過公鑰加密結(jié)果,必須私鑰解密。 同樣私鑰加密結(jié)果,公鑰可以解密,應(yīng)用非常廣泛,在網(wǎng)站中通常使用 JSEncrypt 庫來實(shí)現(xiàn),其最大的特征就是有一個(gè)設(shè)置公鑰的過程,我們可以通過以下方法來快速初步判斷是否為 RSA 算法:

  • 搜索關(guān)鍵詞 new JSEncrypt(),JSEncrypt 等,一般會(huì)使用 JSEncrypt 庫,會(huì)有 new 一個(gè)實(shí)例對(duì)象的操作;

  • 搜索關(guān)鍵詞 setPublicKeysetKeysetPrivateKey、getPublicKey 等,一般實(shí)現(xiàn)的代碼里都含有設(shè)置密鑰的過程;

  • RSA 的私鑰、公鑰、明文、密文長度也有一定對(duì)應(yīng)關(guān)系,也可以從這方面初步判斷:

    私鑰長度(Base64) 公鑰長度(Base64) 明文長度 密文長度
    428 128 1~53 88
    812 216 1~117 172
    1588 392 1~245 344

AES、DES、3DES、RC4、Rabbit 等

AES、DES、3DES、RC4、Rabbit 等加密算法的密文通常沒有固定的長度,他們通常使用 crypto-js 來實(shí)現(xiàn),比如 AES 加解密示例如下:

CryptoJS = require("crypto-js")

var key = CryptoJS.enc.Utf8.parse("0abcdef");
var iv = CryptoJS.enc.Utf8.parse("0abcdef");

function AESEncrypt(word) {
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
}

function AESDecrypt(word) {
    var srcs = word;
    var decrypt = CryptoJS.AES.decrypt(srcs, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return decrypt.toString(CryptoJS.enc.Utf8);
}

console.log(AESEncrypt("K哥爬蟲"))
console.log(AESDecrypt("nSk3wCd92s08sQ9N+VHNvA=="))

在 crypto-js 中,也有一些特定的關(guān)鍵字,我們可以通過搜索這些關(guān)鍵字來快速定位到 crypto-js:

  • CryptoJScrypto-js、ivmode、paddingcreateEncryptor、createDecryptor

  • ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0+/=、0xffffffff0xffff

定位到 CryptoJS 后,觀察加密方法,比如 AES 就是 CryptoJS.AES.encrypt,DES 就是 CryptoJS.DES.encrypt,3DES 就是 CryptoJS.TripleDES.encrypt,注意他的 iv、mode、padding,拿下來就可以本地復(fù)現(xiàn)了。

SM 系列

SM 代表商密,即商業(yè)密碼,是我國發(fā)布的一系列國產(chǎn)加密算法,SM 系列包括:SM1、SM2、SM3 、SM4、SM7、SM9,其中 SM1 和 SM7 的算法不公開,SM 系列算法在我國一些 gov 網(wǎng)站上有應(yīng)用,有關(guān)國產(chǎn)加密算法 K 哥前期文章有介紹:《爬蟲逆向基礎(chǔ),認(rèn)識(shí) SM1-SM9、ZUC 國密算法》,本文不再贅述。

在 SM 的 JavaScript 代碼中一般會(huì)存在以下關(guān)鍵字,可以通過搜索關(guān)鍵字定位:

  • SM2、SM3、SM4
  • FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF
  • FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC
  • 28E9FA9E9D9F5E344D5A9E4BCF6509A7FF515AB8F92DDBCBD414D940E93
  • abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0
  • getPublicKeyFromPrivateKeydoEncrypt、doDecrypt、doSignature

混淆系列

Obfuscator

Obfuscator 就是混淆的意思,簡稱 OB 混淆,實(shí)戰(zhàn)可參考K哥以前的文章:【JS 逆向百例】W店UA,OB反混淆,抓包替換CORS跨域錯(cuò)誤分析,OB 混淆具有以下特征:

  • 一般由一個(gè)大數(shù)組或者含有大數(shù)組的函數(shù)、一個(gè)自執(zhí)行函數(shù)、解密函數(shù)和加密后的函數(shù)四部分組成;
  • 函數(shù)名和變量名通常以 _0x 或者 0x 開頭,后接 1~6 位數(shù)字或字母組合;
  • 自執(zhí)行函數(shù),進(jìn)行移位操作,有明顯的 push、shift 關(guān)鍵字;

一段正常的代碼如下:

function hi() {
  console.log("Hello World!");
}
hi();

經(jīng)過 OB 混淆后的結(jié)果:

function _0x3f26() {
    var _0x2dad75 = ['kTCKCP', 'Hello\x20World!', '600mDvfGa', 'jYNxbu', 'cEvuvT', 'log', '18sKjcFY', 'eMgFSU', 'FUKcuE', 'OzpdFI', 'JqcGMg'];
    _0x3f26 = function () {
        return _0x2dad75;
    };
    return _0x3f26();
}

(function (_0x307c88, _0x4f8223) {
    var _0xd = _0x1fe9, _0x330c58 = _0x307c88();
    while (!![]) {
        try {
            var _0x5d6354 = parseInt(_0xd(0x6f)) / 0x1 + parseInt(_0xd(0x6e)) / 0x2 + parseInt(_0xd(0x70)) / 0x3 + -parseInt(_0xd(0x69)) / 0x4 + parseInt(_0xd(0x71)) / 0x5 + parseInt(_0xd(0x6c)) / 0x6 * (parseInt(_0xd(0x6a)) / 0x7) + -parseInt(_0xd(0x73)) / 0x8 * (parseInt(_0xd(0x6d)) / 0x9);
            if (_0x5d6354 === _0x4f8223) break; else _0x330c58['push'](_0x330c58['shift']());
        } catch (_0x3f18e4) {
            _0x330c58['push'](_0x330c58['shift']());
        }
    }
}(_0x3f26, 0xaa023));

function _0x1fe9(_0xa907e7, _0x410a46) {
    var _0x3f261f = _0x3f26();
    return _0x1fe9 = function (_0x1fe950, _0x5a08da) {
        _0x1fe950 = _0x1fe950 - 0x69;
        var _0x82a06 = _0x3f261f[_0x1fe950];
        return _0x82a06;
    }, _0x1fe9(_0xa907e7, _0x410a46);
}

function hi() {
    var _0x12a222 = _0x1fe9;
    console[_0x12a222(0x6b)](_0x12a222(0x72));
}

hi();

JJEncode

JJEncode、AAEncode、JSFuck 都是同一個(gè)作者,實(shí)戰(zhàn)可參考K哥以前的文章:【JS 逆向百例】網(wǎng)洛者反爬練習(xí)平臺(tái)第二題:JJEncode 加密,JJEncode 具有以下特征:

  • 大量 $、_ 符號(hào),大量重復(fù)的自定義變量;
  • 僅由 18 個(gè)符號(hào)組成:[]()!+,\"$.:;_{}~=

正常的一段 JS 代碼:

alert("Hello, JavaScript" )

經(jīng)過 JJEncode 混淆(自定義變量名為 $)之后的代碼:

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+")"+"\"")())();

AAEncode

JJEncode、AAEncode、JSFuck 都是同一個(gè)作者,實(shí)戰(zhàn)可參考K哥以前的文章:【JS 逆向百例】網(wǎng)洛者反爬練習(xí)平臺(tái)第三題:AAEncode 加密,AAEncode 具有以下特征:

  • 僅由日式表情符號(hào)組成

正常的一段 JS 代碼:

alert("Hello, JavaScript")

經(jīng)過 AAEncode 混淆之后的代碼:

?ω??= /`m′)? ~┻━┻   //*′?`*/ ['_']; o=(???)  =_=3; c=(?Θ?) =(???)-(???); (?Д?) =(?Θ?)= (o^_^o)/ (o^_^o);(?Д?)={?Θ?: '_' ,?ω?? : ((?ω??==3) +'_') [?Θ?] ,???? :(?ω??+ '_')[o^_^o -(?Θ?)] ,?Д??:((???==3) +'_')[???] }; (?Д?) [?Θ?] =((?ω??==3) +'_') [c^_^o];(?Д?) ['c'] = ((?Д?)+'_') [ (???)+(???)-(?Θ?) ];(?Д?) ['o'] = ((?Д?)+'_') [?Θ?];(?o?)=(?Д?) ['c']+(?Д?) ['o']+(?ω?? +'_')[?Θ?]+ ((?ω??==3) +'_') [???] + ((?Д?) +'_') [(???)+(???)]+ ((???==3) +'_') [?Θ?]+((???==3) +'_') [(???) - (?Θ?)]+(?Д?) ['c']+((?Д?)+'_') [(???)+(???)]+ (?Д?) ['o']+((???==3) +'_') [?Θ?];(?Д?) ['_'] =(o^_^o) [?o?] [?o?];(?ε?)=((???==3) +'_') [?Θ?]+ (?Д?) .?Д??+((?Д?)+'_') [(???) + (???)]+((???==3) +'_') [o^_^o -?Θ?]+((???==3) +'_') [?Θ?]+ (?ω?? +'_') [?Θ?]; (???)+=(?Θ?); (?Д?)[?ε?]='\\'; (?Д?).?Θ??=(?Д?+ ???)[o^_^o -(?Θ?)];(o???o)=(?ω?? +'_')[c^_^o];(?Д?) [?o?]='\"';(?Д?) ['_'] ( (?Д?) ['_'] (?ε?+(?Д?)[?o?]+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (???)+ (?Д?)[?ε?]+((???) + (?Θ?))+ (c^_^o)+ (?Д?)[?ε?]+(???)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ (?Θ?)+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ ((???) + (o^_^o))+ (?Д?)[?ε?]+((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(???)+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (?Θ?)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) - (?Θ?))+ (o^_^o)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (o^_^o)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (c^_^o)+ (?Д?)[?ε?]+(?Θ?)+ ((o^_^o) +(o^_^o))+ (???)+ (?Д?)[?ε?]+(???)+ ((o^_^o) - (?Θ?))+ (?Д?)[?ε?]+((???) + (?Θ?))+ (?Θ?)+ (?Д?)[?o?]) (?Θ?)) ('_');

JSFuck

JJEncode、AAEncode、JSFuck 都是同一個(gè)作者,實(shí)戰(zhàn)可參考K哥以前的文章:【JS 逆向百例】網(wǎng)洛者反爬練習(xí)平臺(tái)第四題:JSFuck 加密,JSFuck 具有以下特征:

  • 僅由 6 個(gè)符號(hào)組成:[]()!+

正常的一段 JS 代碼:

alert(1)

經(jīng)過 JSFuck 混淆之后的代碼類似于:

[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(+(!+[]+!+[]+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([]+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][[]]+[])[+!+[]]+(![]+[])[+!+[]]+((+[])[([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]]](!+[]+!+[]+!+[]+[!+[]+!+[]])+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]])()((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]]+[])[+!+[]+[!+[]+!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!![]+[])[+[]]])[!+[]+!+[]+[+[]]])

Jother

Jother 混淆和 JSFuck 有點(diǎn)兒類似,唯一的區(qū)別就是密文比 JSFuck 多了 {},其解密方式和 JSFuck 是一樣的,Jother 混淆現(xiàn)在不太常見了,也很難找到在線混淆之類的工具了,原作者有個(gè)在線頁面也關(guān)閉了,不過仍然可以了解一下,Jother 混淆具有以下特征:

  • 僅由 8 個(gè)符號(hào)組成:[]()!+{}

正常的一段代碼:

function anonymous(
) {
return location
}

經(jīng)過 Jother 混淆之后的代碼類似于:

[][(![]+[])[!![]+!![]+!![]]+({}+[])[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][({}+[])[!![]+!![]+!![]+!![]+!![]]+({}+[])[+!![]]+({}[[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+({}[[]]+[])[+[]]+({}+[])[!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+({}+[])[+!![]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+({}[[]]+[])[+[]]+(!![]+[])[+!![]]+({}[[]]+[])[+!![]]+({}+[])[!![]+!![]+!![]+!![]+!![]+!![]+!![]]+(![]+[])[!![]+!![]]+({}+[])[+!![]]+({}+[])[!![]+!![]+!![]+!![]+!![]]+(![]+[])[+!![]]+(!![]+[])[+[]]+({}[[]]+[])[!![]+!![]+!![]+!![]+!![]]+({}+[])[+!![]]+({}[[]]+[])[+!![]])()

Brainfuck

Brainfuck 實(shí)際上是一種極小化的計(jì)算機(jī)語言,又稱為 BF 語言,該語言以其極簡主義著稱,僅包含八個(gè)簡單的命令、一個(gè)數(shù)據(jù)指針和一個(gè)指令指針,這種語言在爬蟲領(lǐng)域也可以是一種反爬手段,可以視為一種混淆方式,雖然不常見????,這里給一個(gè)在線體驗(yàn)的網(wǎng)址:https://copy.sh/brainfuck/text.html ,感興趣的同志可以深入研究一下,Brainfuck 具有以下特征:

  • 僅由 <>+-.[] 組成;
  • 大量的 +- 符號(hào)。

正常的一段代碼:

alert("Hello, Brainfuck")

經(jīng)過 Brainfuck 混淆之后的代碼類似于:

--[----->+<]>-----.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.------.++[->++<]>.-[->+++++<]>++.+++++++..+++.[->+++++<]>+.------------.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>.+++++++.

Ook!

Ook! 和 Brainfuck 的原理都是類似的,只不過符號(hào)有差異,同樣的,這種語言在爬蟲領(lǐng)域也可以是一種反爬手段,可以視為一種混淆方式,雖然不常見????,在線體驗(yàn)的網(wǎng)址:https://www.splitbrain.org/services/ook ,Ook! 具有以下特征:

  • 完整 Ook!:僅由 3 種符號(hào)組成 Ook.、Ook?Ook!
  • Short Ook!:僅由 3 種符號(hào)組成 .!?

正常的一段代碼:

alert("Hello, Ook!")

經(jīng)過 Ook! 混淆之后的代碼類似于:

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. 

Trivial brainfuck substitution

Trivial brainfuck substitution 不是一種單一的編程語言,而是一大類編程語言,成員超過 20 個(gè),前面提到的 Brainfuck、Ook! 都是其中的一員,在爬蟲領(lǐng)域中,說實(shí)話這種稀奇古怪的混淆其實(shí)并不常見,但是在一些 CTF 中有可能會(huì)出現(xiàn),作為爬蟲工程師也可以了解了解????,具體可以參考:https://esolangs.org/wiki/Trivial_brainfuck_substitution

其他

愷撒密碼

愷撒密碼(Caesar cipher)又稱為愷撒加密、愷撒變換、變換加密,它是一種替換加密的技術(shù),明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。例如,當(dāng)偏移量是 3 的時(shí)候,所有的字母 A 將被替換成 D,B 變成 E,以此類推。這個(gè)加密方法是以羅馬共和時(shí)期愷撒的名字命名的,當(dāng)年愷撒曾用此方法與其將軍們進(jìn)行聯(lián)系。

根據(jù)偏移量的不同,還存在若干特定的愷撒密碼名稱:偏移量為10:Avocat(A→K);偏移量為13:ROT13;偏移量為-5:Cassis (K 6);偏移量為-6:Cassette (K 7)

示例(偏移量 3):

  • 明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

  • 密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

柵欄密碼

柵欄密碼就是把要加密的明文分成 N 個(gè)一組,然后把每組的第 1 個(gè)字連起來,形成一段無規(guī)律的話。柵欄密碼本身有一個(gè)潛規(guī)則,就是組成柵欄的字母一般不會(huì)太多,一般不超過 30 個(gè)。

示例:明文為 THE LONGEST DAY MUST HAVE AN END。加密時(shí),把將要傳遞的信息中的字母交替排成上下兩行:

T E O G S D Y U T A E N N

H L N E T A M S H V A E D

將下面一行字母排在上面一行的后邊組合成密文:

TEOGSDYUTAENN HLNETAMSHVAED

柵欄密碼還有一種變種,稱為柵欄密碼 W 型,它會(huì)先把明文類似 W 形狀進(jìn)行排列,然后再按欄目順序 1-N,取每一欄的所有字符值,組成加密后密文,比如字符串 ,采用欄目數(shù)為 3 時(shí),明文將采用如下排列:
1—5—9
-2-4-6-8-
–3—7–
取每一欄所有字符串,組成加密后密文:

豬圈密碼

豬圈密碼也稱為朱高密碼、共濟(jì)會(huì)暗號(hào)、共濟(jì)會(huì)密碼或共濟(jì)會(huì)員密碼,是一種以格子為基礎(chǔ)的簡單替代式密碼。只能對(duì)字母加解密并且符號(hào)無法復(fù)制,粘貼后會(huì)直接顯示明文,即使使用符號(hào),也不會(huì)影響密碼分析,亦可用在其它替代式的方法。曾經(jīng)是美國內(nèi)戰(zhàn)時(shí)盟軍使用的密碼,目前僅在密碼教學(xué)、各種競賽中使用。

摩斯密碼

摩斯密碼(Morse code),又稱為摩爾斯電碼、摩斯電碼,是一種時(shí)通時(shí)斷的信號(hào)代碼,這種信號(hào)代碼通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)等。

26個(gè)字母的摩斯密碼表

字符 摩斯碼 字符 摩斯碼 字符 摩斯碼 字符 摩斯碼
A .━ B ━ ... C ━ .━ . D ━ ..
E F ..━ . G ━ ━ . H ....
I .. J .━ ━ ━ K ━ .━ L .━ ..
M ━ ━ N ━ . O ━ ━ ━ P .━ ━ .
Q ━ ━ .━ R .━ . S ... T
U ..━ V ...━ W .━ ━ X ━ ..━
Y ━ .━ ━ Z ━ ━ ..

10個(gè)數(shù)字的摩斯密碼表

字符 摩斯碼 字符 摩斯碼 字符 摩斯碼 字符 摩斯碼
0 ━ ━ ━ ━ ━ 1 .━ ━ ━ ━ 2 ..━ ━ ━ 3 ...━ ━
4 ....━ 5 ..... 6 ━ .... 7 ━ ━ ...
8 ━ ━ ━ .. 9 ━ ━ ━ ━ .

標(biāo)點(diǎn)符號(hào)的摩斯密碼表

字符 摩斯碼 字符 摩斯碼 字符 摩斯碼 字符 摩斯碼
. .━ .━ .━ : ━ ━ ━ ... , ━ ━ ..━ ━ ; ━ .━ .━ .
? ..━ ━ .. = ━ ...━ ' .━ ━ ━ ━ . / ━ ..━ .
! ━ .━ .━ ━ ━ ....━ _ ..━ ━ .━ " .━ ..━ .
( ━ .━ ━ . ) ━ .━ ━ .━ $ ...━ ..━ & . ...
@ .━ ━ .━ .

培根密碼

培根密碼,又名倍康尼密碼(Bacon's cipher)是由法蘭西斯·培根發(fā)明的一種隱寫術(shù),它是一種本質(zhì)上用二進(jìn)制數(shù)設(shè)計(jì)的,沒有用通常的0和1來表示,而是采用a和b,看到一串的a和b,并且五個(gè)一組,那么就是培根加密了。

第一種方式:

字符 培根密碼 字符 培根密碼 字符 培根密碼 字符 培根密碼
A aaaaa H aabbb O abbba V babab
B aaaab I abaaa P abbbb W babba
C aaaba J abaab Q baaaa X babbb
D aaabb K ababa R baaab Y bbaaa
E aabaa L ababb S baaba Z bbaab
F aabab M abbaa T baabb
G aabba N abbab U babaa

第二種方式:

字符 培根密碼 字符 培根密碼 字符 培根密碼 字符 培根密碼
a AAAAA h AABBB p ABBBA x BABAB
b AAAAB i-j ABAAA q ABBBB y BABBA
c AAABA k ABAAB r BAAAA z BABBB
d AAABB l ABABA s BAAAB
e AABAA m ABABB t BAABA
f AABAB n ABBAA u-v BAABB
g AABBA o ABBAB w BABAA

示例:

  • 明文:kuaidaili
  • 密文:ABABABABAAAAAAAABAAAAAABBAAAAAABAAAABABBABAAA

維吉尼亞密碼

維吉尼亞密碼是在凱撒密碼基礎(chǔ)上產(chǎn)生的一種加密方法,它將凱撒密碼的全部25種位移排序?yàn)橐粡埍?,與原字母序列共同組成26行及26列的字母表。另外,維吉尼亞密碼必須有一個(gè)密鑰,這個(gè)密鑰由字母組成,最少一個(gè),最多可與明文字母數(shù)量相等。維吉尼亞密碼表如下:

示例:

  • 明文:I've got it.
  • 密鑰:ok
  • 密文:W'fs?qcd?wd.

首先,密鑰長度需要與明文長度相同,如果少于明文長度,則重復(fù)拼接直到相同。示例的明文長度為8個(gè)字母(非字母均被忽略),密鑰會(huì)被程序補(bǔ)全為 okokokok,然后根據(jù)維吉尼亞密碼表進(jìn)行加密:明文第一個(gè)字母是 I,密鑰第一個(gè)字母是 o,在表格中找到 I 列與 o 行相交點(diǎn),字母 W 就是密文第一個(gè)字母,同理,v 列與 k 行交點(diǎn)字母是 F,e 列與 o 行交點(diǎn)字母是 S,以此類推。注意:維吉尼亞密碼只對(duì)字母進(jìn)行加密,不區(qū)分大小寫,若文本中出現(xiàn)非字母字符會(huì)原樣保留,如果輸入多行文本,每行是單獨(dú)加密的。

與佛論禪

字符串轉(zhuǎn)換后,是一些佛語,在線體驗(yàn):https://keyfc.net/bbs/tools/tudoucode.aspx

示例:

  • 明文:K哥爬蟲
  • 密文:佛曰:哆室梵阿俱顛哆礙孕奢大皤帝罰藝哆伽密謹(jǐn)爍舍吶栗皤夷密

當(dāng)鋪密碼

當(dāng)鋪密碼在 CTF 比賽題目中出現(xiàn)過。該加密算法是根據(jù)當(dāng)前漢字有多少筆畫出頭,對(duì)應(yīng)的明文就是數(shù)字幾。

示例:

  • 明文:王夫 井工 夫口 由中人 井中 夫夫 由中大
  • 密文:67 84 70 123 82 77 125


網(wǎng)站名稱:CTF&amp;爬蟲:掌握這些特征,一秒識(shí)別密文加密方式
URL網(wǎng)址:http://weahome.cn/article/dsojdgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部