Skip to content

teamshortcut/PMNG-Cipher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PMNG-Cipher

Polymapping N-gram cipher.

This cipher was used as part a challenge in Cyber Discovery's "Content Creators Club CTF", CH06. You can see writeup.md for a writeup of this challenge, which also serves of a usage example for this cipher.

cipher.py is a script that provides an implementation of encryption/decryption using this cipher. Because of the way decryption works (see below), it relies on word frequency as a heuristic for decryption at points, to simulate human judgement of the more likely decryption candidate.

Algorithm

The cipher is a substituion cipher with three additions. The first is that some plaintext characters encrypt to the same ciphertext character. As a result, when decrypting, some characters have two possible plaintext counterparts. These are indicated in bold and italics in the table below.

Plaintext Ciphertext
A O
B V
C K
D G
E Y
F F
G Q
H J
I L
J Q
K K
L M
M R
N T
O W
P B
Q Z
R A
S C
T P
U X
V X
W N
X Z
Y H
Z Z

Additionally, certain N-grams in plaintext are encrypted into single characters. For clarity, these N-gram mappings and polymapped characters are summarised below.

Plaintext Ciphertext
ING I
ST S
EA E
OU U
TH F
----- -----
F, TH F
C, K K
G, J Q
U, V X
Q, X, Z Z

Finally, double letters are encrypted differently. In ciphertext, a double letter is notated by a D followed by the letter that is doubled. For example, the plaintext word BELL would encrypt to VYDM. The BE encrypts to VY, and L maps to M. Because M is prefaced with a D, it would expand to VYMM which then decrypts back to BELL.

About

Polymapping N-gram Cipher

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages