В сети Интернет размещено довольно большое количество Online-калькуляторов для вычисления кодов разблокировки 3G USB модемов Huawei, но они предоставляют лишь сервис и внешнюю оболочку для разблокировки, но не отражают того по какому математическому алгоритму идет процесс.
Коды разблокировки NCK Code (NCK) (Unlock) и Flash Code (FLA) вычисляются на основе уникального 15-разрядного международного идентификатора мобильного оборудования IMEI номера (International Mobile Equipment Identity). IMEI номер хешируется посредством 128-битного алгоритма MD5 (Message Digest 5), при этом процесс хеширования проходит не в чистом виде, а с добавлением набора символов – «соли». «Соль» добавляется к IMEI номеру, что по сути, не позволяет вычислить алгоритм, при известных IMEI и коде разблокировки. Хакеры вычислили значение «соли» для кода разблокировки, это набор символов (слово) «hwe620datacard». Если проинспектировать бинарный файл прошивки для 3G USB модемов Huawei, то можно найти данный набор символов, причем для его получения это слово, также хеширется MD5, и используется только часть данного хеша.
Алгоритм вычисления кодов разблокировки 3G USB модемов Huawei
1) Вычисление хеша MD5 от «соли»:
md5 hash (hwe620datacard) = a32fe72c 5e8dd316726b0335 d5513ba0
Для соли используется только средняя часть 5e8dd316726b0335
2) Вычисление MD5 для IMEI номера 123456789123456:
md5 (1234567891234565e8dd316726b0335) = e3 ea 4d dc d3 38 1d 1c 06 7a 3b 9b e5 be 25 03
3) Вычисление NCK кода разблокировки:
e3 xor d3 xor 06 xor e5 = d3
ea xor 38 xor 7a xor be = 16
4d xor 1d xor 3b xor 25 = 4e
dc xor 1c xor 9b xor 03 = 58
d3164e58 and 1ffffff or 2000000 = 3164E58
hex2dec (3164E58) = 51793496 (NCK КОД РАЗБЛОКИРОВКИ)
По ссылкам, предоставленным ниже, можно скачать «исходники» калькуляторов на разных языках программирования: Delphi, PHP, Python, VB, VBto Builder, VBto Delphi, VBto JSNET, VBto VC++.