oiv_1968 Posted September 30, 2017 Share Posted September 30, 2017 Доброго времени суток! Случилось так, что потребовалось иметь что-то наподобие прокси... или что-то с похожими функциями. Применял и telnet, нестандартно конечно, но судя по форумам все используют netcat... которого в uc7112plus/ia240 нет. И вот.: - скачал исходник nc-2.0; - распаковал и запустил configure в директории (так сказать из коробки); - "подключил" компилятор для moxa, отредактировав Makefile; #### #CC = gcc PREFIXPATH=/usr/local/arm-linux/bin CC=$(PREFIXPATH)/arm-linux-gcc #### собственно найдя строку CC = gcc, закоментировал её и добавил компилятор для moxa; - после всего этого команда make и получение файла nc; - скопировал по ftp в uc7112plus в /mnt/sd/nc (у меня установлена SD карта); - для того чтобы была как команда nc в командной строке, в файле /etc/profile добавил alias nc=/mnt/sd/nc/nc - это собственно путь к нашему файлу; - ну и установить разрешения для него (в сессии root конечно)... я применял mc для этих целей, но в командной строке есть и chmod. Собственно после этого перезапустил устройство и вот: www-data@Moxa:~$ nc nc 2.0 connect to somewhere: nc [-options] hostname port(s)... listen for inbound: nc -l [-options] [hostname [port]] options: -4 use IPv4 addresses -6 use IPv6 addresses -b allow broadcasts -ePROG program to exec after establishing connection -h this cruft -i[SECS] delay interval for lines sent and ports scanned -l listen mode, for inbound connects -n numeric-only IP addresses, no DNS -oFILE hex dump of traffic -pPORT local port number (useful when listening) -q[SECS] quit SECS after EOF on stdin -r randomize local and remote ports -sADDR local source address -t answer Telnet negotiation -u UDP mode -v verbose [repeat to be more verbose] -wSECS timeout for connects and final net reads -z zero-I/O mode [used for scanning] When connecting, port numbers can be individual or inclusive ranges in the form LO-HI www-data@Moxa:~$ Теперь эта команда есть. Понимаю что грубо сделано, но всё же. В приложенном архиве Makefile уже изменён и nc откомпилирован для IA240(1)LX и UC-7112LX-plus. nc-2.0.zip Link to comment
oiv_1968 Posted November 25, 2017 Author Share Posted November 25, 2017 Доброго времени суток Люди Добрые! Собственно возник вопрос: Как получать результат в bash-скрипт из NetCat. Тестировал вот это на Debian (это заготовка): #!/bin/bash # _p1=$1 _p2=$2 _p3=$3 _nc="" _url="" _port="" #определение принадлежности к MOXA _un=$(uname -a | awk '{print($2)}') case $_un in Moxa) _nc="/mnt/sd/nc/nc" ;; *) _nc="nc" ;; esac function _help() { echo "help" } function _spp() { str=$(echo -e $_port | sed "s/-/ /g") _startport=$(echo "$str" | awk '{print($1)}') _stopport=$(echo "$str" | awk '{print($2)}') while ( ((_startport <= _stopport)) ) do str="" str=$($_nc -vnz -4 $_url $_startport 2>&1) res=$(echo "$str" | grep "succeeded!") if [ "$res" != "" ] then echo "$_url $_startport" fi ((_startport += 1)) done } case $1 in "help") _help ;; "-ip") _url=$2 case $3 in "-p") _port=$4 if [ "$_port" == "" ] then echo "-p parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; *) echo "use \"help\"" ;; esac понятно... в локальной сети: igor@debian-i:~/coding/bash/nsite2$ ./spp.sh -ip 192.168.0.1 -p 21-80 192.168.0.1 23 192.168.0.1 53 192.168.0.1 80 igor@debian-i:~/coding/bash/nsite2$ И все бы не плохо но результат определял по слову в выводе В Debian на ПК: igor@debian-i:~/coding/bash/nsite2$ nc -vnz 192.168.0.1 80 Connection to 192.168.0.1 80 port [tcp/*] succeeded! igor@debian-i:~/coding/bash/nsite2$ А вот тоже самое на UC-7112-Lx-plus: www-data@Moxa:~$ nc -vnz 192.168.0.1 80 192.168.0.1:80 (Dlink-Router.Dlink) open www-data@Moxa:~$ Так по какому принципу (правилу) определять, что порт открыт. Мучение испытывал мой старенький роутер (DIR-620) от ПК и MOXA. Хочется что бы скрипт работал корректно и там и там Заранее благодарен за ответ! Спасибо! Link to comment
Незнайка Posted November 25, 2017 Share Posted November 25, 2017 Ох . Навряд ли вы найдёте тут ответ... Link to comment
oiv_1968 Posted November 25, 2017 Author Share Posted November 25, 2017 Ох . Навряд ли вы найдёте тут ответ... Очень печально Но буду работать. Link to comment
oiv_1968 Posted November 25, 2017 Author Share Posted November 25, 2017 Ох . Навряд ли вы найдёте тут ответ... Если не трудно ткните меня носом на источник возможного ответа. Буду благодарен! Link to comment
oiv_1968 Posted November 26, 2017 Author Share Posted November 26, 2017 Ох . Навряд ли вы найдёте тут ответ... Если не трудно ткните меня носом на источник возможного ответа. Буду благодарен! Вот (тупость разумеется): #!/bin/bash # _nc="" _url="" _port="" #определение принадлежности к MOXA _un=$(uname -a | awk '{print($2)}') case $_un in Moxa) _nc="/mnt/sd/nc/nc" ;; *) _nc="nc" ;; esac function _help() { echo "./spp.sh -ip <ip addr> -p <ip port>" } function _spp() { str=$(echo -e $_port | sed "s/-/ /g") _startport=$(echo "$str" | awk '{print($1)}') _stopport=$(echo "$str" | awk '{print($2)}') while ( ((_startport <= _stopport)) ) do str="" str=$($_nc -vnz -4 $_url $_startport 2>&1) res=$(echo "$str" | grep "succeeded!") if [ "$res" == "" ] then res=$(echo "$str" | grep "open") fi if [ "$res" != "" ] then echo "$_url $_startport" fi ((_startport += 1)) done echo "end" } case $1 in "help") _help ;; "-ip") _url=$2 case $3 in "-p") _port=$4 if [ "$_port" == "" ] then echo "-p parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; "-p") _port=$2 case $3 in "-ip") _url=$4 if [ "$_url" == "" ] then echo "-ip parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; *) echo "use \"help\"" ;; esac Но работает и там и там. Понятно, что можно и nc -vnz <ip addr> <ip port start>-<ip port stop>, но вывод этого скрипта нужен для ввода в другой скрипт... а проверять вывод больше желания нет в другом(скрипте)... потому как надо конкретные данные. Link to comment
oiv_1968 Posted November 28, 2017 Author Share Posted November 28, 2017 Вообще-то всё по идиотски... вот это: #определение принадлежности к MOXA _un=$(uname -a | awk '{print($2)}') case $_un in Moxa) _nc="/mnt/sd/nc/nc" ;; *) _nc="nc" ;; esac ... тупо и по незнанию. Может как-то умнее и проще надо но... убрав вышеуказанное сделал так: 1) скопировал на SD в /mnt/sd/bin содержимое /usr/bin, 2) примонтировал: #mount /usr/bin mount /mnt/sd/bin /usr/bin прямо в файле /etc/rc.d/rc.local 3) удалил ранее установленные алиасы в /etc/bashrc и где только поставил И... вроде ничего лишнего и "nc" стал доступен из скриптов Можно конечно и в /etc/fstab, но страшно... а шнурком консоли давно не пользуюсь. Только по SSH. Что ж... буду убирать везде где можно хлам из UC-7112-LX-Plus Link to comment
Незнайка Posted November 28, 2017 Share Posted November 28, 2017 Я знал, что у вас получится Link to comment
oiv_1968 Posted November 28, 2017 Author Share Posted November 28, 2017 Я знал, что у вас получится Спасибо за поддержку! Только вот решил монтировать полностью /usr... а не по директориям. И "mc" туда же поместил. Совсем не надо "alias" стало. Не думал, что и "Perl" в родном /usr/bin есть... жаль, что я на нём не работаю (надо подумать). Link to comment
oiv_1968 Posted November 28, 2017 Author Share Posted November 28, 2017 Доброго времени суток! ...Должно получиться что-то наподобие "zenmap" точнее "nmap", только как автоматический круглосуточный скрипт. Правда для пробы пришлось оcтановить apache, иначе нагрузка (наличие ОЗУ) около 2 Мб... а без него аж 9 Мб. изменил скрипт(заготовку): #!/bin/bash # _nc="nc" _url="" _port="" vdate="27.11.2017" vversion="01.01" #для MOXA #"cannot connect" #для Debian #"No route to host" function _help() { echo "./spp.sh -ip <ip addr> -p <ip port>" } function __help() { echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов" } function _spp() { #адреса str=$(echo -e $_url | sed "s/\./ /g") echo "str=$str" ip1=$(echo -e $str | awk '{print($1)}') ip2=$(echo -e $str | awk '{print($2)}') ip3=$(echo -e $str | awk '{print($3)}') ip4=$(echo -e $str | awk '{print($4)}') # ip1=$(echo -e $ip1 | sed "s/-/ /g") ip2=$(echo -e $ip2 | sed "s/-/ /g") ip3=$(echo -e $ip3 | sed "s/-/ /g") ip4=$(echo -e $ip4 | sed "s/-/ /g") # ip1_1=$(echo -e $ip1 | awk '{print($1)}') ip1_2=$(echo -e $ip1 | awk '{print($2)}') if [ "$ip1_2" == "" ]; then ip1_2=$ip1_1 fi ip2_1=$(echo -e $ip2 | awk '{print($1)}') ip2_2=$(echo -e $ip2 | awk '{print($2)}') if [ "$ip2_2" == "" ]; then ip2_2=$ip2_1 fi ip3_1=$(echo -e $ip3 | awk '{print($1)}') ip3_2=$(echo -e $ip3 | awk '{print($2)}') if [ "$ip3_2" == "" ]; then ip3_2=$ip3_1 fi ip4_1=$(echo -e $ip4 | awk '{print($1)}') ip4_2=$(echo -e $ip4 | awk '{print($2)}') if [ "$ip4_2" == "" ]; then ip4_2=$ip4_1 fi _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" _stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2" echo "Start URL:$_startURL Stop URL:$_stopURL" #порты str=$(echo -e $_port | sed "s/-/ /g") _startport=$(echo "$str" | awk '{print($1)}') _stopport=$(echo "$str" | awk '{print($2)}') if [ "$_stopport" == "" ]; then _stopport=$_startport fi # while( ((ip1_1 <= ip1_2)) ); do while( ((ip2_1 <= ip2_2)) ); do while( ((ip3_1 <= ip3_2)) ); do while( ((ip4_1 <= ip4_2)) ); do ((_cntport=_startport)) _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" #echo "URL=$_startURL Port=$_cntport" while ( ((_cntport <= _stopport)) ); do str=$(nc -vnz $_startURL $_cntport 2>&1) #echo "--$str" res=$(echo "$str" | grep "succeeded!") if [ "$res" == "" ]; then res=$(echo "$str" | grep "open") fi if [ "$res" != "" ]; then echo "$_startURL $_cntport" fi res=$(echo "$str" | grep "No route to host") if [ "$res" != "" ]; then break fi res=$(echo "$str" | grep "cannot connect") if [ "$res" != "" ]; then break fi ((_cntport += 1)) done ((ip4_1 += 1)) done ((ip3_1 += 1)) done ((ip2_1 += 1)) done ((ip1_1 += 1)) done echo "end" } case $1 in "help") _help ;; "--help") __help ;; "version") echo -e "******\tspp.sh Date:$vdate Version:$vversion\t******" ;; "-ip") _url=$2 case $3 in "-p") _port=$4 if [ "$_port" == "" ] then echo "-p parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; "-p") _port=$2 case $3 in "-ip") _url=$4 if [ "$_url" == "" ] then echo "-ip parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; *) echo "use \"help\"" ;; esac И вот что вышло в домашней локальной сети: gor@debian-i:~/coding/bash/nsite3$ ./wnsite.sh spp 192.168.0.1-254 21-80 URL: 192.168.0.1-254 Port: 21-80 str=192 168 0 1-254 Start URL:192.168.0.1 Stop URL:192.168.0.254 192.168.0.1 23 192.168.0.1 53 192.168.0.1 80 192.168.0.31 21 192.168.0.31 22 192.168.0.31 23 192.168.0.60 22 192.168.0.67 21 192.168.0.67 22 192.168.0.67 80 192.168.0.240 21 192.168.0.240 22 192.168.0.240 23 192.168.0.241 21 192.168.0.241 22 192.168.0.241 23 end igor@debian-i:~/coding/bash/nsite3$ Правда приведённый скрипт запускается другим скриптом (wnsite.sh) Link to comment
oiv_1968 Posted November 28, 2017 Author Share Posted November 28, 2017 Доброго времени суток! ...Должно получиться что-то наподобие "zenmap" точнее "nmap", только как автоматический круглосуточный скрипт. Правда для пробы пришлось оcтановить apache, иначе нагрузка (наличие ОЗУ) около 2 Мб... а без него аж 9 Мб. изменил скрипт(заготовку): #!/bin/bash # _nc="nc" _url="" _port="" vdate="27.11.2017" vversion="01.01" #для MOXA #"cannot connect" #для Debian #"No route to host" function _help() { echo "./spp.sh -ip <ip addr> -p <ip port>" } function __help() { echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов" } function _spp() { #адреса str=$(echo -e $_url | sed "s/\./ /g") echo "str=$str" ip1=$(echo -e $str | awk '{print($1)}') ip2=$(echo -e $str | awk '{print($2)}') ip3=$(echo -e $str | awk '{print($3)}') ip4=$(echo -e $str | awk '{print($4)}') # ip1=$(echo -e $ip1 | sed "s/-/ /g") ip2=$(echo -e $ip2 | sed "s/-/ /g") ip3=$(echo -e $ip3 | sed "s/-/ /g") ip4=$(echo -e $ip4 | sed "s/-/ /g") # ip1_1=$(echo -e $ip1 | awk '{print($1)}') ip1_2=$(echo -e $ip1 | awk '{print($2)}') if [ "$ip1_2" == "" ]; then ip1_2=$ip1_1 fi ip2_1=$(echo -e $ip2 | awk '{print($1)}') ip2_2=$(echo -e $ip2 | awk '{print($2)}') if [ "$ip2_2" == "" ]; then ip2_2=$ip2_1 fi ip3_1=$(echo -e $ip3 | awk '{print($1)}') ip3_2=$(echo -e $ip3 | awk '{print($2)}') if [ "$ip3_2" == "" ]; then ip3_2=$ip3_1 fi ip4_1=$(echo -e $ip4 | awk '{print($1)}') ip4_2=$(echo -e $ip4 | awk '{print($2)}') if [ "$ip4_2" == "" ]; then ip4_2=$ip4_1 fi _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" _stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2" echo "Start URL:$_startURL Stop URL:$_stopURL" #порты str=$(echo -e $_port | sed "s/-/ /g") _startport=$(echo "$str" | awk '{print($1)}') _stopport=$(echo "$str" | awk '{print($2)}') if [ "$_stopport" == "" ]; then _stopport=$_startport fi # while( ((ip1_1 <= ip1_2)) ); do while( ((ip2_1 <= ip2_2)) ); do while( ((ip3_1 <= ip3_2)) ); do while( ((ip4_1 <= ip4_2)) ); do ((_cntport=_startport)) _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" #echo "URL=$_startURL Port=$_cntport" while ( ((_cntport <= _stopport)) ); do str=$(nc -vnz $_startURL $_cntport 2>&1) #echo "--$str" res=$(echo "$str" | grep "succeeded!") if [ "$res" == "" ]; then res=$(echo "$str" | grep "open") fi if [ "$res" != "" ]; then echo "$_startURL $_cntport" fi res=$(echo "$str" | grep "No route to host") if [ "$res" != "" ]; then break fi res=$(echo "$str" | grep "cannot connect") if [ "$res" != "" ]; then break fi ((_cntport += 1)) done ((ip4_1 += 1)) done ((ip3_1 += 1)) done ((ip2_1 += 1)) done ((ip1_1 += 1)) done echo "end" } case $1 in "help") _help ;; "--help") __help ;; "version") echo -e "******\tspp.sh Date:$vdate Version:$vversion\t******" ;; "-ip") _url=$2 case $3 in "-p") _port=$4 if [ "$_port" == "" ] then echo "-p parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; "-p") _port=$2 case $3 in "-ip") _url=$4 if [ "$_url" == "" ] then echo "-ip parametr ?" else _spp fi ;; *) echo "parametr ???" ;; esac ;; *) echo "use \"help\"" ;; esac И вот что вышло в домашней локальной сети: gor@debian-i:~/coding/bash/nsite3$ ./wnsite.sh spp 192.168.0.1-254 21-80 URL: 192.168.0.1-254 Port: 21-80 str=192 168 0 1-254 Start URL:192.168.0.1 Stop URL:192.168.0.254 192.168.0.1 23 192.168.0.1 53 192.168.0.1 80 192.168.0.31 21 192.168.0.31 22 192.168.0.31 23 192.168.0.60 22 192.168.0.67 21 192.168.0.67 22 192.168.0.67 80 192.168.0.240 21 192.168.0.240 22 192.168.0.240 23 192.168.0.241 21 192.168.0.241 22 192.168.0.241 23 end igor@debian-i:~/coding/bash/nsite3$ Правда приведённый скрипт запускается другим скриптом (wnsite.sh) ...Простите - исправление. Дело в том, что упомянутый "nc" в отличии от того, что в Debian 7 сообщение "cannot connect" вывводит и при отсутствии хоста, как такового... так и при отсутствии открытого порта. В то время как в Debian сообщение "No route to host" присутствует только при отсутствии хоста... и пинг по этому адресу не проходит. Для ускорения надо применить ключ "-w <time>" вот так: str=$(nc -vnz -w 1 $_startURL $_cntport 2>&1) Работа продолжается... Link to comment
oiv_1968 Posted November 30, 2017 Author Share Posted November 30, 2017 Доброго времени суток! ... и вот что вышло (кусок bash скрипта, ранее рассматриваемого): #!/bin/bash # vdate="30.11.2017" vversion="01.01" _nc="nc" _url="" _port="" _file_res="" _file_res_def="/home/httpd/ramdisk/spp.dat" ((_memmin=500)) _sppfp1URL="" _sppfp1port="" #для MOXA #"cannot connect" #для Debian #"No route to host" function _help() { echo "./spp.sh -ip <ip addr> -p <ip port> - сканирование портов и адресов" echo "./spp.sh -ip <ip addr> -p <ip port> -f <file_res> - сканирование несколькими с записью в файл" echo "./spp.sh -ip <ip addr> -p <ip port> -fp <file_res> - сканирование несколькими потоками с записью в файл" } function __help() { echo -e "spp <ip addr> <start_port-stop_port>\t - сканирование портов и адресов" echo -e "spps <ip addr> <ip port> <file_res>\t - сканирование несколькими потоками с записью в файл" } function _sppfp1() { str=$(nc -vnz -w 1 $_sppfp1URL $_sppfp1port 2>&1) res=$(echo "$str" | grep "succeeded!") if [ "$res" == "" ]; then res=$(echo "$str" | grep "open") fi if [ "$res" != "" ]; then echo "$_sppfp1URL $_sppfp1port" >> "$_file_res" fi } function _sppfp() { (( pcnt = 0 )) echo "" > "$_file_res_def" #адреса str=$(echo -e $_url | sed "s/\./ /g") echo "str=$str" ip1=$(echo -e $str | awk '{print($1)}') ip2=$(echo -e $str | awk '{print($2)}') ip3=$(echo -e $str | awk '{print($3)}') ip4=$(echo -e $str | awk '{print($4)}') # ip1=$(echo -e $ip1 | sed "s/-/ /g") ip2=$(echo -e $ip2 | sed "s/-/ /g") ip3=$(echo -e $ip3 | sed "s/-/ /g") ip4=$(echo -e $ip4 | sed "s/-/ /g") # ip1_1=$(echo -e $ip1 | awk '{print($1)}') ip1_2=$(echo -e $ip1 | awk '{print($2)}') if [ "$ip1_2" == "" ]; then ip1_2=$ip1_1 fi ip2_1=$(echo -e $ip2 | awk '{print($1)}') ip2_2=$(echo -e $ip2 | awk '{print($2)}') if [ "$ip2_2" == "" ]; then ip2_2=$ip2_1 fi ip3_1=$(echo -e $ip3 | awk '{print($1)}') ip3_2=$(echo -e $ip3 | awk '{print($2)}') if [ "$ip3_2" == "" ]; then ip3_2=$ip3_1 fi ip4_1=$(echo -e $ip4 | awk '{print($1)}') ip4_2=$(echo -e $ip4 | awk '{print($2)}') if [ "$ip4_2" == "" ]; then ip4_2=$ip4_1 fi _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" _stopURL="$ip1_2.$ip2_2.$ip3_2.$ip4_2" echo "Start URL:$_startURL Stop URL:$_stopURL" #порты str=$(echo -e $_port | sed "s/-/ /g") _startport=$(echo "$str" | awk '{print($1)}') _stopport=$(echo "$str" | awk '{print($2)}') if [ "$_stopport" == "" ]; then _stopport=$_startport fi # while( ((ip1_1 <= ip1_2)) ); do while( ((ip2_1 <= ip2_2)) ); do while( ((ip3_1 <= ip3_2)) ); do while( ((ip4_1 <= ip4_2)) ); do ((_cntport=_startport)) _startURL="$ip1_1.$ip2_1.$ip3_1.$ip4_1" while ( ((_cntport <= _stopport)) ); do mem=$(free | awk '/Mem:/ {print($4)}') echo "mem: $mem" if ( (( mem > _memmin )) ); then _sppfp1URL=$_startURL _sppfp1port=$_cntport _sppfp1 & ((_cntport += 1)) fi done ((ip4_1 += 1)) done ((ip3_1 += 1)) done ((ip2_1 += 1)) done ((ip1_1 += 1)) done echo "end" } Работа по нескольким потокам... количество зависит от размера свободной памяти. Ограничение по нижнему значению выбрал 500 кБ. И... ничего себе довольно шустро, относительно конечно, работает. Для работы перед этим остановил apache. Вот отчёт занятости по "top": Load average: 4.58 4.67 3.37 3/57 1731 PID PPID USER STAT VSZ %MEM %CPU COMMAND 22976 134 www-data S 2152 7% 8% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 135 131 www-data S 6528 22% 4% /bin/sshd -i 12253 136 www-data R 2316 8% 3% top 1679 1677 www-data S 2152 7% 1% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 129 77 root S 6672 22% 0% /bin/sshd -i 137 77 root S 6672 22% 0% /bin/sshd -i 131 77 root S 6672 22% 0% /bin/sshd -i 139 137 www-data S 6616 22% 0% /bin/sshd -i 133 129 www-data S 6528 22% 0% /bin/sshd -i 134 133 www-data S 2496 8% 0% -sh 140 139 www-data S 2492 8% 0% -sh 136 135 www-data S 2492 8% 0% -sh 1727 1725 www-data R 2228 7% 0% awk /Mem: {print($4)} 1638 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1719 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1725 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1621 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1655 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1660 1655 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1669 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1677 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1694 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1702 22976 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1623 1621 www-data S 2152 7% 0% [spp.sh] 1695 1694 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1707 1702 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1723 1719 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1643 1638 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 1671 1669 www-data S 2152 7% 0% /bin/bash ./spp.sh -ip 192.168.0.1-254 -p 9000-9100 -fp 113 1 root S 2084 7% 0% /bin/sh --login 1627 1623 www-data S 1564 5% 0% [nc] 1664 1660 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9086 1672 1671 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9087 1700 1695 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9089 1714 1707 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9090 1644 1643 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9085 1686 1679 www-data S 1564 5% 0% nc -vnz -w 1 192.168.0.8 9088 1728 1723 www-data R 1336 4% 0% nc -vnz -w 1 192.168.0.8 9091 77 1 root S 1284 4% 0% /bin/inetd 118 1 root S 1280 4% 0% /bin/snmpd 49 1 root S 1252 4% 0% dhcpcd eth0 1 0 root S 1248 4% 0% init [3] 85 1 bin S 1220 4% 0% /bin/portmap 122 1 root S 1200 4% 0% /bin/reportip www-data@Moxa:~$ Не "Zenmap" конечно, что на PC, но всё же "скаблить" сеть уже реально можно... С адресами 192.168.0.1-254 и диапазоном портов 9000-9100... не на слуху понятное дело... но уходит уже не день, как просто "ping". Устройство UC-7112-LX-Plus в моём применении в работе сутками... удачная разработка инженеров и производителей. Вот бы ОЗУ побольше бы. Link to comment
oiv_1968 Posted November 30, 2017 Author Share Posted November 30, 2017 Собствено короткие испытания (прервано по нехватке времени ожидания): ЗАДАНИЕ: IP адреса с 192.168.0.1 по 192.168.0.254 IP порты с 21 по 80 для каждого из адресов. ::::: старт в 14:21; прерывание работы по CNTRL+C в 16:39. Отчёт по файлу в RAM-диске: www-data@Moxa:~$ cat /home/httpd/ramdisk/spp.dat 192.168.0.1 23 192.168.0.1 80 192.168.0.3 21 192.168.0.4 53 192.168.0.8 23 192.168.0.8 80 192.168.0.9 23 192.168.0.9 80 192.168.0.10 23 192.168.0.10 80 192.168.0.11 23 192.168.0.11 80 192.168.0.12 23 192.168.0.12 80 192.168.0.13 80 192.168.0.14 22 192.168.0.14 23 192.168.0.14 80 192.168.0.16 80 192.168.0.20 80 192.168.0.22 80 192.168.0.23 80 192.168.0.26 21 192.168.0.26 22 192.168.0.26 23 192.168.0.28 80 192.168.0.29 80 192.168.0.34 80 192.168.0.35 80 192.168.0.36 80 192.168.0.39 21 192.168.0.39 80 192.168.0.40 21 192.168.0.40 80 192.168.0.41 21 192.168.0.41 80 192.168.0.42 21 192.168.0.42 80 192.168.0.43 80 192.168.0.46 80 192.168.0.47 80 192.168.0.49 21 192.168.0.49 23 192.168.0.49 80 192.168.0.53 42 192.168.0.53 53 192.168.0.55 21 192.168.0.55 23 192.168.0.67 80 192.168.0.85 23 192.168.0.85 80 www-data@Moxa:~$ В процессе пробы периодически просматривался отчёт по "top" и содержимое файла отчёта по "cat". В процессе всего теста непрерывное подключенное состояние по SSH тремя соединениями. WEB сервер "apache" остановлен. Сосбственная оценка этому - "СОЙДЁТ" Link to comment
oiv_1968 Posted December 1, 2017 Author Share Posted December 1, 2017 Доброго времени суток! ...Если вдруг кого-то заинтересовало, то вот пример применения "nc": www-data@Moxa:~/nsite3$ ./spp.sh help ./spp.sh -ip <ip addr> -p <ip port> - сканирование портов и адресов ./spp.sh -ip <ip addr> -p <ip port> -f <file_res> - сканирование с записью в файл если файл <file_res> не указан, то сохранение в файл "/home/httpd/ramdisk/spp.dat" ./spp.sh -ip <ip addr> -p <ip port> -fp <file_res> - сканирование несколькими потоками с записью в файл если файл <file_res> не указан, то сохранение в файл "/home/httpd/ramdisk/spp.dat" www-data@Moxa:~/nsite3$ Точнее скрипт, в котором используется эта утилита. Понятное дело она не доведена до ума. пример: www-data@Moxa:~/nsite3$ ./spp.sh -ip 192.168.0.1-254 -p 21-80 -fp str=192 168 0 1-255 Start URL:192.168.0.1 Stop URL:192.168.0.254 end имя файла не указал... так, что сохранение отчёта будет в "/home/httpd/ramdisk/anshttp.dat". Так же понятно, что проверены будут хосты с адреса 192.168.0.1 по 192.168.0.254. И соответственно порты с 21 по 80 на каждом из них. Пример вызова этого скрипта из другого скрипта (wnsite.sh): #многопоточный поиск портов по списку адресов IP4 с записью в файл function _spps() { echo "URL: $_url" echo "Port: $_port" str=$(./spp.sh -ip $_url -p $_port -fp) echo -e "$str" } А отчёты применены ранее. Кроме того можно читать содержимое WEB страниц на серверах... и... в Inetnet тоже: #GET запрос function _get() { _met="GET $_path HTTP/1.0\r\n" _host="Host: $_url\r\n" _agent="User-Agent: $_User_Agent\r\n" _snd="$_met$_host$_agent$_Authorization$_Proxy_Authorization$_Proxy_Connection$_Content_type\r\n\r\n" rcv=$(echo -e "$_snd" | nc -4 "$_url" "$_port") echo -e "$rcv" } Ну и конечно построить автоматический "web-браузер" конечно... формируя запросы и анализируя ответы (пример): www-data@Moxa:~/nsite3$ ./wnsite.sh head_http www.google.ru url:www.google.ru port:80 HTTP/1.0 200 OK Date: Fri, 01 Dec 2017 22:54:26 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=UTF-8 P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Set-Cookie: 1P_JAR=2017-12-01-22; expires=Sun, 31-Dec-2017 22:54:26 GMT; path=/; domain=.google.ru Set-Cookie: NID=118=Zw1AJcJux5jIiFp3Hb2aoVWE_pgb2h8ciC0b9jsZcD1jtUOYhiMb663bBOOpkZ0bBmBLV6Dbe5JT6h3DrOBNogJ0pxORDjEL6g-BHSh4xh32NE1r544LDxGQUMhFKTHu; expires=Sat, 02-Jun-2018 22:54:26 GMT; path=/; domain=.google.ru; HttpOnly Accept-Ranges: none Vary: Accept-Encoding ******* anscode=200 ***************** Ответ на запрос ****************************** Результат : 200 - Ok Cache-Control : private, max-age=0 Date : Fri, 01 Dec 2017 22:54:26 GMT P3P : CP="This is not a P3P policy! See g.co/p3phelp for more info." Server : gws X-XSS-Protection : 1; mode=block Set-Cookie : 1P_JAR=2017-12-01-22; expires=Sun, 31-Dec-2017 22:54:26 GMT; path=/; domain=.google.ru NID=118=Zw1AJcJux5jIiFp3Hb2aoVWE_pgb2h8ciC0b9jsZcD1jtUOYhiMb663bBOOpkZ0bBmBLV6Dbe5JT6h3DrOBNogJ0pxORDjEL6g-BHSh4xh32NE1r544LDxGQUMhFKTHu; expires=Sat, 02-Jun-2018 22:54:26 GMT; path=/; domain=.google.ru; HttpOnly Accept-Ranges : none Vary : Accept-Encoding Content-Type : text/html; charset=UTF-8 **************************************************************** www-data@Moxa:~/nsite3$ Утилита и простая, и довольно мощная! spp.sh.zip Link to comment
oiv_1968 Posted April 12, 2018 Author Share Posted April 12, 2018 Доброго времени суток! Вот ещё маленький кусочек... Как то довелось применяя NC попробовать сделать "автомат", который сам производит подключение к сайту... даже через прокси. И вез Base 64 не обошлось: base64.zip Для кодирования и декодирования в скрипте BASH. Сделан на Си для IA240(241)/UC-7112-LX-Plus. При запуске без параметров: www-data@pi01:~/ramdisk/nsite3$ ./base64 Необходимы параметры! Первое, что приходит в голову это "help" www-data@pi01:~/ramdisk/nsite3$ ./base64 help не определено! Примените параметрп"--help" для подсказки. www-data@pi01:~/ramdisk/nsite3$ ./base64 --help параметры: --help исходная подсказка --encode <instr> кодирование, где <instr> исходная строка. на выходе будет кодированная строка в Base 64. --decode <instr> декодирование, где <instr> исходная кодированная строка в Base 64. на выходе будет декодированная строка. -e <instr> то же самое, что и --encode -d <instr> то же самое, что и --decode www-data@pi01:~/ramdisk/nsite3$ Не добавляет перевод строки и т.п., потому как применяется для скрипта www-data@pi01:~/ramdisk/nsite3$ ./base64 -e 123 MTIzwww-data@pi01:~/ramdisk/nsite3$ ./base64 -d MTIz 123www-data@pi01:~/ramdisk/nsite3$ ./base64 -e MTIz TVRJeg==www-data@pi01:~/ramdisk/nsite3$ ./base64 -d MTIz 123www-data@pi01:~/ramdisk/nsite3$ ну и теперь получается работать с сайтами через прокси с авторизацией. Link to comment
oiv_1968 Posted December 24, 2018 Author Share Posted December 24, 2018 Сказать откровенно, то nc маловато будет. А по сему практически не умея собирать (только учусь) что-то из исходников... всё ж таки собрал bin.zip этот curl www-data@Moxa:~/ramdisk$ curl -V curl 7.31.0 (/usr/local/arm-linux/bin/arm-linux-gcc) libcurl/7.31.0 OpenSSL/0.9.8i Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp Features: Largefile NTLM NTLM_WB SSL www-data@Moxa:~/ramdisk$ для его работы надо скопировать libcurl.so.4.3.0 в /lib и создать на него символьную ссылку libcurl.so.4 согласно этому например http://tftf.ru/stati/linux/sozdat_simvolicheskuyu_ssylku_na_papku_fajl/ а файл curl лучше положить в /usr/bin понятно если это требуется. А сейчас ввиду того, что памяти у UC-7112-Lx-Plus очень мало имею желание ещё реализовать и smbclient на устройстве. Пусть само устройство имеет доступ к какому-нибудь локальному ресурсу по сети для сохранения промежуточных файлов работы ну и/или так просто. Саму сборку не выкладываю - стыдно за неграмотность. но вот работа curl (пример) - через прокси www-data@Moxa:~/ramdisk$ curl -I -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210 HTTP/1.0 302 Object Moved Date: Mon, 24 Dec 2018 06:32:13 GMT Server: Microsoft-WinCE/5.0 Location: /remoteadmin/ Content-Type: text/html Content-Length: 125 Connection: Close Proxy-Connection: Close www-data@Moxa:~/ramdisk$ Как раз через прокси с паролем в другую локальную подсеть. Прокси тоже локальный и в интернет не выходит. А так с --location (то же через прокси): www-data@Moxa:~$ curl -I --location -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210 HTTP/1.0 302 Object Moved Date: Wed, 26 Dec 2018 00:56:37 GMT Server: Microsoft-WinCE/5.0 Location: /remoteadmin/ Content-Type: text/html Content-Length: 125 Connection: Close Proxy-Connection: Close HTTP/1.0 200 OK Date: Wed, 26 Dec 2018 00:56:37 GMT Server: Microsoft-WinCE/5.0 Content-length: 6760 Pragma: no-cache Cache-Control: no-cache Content-type: text/html Connection: Keep-Alive Proxy-Connection: Keep-Alive www-data@Moxa:~$ А так просто скачиваем страничку из контроллера (и опять через прокси) www-data@Moxa:~$ curl --location -x www-data:www-data@192.168.0.234:8080 http://192.168.1.210 <!-- Copyright (c) Microsoft Corporation. All rights reserved. --> <!-- Use of this source code is subject to the terms of the Microsoft end-user license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. If you did not accept the terms of the EULA, you are not authorized to use this source code. For a copy of the EULA, please see the LICENSE.RTF on your install media. --> <script language="javascript"> var g_PASSWORD_PasswordSet = "1"; </script> <script language="javascript"> var g_HOSTNAME_Name = "UNO-1019_1"; </script> <script language="javascript"> if('undefined' == typeof(g_NETWORK_PROTOCOLSTOBINDTO)) {g_NETWORK_PROTOCOLSTOBINDTO = new Array();} g_NETWORK_PROTOCOLSTOBINDTO["ASYNCMAC1"] = "*"; g_NETWORK_PROTOCOLSTOBINDTO["PPTP1"] = "*"; g_NETWORK_PROTOCOLSTOBINDTO["L2TP1"] = "*"; g_NETWORK_PROTOCOLSTOBINDTO["PPPOE1"] = "*"; g_NETWORK_PROTOCOLSTOBINDTO["DM9CE1"] = "*"; g_NETWORK_PROTOCOLSTOBINDTO["DM9CETWO1"] = "*"; if('undefined' == typeof(g_NETWORK_DHCP)) {g_NETWORK_DHCP = new Array();} g_NETWORK_DHCP["DM9CETWO1"] = "DISABLED"; if('undefined' == typeof(g_NETWORK_GATEWAY)) {g_NETWORK_GATEWAY = new Array();} g_NETWORK_GATEWAY["DM9CETWO1"] = ""; if('undefined' == typeof(g_NETWORK_WINS2)) {g_NETWORK_WINS2 = new Array();} g_NETWORK_WINS2["DM9CETWO1"] = ""; if('undefined' == typeof(g_NETWORK_WINS1)) {g_NETWORK_WINS1 = new Array();} g_NETWORK_WINS1["DM9CETWO1"] = ""; if('undefined' == typeof(g_NETWORK_DNS2)) {g_NETWORK_DNS2 = new Array();} g_NETWORK_DNS2["DM9CETWO1"] = ""; if('undefined' == typeof(g_NETWORK_DNS1)) {g_NETWORK_DNS1 = new Array();} g_NETWORK_DNS1["DM9CETWO1"] = ""; if('undefined' == typeof(g_NETWORK_AUTODNS)) {g_NETWORK_AUTODNS = new Array();} g_NETWORK_AUTODNS["DM9CETWO1"] = "1"; if('undefined' == typeof(g_NETWORK_Subnet)) {g_NETWORK_Subnet = new Array();} g_NETWORK_Subnet["DM9CETWO1"] = "255.255.255.0"; if('undefined' == typeof(g_NETWORK_MACAddress)) {g_NETWORK_MACAddress = new Array();} g_NETWORK_MACAddress["DM9CETWO1"] = "00-d0-c9-be-7e-45"; if('undefined' == typeof(g_NETWORK_IPAddress)) {g_NETWORK_IPAddress = new Array();} g_NETWORK_IPAddress["DM9CETWO1"] = "192.168.1.210"; </script> <noscript><body bgcolor=#d6dff5><center><b><font color=#6487dc>Javascript support is required to display this page</font></b></center></body></noscript> <script src="ParsedGeneralUtils.js" language="javascript"></script><script src="../remoteadminimages/GeneralUtils.js" language="javascript"></script> <script language="javascript"> var l_ShowingPasswords = false; // Local variables (NOTE: make sure these match the values in changepassword.htm) var l_PasswordMinLen = 3; var l_PasswordMaxLen = 16; function ShowPasswordErrors() { if(window.g_PASSWORD_SuccessfullyChanged) { return new String("<font color=#0000FF>Successfully changed password!</font>"); } if(window.g_PASSWORD_Mismatch) { return new String("<font color=#FF0000>Password mismatch! -- please try again</font>"); } if(window.g_PASSWORD_InvalidPassword) { return new String("<font color=#FF0000>Invalid Password! -- please try again</font>"); } return new String(""); } function ShowBoth() { ShowHostNameConfig(); } function ShowHostNameConfig() { // Device Name BuildBoxHeader(); document.write("<table class=boxInside>"); document.write("<TR><TD class=cellLtColor>Device Name:</TD></TR>"); document.write("<TR><TD><INPUT type=text onkeyup=enableApply() name=\"HOSTNAME_Name\" value=\"" + g_HOSTNAME_Name + "\"></TD></TR>"); document.write("<TR><TD><INPUT type=hidden name=a_REMOTEUTILS_NOBACKUPREGISTRY_OOBE value=\"0\"></TD></TR>"); document.write("</table>"); BuildBoxFooter(); AddApplyCancel(); AddErrorDisplay(); ClearError(); } function ShowPasswordConfig() { l_ShowingPasswords = true; // Device Password BuildBoxHeader(); document.write("<table class=boxInside>"); document.write("<TR><TD COLSPAN=2 class=cellLtColor>Device Log On: " + ShowPasswordErrors() + "</TD></TR>"); document.write("<TR><TD COLSPAN=2>To access the device, type your password and then click <B>Log On</B>. Your base station password is case sensitive.</TD></TR>"); if(window.g_PASSWORD_PasswordSet) { document.write("<TR>"); document.write(" <TD>Old Password:</TD>"); document.write(" <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWDOLD\" size=\"20\"></TD>"); document.write("</TR>"); } document.write("<TR>"); document.write(" <TD>Password:</TD>"); document.write(" <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWD\" size=\"20\"></TD>"); document.write("</TR>"); document.write("<TR>"); document.write(" <TD>Verification:</TD>"); document.write(" <TD><input type=\"password\" onkeyup=enableApply() name=\"PASSWORD_PWDVERIFY\" size=\"20\"></TD>"); document.write("</TR>"); document.write("<TR>"); document.write(" <TD COLSPAN=2><input type=hidden value=ENABLED name=PASSWORD_SECURITYLEVEL></TD>"); document.write("<TR>"); document.write("</table>"); BuildBoxFooter(); AddApplyCancel(); AddErrorDisplay(); ClearError(); } function SubmitHandler(SubmitVar) { var bOK = true; ClearError(); var form = FindObject("EditForm"); if (l_ShowingPasswords) { if(window.g_PASSWORD_PasswordSet) { bOK = ValidatePW(form.PASSWORD_PWDOLD, l_PasswordMinLen, l_PasswordMaxLen); } bOK &= ValidatePW(form.PASSWORD_PWD, l_PasswordMinLen, l_PasswordMaxLen); bOK &= ValidatePW(form.PASSWORD_PWDVERIFY, l_PasswordMinLen, l_PasswordMaxLen); if (form.PASSWORD_PWD.value != form.PASSWORD_PWDVERIFY.value) { FlagError(form.PASSWORD_PWD, "PWDontMatch"); FlagError(form.PASSWORD_PWDVERIFY, "PWDontMatch"); bOK = false; } } else { bOK = ValidateHostName("HOSTNAME_NAME"); } // If everything passed then pass this onto the global handler to submit if (true == bOK) { GlobalSubmitHandler(SubmitVar); return true; }else{ FocusFirstError(); return false; } } </script> <html> <script language="javascript"> document.write("<form ID=EditForm METHOD=post onsubmit='return SubmitHandler(this)'>"); if(!window.g_PASSWORD_PasswordSet) { BuildMainTable_NoToolBar("NAS Admin", "", "ShowPasswordConfig()"); } else if(window.g_HOSTNAME_NotSet) { BuildMainTable_NoToolBar("NAS Admin", "Please assign your device a network name", "ShowHostNameConfig()"); } else { BuildMainTable("Please name your device", "", "ShowBoth()"); } document.write("</form>"); </script> </html> www-data@Moxa:~$ И это не выложил бы, но уж больно давно сам хотел этот curl именно на MOXA UC-7112-Lx-Plus... а тут удача в попытке Link to comment
oiv_1968 Posted December 25, 2018 Author Share Posted December 25, 2018 Доброго времени суток! Вот: 3proxy.zip Прокси сервер. Это так сказать с разгона в обучении сборки. Тут только исполняемые файлы. Я испытал proxy без всяких настроек только так: ./proxy -p8080 Тем самым сделав соединение через прокси между интерфейсами LAN1 и LAN2. Кстати нормально работает. Только apache пришлось остановить - ест много ОЗУ. Всё можно оформить по человечески в /usr/bin В моём применении (для меня) штука полезная. Сам прокси - он 3proxy как есть, только собран компилятором, что с диска от IA240/UC-7112-LX-Plus. Вот блин теперь он будет сразу в двух подсетях, а не PC с Debian с двумя сетевыми картами. Link to comment
oiv_1968 Posted January 13, 2019 Author Share Posted January 13, 2019 Доброго времени суток! И... и с наступающим СТАРЫМ НОВЫМ ГОДОМ! Искал и вот наткнулся на curl-7.63.0 ну и решил собрать и его. Да и сделать "инсталяцию" его на устройства типа IA240LX/UC-7112-LX-plus. Вот: curl_7.63.zip Но есть одно НО! А именно у меня на SD карте есть директории USR и LIB и они примонтированы на место /usr и /lib соответственно. Таким образом это обезопасило меня для опытов. SD карта гораздо дешевле устройства. И вот: www-data@Moxa:~$ curl --version curl 7.63.0 (arm-unknown-linux-gnu) libcurl/7.63.0 OpenSSL/0.9.8i Release-Date: 2018-12-12 Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL UnixSockets HTTPS-proxy www-data@Moxa:~$ Видите теперь есть ещё и SMB, то есть теперь устройство может самостоятельно с помощью curl сохранять и изменять файлы по сети на машинах windows. Значит можно делать логи и т.п. прямо в нужном месте в сети, а не на устройстве. Для установки (про монтирование уже сказал) надо запустить install.sh вот: # ./install.sh install for IA240LX / UC-7112-LX-Plus copy curl to /usr/bin ... copy libcurl.so.4.5.0 to /lib/libcurl.so.4.5.0 ... create link libcurl.so.4 ... curl --version curl 7.63.0 (arm-unknown-linux-gnu) libcurl/7.63.0 OpenSSL/0.9.8i Release-Date: 2018-12-12 Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL UnixSockets HTTPS-proxy END Link to comment
oiv_1968 Posted January 14, 2019 Author Share Posted January 14, 2019 С Новым Годом! (Старым конечно). Доброго времени суток! ...Первые опыты с curl по smb. Тут читаю файл с некой машины из расшареной папки windows и вывожу в консоль www-data@Moxa:~/ramdisk$ curl -u ":" smb://192.168.0.74/shared/test.txt ----TEST--- www-data@Moxa:~/ramdisk$ Как видно -u ":" тут согласно подсказки пользователь:пароль ну и/или домен. Машина со свободным доступом к папке специально для всех и всё (кстати винда виртуальная на VirtualBox). Ключ -u и содержимое надо обязательно. И вот: www-data@Moxa:~/ramdisk$ curl -u "1234abcde:5678fghi" smb://192.168.0.74/shared/test.txt ----TEST--- www-data@Moxa:~/ramdisk$ даже логин и пароль от потолка... папка открыта для всех. Выведено содержимое файла test.txt из соответствующего места в консоль А вот подготовили некий файл 123.txt на устройстве UC7112LX-plus и отправили его: www-data@Moxa:~/ramdisk$ curl -T 123.txt -u "1234:5678" smb://192.168.0.74/shared/123.txt % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 18 0 0 100 18 0 7 0:00:02 0:00:02 --:--:-- 7 www-data@Moxa:~/ramdisk$ Ну и потом прочитали его же из машины по сети с выводом в консоль: www-data@Moxa:~/ramdisk$ curl -u "1234:5678" smb://192.168.0.74/shared/123.txt -----abc---- 123 www-data@Moxa:~/ramdisk$ Так что метод работает... контроллеры сами могут класть и брать файлы на машины windows, где какие-то программы их потребляют. А вот если к примеру MySQL-клиент на контроллере. Он сам сможет вносить что-то в базу данных и брать из неё. Это как вариант... Link to comment
oiv_1968 Posted January 26, 2019 Author Share Posted January 26, 2019 В 25.12.2018 в 12:18, oiv_1968 сказал: Доброго времени суток! Вот: 3proxy.zip Прокси сервер. Это так сказать с разгона в обучении сборки. Тут только исполняемые файлы. Я испытал proxy без всяких настроек только так: ./proxy -p8080 Тем самым сделав соединение через прокси между интерфейсами LAN1 и LAN2. Кстати нормально работает. Только apache пришлось остановить - ест много ОЗУ. Всё можно оформить по человечески в /usr/bin В моём применении (для меня) штука полезная. Сам прокси - он 3proxy как есть, только собран компилятором, что с диска от IA240/UC-7112-LX-Plus. Вот блин теперь он будет сразу в двух подсетях, а не PC с Debian с двумя сетевыми картами. Доброго времени суток!!! Конечно сей прокси вроде как ни к чему но... но при применении по схеме LAN1 <---> LAN2 через конфигурацию столкнулись с проблемой когда контроллер AC800M (ABB) наглухо зависал. А ранее его так же включали в общую локальную сеть... и так же зависал. Он контроллер имеет 2 ETHERNEN соединения с IP 192.169.0.100 и 192.168.1.100 соответственно. По 1-му он связан с сенсорным дисплеем, а второй был свободен. Подключались к первому - пускали в локалку. Потом был опыт с применением 2-го соединения - удачно! Ну и другая подсеть соответственно. Всё для сбора данных. И в эту подсеть ещё один контроллер - управление охлаждением. А узлом между локалкой и подсетью ПК с двумя сетевухами. Ну иногда нужен доступ к каждому из контроллеров из локалки. Все контроллеры с WEB - интерфейсами. Тут и помог сей прокси. А просьба и вопрос вот в чём: Имеется ли для UC-7112-Lx-Plus набор утилит cifs (mount.cifs и др)? Собственно собрал, но только mount.cifs - думал будет работать. А он пустышка. Потому как в исходниках нет ни cifs.idmap, ни cifs.upcall ни др. Точнее есть.. по умолчанию они в сборку не включены. А если ключами добавить типа: #!/bin/sh echo "------ для UC7112LX-plus ------" ./configure \ ARCH=arm \ CC=/usr/local/arm-linux/bin/arm-linux-gcc \ CROSS_COMPILE=/usr/local/arm-linux/bin/arm-linux- \ LDFLAGS="-L/usr/local/arm-linux/lib" \ --host=arm-linux \ --enable-pie=no \ --enable-cifsacl \ ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes Тут только cifsacl то сразу нет ряда файлов (заголовочных... ну и Си соответственно). Искал... они конечно есть в samba... и их надо грамотно перетаскивать. Это можно попробовать. Там в описании cifs сказано, что пакет не требует дополнительных библиотек, но должны быть файлы упомянутые ранее, которые не включены в сбору. Да без ключей собрал mount.cifs на устройстве запускается и умеет только help. А надо все утилиты. Кругом машины с windows. С curl работает всё, но это только бросать логи на расшареную папку некой машины. А хочется сделать некий рабочий буфер для самого устройства в сети. Будь это IA240LX можно было бы и HDD подключить. А на UC-7112-LX-Plus можно только по сети, потому как SD карта не в счёт и она для другого. Спасибо! Link to comment
oiv_1968 Posted March 1, 2019 Author Share Posted March 1, 2019 Доброго времени суток! Кроме netcat вот ещё и socat socat.zip Ранее не применял, но вчера после сборки испытал. Работает! На мой взгляд в ряде применений удобнее netcat, ну сами знаете. Уважаемые знатоки! А можно ли им как говориться наводить многоарочные мосты? Link to comment
oiv_1968 Posted March 20, 2019 Author Share Posted March 20, 2019 Доброго времени суток! Опять про cURL: Имеется некий IA240LX, который по Modbus управляет системой водоподготовки. Сам он в сети предприятия. И он через curl и прокси в этой же сети получает доступ по ftp к UC-1019(Windows CE) в другой подсети (цеха). Там система управления охлаждением индукторов, которая имеет датчик температуры на улице. И: www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp <pre><hr> 230 User logged in, proceed. <hr>[<A HREF="..">..</A>] ---------- 11-26-18 12:15 4608 <A HREF="/Temp/test_owen_dll.exe">test_owen_dll.exe</A> ---------- 11-26-18 12:15 4096 <A HREF="/Temp/test_modbus_dll.exe">test_modbus_dll.exe</A> ---------- 11-26-18 12:15 12288 <A HREF="/Temp/test_modbus.exe">test_modbus.exe</A> ---------- 11-26-18 12:15 5120 <A HREF="/Temp/test_abp_tcp_dll.exe">test_abp_tcp_dll.exe</A> ---------- 11-26-18 12:15 69 <A HREF="/Temp/start.bat">start.bat</A> ---------- 11-26-18 12:15 6144 <A HREF="/Temp/dllOwen.dll">dllOwen.dll</A> ---------- 11-26-18 12:15 13824 <A HREF="/Temp/dllModbusRTU.dll">dllModbusRTU.dll</A> ---------- 11-26-18 12:15 7680 <A HREF="/Temp/dllCoolServer.dll">dllCoolServer.dll</A> ---------- 11-26-18 12:15 17920 <A HREF="/Temp/dllAbpTcp.dll">dllAbpTcp.dll</A> ---------- 11-26-18 12:15 10240 <A HREF="/Temp/cool.dll">cool.dll</A> ---------- 11-26-18 12:15 20480 <A HREF="/Temp/abp_tcp_test.exe">abp_tcp_test.exe</A> ---------- 11-26-18 12:15 9216 <A HREF="/Temp/abp_control.exe">abp_control.exe</A> <hr>226 Closing data connection. А затем прочитав: www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp/start.bat dir cd \ dir copy flash/tst/*.* temp cd temp abp_control.exe www-data@Moxa:~$ Сделан вывод, что если переделать на UNO-1019 исполняемый файл, что бы он оставлял текущие параметры в файле. Можно применить и чтение уличной температуры напрямую. В плане того, что некий UC-7112-LX-Plus имея 2 ETHERNET так же в двух этих сетях. А вот доступ к двум устройствам в разных подсетях. Это просто простой пример www-data@Moxa:~$ curl -x www-data:www-data@192.168.0.234:8080 ftp://admin:12345670@192.168.1.210/Temp ftp://root:paramon@192.168.0.246 <pre><hr> 230 User logged in, proceed. <hr>[<A HREF="..">..</A>] ---------- 11-26-18 12:15 4608 <A HREF="/Temp/test_owen_dll.exe">test_owen_dll.exe</A> ---------- 11-26-18 12:15 4096 <A HREF="/Temp/test_modbus_dll.exe">test_modbus_dll.exe</A> ---------- 11-26-18 12:15 12288 <A HREF="/Temp/test_modbus.exe">test_modbus.exe</A> ---------- 11-26-18 12:15 5120 <A HREF="/Temp/test_abp_tcp_dll.exe">test_abp_tcp_dll.exe</A> ---------- 11-26-18 12:15 69 <A HREF="/Temp/start.bat">start.bat</A> ---------- 11-26-18 12:15 6144 <A HREF="/Temp/dllOwen.dll">dllOwen.dll</A> ---------- 11-26-18 12:15 13824 <A HREF="/Temp/dllModbusRTU.dll">dllModbusRTU.dll</A> ---------- 11-26-18 12:15 7680 <A HREF="/Temp/dllCoolServer.dll">dllCoolServer.dll</A> ---------- 11-26-18 12:15 17920 <A HREF="/Temp/dllAbpTcp.dll">dllAbpTcp.dll</A> ---------- 11-26-18 12:15 10240 <A HREF="/Temp/cool.dll">cool.dll</A> ---------- 11-26-18 12:15 20480 <A HREF="/Temp/abp_tcp_test.exe">abp_tcp_test.exe</A> ---------- 11-26-18 12:15 9216 <A HREF="/Temp/abp_control.exe">abp_control.exe</A> <hr>226 Closing data connection. <pre><hr> 230- Welcome to 230- ____ _ _ 230- / __| ||_| 230- _ _| | | | _ ____ _ _ _ _ 230- | | | | | | || | _ \| | | |\ \/ / 230- | |_| | |__| || | | | | |_| |/ \ 230- | ___\____|_||_|_| |_|\____|\_/\_/ 230- | | 230- |_| 230- 230- Product UC-7101 Series 230- For further information check: 230- http://www.moxa.com.tw/ 230- 230 User root logged in. <hr>lrwxrwxrwx May 28 2010 LINK <A HREF="/mnt/ramdisk">ramdisk</A> -> /mnt/ramdisk</A> lrwxrwxrwx May 28 2010 LINK <A HREF="/bin">sbin</A> -> /bin</A> dr-xr-xr-x Jan 1 1970 DIR <A HREF="/proc/">proc</A> drwxr-xr-x Mar 22 2017 DIR <A HREF="/home/">home</A> drwxr-xr-x May 28 2010 DIR <A HREF="/usr/">usr</A> drwxrwxrwx Mar 15 07:52 DIR <A HREF="/var/">var</A> lrwxrwxrwx May 28 2010 LINK <A HREF="/var/tmp">tmp</A> -> /var/tmp</A> drwxr-xr-x May 28 2010 DIR <A HREF="/mnt/">mnt</A> drwxr-xr-x May 28 2010 DIR <A HREF="/lib/">lib</A> drwxr-xr-x Mar 15 07:52 DIR <A HREF="/etc/">etc</A> drwxr-xr-x May 28 2010 DIR <A HREF="/dev/">dev</A> drwxr-xr-x May 28 2010 DIR <A HREF="/bin/">bin</A> <hr>226 Transfer complete. www-data@Moxa:~$ Сначала как и ранее доступ в другую подсеть к UNO-1019, а потом к UC7101-LX(Станция катодной защиты) в своей подсети. То есть сбор нужных данных по списку с помощью некого скрипта из разных устройств в разных подсетях выполнив одну команду. И в одну текстовую переменную BASH-скрипта... а потом только выделить необходимое включив нужные данные в список параметров для своего техпроцесса. Интересно тем, что можно применить и дублирование при сбоях, и задание параметров для всех процессов и т.п. Не приходило в голову, что такие инструменты для удобны в АСУ Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now