Jump to content
  • 0

Root доступ к Keenetic Air (KN-1611)


typedef
 Share

Question

Всем привет!

Подскажите плз. возможно ли на Keenetic Air (KN-1611) получить полный доступ. Через telnet\ssh у меня получилось  попасть только в интерфейс CLI пользователем admin.

Link to comment
Share on other sites

Recommended Posts

  • 0
5 минут назад, typedef сказал:

Всем привет!

Подскажите плз. возможно ли на Keenetic Air (KN-1611) получить полный доступ. Через telnet\ssh у меня получилось  попасть только в интерфейс CLI пользователем admin.

К сожалению штатными методами это все. Может только через entware что то можно сделать.

Edited by Илья Картавенко
Link to comment
Share on other sites

  • 0
Just now, Илья Картавенко said:

Ксожалению штатными методами это все. Может только через entware что то можно сделать.

да я уж про штатные средства и не говорю.
Уже попробовал Keenetic-SDK, собрал свой firmware. Но вот как его оттестить нормально не имея полного доступа к системе...

Link to comment
Share on other sites

  • 0

провозился сегодня целый день с Keenetic SDK
Так и не нашел каким образом они формируют /etc/passwd. В образ попадает этот файл из штатного места
   \build_dir\target-mipsel-linux-musl_musl\base-files\ipkg-KN-1611\base-files\etc

там все требуемые файлы для \etc
Но passwd (и еще несколько) это символические ссылка на /tmp/passwd, которого нет. Видимо во время билда он создается и потом удаляется. Я так и не смог найти где и как именно :(

Я так понимаю, там я смогу включить root'а

Ткните плз. в доки, где этот процесс описан.

Link to comment
Share on other sites

  • 0
1 час назад, typedef сказал:

Ткните плз. в доки, где этот процесс описан.

Такого описания нет.
Вам нужно включить следующие компоненты в "make menuconfig"

  • "NDM ---> Debug ---> ndm-mod-shell" и
  • "NDM ---> Opkg ---> ndm-mod-opkg".

Тогда у вас появится возможность запускать интерпретатор ash из CLI ndm командой

(config)> exec ash

BusyBox v1.24.2 () built-in shell (ash)

~ # 
~ # ls
bin    dev    etc    flash  lib    opt    proc   root   sbin   sys    tmp    usr    var

Правда для установки этих двух компонентов вам возможно придётся отключить часть уже установленных, так как у KN-1610 доступно всего ~7.5 MB для rootfs.

  • Thanks 1
Link to comment
Share on other sites

  • 0
19 hours ago, sergeyk said:

Такого описания нет.
Вам нужно включить следующие компоненты в "make menuconfig"

  • "NDM ---> Debug ---> ndm-mod-shell" и
  • "NDM ---> Opkg ---> ndm-mod-opkg".

Тогда у вас появится возможность запускать интерпретатор ash из CLI ndm командой

(config)> exec ash

BusyBox v1.24.2 () built-in shell (ash)

~ # 
~ # ls
bin    dev    etc    flash  lib    opt    proc   root   sbin   sys    tmp    usr    var

Правда для установки этих двух компонентов вам возможно придётся отключить часть уже установленных, так как у KN-1610 доступно всего ~7.5 MB для rootfs.

огромное спасибо за новое знание! :)
Странно, что за целый день поисков по различным источникам я нигде не встретил ничего подобного.

Добавил оба компонента, собрал имидж, залил в роутер. Ошибок не было, все запустилось, но команды exec не появилось...
 

(config)> exec
Command::Base error[7405600]: no such command: exec.

может еще чего надо включить?

Link to comment
Share on other sites

  • 0
39 minutes ago, typedef said:
(config)> exec
Command::Base error[7405600]: no such command: exec.

может еще чего надо включить?

поставил уже из веб интерфейса роутера поддержку OPKG, появилась команда exec (правда сам веб интерфейс раскорячился, видимо памяти мало)
но не может найти ash

(config)> exec ash
Process error[268241546]: system failed [0xcffd0a8a], "ash" executable not found.

 

Link to comment
Share on other sites

  • 0
57 минут назад, typedef сказал:

Добавил оба компонента, собрал имидж, залил в роутер. Ошибок не было, все запустилось, но команды exec не появилось...

Если не появилось, значит что-то не так делали.

Link to comment
Share on other sites

  • 0
2 hours ago, sergeyk said:

Если не появилось, значит что-то не так делали.

я на самом деле делаю такое впервые, поэтому вполне возможно.
Делал так:
  1. сгружаю с роутера актуальную версию KN-1611_stable_3.07.C.2.0-1_firmware.bin
  2. загружаю ее параметры в конфиг ./unpack.sh ../KN-1611_stable_3.07.C.2.0-1_firmware.bin
  3. захожу в make menuconfig и добавляю два компонента, которые Вы писали выше
  4. собираю имидж - make -j5
  5. заливаю прошивку в роутер

Вот на последнем пункте я не уверен, что все делаю правильно
  - скачал Keenetic Recovery
  - распаковал архив и в директорий \fw положил свой собранный имидж. 
  - переименовал его в KN-1611_recovery.bin
  - и дальше согласно инструкции:
       запустил саму утилиту krutil_ru.exe
       перезапустил роутер с зажатым ресетом
       дождался прошивки

вроде все.
Что не так не знаю...

Link to comment
Share on other sites

  • 0

меня смущает что после всех манипуляций выше, при коннекте через telnet пишется
KeeneticOS version 3.07.C.2.0-1, copyright (c) 2010-2022 Keenetic Ltd.
хотя версия имиджа, что я собрал - 3.07.C.1.0-4

Link to comment
Share on other sites

  • 0
55 минут назад, typedef сказал:

5. заливаю прошивку в роутер

Откуда вы её берете? Если что, новый образ лежит в подкаталогах bin/mt7628/.

Link to comment
Share on other sites

  • 0
3 hours ago, sergeyk said:

Откуда вы её берете? Если что, новый образ лежит в подкаталогах bin/mt7628/.

да, оттуда и беру

Link to comment
Share on other sites

  • 0

сегодня попробовал распаковать образ, который я собрал в SDK
запускаю ./unpack.sh KN-1611-3.07.C.1.0-4.bin
в ответ

"Unable to find TLV table offset."

Не знаю может так и должно быть, а может в этом и дело, что я не вижу на роутере изменений от новой прошивки

Link to comment
Share on other sites

  • 0
On 2/1/2022 at 7:13 PM, sergeyk said:

Если не появилось, значит что-то не так делали.

Подскажите пожалуйста, а как проверить что определенный компонент загружен на роутер?
Меня естественно интересуют те два, что Вы мне сказали

"NDM ---> Debug ---> ndm-mod-shell" и
"NDM ---> Opkg ---> ndm-mod-opkg"
 

На мой вопрос через форму обратной связи посоветовали посмотреть файл self-test, в нем поле <name>Component lister</name>

В нем должен быть shell
У меня таких два фрагмента, оба одинаковые:
 

        <thread>
            <name>Component lister</name>
            <tid>0</tid>
            <lock_list_complete>yes</lock_list_complete>
            <locks/>
            <statistics>
                <interval>0</interval>
                <cpu>
                    <now>0.000000</now>
                    <min>0</min>
                    <max>0</max>
                    <avg>0</avg>
                    <cur>0</cur>
                </cpu>
            </statistics>
        </thread>

Искал по всему файлу поиском по имени "shell" и "opkg" - ничего нет

внизу информация о релизе:
 

    <!-- show upnp redirect -->
    <!-- show version -->
    <release>3.07.C.2.0-1</release>
    <sandbox>stable</sandbox>
    <title>3.7.2</title>
    <arch>mips</arch>
    <ndm>
        <exact>0-49ce9d9</exact>
        <cdate>14 Jan 2022</cdate>
    </ndm>
    <bsp>
        <exact>0-7f0f81fa9</exact>
        <cdate>19 Jan 2022</cdate>
    </bsp>
    <ndw>
        <version>3.7.67</version>
        <features>wifi5ghz,mimo5ghz,atf5ghz,wifi_button,led_control,dual_image,wifi_ft,wpa3</features>
        <components>adguard-dns,base,cloudcontrol,corewireless,dhcpd,dot1x,easyconfig,igmp,l2tp,lang-en,miniupnpd,mws,nathelper-ftp,nathelper-pptp,nathelper-sip,ndns,pingcheck,ppe,pppoe,pptp,skydns,trafficcontrol,ydns</components>
    </ndw>
    <ndw3>
        <version>1.30</version>
    </ndw3>
    <manufacturer>Keenetic Ltd.</manufacturer>
    <vendor>Keenetic</vendor>
    <series>KN</series>
    <model>Air (KN-1611)</model>
    <hw_version>11168000</hw_version>
    <hw_type>router</hw_type>
    <hw_id>KN-1611</hw_id>
    <device>Air</device>
    <region>RU</region>
    <description>Keenetic Air (KN-1611)</description>

ничего не понимаю, как будто я и не собирал свой имидж...

Link to comment
Share on other sites

  • 0
30 минут назад, typedef сказал:

ничего не понимаю, как будто я и не собирал свой имидж...

Похоже, что так.
Какие файлы у вас в bin/mt7628/ с расширением .bin и какие у них размеры?

Link to comment
Share on other sites

  • 0
3 minutes ago, sergeyk said:

Похоже, что так.
Какие файлы у вас в bin/mt7628/ с расширением .bin и какие у них размеры?

пошел по порядку с самого начала
1.  очистил все
    make dirclean
2. распаковал последнюю оригинальную прошивку  
   ./unpack.sh ../KN-1611_stable_3.07.C.2.0-1_firmware.bin
3. собрал ее без изменений
   make -j5
4. добавил компоненты: "ndm-mod-shell" и "ndm-mod-opkg"
    make menuconfig
5. собрал с изменениями
   make -j5
 

alvas@Alvas-PC:~/keenetic/keenetic-sdk/bin/mt7628$ ls -l
total 19696
-rw-r--r-- 1 alvas alvas  9568316 Feb  2 21:30 20220202_2130_Firmware-KN-1611-3.07.C.1.0-4.bin
-rw-r--r-- 1 alvas alvas 10551356 Feb  2 21:33 20220202_2133_Firmware-KN-1611-3.07.C.1.0-4.bin
-rw-r--r-- 1 alvas alvas      164 Feb  2 21:33 md5sums
drwxr-xr-x 2 alvas alvas    32768 Feb  2 21:33 packages
alvas@Alvas-PC:~/keenetic/keenetic-sdk/bin/mt7628$


 

Link to comment
Share on other sites

  • 0

@typedef смотрите содержимое каталога build_dir/target-mipsel-linux-musl_musl/root-mt7628/, это образ rootfs, который был запакован в последний сгенерированный файл. В этом rootfs должны быть bin/busybox и lib/libndmOpkg.so.

Link to comment
Share on other sites

  • 0
2 минуты назад, sergeyk сказал:

добавить пакет Opkg в оригинальную прошивку изначально на устройстве

А для роутеров без USB доступен компонент "Поддержка открытых пакетов" ? Или я не так понял?

Link to comment
Share on other sites

  • 0
3 minutes ago, sergeyk said:

Эти файлы не годятся, слишком большие. У вас сборка завершается ошибкой, которую вы игнорируете.
Максимально допустимый размер файла есть в конфигурации, и для KN-1610 он равен

~/keenetic-sdk (main)$ cat .config | grep CONFIG_TARGET_FIRMWARE_SIZE
CONFIG_TARGET_FIRMWARE_SIZE="0x790000"
~/keenetic-sdk (main)$ printf %d 0x790000
7929856

 

хм... странно
вроде нет никаких ошибок при сборке нет
да и цифры у меня другие
 

alvas@Alvas-PC:~/keenetic/keenetic-sdk$ cat .config | grep CONFIG_TARGET_FIRMWARE_SIZE
CONFIG_TARGET_FIRMWARE_SIZE="0xf60000"
alvas@Alvas-PC:~/keenetic/keenetic-sdk$ printf %d 0xf60000
16121856


сейчас еще глянул официальный файл из Recovery для 1611 - KN-1611_recovery.bin
Он размером 8257596

Да и роутер никаких ошибок прошивки тоже не выдает, по крайней мере я их не вижу.
 

7 minutes ago, sergeyk said:

@typedef смотрите содержимое каталога build_dir/target-mipsel-linux-musl_musl/root-mt7628/, это образ rootfs, который был запакован в последний сгенерированный файл. В этом rootfs должны быть bin/busybox и lib/libndmOpkg.so.

bin/busybox есть, а вот ib/libndmOpkg.so нет

Т.е. мне нужно восстановить оригинальную прошивку, добавить пакет Opkg, выгрузить новый файл прошивки и повторить все мои действия?

Link to comment
Share on other sites

  • 0
1 минуту назад, typedef сказал:

Т.е. мне нужно восстановить оригинальную прошивку, добавить пакет Opkg, выгрузить новый файл прошивки и повторить все мои действия?

Можно только "./unpack ..." и "make ...", чистить ничего не нужно.

Link to comment
Share on other sites

  • 0
Just now, sergeyk said:

Можно только "./unpack ..." и "make ...", чистить ничего не нужно.

ну да.
Спасибо, я попробую!

И еще вопрос до кучи )

в /build_dir/target-mipsel-linux-musl_musl/root-mt7628/etc лежат файлы конфигов
некоторые живые, а некоторые символические ссылки на /tmp
например:
lrwxrwxrwx 1 alvas alvas    11 Feb  2 21:15 passwd -> /tmp/passwd
lrwxrwxrwx 1 alvas alvas     8 Feb  2 21:15 ppp -> /var/ppp
lrwxrwxrwx 1 alvas alvas    16 Feb  2 21:15 resolv.conf -> /var/resolv.conf

они как то генерятся на лету или их можно при сборке где-то поправить?

Link to comment
Share on other sites

  • 0
1 минуту назад, typedef сказал:

они как то генерятся на лету или их можно при сборке где-то поправить?

Их создает bin/ndm при старте.

Link to comment
Share on other sites

  • 0
Just now, sergeyk said:

И что вы теперь намерены с этим делать?

моя цель была запустить анонсированный в версии 3.7.1 сервис mdns (который на самом деле для 1611 недоступен)
Из-за этого весь сыр-бор, а потом уже стало интересно )
Сейчас я добавил модуль ndm-mdns, он за собой поставил демона avahi. Но вот как это все запускается я пока не понял
service avahi-deamon start 
не работает, так как sevice не поддеживается...

Link to comment
Share on other sites

  • 0
27 minutes ago, typedef said:

моя цель была запустить анонсированный в версии 3.7.1 сервис mdns (который на самом деле для 1611 недоступен)
Из-за этого весь сыр-бор, а потом уже стало интересно )
Сейчас я добавил модуль ndm-mdns, он за собой поставил демона avahi. Но вот как это все запускается я пока не понял
service avahi-deamon start 
не работает, так как sevice не поддеживается...

ну вроде все теперь работает как надо, AirPlay и прочие радости из ZeroConfig работают между двумя подсетями (проводными и wi-fi)
Теперь остался последний шаг, как правильно добавить файл конфига и запустить при старте avahi-daemon

С первым вроде понятно, надо добавить конфиг в 
\package\base-files\files\etc
а как правильно прописать автозапуск демона?

Link to comment
Share on other sites

  • 0
8 часов назад, MercuryV сказал:

А для роутеров без USB доступен компонент "Поддержка открытых пакетов" ? Или я не так понял?

Да, сейчас opkg включен для всех моделей.

  • Upvote 1
Link to comment
Share on other sites

  • 0
4 hours ago, sergeyk said:

Запускайте по событию или через скрипт opkg initrc (/opt/etc/initrc по умолчанию):

https://github.com/ndmsystems/packages/wiki/Opkg-Component#hook-scripts

ага, спасибо!
Вечером попробую.
Я правильно понимаю, что я должен написать скрипт /opt/etc/initrc и положить его в \package\base-files\files\
Ну или лучше написать отдельный скрипт 
avahi, положить его в \package\base-files\files\opt\etc\init.d
В SDK я что то не нашел подобных скриптов, в том числе /opt/etc/ndm/*

Link to comment
Share on other sites

  • 0
17 hours ago, sergeyk said:

Запускайте по событию или через скрипт opkg initrc (/opt/etc/initrc по умолчанию):

https://github.com/ndmsystems/packages/wiki/Opkg-Component#hook-scripts

Что то не получилось у меня с наскока сделать автоматический запуск демона :(
Файлы в \package\base-files\files\opt\etc положил (и initrc и директорий init.d со скриптом внутри добавил). Они не запускаются потому что без флага на запуск. Видимо где то в makefile надо делать chmod +x

Может где то есть примерчик, чтобы по аналогии сделать?
Ну или, если я Вас еще не задолбал, поясните по подробнее как добавить скрипт start\stop какого-нить сервиса

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...