Apple TimeCapsule/AirPort Extreme. Root доступ и побег из привязанного региона

Наверняка многие владельцы сетевых устройств Apple, которые читают эту статью, таких как TimeCapsule или Airport Extreme, рано или поздно задумывались почему у купленных в России устройств нет поддержки beamforming и максимальная ширина канала 40МГц? И как следствие максимальная скорость приема и передачи данных — 600 Мбит/с (вместо заявленных 1300 Мбит/с).

Если кто не знал или забыл, устройства выглядят так:

udih87ttd5pi2vramsduy2iw4dq.png
На сайте apple дан ответ: «AirPort Extreme разработан на основе предварительных технических требований к стандарту IEEE 802.11ac. Поддержка функций 802.11ac зависит от законодательных требований, существующих в конкретной стране; каналы с шириной спектра 80 МГц и технология формирования луча недоступны в Российской Федерации, на Украине, в Кувейте, Беларуси, Морокко, Азербайджане, Казахстане и Египте. Максимальная теоретическая скорость передачи данных составляет 600 Мбит/с; фактическая скорость будет ниже.»

Поэтому сегодня я расскажу Вам как сбежать из региона не меняя при этом само устройство.

Для этого нам потребуется python 2.7 (на mac OS X он уже предустановлен), утилита AirPyrt и 5 минут свободного времени.

Скачаем и установим AirPyrt.

Через терминал с правами root:

python setup.py install


Утилита AirPyrt использует протокол ACP для связи с устройствами Apple AirPort. Тот самый протокол, по которому iphone или mac увидит не настроенное устройство через утилиту AirPort.

Далее включим ssh на нашем устройстве:

python -m acp -t {ipv4-address} -p {password} --setprop dbug 0x3000
python -m acp -t {ipv4-address} -p {password} --reboot


После этого мы можем получить root доступ до устройства по ssh и изменить на нем абсолютно всё. Кстати роутер основан на NetBSD.

Подключаемся по ssh:

ssh root@{ipv4-address}


Далее нам необходимо будет заменить всего две вещи: код страны и SKU.

Для замены страны на USA:

acp -q syRe=0x00000000
acp static apple-sku=FCC


Список стран и коды (необходимо перевести в HEX):

«syRe.0» = «United States»;
«syRe.1» = «Canada»;
«syRe.2» = «Mexico»;
«syRe.3» = «Colombia»;
«syRe.4» = «Puerto Rico»;
«syRe.5» = «Brazil»;
«syRe.6» = «Chile»;
«syRe.7» = «Japan»;
«syRe.8» = «Austria»;
«syRe.9» = «Belgium»;
«syRe.10» = «Cyprus»;
«syRe.11» = «Czech Republic»;
«syRe.12» = «Denmark»;
«syRe.13» = «Estonia»;
«syRe.14» = «France»;
«syRe.15» = «Finland»;
«syRe.16» = «Germany»;
«syRe.17» = «Greece»;
«syRe.18» = «Hungary»;
«syRe.19» = «Iceland»;
«syRe.20» = «Italy»;
«syRe.21» = «Ireland»;
«syRe.22» = «Latvia»;
«syRe.23» = «Liechtenstein»;
«syRe.24» = «Lithuania»;
«syRe.25» = «Luxembourg»;
«syRe.26» = «Malta»;
«syRe.27» = «Netherlands»;
«syRe.28» = «Norway»;
«syRe.29» = «Poland»;
«syRe.30» = «Portugal»;
«syRe.31» = «Slovak Republic»;
«syRe.32» = «Slovenia»;
«syRe.33» = «Spain»;
«syRe.34» = «Sweden»;
«syRe.35» = «Switzerland»;
«syRe.36» = «United Kingdom»;
«syRe.37» = «Australia»;
«syRe.38» = «Hong Kong S.A. R., China»;
«syRe.39» = «New Zealand»;
«syRe.40» = «Singapore»;
«syRe.41» = «Philippines»;
«syRe.42» = «China»;
«syRe.43» = «Malaysia»;
«syRe.44» = «Taiwan»;
«syRe.45» = «South Korea»;
«syRe.46» = «Thailand»;
«syRe.47» = «Argentina»;
«syRe.48» = «Venezuela»;
«syRe.49» = «Russia»;
«syRe.50» = «United States»;
«syRe.51» = «Canada»;
«syRe.52» = «Bulgaria»;
«syRe.53» = «Romania»;
«syRe.54» = «India»;
«syRe.55» = «Vietnam»;
«syRe.56» = «Sri Lanka»;
«syRe.57» = «Brunei»;
«syRe.58» = «Pakistan»;
«syRe.59» = «Nepal»;
«syRe.60» = «Bangladesh»;
«syRe.61» = «Peru»;
«syRe.62» = «Afghanistan»;
«syRe.63» = «Albania»;
«syRe.64» = «Algeria»;
«syRe.65» = «American Samoa»;
«syRe.66» = «Andorra»;
«syRe.67» = «Angola»;
«syRe.68» = «Anguilla»;
«syRe.69» = «Antarctica»;
«syRe.70» = «Antigua And Barbuda»;
«syRe.71» = «Armenia»;
«syRe.72» = «Aruba»;
«syRe.73» = «Azerbaijan»;
«syRe.74» = «Bahamas»;
«syRe.75» = «Bahrain»;
«syRe.76» = «Barbados»;
«syRe.77» = «Belarus»;
«syRe.78» = «Belize»;
«syRe.79» = «Benin»;
«syRe.80» = «Bermuda»;
«syRe.81» = «Bhutan»;
«syRe.82» = «Bolivia»;
«syRe.83» = «Bosnia Herzegovina»;
«syRe.84» = «Botswana»;
«syRe.85» = «Bouvet Island»;
«syRe.86» = «British Indian Ocean Territory»;
«syRe.87» = «Burkina Faso»;
«syRe.88» = «Burundi»;
«syRe.89» = «Cambodia»;
«syRe.90» = «Cameroon»;
«syRe.91» = «Cape Verde»;
«syRe.92» = «Cayman Islands»;
«syRe.93» = «Central African Republic»;
«syRe.94» = «Chad»;
«syRe.95» = «Christmas Island»;
«syRe.96» = «Cocos Islands»;
«syRe.97» = «Comoros»;
«syRe.98» = «Congo»;
«syRe.99» = «Cook Islands»;
«syRe.100» = «Costa Rica»;
«syRe.101» = «Ivory Coast»;
«syRe.102» = «Croatia»;
«syRe.103» = «Djibouti»;
«syRe.104» = «Dominica»;
«syRe.105» = «Dominican Republic»;
«syRe.106» = «East Timor»;
«syRe.107» = «Ecuador»;
«syRe.108» = «Egypt»;
«syRe.109» = «El Salvador»;
«syRe.110» = «Equatorial Guinea»;
«syRe.111» = «Eritrea»;
«syRe.112» = «Ethiopia»;
«syRe.113» = «Falkland Islands»; /* A.K. A. (Malvinas) */
«syRe.114» = «Faeroe Islands»;
«syRe.115» = «Fiji»;
«syRe.116» = «French Guiana»;
«syRe.117» = «French Polynesia»;
«syRe.118» = «French Southern Territories»;
«syRe.119» = «Gabon»;
«syRe.120» = «Gambia»;
«syRe.121» = «Georgia»;
«syRe.122» = «Ghana»;
«syRe.123» = «Gibraltar»;
«syRe.124» = «Greenland»;
«syRe.125» = «Grenada»;
«syRe.126» = «Guadeloupe»;
«syRe.127» = «Guam»;
«syRe.128» = «Guatemala»;
«syRe.129» = «Guinea»;
«syRe.130» = «Guinea Bissau»;
«syRe.131» = «Guyana»;
«syRe.132» = «Haiti»;
«syRe.133» = «Honduras»;
«syRe.134» = «Indonesia»;
«syRe.135» = «Iran»;
«syRe.136» = «Iraq»;
«syRe.137» = «Israel»;
«syRe.138» = «Jamaica»;
«syRe.139» = «Jordan»;
«syRe.140» = «Kazakhstan»;
«syRe.141» = «Kenya»;
«syRe.142» = «North Korea»;
«syRe.143» = «Kuwait»;
«syRe.144» = «Lebanon»;
«syRe.145» = «Libya»;
«syRe.146» = «Macau»;
«syRe.147» = «Macedonia»;
«syRe.148» = «Monaco»;
«syRe.149» = «Morocco»;
«syRe.150» = «Nicaragua»;
«syRe.151» = «Oman»;
«syRe.152» = «Qatar»;
«syRe.153» = «Saudi Arabia»;
«syRe.154» = «South Africa»;
«syRe.155» = «Syria»;
«syRe.156» = «Trinidad And Tobago»;
«syRe.157» = «Tunisia»;
«syRe.158» = «Turkey»;
«syRe.159» = «United Arab Emirates»;
«syRe.160» = «Ukraine»;
«syRe.161» = «Uruguay»;
«syRe.162» = «Uzbekistan»;
«syRe.163» = «Yemen»;
«syRe.164» = «Zimbabwe»;


Список SKU:

FCC
JAPAN
ETSI
APAC
ROW
FCC-DFS
KOREA
RUSSIA
SAM


После этого отключаемся от ssh и перезагружаем устройство:

python -m acp -t {ipv4-address} -p {password} --reboot


Для отключения ssh:

python -m acp -t {ipv4-address} -p {password} --setprop dbug 0x0000
python -m acp -t {ipv4-address} -p {password} --reboot


После «переезда» в США имеем:

dww_4vcf3luwnv20mtqfd7iu8ga.jpeg

© Habrahabr.ru