docs: def get_sid(self):
          """Returns a valid SID"""
          base_url = u'%s/login_sid.lua' % self.__fritz_url
          get_challenge = None
          try:
              get_challenge = urllib2.urlopen(base_url).read().decode('ascii')
          except urllib2.HTTPError as exception:
              print('HTTPError = ' + str(exception.code))
          except urllib2.URLError as  exception:
              print('URLError = ' + str(exception.reason))
          except Exception as exception:
              print('generic exception: ' + str(exception))
              raise
  
  
          challenge = get_challenge.split(
              '<Challenge>')[1].split('</Challenge>')[0]
          challenge_b = (
              challenge + '-' + self.__password).encode().decode('iso-8859-1').encode('utf-16le')
  
          md5hash = hashlib.md5()
          md5hash.update(challenge_b)
  
          response_b = challenge + '-' + md5hash.hexdigest().lower()
          get_sid = urllib2.urlopen('%s?%sresponse=%s' % (base_url, self.__username_query, response_b)).read().decode('utf-8')
          self.sid = get_sid.split('<SID>')[1].split('</SID>')[0]