В этой статье мы постараемся немного приоткрыть вам завесу тайны над алгоритмами разблокировки Huawei и Alcatel. Все знают, что устройства данных производителей разблокируются кодом, но как рассчитывается и откуда берется код разблокировки?
В нашей статье о причинах блокирования телефонов мы писали о том, что код разблокировки может быть функцией от IMEI телефона (и, таким образом, может быть просчитан) или же жёстко зашит во флеш-чипе телефона (и тогда его узнают только через внутреннюю базу данных производителя). Давайте рассмотрим модели модемов Huawei cо старым алгоритмом, о которых мы писали ранее - разблокировка модемов Huawei. Как мы и говорили, код разблокировки для них можно просчитать специальным калькулятором, но как же устроен этот калькулятор внутри?
Естественно, что производитель тщательно скрывает алгоритм генерации кодов раблокировки (в случае с модемами Huawei со старым алгоритмом, Old Algo, код разблокировки является функцией от IMEI, т.е. NCK = f(IMEI)), но в данном случае алгоритм уже успел утечь в сеть и в этой статье мы с вами его рассмотрим. Повторюсь, что все описанное относится только к моделям E150, E1550, E155, E156, E156G, E160, E160G, E161, E166, E169, E169G, E170, E172, E176, E180, E182E, E196, E226, E270, E271, E272, E510, E612, E618, E620, E630, E630+, E660, E660A, E800, E870, E880, EG162, EG162G, EG602, EG602G, Vodafone K2540, Vodafone K3515, Vodafone K3520, Vodafone K3565, Vodafone K3715 и др.
Исходный код алгоритма на PHP выглядит следующим образом:
Huawei Algo PHP Sourcefunction CalcOldNCK($imei,$secret = "hwe620datacard") { $magic = substr(md5($secret),8,16); $n = str_split(md5( $imei . $magic ),2); foreach ($n as &$v) { $v = hexdec($v); } $n1 = $n[0] ^ $n[4] ^ $n[8] ^ $n[12]; $n2 = $n[1] ^ $n[5] ^ $n[9] ^ $n[13]; $n3 = $n[2] ^ $n[6] ^ $n[10] ^ $n[14]; $n4 = $n[3] ^ $n[7] ^ $n[11] ^ $n[15]; $s = sprintf("%02s",dechex($n1)) . sprintf("%02s",dechex($n2)) . sprintf("%02s",dechex($n3)) . sprintf("%02s",dechex($n4)); $n = sprintf("%d", (hexdec($s) | 0x2000000) & 0x3FFFFFF); return $n; }
Проверяем полученный результат любым общедоступным калькулятором Huawei и убеждаемся в том, что мы получили правильный результат:
Как видно, посчитать код разблокировки Huawei по Old Algo не так уж и сложно ;)
В начале статьи я говорил, что мы расскажем и про алгоритм генерации кодов разблокировки для Alcatel. В приведенном архиве Alcatel Code Calc Delphi Source.rar вы найдете исходники на Delphi для следующих моделей телефонов Alcatel - V670, C700, C701, PLAYBOY, C707, C717, V770, C820, C825, MANDARINA DUCK, S215, S218, S319, S320, S321, S520, MISS SIXTY, S853. Авторство исходников принадлежит ulymar (atf team member). Код очень структурированный и разобраться в нем не составит особенных проблем даже для начинающих программистов. Форма скомпилированного приложения выглядит следующим образом: