I don't believe this MS-408 to be a Medieval document. So bare with me as I provide the evidence and code for you would be Voynich decoders in Python. First of all Rich SantoColoma's presentation to the NSA is very convincing for Wilfrid as the Author.
https://youtu.be/qDTVEz6rXMQ
Here is my method for decoding the Voynich Manuscript:
Process I use to obtain Italian words
I'm working very hard right now to translate f1r from VMS vords to Morse to Italian no easy feat, yet it is producing a narrative.
I have made a few mistakes for the f2v and the eva is from Renz's site as it just represents the glyphs. I was using word and the formatting changed sorry about that. My cipher should expect erroneous errors in the beginning stages. I sort of rushed this out. But I will refine it.
You can find an update of my cipher at Voynichman:
http://voynichman.freeforums.net/thread/39/voynich-morse-code-stenography-cipher
Helllo
The process for “Voynich Morse code Steganography Cipher” goes like this:
1) The glyphs from a vord which are summed up to the associated Morse code in my cipher I produced as dots and dashes. For instance VMS vord (oe = 3 dots and 2 dashes so the Italian word is equal to, "ce -.-. ." which translates to "there, here or us" in English
2) Take the sum of the Morse code and look for meanings from Italian words. This is tricky, but you will only find a small amount of Italian words per vord unless their size is longer, but it’s better than a substitution cipher which I no longer believe it to be. Here is the code in python for translating Morse to any language. Yes the code has a built in anagram solver. Yes you need to cherry pick Italian words to the narrative albeit if a 1000 programmers and would decoders used this process some of the output would find the same, but I don't know the stats. As it stands it’s all about the input from the totals of dots and dashes. I don't know how many runs humans could do to get similar sentences. This is better suited for hard coded computers to run grammar checks in Italian for computations from Morse code arrangements using my python code along some enhanced upgraded code.
3) I envision the VMS to have for vords like "9" to be set like this in some code ( .- or - .) for the VMS to analysed, along with all the other vord from the full corpus of possibilities. That is equal to (a, or te). Then let the computer process the document and see if it outputs a high quality transcription to the Italian language.
Here is the code:
print("Author Thomas O'Neil, copyright ver 0.1,VMS Italian Steganography Morse Code to Anagrams, August 8, 2019")
Python program to implement Morse Code Translator
'''
VARIABLE KEY
'cipher' -> 'stores the morse translated form of the english string'
'decipher' -> 'stores the english translated form of the morse string'
'citext' -> 'stores morse code of a single character'
'i' -> 'keeps count of the spaces between morse characters'
'message' -> 'stores the string to be encoded or decoded'
'''
Dictionary representing the morse code chart
MORSE_CODE_DICT = { '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':'..---', '3':'...--',
'4':'....-', '5':'.....', '6':'-....',
'7':'--...', '8':'---..', '9':'----.',
'0':'-----', ', ':'--..--', '.':'.-.-.-',
'?':'..--..', '/':'-..-.', '-':'-....-',
'(':'-.--.', ')':'-.--.-',}
Function to encrypt the string
according to the morse code chart
def encrypt(message):
cipher = ''
for letter in message:
if letter != ' ':
# Looks up the dictionary and adds the
# correspponding morse code
# along with a space to separate
# morse codes for different characters
cipher += MORSE_CODE_DICT[letter] + ' '
else:
# 1 space indicates different characters
# and 2 indicates different words
cipher += ' '
return cipher
Function to decrypt the string
from morse to english
def decrypt(message):
# extra space added at the end to access the
# last morse code
message += ' '
decipher = ''
citext = ''
for letter in message:
# checks for space
if (letter != ' '):
# counter to keep track of space
i = 0
# storing morse code of a single character
citext += letter
# in case of space
else:
# if i = 1 that indicates a new character
i += 1
# if i = 2 that indicates a new word
if i == 2 :
# adding space to separate words
decipher += ' '
else:
# accessing the keys using their values (reverse of encryption)
decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT
.values()).index(citext)]
citext = ''
return decipher
def anagrams(word):
""" Generate all of the anagrams of a word. """
if len(word) < 2:
yield word
else:
for z, letter in enumerate(word):
if not letter in word[:z]: #avoid duplicating earlier words
for j in anagrams(word[:z]+word[z+1:]):
yield j+letter
Hard-coded driver function to run the program
while True:
def main():
message = input ("Type in Morse Code to output anagrams!: ")
result = decrypt(message)
print (result)
return result # return result
for i in anagrams(main()):
print (i)
Executes the main function
if name == 'main':
main()