Попытался понять, как генерируются E-Nonce, E-S1 и E-S2 в роутерах Tenda с прошивками на базе eCos. Видно, что для генерации используется функция generate_random:
https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/txpkt.c#L2793
https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/txpkt.c#L2618
https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/txpkt.c#L2650
Она реализована здесь:
https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/utils.c#L3605
Видно, что в случае, если код собирается для eCos, сначала в буфер data записываются псевдослучайные байты, полученные генератором из стандартной библиотеки (generate_random2), но затем к ним подмешивается энтропия из какого-то встроенного пула (https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/utils.c#L3631) и из генератора OpenSSL (https://github.com/drygdryg/Tenda-AC/blob/master/rtk_trunk/ecos-work/AP/wsc/src/utils.c#L3655).
Я попытался собрать этот генератор, но пока что ничего не выходит: не могу слинковать с OpenSSL.
@VasiliyP, посмотрите по свободе, пожалуйста.