Beispiel #1
0
 def create_ohlist_wrong_no_hashes(self, chunkid):
     index, begin, length = chunkid
     ohlist = [(0, "#" * 20), (1, "$" * 20)]  # should contain 3 for file2.wmv: own, sibling and root
     bohlist = bencode(ohlist)
     chunk = "*" * (2 ** 14)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #2
0
 def create_bad_chunk(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     bohlist = bencode(ohlist)
     chunk = "*" * length
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #3
0
 def create_not_hashpiece(self, chunkid):
     index, begin, length = chunkid
     ohlist = []
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + chr(231) + payload
Beispiel #4
0
 def create_ohlist_wrong_no_hashes(self, chunkid):
     index, begin, length = chunkid
     ohlist = [(0, '#' * 20), (1, '$' * 20)]  # should contain 3 for file2.wmv: own, sibling and root
     bohlist = bencode(ohlist)
     chunk = '*' * (2 ** 14)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #5
0
 def create_not_hashpiece(self, chunkid):
     index, begin, length = chunkid
     ohlist = []
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + chr(231) + payload
Beispiel #6
0
 def create_bad_chunk(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     bohlist = bencode(ohlist)
     chunk = '*' * length
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #7
0
 def create_ohlist_wrong_bad_hash(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     ohlist[1][1] = "$" * 20
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #8
0
 def create_ohlist_wrong_bad_hash(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     ohlist[1][1] = '$' * 20
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #9
0
 def create_ohlist_wrong_no_root_hash(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     newohlist = []
     # Remove root hash
     for oh in ohlist:
         if oh[0] != 0:
             newohlist.append(oh)
     ohlist = newohlist
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #10
0
 def create_ohlist_wrong_no_root_hash(self, chunkid):
     index, begin, length = chunkid
     ohlist = self.tree.get_hashes_for_piece(index)
     newohlist = []
     # Remove root hash
     for oh in ohlist:
         if oh[0] != 0:
             newohlist.append(oh)
     ohlist = newohlist
     bohlist = bencode(ohlist)
     chunk = self.read_chunk(index, begin, length)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
 def write_extend_message(self, metadata_message_id, payload):
     assert isinstance(payload, dict), "PAYLOAD has invalid type: %s" % type(payload)
     assert isinstance(metadata_message_id, str), "METADATA_MESSAGE_ID has invalid type: %s" % type(metadata_message_id)
     assert len(metadata_message_id) == 1, "METADATA_MESSAGE_ID has invalid length: %d" % len(metadata_message_id)
     if DEBUG: print >> sys.stderr, self._address, "MiniBitTorrent.write_extend_message()"
     payload = bencode(payload)
     self._socket.write("".join((tobinary(2 + len(payload)), # msg len
                                 EXTEND,                     # msg id
                                 metadata_message_id,        # extend msg id
                                 payload)))                  # bencoded msg
Beispiel #12
0
 def write_extend_message(self, metadata_message_id, payload):
     assert isinstance(payload, dict), "PAYLOAD has invalid type: %s" % type(payload)
     assert isinstance(metadata_message_id, str), "METADATA_MESSAGE_ID has invalid type: %s" % type(metadata_message_id)
     assert len(metadata_message_id) == 1, "METADATA_MESSAGE_ID has invalid length: %d" % len(metadata_message_id)
     if DEBUG: print >> sys.stderr, self._address, "MiniBitTorrent.write_extend_message()"
     payload = bencode(payload)
     self._socket.write("".join((tobinary(2 + len(payload)), # msg len
                                 EXTEND,                     # msg id
                                 metadata_message_id,        # extend msg id
                                 payload)))                  # bencoded msg
Beispiel #13
0
    def create_good_hashpiece(self, oldstyle, chunkid):
        index, begin, length = chunkid
        if begin == 0:
            ohlist = self.tree.get_hashes_for_piece(index)
        else:
            ohlist = []

        chunk = self.read_chunk(index, begin, length)
        bohlist = bencode(ohlist)

        print >> sys.stderr, "test: create_good_hashpiece:", index, begin, length, "==len", len(chunk)

        payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
        if oldstyle:
            msg = HASHPIECE + payload
        else:
            # Offical: use the msg ID he defined in his handshake
            msg = EXTEND + HASHPIECE + payload
        return msg
Beispiel #14
0
    def create_good_hashpiece(self, oldstyle, chunkid):
        index, begin, length = chunkid
        if begin == 0:
            ohlist = self.tree.get_hashes_for_piece(index)
        else:
            ohlist = []

        chunk = self.read_chunk(index, begin, length)
        bohlist = bencode(ohlist)

        print >> sys.stderr, "test: create_good_hashpiece:", index, begin, length, "==len", len(chunk)

        payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
        if oldstyle:
            msg = HASHPIECE + payload
        else:
            # Offical: use the msg ID he defined in his handshake
            msg = EXTEND + HASHPIECE + payload
        return msg
Beispiel #15
0
 def send_message(self, message):
     self.last_use = time()
     s = tobinary(len(message)) + message
     if DEBUG:
         print >> sys.stderr, "dlbconn: Sending message", len(message)
     self.write(s)
Beispiel #16
0
 def create_ohlist_not_bdecodable(self, chunkid):
     index, begin, length = chunkid
     bohlist = 'bla'
     chunk = '*' * (2 ** 14)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #17
0
 def create_not_len_bohlist(self, chunkid):
     index, begin, length = chunkid
     payload = tobinary(index) + tobinary(begin) + 'bla'
     return EXTEND + HASHPIECE + payload
Beispiel #18
0
 def create_request(self, chunkid):
     index, begin, length = chunkid
     return REQUEST + tobinary(index) + tobinary(begin) + tobinary(length)
Beispiel #19
0
 def send_message(self,message):
     self.last_use = time()
     s = tobinary(len(message))+message
     if DEBUG:
         print >> sys.stderr,"dlbconn: Sending message",len(message)
     self.write(s)
Beispiel #20
0
 def create_request(self, chunkid):
     index, begin, length = chunkid
     return REQUEST + tobinary(index) + tobinary(begin) + tobinary(length)
Beispiel #21
0
 def create_ohlist_not_bdecodable(self, chunkid):
     index, begin, length = chunkid
     bohlist = "bla"
     chunk = "*" * (2 ** 14)
     payload = tobinary(index) + tobinary(begin) + tobinary(len(bohlist)) + bohlist + chunk
     return EXTEND + HASHPIECE + payload
Beispiel #22
0
 def create_not_len_bohlist(self, chunkid):
     index, begin, length = chunkid
     payload = tobinary(index) + tobinary(begin) + "bla"
     return EXTEND + HASHPIECE + payload