Coder Social home page Coder Social logo

nasimulhasan / intelligent-iot-honeypot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aagrawal207/intelligent-iot-honeypot

0.0 1.0 0.0 1.61 MB

An Intelligent Honeypot for Heterogeneous IoT Devices using Reinforcement Learning

License: MIT License

Python 14.75% Jupyter Notebook 85.25%

intelligent-iot-honeypot's Introduction

Intelligent-IoT-Honeypot

An Intelligent Honeypot for Heterogeneous IoT Devices using Reinforcement Learning

Report of my BTP Final Report can be found here.

This project is based on the paper IoTCandyJar: Towards an Intelligent-Interaction Honeypot for IoT Devices.

Requirements

  • Python3
  • socket
  • netaddr (pip3 install netaddr)
  • requests (pip3 install requests)

Files Summary

  • iot_ip_addr_collector.ipynb
  • server_template_for_request_response.py
  • send_request_to_all_iot.py
  • print_requests.py
  • *_addr.dat
  • port_*.dat
  • response_from_iot.dat

Code/Files explained

  • iot_ip_addr_collector.ipynb file contains the IoT Scanner. This works like a IoT crawler/search engine scanning random public IP addresses. If an IoT device is found then its IP:port is temporarily stored in a python set and later stored in the files *_addr.dat using python pickle. All the IPs scanned till now are stored in the file ips_checked.dat so that same IP is not scanned twice.

  • server_template_for_request_response.py is the honeyoot listener instances that should be run on a public IP to attract the attackers. The requests sent by the attackers are stored in the files port_*.dat where * depends on the port on which the server is listening for attacks.

  • send_request_to_all_iot.py sends all the requests stored in files port_*.dat to all the IoT devices through their IP addresses stored in the files *_addr.dat. All the responses received from the IoT devices are stored in the file response_from_iot.dat.

  • Just for an example of the working of the honeypot, if the attacker requests us for the fiee login.cgi, a random response from response_from_iot.dat is sent to the attacker. This part will be the part where the RL can come inoo picture. Using a good learning model, the honeypot can learn which response should be sent to the attacker instead of random responses.

  • print_requests.py file just prints all the requests received on some port till now.


All the code is super easy to understand, though I would like to refactor it.

intelligent-iot-honeypot's People

Contributors

aagrawal207 avatar

Watchers

 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.