Observe cómo se calcula el HOTP (TOTP es solo un caso especial basado en un tiempo por ahora). Está utilizando HMAC basado en la función hash, ya sea SHA1, SHA2 (o MD5 en el peor de los casos de seguridad) de semilla secreta y algún contador. Está devolviendo parte del resultado como un PIN.
Como un atacado que intercepta los PIN, está intentando descubrir una semilla secreta de longitud desconocida.
Basado en la definición de función hash, no es reversible (a menos que esté roto). No puedes simplemente revertir la operación incluso si tuvieras todo el hash. Pero tienes de 6 a 8 números decimales. Tampoco sabe dónde encajan en una cadena decimal más larga (esto también está cambiando según el último byte).
Entonces, ¿cuáles son las opciones que tiene? La forma más fácil probablemente sería forzar con fuerza bruta todos los valores posibles para la semilla (por ejemplo, una cadena hexadecimal de 32 B) y compararlos con los datos interceptados. Esto podría funcionar con el TOTP, ya que también puede saber cuándo se generó (marcos de tiempo de 30 segundos). Pero en el HOTP, no tienes idea de lo que es el contador (a menos que puedas interceptar todos los PIN.
Yo diría que la fortaleza de la OTP es la complejidad del algoritmo y la simplicidad de uso. No estoy dando una prueba de por qué es difícil, pero espero que la respuesta haya resumido su pregunta y que no pueda hacerlo simplemente.