Флуд... так флуд: И снова BASH и сказка про NC

Тема в разделе "Флудилка", создана пользователем Igor68, 3 дек 2017.

  1. Igor68

    Igor68 Гуру

    Доброго времени суток!!!
    Довелось как-то потрогать эту пресловутую утилиту "nc" на маленькой машинке UC-7112-LX-Plus с ОС Linus по SSH сессии. Понятное дело, что захотелось применять как -то автоматически. (Всё это будет работать и на Raspberry Pi с Linux(Raspbian/Debian/Ubuntu и т.д.))
    Не бейте сильно, за мои косяки!
    Началось всё со сканирования портов в локальной сети вот этим:

    Понятно, что делал сам... и про подсказку не забыл:
    spp.sh.zip
    Код (Bash):
    www-data@Moxa:~/nsite3$ ./spp.sh
    use "help"
    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$ ./spp.sh -ip 192.168.0.1-254 -p 21-80 -fp
    str=192 168 0 1-254
    Start URL:192.168.0.1 Stop URL:192.168.0.254
    Данные сохранял в файл по умолчанию. Ну вот соответственно и вывод хостов с портами с 21 по 80 в моей сети с адреса 192.168.0.1 по 192.168.0.254
    Код (Bash):

    www-data@Moxa:~$ cat /home/httpd/ramdisk/spp.dat

    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
    www-data@Moxa:~/nsite3$
     
    Ох и не быстрая эта процедура.

    Изменено, по причине того, что nc-2.0 автоматически не умеет выбирать IP4 и IP6. Просто добавлен ключик "-4" и проверено.
     

    Вложения:

    • spp.sh.zip
      Размер файла:
      1,7 КБ
      Просмотров:
      448
    Последнее редактирование: 6 дек 2017
  2. Igor68

    Igor68 Гуру

    А вот этим делал запрос на WEB страничку:
    sndhttp.sh.zip
    Вот к моему роутеру (DIR-620):

    Код (Bash):
    ******  sndhttp.sh Date:01.12.2017 Version:01.01 - запрос по HTTP ******
    ./tsndhttp.sh -str <url> <port> <str>       - посылка строки <str> запроса без формирования по <url> на <port>
    ./tsndhttp.sh -get <url:port> <path>        - посылка запроса GET на <url:port>
    ./tsndhttp.sh -head <url:port> <path>       - посылка запроса HEAD на <url:port>
    ./tsndhttp.sh -options <url:port> <path>    - посылка запроса OPTIONS на <url:port>
    ./tsndhttp.sh -trace <url:port> <path>      - посылка запроса TRACE на <url:port>

    www-data@Moxa:~/nsite3$ ./sndhttp.sh -get 192.168.0.1
    url:192.168.0.1 port:80 path:/
    HTTP/1.0 200 OK
    Pragma: no-cache
    Cache-Control: no-cache, must-revalidate
    Content-type: text/html
    Expires: Tue, 02 Jan 2000 01:00:00 GMT
    Last-Modified: Sun, 03 Dec 2017 15:42:58 GMT
    Set-Cookie: user_ip=192.168.0.31

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>DIR-620</title>
    <meta name="date" content="" />
    <meta name="generator" content="no generator" />
    <meta name="copyright" content="Copyright (C) 2008 D-Link Russia" />
    <meta name="keywords" content="DIR-620" />
    <meta name="description" content="DIR-620" />
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="content-style-type" content="text/css" />
    <meta http-equiv="content-script-type" content="text/javascript" />
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" href="/css/jhmvc.css" type="text/css" />
    <link rel="stylesheet" href="/css/login.css" type="text/css" />
    <link rel="stylesheet" href="/css/common.css" type="text/css" />
    <script type="text/javascript" src="/scripts/jquery.js"></script>
    <script type="text/javascript" src="/scripts/jquery.json.js"></script>
    <script type="text/javascript" src="/scripts/jhmvc.js"></script>
    <script type="text/javascript" src="/scripts/sm_params.js"></script>

    <script type="text/javascript" src="/scripts/common1.js"></script>
    <script type="text/javascript" src="/scripts/common2.js"></script>
    <script type="text/javascript" src="/scripts/login.js"></script>
    <script type="text/javascript" src="scripts/eng.lng.js"></script>
    <script>var baselang = new Object(lang);</script>
    <script type="text/javascript" src="scripts/rus.lng.js"></script>
    <script type="text/javascript" src="/scripts/config.lng.js"></script>
    <script type="text/javascript">
    var badAuthKey = "";
    window.curlang = "rus";
    $(start)
    </script>
    </head>
    <body>
    <div id="wrapper">
    <div class="cornerstop">
    <div>
    </div>
    </div>
    <div class="forshadow">
    <div class="forshadow2">
    <div id="headerblock">
    <div id="logoblock">
    <img src="../image/logo_blue.gif">
    <div>
    DIR-620
    </div>
    </div>
    <div id='fastmenu'>
    </div>
    </div>
    <div id="rproxyinfo">
    <a onClick="disconnectFromProxy();window.location.reload();"></a><span></span>
    </div>
    <div id="id_div_messages">

    </div>
    <div id="id_div_main_container">
    <form id="id_form_main" method="post" enctype="application/x-www-form-urlencoded" action="index.cgi">
    <input type="hidden" name="v2" value="y"/>
    <input type="hidden" name="rs_type" value="html"/>
    <div id="id_div_login_input">
    <div id="id_div_container_login_input">
    <span id="hs_login"></span>
    <input id="A1" name="A1" type="text" maxlength="15" />
    <span id="hs_password"></span>
    <input id="A2" name="A2" type="password" maxlength="30" />
    <!-- <input type="checkbox" class="remb"> <span class="remember">Remember me</span> -->
    <input id="auth" name="auth" type="hidden" value="auth" />
    </div>
    </div>
    <div id="id_div_login_buttons">
    <div id="id_div_container_buttons">
    <a id="bt_submit" class="bt" href="#"></a>&nbsp;
    <a id="bt_reset" class="bt" href="#"></a>
    </div>
    </div>
    </form>
    </div>
    </div>
    </div>
    <div class="cornersbottom">
    <div>
    </div>
    </div>
    </div>
    </body>
    </html>
    www-data@Moxa:~/nsite3$
     
    А вот к яндексу:
    Код (Bash):
    www-data@Moxa:~/nsite3$ ./sndhttp.sh -head www.yandex.ru
    url:www.yandex.ru port:80
    HTTP/1.1 302 Found
    Date: Sun, 03 Dec 2017 11:45:31 GMT
    Cache-Control: no-cache,no-store,max-age=0,must-revalidate
    Location: https://www.yandex.ru/
    Expires: Sun, 03 Dec 2017 11:45:31 GMT
    Last-Modified: Sun, 03 Dec 2017 11:45:31 GMT
    P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
    Set-Cookie: yandexuid=1532823811512301531; Expires=Wed, 01-Dec-2027 11:45:31 GMT; Domain=.yandex.ru; Path=/
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Length: 0

    www-data@Moxa:~/nsite3$
    Понятно, что это опыты... ведь прокси для фильтра у меня не вышел.
     

    Вложения:

    • sndhttp.sh.zip
      Размер файла:
      1,5 КБ
      Просмотров:
      455
    ИгорьК нравится это.
  3. Igor68

    Igor68 Гуру

    Вот Этим... можно сказать анализ ответа:
    anshttp.sh.zip
    Код (Bash):
    www-data@Moxa:~/nsite3$ ./anshttp.sh

    примените "help" для информации

    www-data@Moxa:~/nsite3$ ./anshttp.sh help

    ******  anshttp.sh Date:26.11.2017 Version:01.01 - анализ ответа по HTTP ******
    tanshttp.sh -a <data>      - анализ строки <data>
    tanshttp.sh -at <data>     - анализ строки <data> с выводом в консоль
    tanshttp.sh -af <data>     - анализ строки <data> с выводом в файл "/home/httpd/ramdisk/anshttp.dat"

    www-data@Moxa:~/nsite3$
    Правда нужна и обёртка:
    wnsite.sh.zip
    ...а так же и все ранее упомянутые скрипты, что бы получить это:

    Код (Bash):
    ww-data@Moxa:~/nsite3$ ./wnsite.sh help

    ******  wnsite.sh Date:30.11.2017 Version:01.01 *******

    help                        - Текущая подсказка

    ******  spp.sh Date:02.12.2017 Version:01.01    ******
    spp <ip addr> <start_port-stop_port>     - сканирование портов и адресов
    spps <ip addr> <ip port> <file_res>       - сканирование несколькими потоками с записью в файл

    get_http <url:port> <path>       - GET запрос к странице на <url> по умолчанию <port> = 80
    head_http <url:port> <path>      - HEAD запрос к странице на <url> по умолчанию <port> = 80
    options_http <url:port> <path>   - OPTIONS запрос к странице на <url> по умолчанию <port> = 80
    trace_http <url:port> <path>     - TRACE запрос к странице на <url> по умолчанию <port> = 80

    www-data@Moxa:~/nsite3$ ./wnsite.sh head_http www.yandex.ru
    url:www.yandex.ru port:80
    HTTP/1.1 302 Found
    Date: Sun, 03 Dec 2017 12:09:47 GMT
    Cache-Control: no-cache,no-store,max-age=0,must-revalidate
    Location: https://www.yandex.ru/
    Expires: Sun, 03 Dec 2017 12:09:47 GMT
    Last-Modified: Sun, 03 Dec 2017 12:09:47 GMT
    P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
    Set-Cookie: yandexuid=9695709701512302987; Expires=Wed, 01-Dec-2027 12:09:47 GMT; Domain=.yandex.ru; Path=/
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    Content-Length: 0

    ******* anscode=302
    ***************** Ответ на запрос ******************************
    Результат               : 302 - Временно перемещен, Moved Temporarily.
    Cache-Control           : no-cache,no-store,max-age=0,must-revalidate
    Date                    : Sun, 03 Dec 2017 12:09:47 GMT
    Location                : https://www.yandex.ru/
    P3P                     : policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
    Last-Modified           : Sun, 03 Dec 2017 12:09:47 GMT
    X-XSS-Protection        : 1; mode=block
    X-Content-Type-Options  : nosniff
    Set-Cookie              : yandexuid=9695709701512302987; Expires=Wed, 01-Dec-2027 12:09:47 GMT; Domain=.yandex.ru; Path=/
    Content-Length          : 0
    ****************************************************************
    www-data@Moxa:~/nsite3$
     

    Вложения:

    • anshttp.sh.zip
      Размер файла:
      2,6 КБ
      Просмотров:
      402
    • wnsite.sh.zip
      Размер файла:
      1,1 КБ
      Просмотров:
      396
    Последнее редактирование: 3 дек 2017
  4. Igor68

    Igor68 Гуру

    А вот этот "шатун" (пока, что заготовка) работает... выполняет функцию браузера:
    br1site.sh.zip
    Что он делает? А вот
    1) запускаем:

    Код (Bash):
    www-data@Moxa:~/nsite3$ ./br1site.sh www.google.com
    send...
    analise...
    CMD File:  File:/home/httpd/ramdisk/anshttp.dat
    url:www.google.com port:80 path:/
    HTTP/1.0 302 Found
    Cache-Control: private
    Content-Type: text/html; charset=UTF-8
    Referrer-Policy: no-referrer
    Location: http://www.google.ru/?gfe_rd=cr&dcr=0&ei=Du4jWqrVDYPHYLaMpoAP
    Content-Length: 266
    Date: Sun, 03 Dec 2017 12:29:02 GMT

    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>302 Moved</TITLE></HEAD><BODY>
    <H1>302 Moved</H1>
    The document has moved
    <A HREF="http://www.google.ru/?gfe_rd=cr&amp;dcr=0&amp;ei=Du4jWqrVDYPHYLaMpoAP">here</A>.
    </BODY></HTML>

    Status-Code: 302
    Content-Type: text/html; charset=UTF-8
    Date: Sun, 03 Dec 2017 12:29:02 GMT
    Content-Length: 266
    Location: http://www.google.ru/?gfe_rd=cr&dcr=0&ei=Du4jWqrVDYPHYLaMpoAP
    P3P:

    ===============================
    302
    http://www.google.ru/?gfe_rd=cr&dcr=0&ei=Du4jWqrVDYPHYLaMpoAP
    ===============================
     
    И вот он получив код 302=(Временно перемещен, Moved Temporarily.) и новый путь=http://www.google.ru/?gfe_rd=cr&dcr=0&ei=Du4jWqrVDYPHYLaMpoAP
    снова вызывает GET, но не уходит с URL... а только путь:
    Код (Bash):

    send...
    analise...
    CMD File:  File:/home/httpd/ramdisk/anshttp.dat
    url:www.google.com port:80 path:http://www.google.ru/?gfe_rd=cr&dcr=0&ei=Du4jWqrVDYPHYLaMpoAP
    HTTP/1.0 200 OK
    Date: Sun, 03 Dec 2017 12:29:56 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-03-12; expires=Tue, 02-Jan-2018 12:29:56 GMT; path=/; domain=.google.ru
    Set-Cookie: NID=118=kAhFmdB5XIbkmVaZ3i8AWUbXLAoM0CUDLBwz8FcMeFQeQdgypbJP4y_KrAJjZez6ihm0RJN7KVECQEgwW9Tzl1vkwBdR4PXhK-1ifflSaask-dF7Cd86fYwdHVv11Rv5; expires=Mon, 04-Jun-2018 12:29:56 GMT; path=/; domain=.google.ru; HttpOnly
    Accept-Ranges: none
    Vary: Accept-Encoding
    .....
    ..... а тут содержимое страницы - уж больно много.
    .....
     
    И получив после анализа код 200=Ок прекращаем работу:
    Код (Bash):

    Status-Code: 200
    Content-Type: text/html; charset=UTF-8
    Date: Sun, 03 Dec 2017 12:29:56 GMT
    Content-Length:
    Location:
    P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."

    ===============================
    200

    ===============================

    www-data@Moxa:~/nsite3$
     
    Станица получена и Шатун завершил работу... почему URL внутри не меняем, а только путь?
    А вдруг через прокси какой-нибудь будем работать... ну это в дальнейшем.
     

    Вложения:

    • br1site.sh.zip
      Размер файла:
      542 байт
      Просмотров:
      406
    Последнее редактирование: 3 дек 2017
  5. Igor68

    Igor68 Гуру

    А вот с помощью шатуна, но только через прокси:
    Код (Bash):
    www-data@Moxa:~/nsite3$ ./br1site.sh 151.80.197.192:80 http://www.google.com/
    send...
    analise...
    CMD File:  File:/home/httpd/ramdisk/anshttp.dat
    url:151.80.197.192 port:80 path:http://www.google.com/
    HTTP/1.1 302 Found
    Date: Sun, 03 Dec 2017 13:38:17 GMT
    Cache-Control: private
    Content-Type: text/html; charset=UTF-8
    Referrer-Policy: no-referrer
    Location: http://www.google.fr/?gfe_rd=cr&dcr=0&ei=Sf4jWqv4KOzS8AfDvaCADw
    Content-Length: 268
    Via: 1.0 erp.ertus.fr
    Vary: Accept-Encoding
    Connection: close

    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>302 Moved</TITLE></HEAD><BODY>
    <H1>302 Moved</H1>
    The document has moved
    <A HREF="http://www.google.fr/?gfe_rd=cr&amp;dcr=0&amp;ei=Sf4jWqv4KOzS8AfDvaCADw">here</A>.
    </BODY></HTML>

    Status-Code: 302
    Content-Type: text/html; charset=UTF-8
    Date: Sun, 03 Dec 2017 13:38:17 GMT
    Content-Length: 268
    Location: http://www.google.fr/?gfe_rd=cr&dcr=0&ei=Sf4jWqv4KOzS8AfDvaCADw
    P3P:

    ===============================
    302
    http://www.google.fr/?gfe_rd=cr&dcr=0&ei=Sf4jWqv4KOzS8AfDvaCADw
    ===============================

    send...
    .......
    .......
    ну и так далее
    ......
     
    Адрес прокси отсюда:
    http://proxy-list.org/english/search.php?country=western-europe
     
  6. Igor68

    Igor68 Гуру

    Я применял "nc" следующий:
    nc-2.0.zip
    Дело в том, что в MOXA UC-7112-LX-Plus его нет... и пришлось его компилировать. Позже выяснилось это:

    В Debian на ПК:
    Код (Bash):

    igor@debian-i:~/coding/bash/nsite2$ nc -vnz 192.168.0.180
    Connection to 192.168.0.180 port [tcp/*] succeeded!
    igor@debian-i:~/coding/bash/nsite2$
     
    А вот тоже самое на UC-7112-Lx-plus:
    Код (Bash):

    www-data@Moxa:~$ nc -vnz 192.168.0.180
    192.168.0.1:80(Dlink-Router.Dlink) open
    www-data@Moxa:~$
     
    Потому что ответы по разному возможна не коректрая работа скриптов. Анализ ведь по текстовому сообщению от "nc".

    И важно это:
    Дело в том, что упомянутый "nc" в MOXA сообщение "cannot connect" вывводит и при отсутствии хоста, как такового... так и при отсутствии открытого порта.
    В то время как в Debian сообщение "No route to host" присутствует только при отсутствии хоста... и пинг по этому адресу не проходит. Для ускорения надо применить ключ "-w <time>" вот так:
    Код (Bash):

    str=$(nc -vnz -w 1 $_startURL $_cntport 2>&1)
     
    Так, что в малине есть возможность принципиально ускорить работу
     

    Вложения:

    • nc-2.0.zip
      Размер файла:
      335,7 КБ
      Просмотров:
      404
    Последнее редактирование: 3 дек 2017
  7. Igor68

    Igor68 Гуру

    Вот кстати странность при работе с www.yandex.ru:
    в начале получаем путь от него (при коде 302) = https://www.yandex.ru/ - это нормально
    но при повторном вызове уже с ним снова получаем код 302 и путь = http://yandex.ru - заметили без "/" в конце? Это не нормально, если путь не к файлу или с дополнениями. Страницу конечно получаем, но с кодом 400 - Испорченный Запрос, Bad Request.
    Тем не менее у www.google.com - как обычно перенапрвление на http://www.google.ru/?<всякие крокозяблы>
    потом переход и получение страницы с кодом 200 - Ok.
    www.mail.ru - возвратил ответ код 301 - 301 Постоянно перенесен, Moved Permanently., а его я не учёл... пока не учёл
     
  8. Igor68

    Igor68 Гуру

    Пост 1 - Изменено, по причине того, что nc-2.0 автоматически не умеет выбирать IP4 и IP6. Просто добавлен ключик "-4" и проверено.
     
  9. Igor68

    Igor68 Гуру

    Вот кстати:
    snapshot47.png
    Это результат прикручивания BASH + PHP(на устройстве) + JavaScript(на станицк в браузее) + HTML. А что происходит? Мы вводим URL в строку и start. Тут показана страница google.ru, но ввели www.google.com... и скрипт шатаясь и получая коды ответов вышел по перенаправлениям на google.ru. А вот если вместо URL указать какой-нибудь прозрачный прокси, и в пути укажем http:/www.google.com/ то выйдем в другое место... ну например к французам. Точнее французская страница googl.
    Изучение (познание), а так же пополнение опыта применения "nc" продолжаются.
     
    arkadyf нравится это.
  10. Igor68

    Igor68 Гуру

    Доброго времени суток!
    ...собственно хочу попросить помощи. А именно надо что бы JavaScript на странице перезапускался по setTimeout с разным параметром вот (по своему незнанию):
    Код (Javascript):
    function br1site_start(sst)
    {
        var IpUrl = document.getElementById("wIpUrl").value;
        var Path = document.getElementById("wPath").value;
        var cmd;
        var xmlhttp;
        switch(sst)
        {
            case 0:
                site_cmd = 0;
                break;
            case 1:
                cmd = "br1site.php?cmd=1&IpUrl=" + IpUrl + "&Path=" + Path + "&dtime=" + new Date().getTime();
                xmlhttp = new XMLHttpRequest();
                oldstrd="";
                oldstrres="";
                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 ) {
                        if(xmlhttp.status == 200){
                            str = xmlhttp.responseText;
                            site_cmd = 255;
                            document.getElementById("mydata").innerHTML = str;
                            setTimeout('site_start(2)', 1000);
                        }
                    }
                    }
                xmlhttp.open("GET", cmd, true);
                xmlhttp.send();
                break;
            case 2:
                cmd = "br1site.php?cmd=2&IpUrl=" + IpUrl + "&Path=" + Path + "&dtime=" + new Date().getTime();
                xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 ) {
                        if(xmlhttp.status == 200){
                            strd = xmlhttp.responseText;
                            if (oldstrd != strd)
                                        document.getElementById("mydata").innerHTML = strd;
                            oldstrd = strd;
                            if(site_cmd > 0)
                                        setTimeout('site_start(3)', 1000);
                        }
                    }
                    }
                xmlhttp.open("GET", cmd, true);
                xmlhttp.send();
                break;
            case 3:
                cmd = "br1site.php?cmd=3&IpUrl=" + IpUrl + "&Path=" + Path + "&dtime=" + new Date().getTime();
                xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 ) {
                        if(xmlhttp.status == 200){
                            strres = xmlhttp.responseText;
                            if(strres != oldstrres)
                                           document.getElementById("Res").innerHTML = strres;
                            oldstrres=strres;
                            if(site_cmd > 0)
                                        setTimeout('site_start(2)', 1000);
                        }
                    }
                    }
                xmlhttp.open("GET", cmd, true);
                xmlhttp.send();
                break;
            default:
                site_cmd = 0;
                break;
        }
    }
     
    Смысл в том, что из HTML:
    HTML:
    </tr><tr>
          <td style="vertical-align: top; height: 16px;">
        <input id="br1siteStart" name="br1siteStart" onclick="br1site_start(1)" value="       START       " type="button">
          </td>
          <td style="vertical-align: top; height: 16px;">
        <input id="br1siteStart" name="br1siteStart" onclick="br1site_start(0)" value="       STOP        " type="button">
          </td>
          <td style="vertical-align: top; height: 16px;">
        <input id="getStart" name="getStart" onclick="met_start('get')" value="       GET START      " type="button">
          </td>
          <td colspan="3" rowspan="7" style="vertical-align: top; height: 9px;">
        <textarea id="Res" cols="80" rows="10" name="Res"></textarea></td>
        </tr>
    При нажатии на кнопку старт запускается функция onclick="br1site_start(1)... как видите с параметром 1. При этом на сервер передаётся запрос :
    Код (Javascript):
    cmd = "br1site.php?cmd=1&IpUrl=" + IpUrl + "&Path=" + Path + "&dtime=" + new Date().getTime();
    Который PHP скрипт вот этот:
    PHP:
    <?php
    //ini_set('display_errors',1);
    //error_reporting(E_ALL);
    /*************************************************************
    Принимает на вход параметр $content - ответ сервера (любой метод GET, POST,
    :) и возвращает чистый HTML без предваряющих HTTP-заголовков ответа.
    **************************************************************/

    function http_trim_headers($content)
    {
        return trim(substr( $content, strpos($content, "\r\n\r\n") ));
    }

    $myaddrres = gethostbyaddr($_SERVER['SERVER_ADDR']);
    $IpUrl = $_GET['IpUrl'];
    $Path = $_GET['Path'];
    $cmd = $_GET['cmd'];
    $command = "";
    switch ($cmd)
    {
        case 1:    //запуск
            $command = "rm -f /home/httpd/ramdisk/anshttp.dat &";
            $res = shell_exec($command);
            $command = "rm -f /home/httpd/ramdisk/site.html &";
            $res = shell_exec($command);
            $command = "./br1site.sh ".$IpUrl." ".$Path." &";
            $res = shell_exec($command);
            echo $res;
            break;
        case 2:    //чтение html
            $command="cat /home/httpd/ramdisk/site.html";
            $res = shell_exec($command);
            $res2 = http_trim_headers($res);
            echo $res2;
            break;
        case 3:    //стение answer
            $command="cat /home/httpd/ramdisk/anshttp.dat";
            $res = shell_exec($command);
            echo $res;
            break;
        default:
            echo "unknown cmd=".$cmd;
            break;
    }
    //
    ?>
     
    с радостью выполняет, а страничка получив ответ должна выполнить:
    Код (Javascript):
    setTimeout('site_start(2)', 1000);
    но, как вы заметили уже с параметром 2. И позже поочерёдно должны выполняться запуски с параметрами 2 и 3. Ранее тестировал и с одинарными кавычками и без них. Можно конечно и сделать независимые функции с автоперезапуском... но хочу уменьшить нагрузку и упростить.

    Заранее спасибо!
    И не ругайте меня... моя голова не только что бы шапку носить... но я в неё ещё и ем.
     
    Последнее редактирование: 10 дек 2017
  11. Igor68

    Igor68 Гуру

  12. Igor68

    Igor68 Гуру

    Братцы! Простите за мою невнимательность:
    Код (Javascript):
    setTimeout(function () { site_start(2); }, 1000);
    а должно быть:
    Код (Javascript):
    setTimeout(function run() { br1site_start(2); }, 1000);
    Извините!
    Этот вопрос снят!
     
  13. Igor68

    Igor68 Гуру

    Доброго времени суток!
    ...так всё-таки, что это за гадость?
    nsite3.zip
    Точно гадость! А именно реализация применения NetCat(NC) с прикрученным каким-никаким(такой задачи особо не ставилось) WEB-интерфейсом.
    -Сканирование хостов и открытых портов на них (нет не пинг!);
    -Поиск открытых (доступных) ВЕБ-страниц в сети(сетях) - "Start Free Site Search". Не обязательно в локалке. И построение их списка с сохранением их в файл на RAM-диске. С возможностью извлечения их в элемент выбора - "READ FREE SITES". Ну и чтение их в содержимого в таблицу(элемент).
    -Возможность перейти по какому-нибудь URL с указанием пути (http://xxxxxxxxx/). Если в качестве URL указать адрес прокси(прозрачного)... то чтение страницы будет через него.
    -Возможность реализовать запросы(для проверки) GET;HEAD;OPTIONS;TRACE к указанным URL и пути.
    -Возможность не указывать путь, а указать только URL... но уже напрямую. И... скрипт получив ответ самостоятельно перейдёт по параметру "Location:" в ответе от сервера, анализируя несколько кодов ответа. (200, 300....)
    -контролировать к какому хосту подключился ваш сервер, и какой хост подключился к вашему серверу.
    ...и это сырой тестовый вариант. Может кому интересно... и есть желание продолжить.

    Но! Есть нюанс с применяемой утилитой "sleep" и "usleep". В разных версиях Linux бывают и различия. А Именно:
    Если "sleep" умеет принимать дробные значения, такие как "sleep 0.5" (на полсекунды), то как правило отсутствует "usleep" (значения в микросекундах) в системе. А это приведет к невозможности запуска скриптов. Надо найти "usleep" и заменить на "sleep", а микросекунды заменить на дробную часть секунд 500000 - пол секунды и 0.5 - пол секунды. Всё сделано в BASH и компилировать ничего не надо. Можно применять как в консоли (благо есть подсказка при запуске), так и используя прилагаемую "шкуру" на HTML+JS+PHP. Кстати JSON выгоднее применить, чем то что там есть.
     

    Вложения:

    • nsite3.zip
      Размер файла:
      42,4 КБ
      Просмотров:
      406
  14. Igor68

    Igor68 Гуру

    Доброго времени суток!
    ...если кому довелось проявить желание тестировать и т.п. это, то настоятельно рекомендую использовать RAM-диск. Категорически не рекомендую применять SSD или SD и Flash. HDD это ещё куда не шло.
     
  15. Igor68

    Igor68 Гуру

    Вот скрипт сканирования портов по адресам:
    spp.sh.zip
    Теперь изменён и использован анализ возвращаемого кода от nc

    Респект @b707 благодаря его подсказке
     

    Вложения:

    • spp.sh.zip
      Размер файла:
      1,9 КБ
      Просмотров:
      346
    ИгорьК нравится это.
  16. Igor68

    Igor68 Гуру

    только надо изменить:
    Код (Bash):
    #для MOXA
    ((_moxa = 1))
    Если не MOXA (UC-7112-LX-Plus/IA240-LX) значение выставить в 0
     
  17. Igor68

    Igor68 Гуру

    Ну и работа:
    Код (Bash):
    kto@debian:~/coding/bash/nsite3$ ./spp.sh
    use "help"
    kto@debian:~/coding/bash/nsite3$ ./spp.sh help
    ./spp.sh -ip <ip addr> -p <ip port>                 - сканирование портов и адресов
    ./spp.sh -ip <ip addr> -p <ip port> -c              - сканирование портов и адресов в потоке
    ./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"
    ./spp.sh -ip <ip addr> -p <ip port> -fpd <file_res> - сканирование несколькими потоками с записью в файл
                                                          в режиме демона
                                                          если файл <file_res> не указан, то сохранение
                                                          в файл "/home/httpd/ramdisk/spp.dat"
    ./spp.sh stop                                       - остановка (удаление) spp.sh (демона)
    kto@debian:~/coding/bash/nsite3$ ./spp.sh -ip 192.168.0.200-250 -p 20-80 -c
    str=192 168 0 200-250
    Start URL:192.168.0.200 Stop URL:192.168.0.250
    Start Port:20 Stop Port:80
    192.168.0.200 22
    192.168.0.200 23
    192.168.0.200 80
    192.168.0.201 22
    192.168.0.201 23
    192.168.0.201 80
    192.168.0.202 23
    192.168.0.202 80
    192.168.0.203 23
    192.168.0.203 80
    192.168.0.232 21
    192.168.0.232 22
    192.168.0.232 23
    192.168.0.232 80
    192.168.0.233 21
    192.168.0.233 23
    192.168.0.233 80
    192.168.0.234 21
    192.168.0.234 22
    192.168.0.234 23
    192.168.0.234 80
    192.168.0.237 21
    192.168.0.237 22
    192.168.0.237 80
    192.168.0.240 21
    192.168.0.240 22
    192.168.0.240 23
    192.168.0.240 80
    192.168.0.246 21
    192.168.0.246 23
    192.168.0.246 80
    192.168.0.249 21
    192.168.0.249 80
    end
    kto@debian:~/coding/bash/nsite3$
    тут сканируем адреса в локальной сети с 192.168.0.200 по 192.168.0.25 на наличие портов с 20 по 80 и вот результат.
     
    sys и ИгорьК нравится это.
  18. Igor68

    Igor68 Гуру

    Вот ping в диапазоне адресов:
    aping.sh.zip
    с параметрами ну к примеру:
    Код (Bash):
    ./aping.sh 192.168.0.1-254 cp
    будет пинг в диапазоне адресов от 192.168.0.1 до 192.168.0.254
    времени затрачено менее 2 секунд... потому как это с разделением потоков.
    в обычном режиме (последовательно в цикле)
    Код (Bash):
    ./aping.sh 192.168.0-1.1-254 c
     
    это заняло более 12 минут
    испытание проводилось в локальной (домашней) сети WIFI с ноутбука (Debian). Но то же самое будет и на малине.

    Второе испытание... то же по WIFI , но уже не в локальной сети. Сначала находим IP поисковика www.google.ru:

    Код (Bash):
    igor@debian-i:~/coding/bash/nsite3$ ping www.google.ru
    PING www.google.ru (64.233.162.94) 56(84) bytes of data.
    64 bytes from li-in-f94.1e100.net (64.233.162.94): icmp_req=1 ttl=48 time=33.4 ms
    64 bytes from li-in-f94.1e100.net (64.233.162.94): icmp_req=2 ttl=48 time=60.2 ms
    64 bytes from li-in-f94.1e100.net (64.233.162.94): icmp_req=3 ttl=48 time=66.9 ms                                                                                                          
    ^C                                                                                                                                                                                          
    --- www.google.ru ping statistics ---                                                                                                                                                      
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms                                                                                                                              
    rtt min/avg/max/mdev = 33.436/53.539/66.927/14.476 ms                                                                                                                                      
    igor@debian-i:~/coding/bash/nsite3$  
    и затем :
    Код (Bash):
    ./aping.sh 64.233.162.1-254 cp
    тое сть уже не локальная, а через роутер c адреса 64.233.162.1 по 64.233.162.254 и на это ушло около минуты. контролировалось по ps -A на отсутствие процесса aping.sh

    И зачем это?
    Если доработать скрипт можно мониторить локальную сеть на подключение/отключение к ней/от неё клиентов. Особенно полезно для контроля подключения "чужих" к WIFI. Понятно если клиенты пингуются.

    Кстати опять РЕСПЕКТ @b707
     

    Вложения:

    • aping.sh.zip
      Размер файла:
      925 байт
      Просмотров:
      392
    Последнее редактирование: 4 авг 2018
    ИгорьК и sys нравится это.
  19. parovoZZ

    parovoZZ Гуру

    Ну ты голова))) Для меня всё это как китайская грамота =)
     
  20. Igor68

    Igor68 Гуру

    И зачем это?
    Если доработать скрипт можно мониторить локальную сеть на подключение/отключение к ней/от неё клиентов. Особенно полезно для контроля подключения "чужих" к WIFI. Понятно если клиенты пингуются.

    Как?
    1. сначала определяется список "своих" IP адресов в изменённом скрипте... кстати он должен работать "в тени" непрерывно
    2. при появлении нового - чужого... скрипт должен искать открытые порты по новому IP.
    3. предпринять некие действия с открытыми портами.

    Некие действия... ну можно к примеру при наличии портов 139, 445 полазить по Samba в том устройстве... автоматически разумеется. Ну Telnet, ftp и др.
    Это не Вы лезли к кому-то, а к Вам залезли... и соответственно культура и приличие тут неуместны.
     
    arkadyf и ИгорьК нравится это.