Polyalphabetic cipher solver
This solver attacks the general periodic polyalphabetic cipher: every key position has its own scrambled alphabet, with nothing assumed about how the alphabets were built. Vigenère, Beaufort, and all four Quagmires are special cases, so it can break a Quagmire without knowing any of its keywords. It needs a lot of text: at least two hundred letters for every key position, and three hundred for reliable results.
How it works
The key length is found first, using the index of coincidence: when the ciphertext is split into columns at the true period, each column was encrypted with a single alphabet, so its letter distribution becomes as uneven as ordinary English. The solver then seeds each column's alphabet by matching letter frequencies and hill climbs: it repeatedly tries swapping letter pairs within one column and keeps whichever swap makes the whole decryption read most like English, measured by four-letter sequence statistics. Several restarts from random alphabets guard against dead ends.
Because the attack is purely statistical, letters that appear only once or twice in a column can come out wrong: the solver may render "nuzzled" as "numbled" because the wrong reading is genuinely the statistically likelier one. The recovered alphabets are shown so you can correct stragglers by hand.