Cipher CTF Challenge Generator (Control Character Cipher)Press the blue button to regenerate a Control Character cipher challenge. It translates numeric values into ASCII control character symbols. |
Coding
The Control Character cipher maps numeric values to the ASCII control character symbols: 0 - NUL, 1 - SOH, 2 - STX, 3 - ETX, 4 - EOT, 5 - ENQ, 6 - ACK, 7 - BEL, 8 - BS, 9 - HT, 10 - LF, 11 - VT, 12 - FF, 13 - CR, 14 - SO, 15 - SI, 16 - DLE, 17 - DC1, 18 - DC2, 19 - DC3, 20 - DC4, 21 - NAK, 22 - SYN, 23 - ETB, 24 - CAN, 25 - EM, 26 - SUB, 27 - ESC, 28 - FS, 29 - GS, 30 - RS, 31 - US, 32 - SP
The basic coding in C# is:
public static string controlchar(string str) { string[] mapping = {"NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT" }; var cipher = ""; foreach (char ch in str) { if (ch >= '0' && ch <= '9') cipher = cipher + mapping[(int)ch - (int)'0']; else cipher = cipher + ch; } return (cipher); }
We can improve this by looking for two character values first:
public static string controlchar(string str) { string[] mapping = { "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF","VT","FF","CR","SO","SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM", "SUB","ESC","FS","GS","RS","US","SP"}; for (int i = mapping.Length-1; i>=0;i--) { str = str.Replace(Convert.ToString(i), mapping[i]); } return (str); }