dhtbot's People
dhtbot's Issues
Add the quarantine functionality to KRPC_Responder
A Quarantine has been implemented, now it just needs to be attached to KRPC_Responder.
Implement the NICE protocol in KRPC_Responder
Implement the NICE functionality as specified in:
http://people.kth.se/~rauljc/p2p11/jimenez2011subsecond.pdf
Implement / record all TODO tags in the source code
TODO tags are littered in the code, remove them and document the issue they were describing here. Or better yet, fix the issues :)
Calling get_iterate on a KRPC_Iterator_Server causes a pickling error
>>> p = k.get_iterate(ap, n)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/client.py", line 64, in get_iterate
return self._deflate_call_inflate(args, self.server.get_iterate)
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/client.py", line 33, in _deflate_call_inflate
return inflate(deflated_result)
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/common.py", line 7, in inflate
return pickle.loads(data)
File "/usr/lib64/python2.6/pickle.py", line 1374, in loads
return Unpickler(file).load()
File "/usr/lib64/python2.6/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib64/python2.6/pickle.py", line 1133, in load_reduce
value = func(*args)
TypeError: __init__() takes exactly 2 arguments (1 given)
Pickling error when calling find_iterate on KRPC_Iterator_Server
>>> nodes = set()
>>> update_loop(nodes)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/greg/src/DHTBot/bin/start_client", line 26, in update_loop
new_nodes = k.find_iterate(rand_id(), nodes)
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/client.py", line 60, in find_iterate
return self._deflate_call_inflate(args, self.server.find_iterate)
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/client.py", line 49, in _deflate_call_inflate
return inflate(deflated_result)
File "/home/greg/src/DHTBot/dhtbot/xml_rpc/common.py", line 7, in inflate
return pickle.loads(data)
File "/usr/lib64/python2.6/pickle.py", line 1374, in loads
return Unpickler(file).load()
File "/usr/lib64/python2.6/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib64/python2.6/pickle.py", line 1133, in load_reduce
value = func(*args)
TypeError: __init__() takes exactly 2 arguments (1 given)
Add intelligent Sybil detection
Detecting the Sybil's is one aspect. It is also important to react smartly to a Sybil. Implement a per-IP blacklist? Prune Sybil's from the routing table?
Make better __str__'s for nodes and addresses
The current format is not very readable and is defaulting to the repr. Make something that is easily human readable (math.log() on the node_id's for example)
Extend krpc_coder to grab optional attributes not part of the DHT BEP
Extend krpc_coder so that it includes optional attributes that are not part of the BEP specification (ie: include a krpc.optional_fields dictionary that contains additions that uTorrent adds).
Add security/robustness to the KRPC_Sender protocol by comparing addresses to transaction_id's
Make sure that a malicious DHT node can't simply guess/choose a transaction_id. Do this by comparing inbound responses to outbound queries.
ie:
we send a query with transaction_id: 5
we get a response with transaction_id: 5,
did it come from who we sent it to? or a random internet citizen?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.