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

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

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



На сайте 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

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



UPDATE:
Как верно заметил smarty999, на некоторых прошивках для отключения ssh необходимо в сессии ssh выполнить
acp remove dbug
reboot

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 75

    0
    А почему в Keenetic есть 80Mhz и Beamforming? Они не соблюдают регуляторные требования? Или из-за того, что
    AirPort Extreme разработан на основе предварительных технических требований к стандарту IEEE 802.11ac
      +5
      Я так понимаю, что на момент выхода железки, с регулятором не договорились по поводу ширины канала на 5ГГц. А уже после никто переделывать не стал.
      Сейчас в постановлениях ГРЧЦ по частотному диапазону 5 Ггц указано, что ширина 80 и 160 Мгц доступна в России.
        0
        Спасибо большое. Интересно, чем им Beamforming не понравился, или он не работает на 40Mhz? Я в радиотехнике полный дилетант, но если для работы Beamforming надо две антенны, каждая из которых дает полосу в 40Mhz, то все понятно.
          +2
          Нашел специально для Вас в Консультанте изменения в приказе Минсвязи от 22.04.2015 N 129.
          На момент выхода первого роутера Apple с IEEE 802.11ac в 2013 году не был полностью описан стандарт в нашем законодательстве. И как следствие, не могли использовать технологию beamforming, т.к. это описано как «дополнительные технологии».
            0
            Схожая ситуация (когда прошивка устройства отключает некоторые фичи, если на момент выпуска прошивки они не разрешены в конкретном регионе) сейчас с беспроводными адаптерами Inrel, отчего у некоторых бомбит.
      0

      ещё бы на эти железки openwrt какой-нибудь нарезать, а то мощность большая, но использовать например для роутинга/опенвпн не представляется возможным

        +1
        После того, как получен root до устройства, можно установить и openvpn и всё, что угодно
        +1
        AirPyrt зависит от заброшенного и дырявого pycrypto.
          0

          Тут конечно не поспоришь, плюсанул.
          Но в данном случае необходимо использовать только для включения и отключения ssh. Так что не страшно

          –1
          Не ставится на macOS Catalina ((
            0
            Все ставится, я делал с каталины.
            сделайте
            sudo su
            и устанавливайте из под root
              +1
              Никогда не ставьте ничего от sudo — это дорога в ад. Делать надо так:
              cd ~
              git clone https://github.com/x56/airpyrt-tools
              mkvirtualenv -p python2.7 -a `pwd`/airpyrt-tools airpyrt-tools
              cd ~/airpyrt-tools
              python setup.py install
              
              python -m acp -t {ipv4-address} -p {password} --setprop dbug 0x3000
              etc...
              


              Как поставить mkvirtualenv — кажется описано тут, но это неточно

              Потом не забудьте
              rm -r ~/.virtualenvs/airpyrt-tools ~/airpyrt-tools
              
                0
                Я ставил с ключом --user

                python setup.py install --user
              0
              Я именно так и делал. Вот что получилось

              Заголовок спойлера
              sh-3.2# python setup.py install
              running install
              running bdist_egg
              running egg_info
              writing requirements to acp.egg-info/requires.txt
              writing acp.egg-info/PKG-INFO
              writing top-level names to acp.egg-info/top_level.txt
              writing dependency_links to acp.egg-info/dependency_links.txt
              writing entry points to acp.egg-info/entry_points.txt
              reading manifest file 'acp.egg-info/SOURCES.txt'
              writing manifest file 'acp.egg-info/SOURCES.txt'
              installing library code to build/bdist.macosx-10.15-x86_64/egg
              running install_lib
              running build_py
              creating build/bdist.macosx-10.15-x86_64/egg
              creating build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/misc.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/exception.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/encryption.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/property.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/client.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/cflbinary.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/session.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/__init__.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/message.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/basebinary.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/cli.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/__main__.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              copying build/lib/acp/keystream.py -> build/bdist.macosx-10.15-x86_64/egg/acp
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/misc.py to misc.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/exception.py to exception.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/encryption.py to encryption.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/property.py to property.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/client.py to client.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/cflbinary.py to cflbinary.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/session.py to session.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/__init__.py to __init__.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/message.py to message.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/basebinary.py to basebinary.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/cli.py to cli.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/__main__.py to __main__.pyc
              byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/keystream.py to keystream.pyc
              creating build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/PKG-INFO -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/SOURCES.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/dependency_links.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/entry_points.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/requires.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              copying acp.egg-info/top_level.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
              zip_safe flag not set; analyzing archive contents…
              creating 'dist/acp-1.0-py2.7.egg' and adding 'build/bdist.macosx-10.15-x86_64/egg' to it
              removing 'build/bdist.macosx-10.15-x86_64/egg' (and everything under it)
              Processing acp-1.0-py2.7.egg
              Removing /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
              Copying acp-1.0-py2.7.egg to /Library/Python/2.7/site-packages
              acp 1.0 is already the active version in easy-install.pth
              Installing acp script to /usr/local/bin

              Installed /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
              Processing dependencies for acp==1.0
              Searching for pycrypto
              Reading pypi.org/simple/pycrypto
              Downloading files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz#sha256=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
              Best match: pycrypto 2.6.1
              Processing pycrypto-2.6.1.tar.gz
              Writing /tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.cfg
              Running pycrypto-2.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vwNGHR/pycrypto-2.6.1/egg-dist-tmp-wFjFUV
              configure: error: in `/private/tmp/easy_install-vwNGHR/pycrypto-2.6.1':
              configure: error: C compiler cannot create executables
              See `config.log' for more details
              Traceback (most recent call last):
              File «setup.py», line 14, in «pycrypto»,
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/__init__.py", line 145, in setup
              return distutils.core.setup(**attrs)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
              dist.run_commands()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
              self.run_command(cmd)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
              cmd_obj.run()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install.py", line 67, in run
              self.do_egg_install()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install.py", line 117, in do_egg_install
              cmd.run()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 418, in run
              self.easy_install(spec, not self.no_deps)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 660, in easy_install
              return self.install_item(None, spec, tmpdir, deps, True)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 707, in install_item
              self.process_distribution(spec, dist, deps)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 752, in process_distribution
              [requirement], self.local_index, self.easy_install
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 782, in resolve
              replace_conflicting=replace_conflicting
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1065, in best_match
              return self.obtain(req, installer)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1077, in obtain
              return installer(requirement)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 679, in easy_install
              return self.install_item(spec, dist.location, tmpdir, deps)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 705, in install_item
              dists = self.install_eggs(spec, download, tmpdir)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 890, in install_eggs
              return self.build_and_install(setup_script, setup_base)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1158, in build_and_install
              self.run_setup(setup_script, setup_base, args)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1144, in run_setup
              run_setup(setup_script, args)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 253, in run_setup
              raise
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
              self.gen.throw(type, value, traceback)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 195, in setup_context
              yield
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
              self.gen.throw(type, value, traceback)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 166, in save_modules
              saved_exc.resume()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 141, in resume
              six.reraise(type, exc, self._tb)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 154, in save_modules
              yield saved
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 195, in setup_context
              yield
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 250, in run_setup
              _execfile(setup_script, ns)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 45, in _execfile
              exec(code, globals, locals)
              File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 456, in
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
              dist.run_commands()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
              self.run_command(cmd)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
              cmd_obj.run()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 172, in run
              cmd = self.call_command('install_lib', warn_dir=0)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 158, in call_command
              self.run_command(cmdname)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
              self.distribution.run_command(command)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
              cmd_obj.run()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install_lib.py", line 11, in run
              self.build()
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install_lib.py", line 111, in build
              self.run_command('build_ext')
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
              self.distribution.run_command(command)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
              cmd_obj.run()
              File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 251, in run

              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
              self.distribution.run_command(command)
              File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
              cmd_obj.run()
              File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 278, in run

              RuntimeError: autoconf error
              sh-3.2#
                +2
                Поставьте/обновите xCode и запустите его один раз для того, чтобы принять лицензионное соглашение. При установке xCode должно быть отмечено «Command line tools». После этого компилятор C++ сможет собрать библиотеку pycrypto.
                  0
                  Спасибо, все получилось
                  0
                  КАК у вас вообще получается запустить КАК?!?!?

                  sh-3.2# python setup.py install
                  /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'setup.py': [Errno 2] No such file or directory
                  sh-3.2# python /Users/maksim/Downloads/airpyrt-tools-master/setup.py install
                  running install
                  running bdist_egg
                  running egg_info
                  writing requirements to acp.egg-info/requires.txt
                  writing acp.egg-info/PKG-INFO
                  writing top-level names to acp.egg-info/top_level.txt
                  writing dependency_links to acp.egg-info/dependency_links.txt
                  writing entry points to acp.egg-info/entry_points.txt
                  error: package directory 'acp' does not exist
                    0
                    С помощью друга разобрались и всё получилось, спасибо!

                    НО

                    Недосказали, для таких зелёных как я, что для успешной установки надо в терминале перейти в папку — эта для вас мелочь оказалась критичной.
                  0

                  А как штатными средствами посмотреть регион / доступные возможности? С платформ iOS / Mac OS.

                    0
                    Запустите программу AirPort и посмотрите. Программа доступна для iOS и mac OS
                      0

                      Может я настолько невнимательный, но я так и не нашёл там этих сведений.

                        0
                        Открываете AirPort, нажимаете на свое устройство, далее «править», «дополнительно», «настройки wi-fi», «Страна».
                        Если у Вас страна из списка из моей статьи, то beamforming и 80MHz полоса для Вас недоступны, можно переделывать, например как я, на США.
                          0

                          Обратил внимание, что это шаманство из коробки работает в старой виндовой версии airport utilities. Т.е. там можно просто выбрать страну и соответствующие опции вручную.

                            0
                            Версию Apple Airport Utility, в которой такое возможно, озвучьте пожалуйста.
                              0
                              Apple никогда не давала менять SKU. У человека скорее всего сразу была американская airport
                        0
                        Благодарю, всё получилось =)
                        +1
                        Чтобы на маке увидеть инфу как на скриншоте в конце статьи, нужно кликнуть по иконке соединения в строке меню с зажатым Option/Alt.
                        0
                        В теории можно и в Airport Express MC414 сделать usb порт полноценным?
                          0
                          Ребят, может кто-нибудь запилить видеоинструкцию, а то не особо понятно, что к чему…
                            +2
                            Ребят, при всем уважении, это же не пикабу! Какие еще видеоинструкции?!
                              0

                              Хотя бы просто запись экрана сделать, на маке ведь это легко делается. Очень актуальная тема здесь рассматривается, много людей, включая меня, будут благодарны. Ну и на Пикабу можно выложить)

                                0

                                Вы лучше напишите, с каким конкретно шагом вы не справились?

                                  0
                                  С включением ssh. Я конечно понимаю, что здесь сидят гуру, но мне как нубу непонятно ничего
                                  Выдача терминала
                                  INFO:connecting to host {192.168.1.1}:5009
                                  Traceback (most recent call last):
                                  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
                                  "__main__", fname, loader, pkg_name)
                                  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
                                  exec code in run_globals
                                  File "/Users/marina/Downloads/airpyrt-tools-master/acp/__main__.py", line 2, in cli.main()
                                  File «acp/cli.py», line 228, in main
                                  c.connect()
                                  File «acp/client.py», line 21, in connect
                                  self.session.connect()
                                  File «acp/session.py», line 30, in connect
                                  self.sock.connect((self.target, self.port))
                                  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
                                  return getattr(self._sock,name)(*args)
                                  socket.gaierror: [Errno 8] nodename nor servname provided, or not known
                                  • UFO just landed and posted this here
                                      0
                                      нет. Жду помощи. Что-то мне подсказывает, что нужно будет установить Xcode, одной утилиты для терминала недостаточно. Попробую позже. У Вас Time Capsule 2Tb, 7.9.1 прошивка?
                                      • UFO just landed and posted this here
                                    0
                                    на Catalina также
                                    Терминал
                                    INFO:connecting to host {192.168.1.1}:5009
                                    Traceback (most recent call last):
                                    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main
                                    "__main__", fname, loader, pkg_name)
                                    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
                                    exec code in run_globals
                                    File «build/bdist.macosx-10.15-x86_64/egg/acp/__main__.py», line 2, in File «build/bdist.macosx-10.15-x86_64/egg/acp/cli.py», line 228, in main
                                    File «build/bdist.macosx-10.15-x86_64/egg/acp/client.py», line 21, in connect
                                    File «build/bdist.macosx-10.15-x86_64/egg/acp/session.py», line 30, in connect
                                    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
                                    return getattr(self._sock,name)(*args)
                                    socket.gaierror: [Errno 8] nodename nor servname provided, or not known
                                    • UFO just landed and posted this here
                                        0
                                        Да, отлично! Всё получилось! Мешали фигурные скобки) Xcode не успел поставить, оказалось достаточно утилиты для терминала. Как теперь поудалять всё, что установилось? Или оставить?
                                          0
                                          Ещё момент — после изменения региона на TC, перестал видеться диапазон 5ГГц на MacBook Pro 2017. Решение — просто передвинуть Ваши предпочитаемые сети вверх по списку «Предпочтительные сети» в Системные настройки-Сеть-WiFi-Дополнительно… и перезагрузить комп.
                                            0
                                            Тот же баг. Я указал вручную произвольный радиоканал для 5 ГГц и стало видно. Думаю в опции «Авто» остается старый список каналов и возникает сбой. Нужна дополнительная команда чтобы его изменить
                              +1
                              Огромное спасибо! Наконец-то дождались.

                              Замечания такие. Для отключения ssh установить dbug в 0x0000 и перегрузить недостаточно. По крайней мере у меня на двух башнях с 7.9.1 это не сработало. Порт ssh всё равно открыт и светится наружу с вместе портом 5001. Для отключения необходимо в консоли ssh подключения к airport-у выполнить «acp remove dbug» и перегрузить.
                                0
                                Спасибо за дельный комментарий, обновил статью.
                                Проверил на time capsule 7.9.1 — действительно необходимо режим debug отключать через acp.
                              • UFO just landed and posted this here
                                  0
                                  Все получилось с первого раза, но есть баг — сеть 5 ГГц вещается только если выбрать вручную любой радиоканал (и таки страна US и ширина канала 80 МГц). Если указать Авто, после ребута 5 ГГц сети нет, только 2.4.
                                  Думаю сбросить капсулу и попробовать еще раз, но не умрет ли после таких манипуляций?
                                    0

                                    Потому что есть разные 5ггц:
                                    5ггц диапазон N — 20/40 мгц
                                    5 ггц диапазон AC — 20/40/80 мгц
                                    Соответственно АС есть только на башнях 6 поколения, они и вещают на 80мгц

                                      0
                                      Ну так у меня именно последняя башня, UA, без 80 МГц. После манипуляций с регионом все заработало на 80 МГц, только нельзя автовыбор радиоканала ставить, иначе нет сети АС 5 ГГц.
                                    0
                                    image
                                    Сделал все по инструкции (ssh не выключил пока)
                                    В настройках роутера страна — US, но канал в 80мгц не включается, помогите пожалуйста
                                    (Extreme A1354)
                                      0
                                      80мгц есть только на башнях, на 6ом поколении. У меня на 5ом поколении тоже работает только на 40мгц. После перехода на US сигнал получше стал и пинг опустился
                                        0

                                        А, понял, спасибо за ответ, а то я уж переживать немного начал, вдруг не так сделал

                                      0
                                      Сегодня провернул это все действие под Windows 10, немного дополнительных программ и все окей. Даже видос на ютуб запил)
                                        0

                                        Сделал по инструкции, немного повозившись. Все получилось с Капсулой и Экстримом РСТ. Теперь есть проблема с РСТ Airport Express, надо менять настройки и в нем, чтобы было нормальное подключение в качестве расширителя сети.
                                        Подскажите, можно ли эту же процедуру повторить и с ним?

                                          0
                                          Скорее всего подключиться и перевести в debug режим удастся. Соответственно сменить SKU Вы тоже сможете. Вот только зачем? Согласно Wikipedia у airport express максимум — это стандарт 802.11n. Это 2.4ГГЦ частота и «плюшек» (таких как beam forming) старших моделей она не поддерживает.
                                            0

                                            Спасибо, попробую. Небольшое уточнение- у Airport Express первого поколения, действительно, только 802.11b/g; у третьего (последнего) — 802.11b/g/n/a (до 540 Mbps). Я использую Express для сетевого соединения с аудио устройством, не имеющим Wi-Fi. Кроме этого, в Express есть оптический выход для аудио, бывает полезно в ряде случаев.
                                            После смены региона на таймкапсуле Airport Express РСТ перестал работать нормально, постоянный сбой коннекта и маленькая скорость. Надо и его "лечить", видимо.

                                              0
                                              Я слышал что не только в мгцах и направленном луче дело, у РСТ моделей искусственно ограничивают силу сигнала же. У меня нет экспресса, поэтому не могу проверить(
                                                0

                                                Да, с Airport Express тоже все получилось. Спасибо еще раз.

                                              0
                                              при попытке включить ssh вылезает No module named Crypto.Cipher
                                                0
                                                Походу на винде пытаетесь сделать? Нужно перед установкой AirPyrt установить Microsoft Visual C++ for Phyton. Потом еще раз установить AirPyrt, он подтянет Crypro.
                                                На ютубе выложил видеоинструкцию для винды и мак, по нику можно найти канал
                                                  0

                                                  на Маке. Нашёл ответ в этом топике. Спасибо.

                                                0

                                                All3, огромное спасибо! Я так долго ждал этого.


                                                Итак, небольшое саммари, может быть кому-нибудь пригодится:


                                                1. Запустить терминал (Launchpad-Другие — Terminal).
                                                2. Скачать https://github.com/x56/airpyrt-tools, нажав в правом верхнем углу зеленую кнопку Clone or Download и выбрать Download ZIP. Распаковать архив.
                                                3. В терминале ввести команду cd и перетащить скачанную папку. Должно получиться что-то наподобие этого: cd /Users/имяВашейУчетнойЗаписи/Downloads/airpyrt-tools-master и нажать Enter/Return
                                                4. В терминал вставить команду: python setup.py install
                                                5. В терминал вставить команду с указанием адреса маршрутизатора (примерно такого вида — 10.0.1.1) и пароля маршрутизатора (можно посмотреть или в утилите AirPort, или в трее, нажав на иконку WiFi с зажатым Option/Alt): python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --setprop dbug 0x3000
                                                6. В терминал вставить команду: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot
                                                7. Ждем перезагрузки устройства. Подключаемся к устройству, для чего в терминал вставляем: ssh root@АДРЕСМАРШРУТИЗАТОРА Вводим пароль от устройства.
                                                8. В терминале вводим 2 команды для смены региона на США:
                                                  acp -q syRe=0x00000000
                                                  acp static apple-sku=FCC
                                                9. В терминале вводим команды для закрытия SSH: acp remove dbug
                                                  reboot
                                                10. После перезагрузки вводим: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot
                                                11. После перезагрузки: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --setprop dbug 0x0000
                                                  python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot
                                                12. Удаляем скачанную папку airpyrt-tools-master в Загрузках.
                                                13. Проверяем, нажав с Option/Alt на соединение, где часы.
                                                14. Радуемся!!!

                                                Автору еще раз огромное спасибо!!!

                                                  0

                                                  Sudo su забыли до 2 пункта. Без рут прав не установится

                                                    0

                                                    Точно! Спасибо!

                                                    0
                                                    как быть если на 5м пункте выдает
                                                    sh-3.2# python -m acp -t 10.0.1.1 -p **** –setprop dbug 0x3000
                                                    error: unrecognized arguments: –setprop dbug 0x3000
                                                      0
                                                      Надо написать два тире: --setprop dbug 0x3000
                                                      0
                                                      11 И 10 пункты не нужны т.к. есть пункт 9.
                                                      «—setprop dbug 0x0000» снова создаст переменную dbug (пусть даже нулевую) которая при «acp remove dbug” была удалена насовсем.
                                                      Отмечу отдельно, что наличии даже нулевой переменной dbug на моих башнях с 7.9.1 ssh оставался включённый и порт ssh был открыт.
                                                      0
                                                      Терминал выйдет в конце ошибку:

                                                      Installed /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
                                                      Processing dependencies for acp==1.0
                                                      Searching for pycrypto
                                                      Reading pypi.python.org/simple/pycrypto
                                                      Download error on pypi.python.org/simple/pycrypto: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) — Some packages may not be found!
                                                      Couldn't find index page for 'pycrypto' (maybe misspelled?)
                                                      Scanning index of all packages (this may take a while)
                                                      Reading pypi.python.org/simple
                                                      Download error on pypi.python.org/simple: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) — Some packages may not be found!
                                                      No local packages or download links found for pycrypto
                                                      error: Could not find suitable distribution for Requirement.parse('pycrypto')

                                                      Что с этим делать?
                                                        0

                                                        Если не установлен XCode, его нужно установить.

                                                        0
                                                        Что только не пробовал, не получается. Может кто то помочь?
                                                          0

                                                          На ютубе выложил видеоинструкцию для винды и мак, по нику можно найти канал

                                                            0
                                                            Спасибо большое за подробное видео, реально помогло и все получилось. Прошил все свои capsule на США и скорость заметно стала лучше. Еще раз спасибо за видео.
                                                          0
                                                          Кстати, после удачной прошивки заметил такую проблему, гостевая сеть отказывается работать. После того как я ее включаю, либо капсула начинает оранжевым мигать и вообще полностью интернет отваливается, либо гостевая сеть появляется, но интернета в ней нет. Пробовал на всех своих капсулах (а у меня их 4) и везде такая проблема.
                                                            –1

                                                            Сегодня у себя испробую! Отпишусь

                                                              0
                                                              Попробовал на башне и на 5ом поколении, и там и там нормально работает гостевая. Единственное 2,4ггц и 1 канал
                                                                0
                                                                Странно, что с моими не так. Может еще как то влияет то, что они у меня 4 одновременно в одной сети работают. Буду разбираться, спасибо!
                                                              0
                                                              Уважаемые, вопрос следующего плана. Знает ли кто способ ручного выбора канала не из доступного в списке?
                                                              Сейчас картина такая:

                                                              image

                                                              Если башня делает автоустановку, то она может выставить например 132 канал, а вручную это сделать нельзя, т.к. в списке этих каналов нет.
                                                              Есть решение для этого?

                                                              Only users with full accounts can post comments. Log in, please.