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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

1 | ||||||||||||||||||||||||||

2 | Snerx's Random & Dynamic Charset Noise Cypher - Snyph | |||||||||||||||||||||||||

3 | ||||||||||||||||||||||||||

4 | ||||||||||||||||||||||||||

5 | ||||||||||||||||||||||||||

6 | ||||||||||||||||||||||||||

7 | Set 1 | Set 2 | Set 3 | At an output of 1-1-12345 the first 1 represents Set 1 or the first column, the second 1 represents Sub 1 or the first row. | P.1 | |||||||||||||||||||||

8 | Sub 1 | A | P | B | Q | C | R | The next five numbers correlate to to which character in the 1-1 box is to be selected. | ||||||||||||||||||

9 | 1 | = | 2 | ( | 3 | ) | Each of the last five numbers is respective to each of the five Sub rows. | |||||||||||||||||||

10 | Sub 2 | D | S | E | T | F | U | Since we know only the first sub is being used, we only need to look at the first of the last five numbers. | ||||||||||||||||||

11 | 4 | [ | 5 | ] | 6 | { | Four of the last five numbers are always extra and serve as noise to try to obfuscate the message. | |||||||||||||||||||

12 | Sub 3 | G | V | H | W | I | X | So in a 1-1 sequence, we know only the first 1 of the last five numbers (-12345) is used. | ||||||||||||||||||

13 | 7 | % | 8 | * | 9 | } | Since the number of the last five we need is 1, that means it's the first character in the box, which we see is 'A'. | |||||||||||||||||||

14 | Sub 4 | J | Y | K | Z | L | . | The number of the box used can only ever be 1, 2 ,3, or 4, so why do we have 5 at the end you might ask? | ||||||||||||||||||

15 | 0 | " | + | - | / | \ | Again, since we know the last four digits are not used, they can be any number, randomnly generated, as they serve only as noise. | |||||||||||||||||||

16 | Sub 5 | M | , | N | ? | O | ! | So 'A' here can also be represented as 1116969 or 1114242, it doesn't matter as the relavent information is known. | ||||||||||||||||||

17 | : | ; | ' | case-shift | newline | space | This cannot be brute forced with typical methods because there's a 2-dimensional reference that dictates character assignment. | |||||||||||||||||||

18 | Granted if this 2-dimensional reference was known, it could then be easily decrypted, which is why there are three more factors. | |||||||||||||||||||||||||

19 | Dynamic Charset Default | P.2 | ||||||||||||||||||||||||

20 | 01 | 02 | 03 | 04 | 05 | 06 | The first is the dynamic charset, which is just a character replacer. | |||||||||||||||||||

21 | 07 | 08 | 09 | 10 | 11 | 12 | If on the grid shown each character is represented as 01,02,03,etc from right to left, top to bottom, then we have a default charset. | |||||||||||||||||||

22 | 13 | 14 | 15 | 16 | 17 | 18 | The start of the message would then be a header configuration that looked like, "0102030405, etcetera" all the way to 60. | |||||||||||||||||||

23 | 19 | 20 | 21 | 22 | 23 | 24 | This informs the program that it's using the default set, but a header that read, "02010304...60" would mean 'A' and 'P' were switched. | |||||||||||||||||||

24 | 25 | 26 | 27 | 28 | 29 | 30 | So in this way it's like you were saying about the Enigma machines the Germans used, as you can switch characters around. | |||||||||||||||||||

25 | 31 | 32 | 33 | 34 | 35 | 36 | If they knew the initial cypher tied to the 2-dimensional grid, they could easily brute force through the character randomizer here. | |||||||||||||||||||

26 | 37 | 38 | 39 | 40 | 41 | 42 | So this dynamic charset only serves to throw people off from being able to figure out the initial cypher. | |||||||||||||||||||

27 | 43 | 44 | 45 | 46 | 47 | 48 | It doesn't prevent them from brute-forcing it afterwards. | |||||||||||||||||||

28 | 49 | 50 | 51 | 52 | 53 | 54 | An additional noise value that can be added is a random assertion of the numbers 61 to 99 at the end of the header message. | |||||||||||||||||||

29 | 55 | 56 | 57 | 58 | 59 | 60 | This could make it seem like the cypher actually uses up to 99 base inputs instead of 60. | |||||||||||||||||||

30 | ||||||||||||||||||||||||||

31 | The second is the noise filter. | P.3 | ||||||||||||||||||||||||

32 | Inital Input | Zalgo | HTML output in iso-8859-1 encoding | I found this out while playing between the Zalgo text generator and our Doge Translator. | ||||||||||||||||||||||

33 | "Noise" | N̜̤̖̒ͥ͛̿̔̈́͞͠o̊̂͑̓ͯ̑̄͏̱̟͉̦̭i̘͉̫ͮͣ̕͞s̼̰̏̈̇̽̈́̈e̖̹͗ͭͯ̐͒̂ͦ̚ | NÌ’Í¥Í›Ì¿Ì”Í„ÍžÍ ÌœÌ¤Ì–oÌŠÌ‚Í‘ÍƒÍ¯Ì‘Ì„ÍÌ±ÌŸÍ‰Ì¦ÌiÍ®Í£Ì•ÍžÌ˜Í‰Ì«sÌÌˆÌ‡Ì½Í„ÌˆÌ¼Ì°eÍ—ÍÌšÍ¯ÌÍ’Ì‚Í¦Ì–Ì¹ | I generated zalgo text (http://www.eeemo.net/) and put it on an html page on my site and it spit back what you see on the left there. | ||||||||||||||||||||||

34 | I thought it was weird and ran the html output through our Doge Translator which resulted in what you see below it. | |||||||||||||||||||||||||

35 | The Doge Translator filtered everything like no problem and picked out all the latin alphabet characters, replacing them like it should. | |||||||||||||||||||||||||

36 | I figure if we can get our program to easily filter through noise like this, then a message can be obfuscated far beyond bruteforcing. | |||||||||||||||||||||||||

37 | You might say that if this step is known, it could be easily bruteforced, but when the noise is also numbers... | |||||||||||||||||||||||||

38 | HTML output ran through Doge Translator | You get an output that looks like, "1832489357917837842381741927583" for a single character. | ||||||||||||||||||||||||

39 | Doge Ì’Í¥Í›Ì¿Ì”Í„ÍžÍ... ÌœÌ¤Ì–shiba ÌŠÌ‚Í‘ÍƒÍ¯Ì‘Ì„ÍÌ±ÌŸÍ‰Ì¦Ìlick Í®Í£Ì•ÍžÌ˜Í‰Ì«redrocket ÌÌˆÌ‡Ì½Í„ÌˆÌ¼Ì°growl Í—ÍÌšÍ¯ÌÍ’Ì‚Í¦Ì–Ì¹ | So you can't just filter out non-numeral characters and decrypt the message just the same anymore. | ||||||||||||||||||||||||

40 | You'd have to know which numbers to use to correlate back to the initial 2-D grid, so a frequency variable is now involved. | |||||||||||||||||||||||||

41 | So if the frequency variable is set to 3, then it picks every third number to use for the initial 7 that correlate to the grid. | |||||||||||||||||||||||||

42 | The frequency var can also be two numbers, 8-5, which would mean you skip the first eight digits and then take every fifth. | |||||||||||||||||||||||||

43 | Or the freq var can be something like, 18395, which would mean you use the first, then eighth, then third, etc number. | |||||||||||||||||||||||||

44 | ||||||||||||||||||||||||||

45 | P.4 | |||||||||||||||||||||||||

46 | Default Charset Input | Alright, so here we see what the output from the software would look like with semicolons for delimiters. | ||||||||||||||||||||||||

47 | 010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | On the left is the default header that dictates what character set we're using when mapped onto the 2-D grid. | ||||||||||||||||||||||||

48 | Default Cypher Output Format (these are arbitrary chars) | There are three arbitrary characters chosen with randomnly assigned noise (which I just randomnly filled in). | ||||||||||||||||||||||||

49 | 1112345;2322322;3333333; | By default there would be no additional noise, the noise filter would be an option, as a variable input would be needed. | ||||||||||||||||||||||||

50 | Default Noise Filter | So then we have the dynamic charset header, and as you see there, it starts with a number outside our 60 character range. | ||||||||||||||||||||||||

51 | none | What this means is all numbers not between 01 and 60 get ignored and the list is read as 36, 29, 16, etc. (or 362916...) | ||||||||||||||||||||||||

52 | Dynamic Charset Input | Just to reiterate, this dynamic charset input would mean 01 is replaced with 36, 02 is replaced with 29, etcetera. | ||||||||||||||||||||||||

53 | 633629901693343199286952267565600174401917761023413983119792507855718720220561146451097004332737079835727786218106954324541325031215968842594767461838736280328958088256798566486884944457539149300245 | The dynamic charset output is not a correct output given the dynamic charset input shown here, I just showed that it would look diff. | ||||||||||||||||||||||||

54 | Dynamic Cypher Output (this is not the same arbitrary chars from the default) | The noise filter is where it gets intereseting. | ||||||||||||||||||||||||

55 | 3485409;2345891;9999999; | The freq variable here would be 2, so the filter added a second character after each number and then extra numbers to the end. | ||||||||||||||||||||||||

56 | Single-character-addition Noise Filter Output (this does follow from above) | By putting in a freq var of 2 when reading this text, the program should know to read the first number and then every alternate after. | ||||||||||||||||||||||||

57 | 36428458490192777;2336485381961877777;92969994919095777777; | Without delimiters (which it should have no problem reading), this would appear as a single long string of numbers. | ||||||||||||||||||||||||

58 | ||||||||||||||||||||||||||

59 | ||||||||||||||||||||||||||

60 | ||||||||||||||||||||||||||

61 | ||||||||||||||||||||||||||

62 | ||||||||||||||||||||||||||

63 | ||||||||||||||||||||||||||

64 | ||||||||||||||||||||||||||

65 | ||||||||||||||||||||||||||

66 | ||||||||||||||||||||||||||

67 | ||||||||||||||||||||||||||

68 | ||||||||||||||||||||||||||

69 | ||||||||||||||||||||||||||

70 | ||||||||||||||||||||||||||

71 | ||||||||||||||||||||||||||

72 | ||||||||||||||||||||||||||

73 | ||||||||||||||||||||||||||

74 | ||||||||||||||||||||||||||

75 | ||||||||||||||||||||||||||

76 | ||||||||||||||||||||||||||

77 | ||||||||||||||||||||||||||

78 | ||||||||||||||||||||||||||

79 | ||||||||||||||||||||||||||

80 | ||||||||||||||||||||||||||

81 | ||||||||||||||||||||||||||

82 | ||||||||||||||||||||||||||

83 | ||||||||||||||||||||||||||

84 | ||||||||||||||||||||||||||

85 | ||||||||||||||||||||||||||

86 | ||||||||||||||||||||||||||

87 | ||||||||||||||||||||||||||

88 | ||||||||||||||||||||||||||

89 | ||||||||||||||||||||||||||

90 | ||||||||||||||||||||||||||

91 | ||||||||||||||||||||||||||

92 | ||||||||||||||||||||||||||

93 | ||||||||||||||||||||||||||

94 | ||||||||||||||||||||||||||

95 | ||||||||||||||||||||||||||

96 | ||||||||||||||||||||||||||

97 | ||||||||||||||||||||||||||

98 | ||||||||||||||||||||||||||

99 | ||||||||||||||||||||||||||

100 |

Loading...

Main menu