• Stars
    star
    250
  • Rank 158,982 (Top 4 %)
  • Language
    Python
  • Created over 13 years ago
  • Updated almost 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

aims to distribute the DNS service on many nodes so it can neither be taken down nor be manipulated
===============================================================================
===============================================================================
========    ______  ______   ______       _____    ______      _       ========
========   (_____ \(_____ \ (_____ \     (____ \  |  ___ \    | |      ========
========    _____) ) ____) ) _____) )___  _   \ \ | |   | |    \ \     ========
========   |  ____/ /_____/ |  ____/(___)| |   | || |   | |     \ \    ========
========   | |      _______ | |          | |__/ / | |   | | _____) )   ========
========   |_|     (_______)|_|          |_____/  |_|   |_|(______/    ========
========                                                               ========
===============================================================================
===============================================================================

                              ===== About =====

This is an alternative DNS system which relies on distribution to be censor
resistant. There is no central authority here! Records will be authenticated 
by a public/private key system, where only the owner of the private key can 
change the domain.

All nodes know all other nodes, and they also cache all known domains. This
makes it very difficult to tamper with records, since all existing nodes have
saved the public key of the domain owner and won't accept unsigned changes. An
attacker can only poison the cache of a new node, or try to flood the network
with "fake" domains.

Attack one will be prevented using a combination of democratic decisions (the
opinion of the majority is correct) and a web of trust (opinions of nodes are
weighted by your trust to them).

For attack two, similar tools as used in email spam prevention systems will be
deployed.

For more details, refer to http://www.furida.mu/blog/2010/12/11/p2p-dns/


                           ===== Installation =====

You need a SSL certificate for your node, just generate one:

openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes 

This is not a problem since we use ssl just for encryption, not authentication.
Note: The certificate needs to be named server.pem and reside in the same dir 
as the source code. If you don't like that, commit a patch.

You might also need the zmq module. If you are using Ubuntu, it's easy to 
install:

sudo add-apt-repository ppa:chris-lea/zeromq  
sudo aptitude update
sudo aptitude install python-zeromq


                              ===== Usage =====

To start the normal DNS server, type: 'twistd -y dns-server.py'
This server will try to connect to a p2p-dns server on the same machine, so if
you use two seperate machines adjust the constants at the begining of the file
accordingly.

To launch the actual p2p-dns server, use 'python p2p-dns.py' or './p2p-dns.py'
There are a few options in the config.py file, but it should work without
changes.

Don't use this on a production system! Right now you can register all domains, 
even those which already exist in the real dns system. Also, there are probably 
lots of security holes. You have been warned!


                              ===== Source =====

The official repo for this is https://github.com/Mononofu/P2P-DNS, so please 
look there if you want the newest version or want to commit a patch.



                             ===== License =====

This will use the GPLv3, except the normal DNS server (dns-server.py),  which 
was designed by Jochen Ritzel (http://stackoverflow.com/questions/4399512/python-dns-server-with-custom-backend/4401671#4401671)

More Repositories

1

reinforcement-learning

Implementing exercises from Reinforcement Learning: An Introduction
Lua
62
star
2

Scalisp

A lisp interpreter and compiler, written in Scala. Compiles Lisp to Scala !
Scala
48
star
3

CryptoChrome

a GnuPG plugin for Chrome
C++
46
star
4

kanji_poster

Poster of 2200 jōyō and WaniKani kanji
TeX
24
star
5

julia-plot

a plotting library for julia
Objective-J
18
star
6

anki-grammar

Creates dynamic Anki cards testing for grammar, at the moment Japanese only
HTML
12
star
7

Combat-Simulator

a simulator for GUPRS combat
Scala
7
star
8

wakari_chan

Japanese screen overlay dictionary for Android, based on yomichan
Kotlin
6
star
9

pony-mcts

MCTS for Go in PonyLang
Rust
6
star
10

Units-of-Measure

a Units of Measure system in Scala
Scala
5
star
11

infinite-diary

Infinite Diary, successor to Automatic Diary
Python
5
star
12

go_guessing

Website to practice predicting good moves in Go
CSS
4
star
13

labnotes

Simple rust webapp to serve my markdown notes and make them searchable.
Rust
4
star
14

scaladroid

useful methods and helpers for developing Android Apps with Scala
Scala
4
star
15

Micro16-Simulator

Scala
4
star
16

Simple-GeneticAlgorithm

implementation of http://www.theprojectspot.com/tutorial-post/creating-a-genetic-algorithm-for-beginners/3
Scala
3
star
17

voting-map

Rust
3
star
18

mcts_benchmarks

Benchmarks of MCTS implementations
Python
3
star
19

notes

a collection of my notes for various topics
3
star
20

Raptor

Implementation of RFC 5053 - Raptor Forward Error Correction Scheme for Object Delivery
Scala
3
star
21

LifeSaver

Conway's Game of Life as screensaver
C
3
star
22

advent_2022

https://adventofcode.com/2022
3
star
23

language-benchmarks

Benchmarks of various programming languages
C++
3
star
24

furidamu-comments

Comments for furidamu.org
2
star
25

Game-of-Life

game of life with random seeds
Python
2
star
26

WakeOnTelnet

Android remote control app for the VSX-921 receiver, written in Scala
Scala
2
star
27

link_archive

Pelican Plugin to automatically archive all linked pages
Python
2
star
28

poke_mapper

Python
2
star
29

do-next

simplify task selection
Python
2
star
30

omnimote

Gesture based Android remote for XBMC
Scala
2
star
31

PyOBot

a simple OGame bot, written in python
Python
2
star
32

funprog

automated tests for functional programming
Haskell
2
star
33

rs-bench

Benchmark for Android using RenderScript
Scala
2
star
34

GalaxyWar

JavaScript
2
star
35

Uebersetzerbau

C
1
star
36

V-Hand

Python
1
star
37

MarkovChains

simple markov chain based word generator in scala
Scala
1
star
38

HashCrash

test for hash collision vulnerabilities
Scala
1
star
39

AndroidScammer

Proof of Concept - access and send phonebook info
Scala
1
star
40

Programmierpraxis

TU Wien uebungen
Java
1
star
41

OTE

Objectoriented Taskbased Engine, a small multithreaded game engine, quite modular, currently using OGRE, Newton and MyGUI
C++
1
star
42

Boxee-Dreambox

a small django application which creates a rss feed of dreambox channels for boxee, where each link will switch to the channel and then redirect to the streaming url
1
star
43

Mining-Monitor

Python
1
star
44

TaskEngine

a small library helping you to write multithreaded applications and allow the different threads to communicate
C
1
star
45

message-graphs

JavaScript
1
star
46

toukei

Simple privacy preserving visit counter
Rust
1
star
47

scalajs-benchmarks

Benchmarking Scala.JS with the Computer Language Benchmarks Game
Java
1
star
48

tenki

weather prediction
Rust
1
star
49

statistical_rethinking

Jupyter Notebook
1
star