среда, 9 июля 2014 г.

Обновление QuickEcmInfo 3.1-r2


обновление 3.1-r2
-  исправлен вылет, при проверке размера ecm.info

забираем в плагинах

Обновление RPUlite 0.7-r3


обновление 0.7-r2
-исправлена ошибка загрузки букета
-при выходе из плагина принудительно обновляется сервислист

обновление 0.7-r3
-исправлена вылет при выходе из плагина

забираем в плагинах

вторник, 8 июля 2014 г.

Сканирование живых ip адресов, для IPTV. часть II

Для сканирования с помощью ресивера нам понадобится curl и cron, так как операция сканирования одного диапазона занимает около 16 часов, и желательно проделывать эту операцию в фоновом режиме...
curl_7.24.0-r0_mips32el.ipk
cURL — свободная , кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL
установка:

>>opkg update
>>opkg install /tmp/curl_7.24.0-r0_mips32el.ipk
>>opkg install busybox-cron
>>reboot

описание возможных команд curl http://osxh.ru/terminal/command/curl
и так имеем диапазон провайдера Ростелеком от 212.164.0.0 до 212.164.255.255, запускаем строку поиска:

>>curl -I -m1 212.164.[0-255].[0-255]:1234

где:
[0-255] диапазон адресов от 0 до 255, curl будет перебирать каждый адрес
-I -- читать заголовки (HEAD) доступные по указному ip и порту
-m1 -- Задает максимальное время в секундах выделенное на операцию, в данном случае стоит 1 секунда, если ip и порт не отвечает, запрашиваем следующее ip...
получаем в терминале такую картинку:

[205/65536]: 212.164.0.204:1234 --> <stdout>
--_curl_--212.164.0.204:1234
curl: (28) Connection timed out after 1001 milliseconds

[206/65536]: 212.164.0.205:1234 --> <stdout>
--_curl_--212.164.0.205:1234
curl: (28) Connection timed out after 1001 milliseconds

[207/65536]: 212.164.0.206:1234 --> <stdout>
--_curl_--212.164.0.206:1234
curl: (28) Connection timed out after 1001 milliseconds

[208/65536]: 212.164.0.207:1234 --> <stdout>
--_curl_--212.164.0.207:1234
curl: (28) Connection timed out after 1001 milliseconds

понятное дело сидеть перед терминалом и высматривать рабочий ip, удовольствие мало приятное, посему
запускаем curl с перенаправленным выводом в файл, например /tmp/rostelecom

>>curl -I -m1 212.164.[0-255].[0-255]:1234 >/tmp/rostelecom

получаем в файле /tmp/rostelecom, приблизительно такое:

--_curl_--212.164.2.80:1234
--_curl_--212.164.2.81:1234
--_curl_--212.164.2.82:1234
HTTP/1.1 200 OK 
Content-Type:application/octet-stream

--_curl_--212.164.2.83:1234
--_curl_--212.164.2.84:1234

строка перед HTTP/1.1 200 OK является искомым результатом

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

>>curl -I -m1 212.164.[0-255].[0-31]:1234 >/tmp/rostelecom1
>>curl -I -m1 212.164.[0-255].[32-63]:1234 >/tmp/rostelecom2
...
curl -I -m1 212.164.[0-255].[224-255]:1234 >/tmp/rostelecom16

сам cull потребляет мизерное количество ресурсов, я например использую 16 одновременно работающих, и вся операция завершается где-то за час

Внимание:
если запускаем поиск из командной строки, то при закрытии окна терминала завершится выполнение вашей команды, во избежание этого используем чудную утилиту nohup и наша строка запуска имеет следующий вид.

>>nohup curl -I -m1 212.164.[0-255].[0-31]:1234 >/tmp/rostelecom1 >/dev/null &

в таком виде все будет работать в фоне, соответственно можно запустить одновременно несколько подобных задач

теперь перейдем к обработке полученных результатов, имеем файл /tmp/rostelecom с таким содержимым:

--_curl_--212.164.2.80:1234
--_curl_--212.164.2.81:1234
--_curl_--212.164.2.82:1234
HTTP/1.1 200 OK 
Content-Type:application/octet-stream

--_curl_--212.164.2.83:1234
--_curl_--212.164.2.84:1234

нам нужно вычленить все ip после которых идет строка HTTP/1.1 200 OK, для этого мы используем одну из величайших вещей которые есть в linux/unix системах, а точнее потоковый редактор SED.
sed (от англ. Stream EDitor) — потоковый текстовый редактор (а также язык программирования), применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных.

Первоначально был написан как UNIX-утилита Ли Макмэхоном (англ. Lee E. McMahon) из Bell Labs в 1973—74 годах. Сейчас sed доступен фактически для любой операционной системы, поддерживающей работу с командной строкой.
https://ru.wikipedia.org/wiki/Sed

>>sed -i -n '/200 OK/{g;1!p;};h' /tmp/rostelecom

получаем список рабочих ip

--_curl_--212.164.1.157:1234
--_curl_--212.164.2.82:1234
--_curl_--212.164.3.25:1234
--_curl_--212.164.3.139:1234
--_curl_--212.164.3.222:1234
.........

теперь вычленяем сам ip

>>sed -i -n 's/^.*--_curl_--\(\([0-9].\{1,3\}\)\{3\}[0-9]\{1,3\}\).*:1234/\1/p' /tmp/rostelecom

получаем:

212.164.1.157
212.164.2.82
212.164.3.25
212.164.3.139
212.164.3.222
.......

создав на основании вышеизложенного скрипт и запуская его с помощью cron мы можем полностью автоматизировать получение живых ip для просмотра данного оператора и не зависеть от внешних ресурсов....

понедельник, 7 июля 2014 г.

Сканирование живых ip адресов, для IPTV. часть I

Здесь опишу по шагово, как сканировать живые ip для просмотра iptv, на примере провайдера Ростелеком.

нам потребуется программа для сканирования ip, я рекомендую Angry IP Scanner, скачать можно здесь http://angryip.org, программа freeware со всеми вытекающими.....
настраиваем программу:
   а) нам надо указать, что бы выводились только те ip у которых открыт нужный нам порт
 

б) вводим номер порта, по которому будем искать ip, в нашем случае это 1234

в) вводим диапазон ip для поиска, от 212.164.0.0 до 212.164.255.255, что соответствует городу Новосибирск

г) сканируем, и получаем результат, сохраняем в файл



д) проверяем полученный результат через броузер, вводим в адресную строку например http://212.164.1.157:1234/status и получаем следующую картинку, означающую что udpxy удаленный работает по нужному нам порту



это вовсе не означает, что оно точно будет показывать, но где-то 80% живых ip будут показывать, и здесь же можно увидеть, сколько реально с этого ip смотрит людей...

далее создаем букет следующего типа:

#SERVICE 1:0:19:2F4A:C:70:1680000:0:0:0:http%3a//rostelecom%3a1234/udp/233.7.70.161%3a5000:MTV Live HD
#DESCRIPTION MTV Live HD

и редактируем /etc/hosts и прописываем в него наш найденный ip, таким образом:

212.164.1.157 rostelecom rostelecom

отвечу сразу на вопросы которые могут возникнуть:
1. как часто надо сканировать и искать свежие ip
-- для провайдера Ростелеком, нужно сканировать каждый день, так ка данный оператор использует технологию ADSL а эта штука технологически требует смену ip раз в 24 часа, у других операторов ip живут месяцами
2. почему у разных операторов разные порты
-- крупные операторы используют преднастроеные приставки у которых udprxy настроены на один и тот же порт, мы в большинстве случаев видим открытые порты приставок, которые находятся перед NAT(перед роутером) или udprxy которое работает на самом роутере и разные порты у одного и тоже оператора может зависит от моделей приставок

в следующей части, расскажу как проделывать это но уже с помощью ресивера





Перенос /etc/hosts на флешку

для тех кто экономит ресурс внутренней флешки

mkdir -p /media/usb/etc
cp -f /etc/hosts /media/usb/etc
rm -f /etc/hosts
ln -s /media/usb/etc/hosts /etc/hosts

добавил скрипт, поместить в ресивер, присвоить 755, выполнить
move_hosts.sh