字符串解密常用命令

极客

字符串解密常用命令,我帮你们踩过的那些坑!

哎,说到字符串解密这事儿,我这个老运维真是又爱又恨啊!你们知道吗?就在上周,我还在生产环境上因为一个解不开的字符串差点背锅,连老板都惊动了,今天我就把这些年摸爬滚打总结出来的字符串解密常用命令,一股脑全倒给你们,省得你们再走弯路!

字符串解密常用命令

Base64解码——最基础但最实用

兄弟姐妹们,Base64这玩意儿真的是日常见得最多的了!看着那一串“ZWNobyAiSGVsbG8i”之类的鬼东西,如果不知道解密命令,那可真就抓瞎了。

echo "ZWNobyAiSGVsbG8i" | base64 -d

诶,这个命令我相信不少老哥都知道,但咱们得说说细节!在Linux系统上,有的版本用base64 -d,有的得用base64 --decode,还有个更老的系统,哎呦喂,居然得用base64 -D(大写D)!我都快被这些差异整崩溃了!

不过说真的,Base64解密也只是顺手的事儿,真正让我头疼的是后面这些。

URL编码解码——别让%20坑了你

前段时间排查问题的时候,我在日志里看到一长串“%E4%BD%A0%E5%A5%BD”这样的东西,咦,这不是URL编码吗?说实话,第一次遇到的时候我真的懵了,还以为是什么加密算法呢!

正确的打开方式是这样的:

# 使用python一行搞定
python3 -c "import urllib.parse; print(urllib.parse.unquote('%E4%BD%A0%E5%A5%BD'))"
# 或者用sed也可以
echo "%E4%BD%A0%E5%A5%BD" | sed 's/%\(..\)/\\x\1/g' | xargs echo -e

啊,舒服多了!看到中文“你好”出来那一瞬间,我简直想给写这个命令的人磕个头!

Hex转ASCII——低调但好用

讲真,有些开发老哥特别喜欢把字符串转成十六进制格式存在配置文件里,你说气不气人!68656c6c6f”,这谁看得懂啊!

这时候就得靠这个命令:

echo "68656c6c6f" | xxd -r -p

或者用更快的:

echo "68656c6c6f" | perl -pe 's/([0-9a-f]{2})/chr(hex($1))/ge'

看到“hello”出来的那一刻,我整个人都轻松了,这种成就感真的绝了!

JWT解密——前端后端的坑

哦对,这个真的值得好好说说,现在做前后端分离,JWT(JSON Web Token)到处都是,那个token是一串“eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.something”,想解密查看里面的信息?

# 简单粗暴地拆分解密
echo "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0" | cut -d'.' -f2 | base64 -d 2>/dev/null

等等,这里有个坑啊!JWT的payload部分是用Base64URL编码的,不是标准Base64!如果直接base64 -d可能会报错,我当初在这里可栽了好几个跟头,气死我了!正确的做法是:

echo "eyJzdWIiOiIxMjM0In0" | tr '_-' '/+' | base64 -d 2>/dev/null

一键解密的利器——CyberChef与本地脚本

如果你们觉得一个个敲命令太麻烦,我这儿还藏了个大招!那就是把上面的命令组合成一个脚本,或者直接用CyberChef这个在线神器,不过说真的,我还是更习惯本地命令行,毕竟有些机器上不了外网(你懂的)。

#!/bin/bash
# 我自己的万能解密脚本,分享给你们!
function decrypt_any() {
    local input="$1"
    # 尝试base64
    echo "$input" | base64 -d &>/dev/null && echo "Base64: $(echo "$input" | base64 -d)" || \
    echo "$input" | xxd -r -p &>/dev/null && echo "Hex: $(echo "$input" | xxd -r -p)" || \
    python3 -c "import urllib.parse,sys; print('URL:', urllib.parse.unquote(sys.argv[1]))" "$input"
}

这脚本基本上帮我解决了80%的问题,每次解出来东西我都想喊一句:“这不就破案了吗!”

总结与心酸

好了,我把自己压箱底的功夫都交代给你们了,其实字符串解密这东西,最怕的就是格式不对、编码不对,我光是“base64 -d”和“base64 --decode”这俩参数的区别,就不知道被坑了多少次!

最后再多嘴一句,遇到搞不定的字符串解密,千万别硬来,先看看它的编码格式、看看有没有特殊符号,再用对应的命令去解,如果实在搞不定,就老老实实问开发要源码吧——这话说出来我自己都想笑,但这真的是最省事的方法了,哈哈!

希望我整理的这些字符串解密常用命令能帮到你们!记住啊,技术在进步,咱们也得跟着更新知识库,不然真容易在坑里摔跟头呢!你们有没有什么特别的解密经历?评论区聊聊呗!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]