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
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
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
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
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, time.asctime(),'-', 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
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
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)
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)
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
def create_not_len_bohlist(self,chunkid): index,begin,length = chunkid payload = tobinary(index)+tobinary(begin)+'bla' return EXTEND+HASHPIECE+payload
def create_request(self,chunkid): index,begin,length = chunkid return REQUEST+tobinary(index)+tobinary(begin)+tobinary(length)