CTF比赛中,MISC题型中有时候会考到一种一种叫做“猪圈密码”(Pigpen_chiper)的简单加密方式。网上有个表可以对照地来实现解密,但是实际中太慢不符合竞速思维,于是写一个小脚本来实现。

0x01 何为猪圈密码

猪圈密码[pigpen cipher](亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。

优点:简单,方便,容易书写,适合书面上的密码通讯,并且好记。
缺点:"太出名"密码最怕的就是太出名,一但出名它就会毫无秘密可言,知道的人就知道,不知道的人就不知道。

0x02 解密参照表

猪圈密码表.png
(左右对照即可解密)

0x03 python实现

先上一张效果图吧:
pigpen_chiper.png

下面是代码:

# _*_ coding:utf-8 _*_
# 0h1in9e[https://www.ohlinge.cn]

import sys

def pigpen_chiper(letter):
    a = "abcdefghistuv"
    b = "jklmnopqrwxyz"
    if letter.isalpha():
        if letter in a:
            n = a.find(letter)
            pig = b[n]
        else:
            n = b.find(letter)
            pig = a[n]
        return pig
    else:
        return letter

def pigpen(word):
    """
     pigpen chiper
    """
    res = ''
    for letter in word:
        res += pigpen_chiper(letter)
    return res

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "Pigpen_chiper decode 猪圈密码解密器v1.0 BY 0h1in9e"
        print "Usage: "+sys.argv[0]+" 'ocjp{zkii}'"
    else:
        print pigpen(sys.argv[1])