Проект-эксперимент-"без топиков"

Тема в разделе "Глядите, что я сделал", создана пользователем Рокки1945, 3 янв 2021.

  1. Рокки1945

    Рокки1945 Гуру

    Здравствуйте...
    Цель - отследить количество несанкционированных (никто не знает почему пендосы сложные слова по буквам проговаривают? - дети в фильмах сколько раз видел) попыток добраться до Blink на ESP8266
    Задачи - настроить роутер на проброс порта - закодить скетч - сделать GUI в APP INVENTOR - написать скриптик в Питоне (программа паразит - делающая несанкционированные запросы) снять показательно-доказательное видео....
    1. Настройка роутера:
    1.1. Получить белый адрес от провайдера - у меня он стоит 50 рублей в месяц;
    1.2. в роутере - переадресация - виртуальные серверы - добавить - прописываем - порт сервиса (например 6000) - внутренний порт (80) - IP - адрес (резервируется в DHCP - резервирование адресов - также добавить мак адрес (подключаем ESP и узнаём в Статистике беспроводного режима) и айпи локальный - далее перегруз).
    2. Скетч:
    Четыре функции - 2 обрабатывают гет запрос и отсылают ответ клиенту - включают/выключают светодиод; функция ok - это ответ на запрос о несанкционированных попытках; функция nok - это счётчик.

    Код (C++):
    #include <ESP8266WiFi.h>
    //#include <WiFiClient.h>
    #include <ESP8266WebServer.h>

    const char* ssid = "*******";//type your ssid
    const char* password = "***********";//type your password

    int ledPin = 2; // GPIO2 of ESP8266
    byte x = 0;
    ESP8266WebServer server(80);//Service Port

    void setup() {
    Serial.begin(115200);
    delay(10);

    pinMode(ledPin, OUTPUT);
    digitalWrite(ledPin, LOW);

    // Connect to WiFi network
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");

    // Start the server
    server.begin();
    Serial.println("Server started");

    // Print the IP address
    Serial.print("Use this URL to connect: ");
    Serial.print("http://");
    Serial.print(WiFi.localIP());
    Serial.println("/");
    server.on("/2on", rel_on);
    server.on("/2off", rel_off);
    server.on("/OK", ok);
    server.on("/", nok);
    }

    void loop() {
      server.handleClient();
    }

    //============================ управляем реле
    void rel_on() {
    digitalWrite(ledPin, LOW);
    server.send(200, "text/html","gpio2 on");
    //server.send(200, "text","{\"gpio2\":\"on\"}");
    //server.send(200, 'text','{"gpio2":"on"}');

    }
    void rel_off() {
    digitalWrite(ledPin, HIGH);
    server.send(200, "text/html","gpio2 of");
    }

    void ok() {
    if (x == 0){server.send(201, "text/html","OKEI");} else {server.send(201, "text/html","AHTUNG" + String(x));}
    }

    void nok() {
      x ++;
    server.send(404, "text/html","ERROR " + String(x));
    }
    3. GUI
    2 кнопки - старт проверки несанкционированных попыток (та что вверху) - средняя просто блинковать светодиодом из внешки - обратная связь светодиод - внизу лейбл с ответами от веб-сервера и вывод количества несанкционированных запросов
    Снимок.PNG
    Блоки:
    Просто запрос при нажатой кнопки
    Снимок.PNG
    Просто ответ от сервера на ESP 8266
    d.PNG
    Объявление переменных при инициализации
    33.PNG
    При нажатии на кнопку показ несанкционированных запросов на веб-сервер
    34.PNG
    Скрипт на питоне
    Код (Python):
    import requests
    from tkinter import *
       
    def get():
        URL = "http://82.34.176.123:6000"
        r = requests.get(url = URL)
        print(r.text)
        but.config(text = r.text)
     
     
    root = Tk()
    but = Button(root,text="",width=30,height=5,bg="white",fg="blue",cursor="circle",command = get)
    but.pack()
    root.mainloop()
    [ATTACH=full]22280[/ATTACH]
    Видео
     
    Последнее редактирование модератором: 3 янв 2021
  2. Un_ka

    Un_ka Гуру

    Скрипт, то можно было вставить как код.
    И ip лучше на форуме не указывать.
     
  3. ИгорьК

    ИгорьК Гуру

    И что показал результат? Ломают ваш блинк?
     
  4. Рокки1945

    Рокки1945 Гуру

    так пусть теперече лезут
     
  5. Рокки1945

    Рокки1945 Гуру

    поживём увидим
     
  6. IvanUA

    IvanUA Гуру

    Одно не совсем понял, как вы отличает санкционированные и не очень запросы?
     
  7. Рокки1945

    Рокки1945 Гуру

    Приветствую - предположил, что если извне (это программа на Питоне) делается запрос http://82.34.176.123:6000 на айпи, то ESP фиксирует это прибавляя к переменной x - единицу - и выдавая значение этой переменной при запросе от мастера-клиента (программа на андройде) активированная на раз в секунду. Если не прав - буду рад поучиться.
     
  8. IvanUA

    IvanUA Гуру

    Питоном вы делаете внешний запрос во внутреннюю сеть. ЕСП я так понимаю во внутренней сети видит все входящие запросы. Как вы отличаете свой от чужого? По маку, по айпи, по форме запроса?
     
  9. Рокки1945

    Рокки1945 Гуру

    Приходящие на этот адрес, если только айпи, то тогда Вор - если с телефона то выполняется команда.
    По форме запроса - если он не установленной формы.
     
  10. Рокки1945

    Рокки1945 Гуру

    Мне на форуме здесь подсказали, что проброс мало-защищённая штука - и нужна аутенфикация. А зачем она мне - если можно в любой момент заблокировать устройство - просто транзистором разорвать цепь или отключить ESP.
     
  11. IvanUA

    IvanUA Гуру

    Телефон ваш во внутренней сети LAN и тоже имеет айпи...
    Вот, это более просто...
     
  12. Рокки1945

    Рокки1945 Гуру

    нет конечно он из внешки - там 4G сеть
     
  13. IvanUA

    IvanUA Гуру

    Проброс - это как раз дыра из WAN в LAN. Так что если вы ее открываете, то и защита нужна соответствующая.
     
  14. Рокки1945

    Рокки1945 Гуру

    Согласен, что по простому, но пока как умею.
     
  15. Рокки1945

    Рокки1945 Гуру

    Да пробывал все эти топики - поигрался, но столько минусов - количество запросов в сутки ограничено, зависеть от чужих серверов.
    Ограничений тьма тьмущая - везде только бабки.
    А тут такая роскошь - GUI вешаешь на клиента (программу на андройде) - не надо никакого HTTP знать, тегов всех этих.
    Вот и подумал, что можно провести такой экспериментик. Сколько за месяц на мой блинк позарятся хакеры.
     
  16. Рокки1945

    Рокки1945 Гуру

    Готов пожертвовать ESP8266 ради человечества - :)
    Да и от горящего светодиода ещё никто не умирал;)
     
  17. IvanUA

    IvanUA Гуру

    Я с GUI не работал, но если как вы описали, то наверное я вас огорчу. Не все так радужно. Скорее всего вы гоняете информацию через чужой сервер. И вы до конца можете не знать, чем занимается клиент в вашей локальной сети.
     
  18. IvanUA

    IvanUA Гуру

    С телефона так не удобно работать с форумом)))
    Ну да ладно, включил комп. Посмотрел ваш код...
    ГУИ это я так понял приложение которое при помощи блоков собирает якобы программу для андроида))) А я то подумал что это облачный сервис...
    Так что бояться вам не чего. Что ваш код на питоне, что прога на андроиде стучатся к вашей ЕСП через одну дырку - ваш роутер..
    Код который зашит в ЕСП вообще не различает кто к нему ломится...
    Единственное что он умеет, так это отвечать на запросы. Научите питона слать "/2on" и ЕСП примет его за своего....

    ПС. Если вы просто хотите видеть сколько раз будут ломиться в ваш айпишник, то дайте команду на счет всех входящих запросов. В сети бегают огромное количество сканеров портов, вот их то вы скорее всего и поймаете (увидите). И да если публиковать свой айпишник в инет, то количество обращений будет возрастать))))

    ППС. Уберите с роутера проброс портов и выключите эхо на пинг, и больше никто в сети не узнает о вашем существовании. А хотите доступ в локалку, тогда вам нужен внешний защищенный сервер-посредник, к которому будете сами стучаться из локалки и забирать или отдавать необходимую инфо))))
     
  19. Рокки1945

    Рокки1945 Гуру

    Да - но почему якобы - если на видео программа работает на телефоне с андройдом
    Ну конечно - телефон это 4 g оператора, а прога на питоне это мой провайдер к которому подключён есп8266
    Это и так понятно, а как ещё может работать вебсервер - ?
    Так - то там ответ ERROR идёт...
    Ну это наврятли - кто сказал что это мой айпишник
    Мне пока не нужен выделенный сервак - под мои задачи
    Итог какой - ?
    Проброс порта замена - в некоторых случаях - топикам?
     
  20. Un_ka

    Un_ka Гуру

    Не думали добавить шифрование?