Показаны сообщения с ярлыком esp8266. Показать все сообщения
Показаны сообщения с ярлыком esp8266. Показать все сообщения

воскресенье, 26 августа 2018 г.

Портативная глушилка Wifi сигнала на ESP826

Данный пост был написан для ознакомления возможностей ESP8266. Помните, описанные в этом посте действия над некоторыми WiFi сетями могут быть наказуемы!. Не проводите эти действия над другими сетями.
Сразу опустим все аппаратные и программные моменты.  Технически, это устройство, которое позволяет производить "WiFi deauthentication attack".  Вы выбираете клиентов, которых вы хотите отключить от WiFi сети и начинаете атаку.

ШАГ 1
Покупаете esp8266 Nodemcu на Али.  Стоит на примерно $2.
Можете сделать это по ссылке, можете в другом магазине, если у вас ее еще нет. Я покупал по ссылке.
ШАГ 2
Я не автор этого кода. Все поздравления направляются ему.
Переходим по ссылке и скачиваем архив и распаковываем его.

ШАГ 3

Скачиваем и станавливаем Arduino IDE (у меня это весия 1.8.2)
ШАГ 4
  1. Открываем Arduino IDE
  2. Переходим Файл > Настройки
  3. Вставляем эту ссылку > http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. Далее переходим Инструменты > Плата > Менеджер плат
  5. Ищем в поиске Esp8266 и устанавливаем версию 2.0.0
  6. Затем, снова переходим в Файл > Настройки и открываем ссылку "Другие настройки можно отредактировать непосредственно в файле"
  7. Копируем это имя user_interface.h ) и вставляем в поиск по папке и открываем с помощью текстового редактора.
  8. Прокручиваем файл до конца и перед " #endif " вставляем эти 4 строки
     typedef void (*freedom_outside_cb_t)(uint8 status);
    int wifi_register_send_pkt_freedom_cb(freedom_outside_cb_t cb);
    void wifi_unregister_send_pkt_freedom_cb(void);
    int wifi_send_pkt_freedom(uint8 *buf, int len, bool sys_seq);
  9. Сохраняем, закрываем :D
  10. Подключаем ESP дата кабелем.
  11. Запускаем Arduino IDE, открываем код, выбираем нужную плату в менеджере и загружаем.
ШАГ 5
Подключаемся к точке по ip 192.168.4.1 (название сети - pwned, пароль - deauther) и  поочередно клацаем на Search ,Select и Attack на любую сеть в радиусе ESP8266.
Название сети и пароль по-умолчанию можно изменить в файле Settings.cpp


У меня заработала после некоторых танцев с бубном. Блочит как гаджеты так и компьютеры. Для некоторых может пригодиться использовать файлы из папки sdk_fix. Несомнено интересная игрушка, особенно в сочетании с повер банком! Ну и в заключении пару скринов от себя. Блокирует 1 устройство и сразу всех.

суббота, 25 августа 2018 г.

Счетчик подписчиков Youtube

О чем мечтает каждый автор YouTube? О том, чтобы зрители смотрели все его новые видео! Если пользователи подпишутся на ваш канал, они будут сразу узнавать о новых роликах и посещать вашу страницу снова и снова. 
Счетчик подписчиков - хорошее решение для украшения интерьера любого автора Youtube . Данный счетчик позволяет показывать до 9999 подписчиков.
Потребуется: модуль сегментного индикатора на TM1637 и esp8266 (в моем случае esp-01, нам нужны всего 2 ноги). Чтобы все это более меее цивильно выглядело, я вытравил печатную плату с предумсотренным преобразователем на 3.3 вольта от 5. Также я купил рамку в FixPrice за 25 рублей и набросал картинку в формате рамки - 10х15. Если кому понадобится.

Как это работает

Скетч опрашивает через API канал на youtube и считывает показания:
  1. Количество подписавшихся
  2. Количество загруженных видео
  3. Количество просмотренных видео
  4. Количество скрытых подписчиков

Скетч

 Скачиваем нужные библиотеки:
  1. Для работы с дисплеем
  2. YouTube API
  3. ArduinoJson
#include "SevenSegmentTM1637.h"
#include                   // installed by default  
#include             // https://github.com/witnessmenow/arduino-youtube-api
#include            // https://github.com/bblanchon/ArduinoJson


#include 
#include 
const byte PIN_CLK = 0;   // define CLK pin (any digital pin)
const byte PIN_DIO = 2;   // define DIO pin (any digital pin)
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);


//------- Replace the following! ------
char ssid[] = "Имя WiFi"; // your network SSID (name)
char password[] = "Пароль";   // your network password

// google API key
// create yours: https://support.google.com/cloud/answer/6158862?hl=en
#define API_KEY "Создайте свой по ссылке выше"

// youtube channel ID
// find yours: https://support.google.com/youtube/answer/3250431?hl=en
#define CHANNEL_ID "Создайте свой по ссылке выше"



WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

unsigned long api_mtbs = 1000; //mean time between api requests
unsigned long api_lasttime;   //last time api request has been done

long subs = 0;

void setup() {

  Serial.begin(115200);
display.begin();            // initializes the display
  display.setBacklight(100);  // set the brightness to 100 %
  display.print("INIT");
  
  // Set WiFi to station mode and disconnect from an AP if it was Previously
  // connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);
display.clear();

}

void loop() {
  if (millis() > api_lasttime + api_mtbs)  {
    if(api.getChannelStatistics(CHANNEL_ID))
    {
      Serial.println("---------Stats---------");
      Serial.print("Subscriber Count: ");
      Serial.println(api.channelStats.subscriberCount);
      Serial.print("View Count: ");
      Serial.println(api.channelStats.viewCount);
      Serial.print("Comment Count: ");
      Serial.println(api.channelStats.commentCount);
      Serial.print("Video Count: ");
      Serial.println(api.channelStats.videoCount);
      // Probably not needed :)
      //Serial.print("hiddenSubscriberCount: ");
      //Serial.println(api.channelStats.hiddenSubscriberCount);
      Serial.println("------------------------");

  display.print(api.channelStats.subscriberCount); 
  
    }
    api_lasttime = millis();
  }

}