Giter Club home page Giter Club logo

esphole's Introduction

Ad blocker for ESP

Esphole is a proof-of-concept of an ad blocking DNS server for the esp8266.

Note: The solution is far from being production ready. I just wanted to see if it was possible to develop a simple DNS ad blocker inside the ESP

It uses a modified version of the DNS Server library included with the Esp8266 core for Arduino

How to install

Preprocess the hosts file

The first versions uploaded the full hosts file to the SPIFFS. The performance of finding the domain in the full hosts file was really poor, so for the current version the hosts file is preprocessed and stored in smaller files based on the lenght of the domain

$ cd utils
$ gen_block_lists.sh

This downloads the hosts file and saves it in different files in the data directory

Upload the SPIFFS

Follow the guide of Arduino ESP8266 filesystem uploader to install the SPIFFS uploader and then select: Tools > ESP8266 Sketch Data Upload in order to upload data directory to the ESP

Upload the sketch

Open the sketch directory with Arduino editor and edit esphole.ino in order to change the WIFI settings

#define wifi_ssid "........"
#define wifi_password "........"

Then, upload it to the ESP

Usage/Test

Open the serial monitor or minicom in order to find the IP of the ESP device (or scan your network in order to find it) and use nslookup in order to test some domains:

$ nslookup - 192.168.0.161
> github.com
Server:		192.168.0.161
Address:	192.168.0.161#53

Non-authoritative answer:
Name:	github.com
Address: 192.30.253.112

> analytics.google.com
Server:		192.168.0.161
Address:	192.168.0.161#53

Non-authoritative answer:
Name:	analytics.google.com
Address: 0.0.0.0

In the serial monitor the debug information is shown:

WiFi connected | IP address: 192.168.0.161
DNS Server ready

Domain: github.com | IP:192.30.253.112
Resolv took 70 ms | Find took 57 ms

Domain: analytics.google.com Blocked | Find took 30 ms

Note: Esphole was tested with a Wemos D1 min and an Amica NodeMCU.

esphole's People

Contributors

rubfi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.