There's enough code language being used in these messages that frequency analysis is not going to a major help (especially since it doesn't work well on very short texts anyways).
Actually, with that particular message, ~~frequency analysis~~ incidence of coincidence will help immensely, to the point of making it easy to solve.
With a modern block cipher, a partial key doesn't help. If you have 120 bits of a 128 bit AES key or whatever, decrypting the cipher text with your partial key will give pure noise. Even if you flip just one random bit in the key, the decrypt will be indistinguishable from complete randomness. Not so with Enigma; if you have parts of the key correct, parts of the rotor settings correct, parts of the wheel selection correct, patterns in the plaintext will show up as patterns in the ciphertext. The more of the key you have, the more those patterns will show up when you run the decryption routine against the ciphertext.
Natural language has a quirk where letters are more likely to be repeated. If you calculate the percentage of letters that are repeated, this gives you the incidence of coincidence. Incidence of coincidence is preserved by a partial Enigma key. So in that particular plaintext, all those repeated UUUs, those repeated NN, those XX and TT, those will light up like quasars.
Incidence of coincidence analysis should just tell you outright what all of the rotor settings are. From then you'll need someone familiar with German and the code language to be able to figure out the plugboard settings, but that's not as difficult as you might think.
Well the triple U (not sure why they use that) and the spelling of the letters is simple enough to check for that I guess.
From what I can gather this says something like:
To U4701 Sync message, Lubeck base, From commander 4th U-boat fleet, go with U4702 U4703 to Flender Shipyard Lubeck, more to follow
It's less gibberish than it looks like at first. They really shot themselves in the foot by not having numbers on the enigma system, this would have really made messages much shorter because they had to write them all out.
There's so much specific jargon in there that would make it really easy to detect a correct message IMO. Just make a simple list of very common words and tally up.
Indeed frequency analysis wouldn't work though but it's still pretty possible IMO.
I looked at multiple messages on that website and the pattern seems to be triple letters are for single letters and abbreviations. My theory is because if you get a letter wrong in a word and "possible" becomes "possifle" then it is still intelligible, but if "u five one four" means u-boat 514 and you get the U wrong, then it could end up as A514 and mean something airplane 514, so to be safe the letter u gets transmitted thrice.
I think your theory is correct. Back when messages where not checksummed, the French Navy used to do exactly this and sent abbreviations three times in a row. I'm quite certain that the French Navy was not the only one to do this since our communications techniques were heavily influenced by foreign nations like the US.
The machine works a bit weirdly, in that as you find some correct settings, your results converge towards the legible result. You can get 95% of the settings correct, and produce quite legible results, at which point you stop solving. So the correct result there might actually be any other three char combo like "ABC" or "UAK", but the analyst stopped investigating, because the rest of the message was reasonably legible.
It is a bit abbreviated. However it's not hard to add such common abbreviatiosn to a dictionary for attacking (plus the tripled letters should make it even easier).
There's enough German words in there, often appearing twice, that it would be very strange if this wasn't the decrypted data. If they could just read the message and understand it(and they had the German experts and general knowledge to do so), there's really no reason(and no time, the information is only useful for so long) to perform any kind of statistical analysis to confirm it's correct.
I was curious if GPT could handle this. I couldn't get GPT-3.5 to figure it out, but GPT-4 was very quick to propose an interpretation. It's far more confident than I could imagine being, even if I could speak German, but this sort of thing feels like an application that a large language model might excel in.
---
Given that the message is decrypted from German, it seems to be a mix of letters and numbers that are likely military terms, geographical locations, and orders. Here's the translated meaning:
"Vier fünf null eins Y nach R. Stützpunkt Lübeck. Chef Vier. Flotte Mit Vier fünf null zwei und Vier fünf null drei zur Flender Werft Lübeck gehen. Dort folgt Weiteres."
In English, this roughly translates to:
"Four five zero one Y to R. Base Lübeck. Chief Four. Fleet with Four five zero two and Four five zero three go to Flender shipyard Lübeck. More to follow there."
This appears to be a set of instructions for a fleet of ships, possibly submarines (given the context of WWII and German naval operations), directing them to a particular location (the Flender shipyard in Lübeck) and notifying that further instructions will be provided upon arrival. "Four five zero one", "Four five zero two", and "Four five zero three" are likely codes for specific ships or units in the fleet. "Y nach R" could be coordinates or specific route instructions.
> [An] U-4701, nachrichtlich [an] U-Stützpunkt Lübeck von Chef 4. U-Flottille: Mit U-4702 und U-4703 zur Flender Werft Lübeck gehen. Von dort folgt Weiteres.
> Translation (preliminary):
> [To] U-4701, for information [to] Submarine Base Lübeck from Chief of 4th Submarine Flotilla: With U-4702 and U-4703 go to Flender Dockyard at Lübeck. From there more follows.
There are about 2^67 different Enigma machine initial settings. The inverse probability of the appearance of a real seven letter German word (LUEBECK) twice in a random string of similar length to this message is a number that's pretty close to 2^67. So if you decrypted one ciphertext message with all the different incorrect settings you might expect to see one purported plaintext which isn't correct but which has two appearances of LUEBECK, or a similarly misleading occurence. Since there's also one correct plaintext, seeing LUEBECK twice already puts you at roughly 50/50 that it's the real message versus the most convincing wrong plaintext (if you had no prior knowledge of what the settings might be). The additional presence of even a few of the other recognizable German words (or common abbreviations such as triple letters and the shortened names for the numbers) makes it overwhelmingly likely that this is the correct plaintext. LUEBECK + LUEBECK + STUETZPUNKT in one message make the chance that it's not the real message of the order of winning a jackpot in state lottery two weeks running, even if the rest of the message was gibberish. In practice, much shorter pieces of plaintext than the double LUEBECK (like the presence of a single triple U, one spelled-out number, or highly abbreviated weather info) were used to validate guessed settings with a high degree of confidence.
That would be true if it actually did the decryption, but my point was, an LLM doesn't decrypt. It just has the encrypted string followed by the decrypted string in its training data and so it outputs something that's almost correct. (the numbers being wrong 4501, 4502, 4503 instead of 4701, 4702, 4703 - maybe some bugged training data, maybe hallucination).
I find it interesting that it pulled some kind of interpretation from the string. Far more than I would have. I asked it to translate the English data back into a similarly plaintext string and then asked a second instance to decode it and it came back with a similar, slightly distorted response.
The point is more to say that a language model is exactly the sort of thing that would be used to determine whether a given potentially decoded plaintext string is actually decoded, and given various anachronisms and shorthands our personal language models may not be adequate.
But a giant one that's been fed all sorts of data including examples of text of similar usage sounds actually like it might be exactly the tool for this problem.
Rather than raw letter frequency, more powerful is frequency of digraphs, and that surely does not appear random in that context, instead spiking with common digraphs such as IE, EI, UN, NU.
Also going for longer cribs such as NUL, EINS, ZWEI, DREI etc proves generally fruitful. There is also a story about the crib HEILHITLER toward the end of a message being particularly useful for code breakers but I don't know if that is genuine or contemporary disinformation to cover true code breaking capabilities, akin to the story of carrots being good for darksight[1] as cover for improved radar capability.
UUUVIRSIBENNULEINSYNACHRXUUUSTUETZPUNKTLUEBECKVVVCHEFVIERXUUUFLOTTXXMITUUUVIERSIBENNULZWOUNDUUUVIERSIBENNULDREIZURFLENDERWERFTLUEBECKGEHENXFONDORTFOLGTWEITERESX
There's enough code language being used in these messages that frequency analysis is not going to a major help (especially since it doesn't work well on very short texts anyways).