Dai un'occhiata a come viene calcolato l'HOTP (il TOTP è solo un caso speciale basato su un momento per ora). Sta usando HMAC basato sulla funzione di hash SHA1, SHA2 (o MD5 nel peggiore caso di sicurezza) di seed segreto e qualche contatore. Restituisce parte del risultato come PIN.
Come attaccante intercettando i PIN, stai cercando di scoprire un seme segreto di lunghezza sconosciuta.
Basato sulla definizione di funzione hash, non reversibile (a meno che non sia rotto). Non è possibile invertire semplicemente l'operazione anche se si dispone dell'intero hash. Ma hai da 6 a 8 cifre decimali. Inoltre, non si sa dove si inseriscono nella stringa decimale più lunga, anche questa cambia in base all'ultimo byte).
Quindi quali sono le opzioni che hai? Il modo più semplice sarebbe probabilmente quello di forzare la forza bruta su tutti i possibili valori per seme (ad esempio 32 B stringa esadecimale) e confrontarli con i dati intercettati. Questo potrebbe funzionare con il TOTP poiché è possibile conoscere anche l'ora in cui è stata generata (intervalli di tempo di 30 secondi). Ma nel HOTP non hai idea di cosa sia il contatore (a meno che tu non riesca a intercettare tutti i PIN.
Direi che la forza dell'OTP è la complessità dell'algoritmo e la semplicità d'uso. Non sto dando una prova del perché è difficile, ma spero che la risposta riassuma la tua domanda e le risposte perché non puoi semplicemente farlo.