What prevents hackers from guessing seed phrases? If seed phrases are generated from a finite list of mandatory words, what prevents someone from randomly generating seed phrases that might work?
What prevents hackers from guessing seed phrases?

Nothing.

The problem for the guesser is that 204812 is a very big number (204824 more so).
It is roughly 5,000,000,000,000,000,000,000,000,000,000,000,000,000
Let's say a hundred million different people have Bitcoin wallets and have money.
Lets say a million attackers each guess a million phrases a second.
How long is the average time for the guessers to strike lucky?
Wouldn't that be something like 50,000,000,000,000,000,000 seconds? That's about 1,726,445,291,328 years and the Earth is only 4,543,000,000 years old so that's  380 times the age of the Earth.
Of course, the first guesser might strike lucky with their first guess. But the odds are hugely against them.
Note that the above is not intended to be accurate, just to give a very rough idea of the scales of numbers involved. For example, I haven't looked at how many seed-phrases result in the same seed-number or how many seed-numbers can't be reached from any seed-phrase, I just used a 1:1 correspondence - which is likely wrong.