• Stars
    star
    249
  • Rank 162,987 (Top 4 %)
  • Language
    Python
  • Created almost 14 years ago
  • Updated over 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
64
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
26
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

pony-mcts

MCTS for Go in PonyLang
Rust
7
star
9

wakari_chan

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

Units-of-Measure

a Units of Measure system in Scala
Scala
5
star
11

LifeSaver

Conway's Game of Life as screensaver
C
5
star
12

infinite-diary

Infinite Diary, successor to Automatic Diary
Python
5
star
13

mcts_benchmarks

Benchmarks of MCTS implementations
Python
4
star
14

go_guessing

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

labnotes

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

scaladroid

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

Micro16-Simulator

Scala
4
star
18

Simple-GeneticAlgorithm

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

voting-map

Rust
3
star
20

advent_2022

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

notes

a collection of my notes for various topics
3
star
22

Raptor

Implementation of RFC 5053 - Raptor Forward Error Correction Scheme for Object Delivery
Scala
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

rs-bench

Benchmark for Android using RenderScript
Scala
2
star
27

WakeOnTelnet

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

link_archive

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

poke_mapper

Python
2
star
30

do-next

simplify task selection
Python
2
star
31

omnimote

Gesture based Android remote for XBMC
Scala
2
star
32

PyOBot

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

funprog

automated tests for functional programming
Haskell
2
star
34

GalaxyWar

JavaScript
2
star
35

tenki

weather prediction
Rust
2
star
36

TaskEngine

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

Uebersetzerbau

C
1
star
38

V-Hand

Python
1
star
39

HashCrash

test for hash collision vulnerabilities
Scala
1
star
40

MarkovChains

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

AndroidScammer

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

Programmierpraxis

TU Wien uebungen
Java
1
star
43

OTE

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

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
45

Mining-Monitor

Python
1
star
46

message-graphs

JavaScript
1
star
47

toukei

Simple privacy preserving visit counter
Rust
1
star
48

scalajs-benchmarks

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

statistical_rethinking

Jupyter Notebook
1
star