вторник, 3 марта 2015 г.

Netgear WNR3500Lv2 Router, part 2

В выходные пересобрал фирменную прошивку для старенького WNR3500Lv2. Оказалось, что периодически встроенный туда snmpd падает. А поскольку логи в стоковой прошивке написаны непонять как - причины невозможно выяснить. Кроме того, на роутере зачем-то крутится java-приложение, которое периодически лазает "на родину" и что-то пытается выкачать.

В общем, подумал, почитал и плюнул на сток. Прошил EntWare, которая от vampik'а. Стало полное заглядение - в данной прошивке можно выбрать роутеру режим AP, тогда все Ethernet-порты отдаются под свитч, а интернет ожидается откуда-то из внутренней сети. Что в моем случае и нужно - роутером у меня трудится TP-Link WDR4300, а нетгиря - дополнитьельный спот и свитч.

Два выходных потратил на сборку. Впрочем, нельзя сказать, чтобы совсем в пустую - потренировался собирать под mipsel-linux, Теперь можно прошивку vampik'а "покрутить" самому. Вот только зачем? В прошивке предусмотрено всё, что хотелось. Кстати, загрузка процессора на стоковой была 40-90% (java прожорливая), а на EntWare - изредка поднимается до 20% на пару мгновений.

При перешивке таки "закирпичил" роутер - после переходной прошивки прошил не для того роутера. Воспользовался советами отсюда, описано понятно. Потратил на раскирпичивание минут 10-15.

воскресенье, 1 марта 2015 г.

TP-Link WDR4300: httpd, который рулит всем, дубль два

Который день пытаюсь найти исходники типилинковского httpd, для чего рассматриваю строковые значения. Похоже, что даного сервиса в сырцах в открытом доступе нет. Однако софтописатели, которые его писали таки обладают толикой юмора - встретил среди строк такую:

Ahhhh! call 911!

Встречается она два раза, первый - в связи с dyndns, а второй - в непонятном контексте.

Вообще, в бинарнике, размером 1.5Мб встречено 200Кб строк, большинство из которых посвящены конфигурации системы. Совершенно неясно, почему разработчики tp-link не вынесли конфиги в отдельный файл. Как, впрочем, неясна причина, по которой httpd в GPL source не отдается в сырцах.

пятница, 27 февраля 2015 г.

TP-Link WDR4300: httpd, который рулит всем.

Во время подготовки образа со всключенным snmpd в данный роутер, обнаружил, что httpd-сервис этого роутера даже в GPL-коде вставлен бинарником, никаких сырцов не дадено. Поиск в интернетах ничего не дал.

Дальше стал искать, как включаются правила для iptables, для чего грепнул rootfs на предмет упоминания iptables. Очень удивился, когда в /etc упоминания оного были только о сбросе, зато в httpd встретилось упоминание. Посмотрел внутрь httpd и обнаружил все правила для запуска iptables. В бинарнике! Никак не понять мне скрытого смысла. Зачем помещать текстовые данные в текстовом виде внутрь бинарника? Причина только одна - спрятать бэкдоры и прочие вещи, о которых пользователю лучше не знать. Вот кусок вывода strings httpd:

iptables -F FORWARD_FILTER
iptables -F FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 1 -j FORWARD_ACCESSCTRL
sh /tmp/wr841n/parent.sh
iptables -I FORWARD_FILTER 1 -i %s -p udp --dport 53 -j FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 2 -i %s -p tcp --dport 80 -j FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 3 -i %s -p tcp ! --dport 80 -j DROP
iptables -I FORWARD_FILTER 4 -i %s -p udp ! --dport 53 -j DROP
iptables -I FORWARD_FILTER -m mark --mark %s -j FORWARD_ACCESSCTRL
iptables -I FORWARD_FILTER 1 -i %s -m mac --mac-source %s -j RETURN
iptables -A FORWARD_PARENTCTRL -i %s -j DROP
iptables -A FORWARD_ACCESSCTRL -i %s

Упоминание "/tmp/wr841n/parent.sh" наводит на мысль о том, что бинарный httpd особо извращенным способом читает данные из бинарного (!) пользовательского конфига, закидывает их во внешний шелл-скрипт, а потом запускает на исполнение. Считаю, что задумка хранить конфиг в бинарном виде - прекрасна, так же, как и хранение больших текстовых блоков внутри бинарника - даже если какой-то гад доберется до данного изврата, переизвратить не сможет!

Что же скрывает от нас TP-Link? Может быть он перехватывает данные, которые наши iPhone шлют в АНБ и шлет копию этих данных в китайские спецслужбы?

среда, 25 февраля 2015 г.

Netgear WNR3500Lv2 Router

Есть у меня в дому еще один старенький роутер означенной модели. Скорость на его wifi выше 130мбит/с не поднимается, но ethernet-порты у него гигабитные, и есть пачка устройств, которым быстрее чем 130 и не нать, типа телефонов да принтеров. А портов в дому не хватает. Потому - решил и его заюзать.

Проблема на нем та же, что и в tp-link'е - нет поддержки snmp, а хотелось бы, поскольку домосеть как-то неимоверно быстро растет - уже более 30 разных устройств - андроиды, яблоки, телевизоры и прочая хрень...

Нашел на их сайте GPL source, скачал, почитал инструкцию. Увидел в ней
You will need to use the 4.2.3 Linux 2.6 MIPS Cross Compiler and Tools (mipsel-uclibc toolchain), which should have also been posted to your account. If you still can't find it, please download the toolchain from the GPL source package WNR3500Lv2-V1.2.0.16_40.0.66_src.tar.zip, which also includes the toolchain.
но вот беда - нету тулчейна в комплекте... При чем инструкция в каждой из примерно 7 версий прошивок говорит, что есть!

Ну, в итоге, нашел нужный тулчейн, и собрал прошивку as-is. Далее - скачал готовый образ, отрезал от него rootfs и сравнил. Вроде все соответствует. Надо бы подрихтовать Makefile, чтобы snmpd встраивался. Не умею я это дело совсем. Придется изучать.

вторник, 24 февраля 2015 г.

make 3.82: mixed implicit and normal rules

При сборке образа для роутера Netgear WNR3500Lv2 наткнулся на ошибки Makefile. Кто бы мог подумать, что в версии make 3.82 возникнут проблемы со сборкой:

mixed implicit and normal rules
Откатился на 3.81 - make работает успешно.

воскресенье, 8 февраля 2015 г.

TP-Link WDR4300 snmpd. Part3

Оказалось, что отсутствующие модули, о которых я писал в предыдущем сообщении удалены не зря - после того, как был загружен xt_tcpudp.ko перестал работать форвардинг и перестали раздаваться адреса по dhcp. Не первый раз наблюдаю, что firmware пишется хреново - модули удалили, а почистить стартовый скрипт на предмет загрузки удаленных модулей - забыли. Всё равно ж никто не видит, что там, на консоли, происходит...

Ну, короче, сделал я прошивку, в которую встроен snmpd, который запускается автоматически. Вот она. Сделана на базе 3.13.33 Build 140715 Rel.41693n. После перешивки весрию показывает ту же самую. Понятное дело, если кто-то станет шить - на свой страх и риск.

TP-Link WDR4300 snmpd и другое

Нашел на просторах инструмент для сборки-разборки стоковых имиджей TP-Link. Он входит в комплект firmware-mod-kit, что позволило разобрать-проверить-собрать правленый и дополненый имидж.

Пересобрал busybox и дополнил его полезными фичами, добавил net-snmp, прошил. Snmpd не запустился автоматически, но после изучения лога загрузки возникло понимание, что snmpd не смог понять с командной строки, кто такой daemon (-u daemon -g daemon), видимо надо цифровой id поставить.

Зато теперь есть netstat. Тут же выяснилось странное - на нескольких портах висят листенеры:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:33344           0.0.0.0:*               LISTEN
tcp        0      0 [local-net]:49152       0.0.0.0:*               LISTEN
tcp        0      0 [local-net]:49153       0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:20005           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1900            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1041            0.0.0.0:*               LISTEN

Ну там 80-й и 1900-й порты еще понятны, но что делают остальные - неясно. Кроме того, обнаружилось, что в предоставляемом GPL Source Three нет исходников httpd, а как я понял, основные функции по работе с mtd производит он.

Да, вчитываясь в лог загрузки увидел совсем уже полное безобразие - отсутствуют модули ядра:

insmod: cannot open module `/lib/modules/2.6.31/kernel/x_tables.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/xt_tcpudp.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/iptable_raw.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/flashid.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/harmony.ko': No such file or directory

И это в стоковой прошивке! Первые два были найдены в GPL sources после сборки ядра, но первый ставиться не захотел:

# insmod ./x_tables.ko
[41243.332000] x_tables: exports duplicate symbol xt_free_table_info (owned by kernel)
insmod: cannot insert `./x_tables.ko': Invalid module format (-1): Exec format error

Видимо забыли вычеркнуть из спискм загрузки. Второй нормально загрузился. Где взять остальные пока неясно...

четверг, 5 февраля 2015 г.

TP-Link WDR4300 и snmpd. Part 1

По каким-то неясным для меня причинам, в современных домашних маршрутизаторах не принято устанавливать демона snmpd, который сильно облегчает жизнь, если к маршрутизатору приходит не один-два клиента, а пара десятков или того больше. При таких нагрузках роутер периодически "впадает в задумчивость" или вовсе выпадает из работы.
Конечно, нетрудно нажать кнопку power и перегрузить роутер. Но это, на мой взгляд, неправильный путь. Правильный - получать статистику с маршрутизатора и скармливать ее какому-либо "кактусу". И в момент, когда роутер отказался работать - изучить показания оного кактуса. Но для этого на роутере должен работать snmpd, которого современные производители прошивок не вставляют, считая, что для SOHO-роутеров это не нужно. А если нужно конкретно вам, то нужно "занести" примерно вдвое большую сумму за enterprise-решение. Вот такие сложности, обусловленные видимо маркетологами.
Да, есть разного рода WRT-системы, но в них появляются иные проблемы, поскольку такие системы пишутся для некоего гипотетического роутера. Так например, мой WDR4300 на OpenWRT не смог "подружиться" с половиной оборудования через WIFI, поэтому данная система была отринута. Помимо прочего, при перешивке на сток роутер "завис" и "закирпичился", но был восстановлен с помощью tftp и консольного шнурка.
К счастью, фирма TP-Link выложила GPL sources для данного роутера. Сорцы сильно с издержками. К примеру:
5. After building code, you can get the uboot and linux kernel image, then you
can make rootfs with mksquashfs tool, 
but you can't upgrade these images to your
router through web management page.
И ни слова о том, как собирать образ, который can upgrade, нехорошо.
Что забавно, в сорцах net-snmp имеется. Видимо, мысль таки появлялась, но маркетологи не дали воплотить.
Пришлось изучить методы кросс-сборки. Сегодня удалось собрать и запустить на роутере. Первый раз при сборке указал ключик --enable-minimalist, так snmp-walk вывел всего 52 строки данных. После отключения оной опции была получена вполне нормальная статистика из полутора тысяч строк. Что не может не радовать.

Теперь встает вопрос, как поместить данного демона внутрь прошивки (пока что он работает с внешнего диска, библиотеки ищутся через LD_LIBRARY_PATH) и стартовать автоматически, желательно только на внутреннем интерфейсе. Точнее - как собрать прошивку, после помещения туда snmpd, нужных библиотек и куда вписать автозапуск.
"Будем искать" (с).

среда, 24 сентября 2014 г.

Довлатов, "Записные Книжки"

Набоков добивался профессорского места в Гарварде. Все члены ученого совета были — за. Один Якобсон был — против. Но он был председателем совета. Его слово было решающим. Наконец коллеги сказали:
— Мы должны пригласить Набокова. Ведь он большой писатель.
— Ну и что? — удивился Якобсон. — Слон тоже большое животное. Мы же не предлагаем ему возглавить кафедру зоологии!

понедельник, 22 сентября 2014 г.

Нaдеждa Тэффи. Жизнь и воротник

Человек только вообрaжaет, что беспредельно влaствует нaд вещaми. Иногдa сaмaя невзрaчнaя вещицa вотрется в жизнь, зaкрутит ее и перевернет всю судьбу не в ту сторону, кудa бы ей нaдлежaло идти.

Олечкa Розовa три годa былa честной женой честного человекa. Хaрaктер имелa тихий, зaстенчивый, нa глaзa не лезлa, мужa любилa предaнно, довольствовaлaсь скромной жизнью.

Но вот кaк-то пошлa онa в Гостиный двор и, рaзглядывaя витрину мaнуфaктурного мaгaзинa, увиделa крaхмaльный дaмский воротник, с продернутой в него желтой ленточкой.

Кaк женщинa честнaя, онa снaчaлa подумaлa: "Еще что выдумaли!" Зaтем зaшлa и купилa.

Примерилa домa перед зеркaлом. Окaзaлось, что если желтую ленточку зaвязaть не спереди, a сбоку, то получится нечто тaкое, необъяснимое, что, однaко, скорее хорошо, чем дурно.

Но воротничок потребовaл новую кофточку. Из стaрых ни однa к нему не подходилa.

Олечкa мучилaсь всю ночь, a утром пошлa в Гостиный двор и купилa кофточку из хозяйственных денег. Примерилa все вместе. Было хорошо, но юбкa портилa весь стиль. Воротник ясно и определенно требовaл круглую юбку с глубокими склaдкaми.

Свободных денег больше не было. Но не остaнaвливaться же нa полпути?

Олечкa зaложилa серебро и брaслетку. Нa душе у нее было беспокойно и жутко, и, когдa воротничок потребовaл новых бaшмaков, онa леглa в постель и проплaкaлa весь вечер.

Нa другой день онa ходилa без чaсов, но в тех бaшмaкaх, которые зaкaзaл воротничок.

Вечером, бледнaя и смущеннaя, онa, зaикaясь, говорилa своей бaбушке:

- Я зaбежaлa только нa минутку. Муж очень болен. Ему доктор велел кaждый день нaтирaться коньяком, a это тaк дорого.

Бaбушкa былa добрaя, и нa следующее же утро Олечкa смоглa купить себе шляпу, пояс и перчaтки, подходящие к хaрaктеру воротничкa.

Следующие дни были еще тяжелее.

Онa бегaлa по всем родным и знaкомым, лгaлa и выклянчивaлa деньги, a потом купилa безобрaзный полосaтый дивaн, от которого тошнило и ее, и честного мужa, и стaрую воровaтую кухaрку, но которого уже несколько дней нaстойчиво требовaл воротничок.

Онa стaлa вести стрaнную жизнь. Не свою. Воротничковую жизнь. А воротничок был кaкого-то неясного, путaного стиля, и Олечкa, угождaя ему, совсем сбилaсь с толку.

- Если ты aнглийский и требуешь, чтоб я елa сою, то зaчем же нa тебе желтый бaнт? Зaчем это рaспутство, которого я не могу понять и которое толкaет меня по нaклонной плоскости?

Кaк существо слaбое и бесхaрaктерное, онa скоро опустилa руки и поплылa по течению, которым ловко упрaвлял подлый воротник.

Онa обстриглa волосы, стaлa курить и громко хохотaлa, если слышaлa кaкую-нибудь двусмысленность.

Где-то, в глубине души, еще теплилось в ней сознaние всего ужaсa ее положения, и иногдa, по ночaм или дaже днем, когдa воротничок стирaлся, онa рыдaлa и молилaсь, но не нaходилa выходa.

Рaз дaже онa решилaсь открыть все мужу, но честный мaлый подумaл, что онa просто глупо пошутилa, и, желaя польстить, долго хохотaл.

Тaк дело шло все хуже и хуже.

Вы спросите, почему не догaдaлaсь онa просто-нaпросто вышвырнуть зa окно крaхмaльную дрянь?

Онa не моглa. Это не стрaнно. Все психиaтры знaют, что для нервных и слaбосильных людей некоторые стрaдaния, несмотря нa всю мучительность их, стaновятся необходимыми, И не променяют они эту слaдкую муку нa здоровое спокойствие - ни зa что нa свете.

Итaк, Олечкa слaбелa все больше и больше в этой борьбе, a воротник укреплялся и влaствовaл.

Однaжды ее приглaсили нa вечер.

Прежде онa нигде не бывaлa, но теперь воротник нaпялился нa ее шею и поехaл в гости. Тaм он вел себя рaзвязно до неприличия и вертел ее головой нaпрaво и нaлево.

Зa ужином студент, Олечкин сосед, пожaл ей под столом ногу.

Олечкa вся вспыхнулa от негодовaния, но воротник зa нее ответил:

- Только-то?

Олечкa со стыдом и ужaсом слушaлa и думaлa:

- Господи! Кудa я попaлa?!

После ужинa студент вызвaлся проводить ее домой. Воротник поблaгодaрил и рaдостно соглaсился прежде, чем Олечкa успелa сообрaзить, в чем дело.

Едвa сели нa извозчикa, кaк студент зaшептaл стрaстно:

- Моя дорогaя!

А воротник пошло зaхихикaл в ответ.

Тогдa студент обнял Олечку и поцеловaл прямо в губы. Усы у него были мокрые, и весь поцелуй дышaл мaриновaнной корюшкой, которую подaвaли зa ужином.

Олечкa чуть не зaплaкaлa от стыдa и обиды, a воротник ухaрски повернул ее голову и сновa хихикнул:

- Только-то?

Потом студент с воротником поехaли в ресторaн, слушaть румын. Пошли в кaбинет.

- Дa ведь здесь нет никaкой музыки! - возмущaлaсь Олечкa.

Но студент с воротником не обрaщaли нa нее никaкого внимaния. Они пили ликер, говорили пошлости и целовaлись.

Вернулaсь Олечкa домой уже утром. Двери ей открыл сaм честный муж.

Он был бледен и держaл в рукaх ломбaрдные квитaнции, вытaщенные из Олечкиного столa.

- Где ты былa? Я не спaл всю ночь! Где ты былa? Вся душa у нее дрожaлa, но воротник ловко вел свою линию.

- Где былa? Со студентом болтaлaсь! Честный муж пошaтнулся.

- Оля! Олечкa! Что с тобой! Скaжи, зaчем ты зaклaдывaлa вещи? Зaчем зaнимaлa у Сaтовых и у Яниных? Кудa ты девaлa деньги?

- Деньги? Профукaлa!

И, зaложив руки в кaрмaны, онa громко свистнулa, чего прежде никогдa не умелa. Дa и знaлa ли онa это дурaцкое слово - "профукaлa"? Онa ли это скaзaлa?

Честный муж бросил ее и перевелся в другой город.

Но что горше всего, тaк это то, что нa другой же день после его отъездa воротник потерялся в стирке.

Кроткaя Олечкa служит в бaнке.

Онa тaк скромнa, что крaснеет дaже при слове "омнибус", потому что оно похоже нa "обнимусь".

- А где воротник? - спросите вы.

- А я-то почем знaю, - отвечу я. - Он отдaн был прaчке, с нее и спрaшивaйте.

Эх, жизнь!