def test_from_url_keep_form(self): o = URL('http://w3af.com/foo/bar.txt') o.querystring = URLEncodedForm() u = URL.from_URL(o) self.assertIsInstance(u.querystring, URLEncodedForm) self.assertIsNot(u.querystring, o.querystring) self.assertEqual(u.querystring, o.querystring)
def met_search(self, query): """ Query a Public Key Server. This method is based from the pks.py file from the massive enumeration toolset, coded by pdp and released under GPL v2. """ url = URL(u'http://pgp.mit.edu:11371/pks/lookup') url.querystring = [(u'op', [u'index']), (u'search', [query])] try: response = self._uri_opener.GET(url, headers=self._headers, cache=True, grep=False) except HTTPRequestException: # Very naive exception handling for the case where we can't reach # the PKS server (it's down, blocking us, bad internet connection) return [] content = response.get_body() content = re.sub('(<.*?>|<|>)', '', content) results = [] accounts = [] for line in content.split('\n')[2:]: if not line.strip(): continue tokens = line.split() if len(tokens) >= 5: email = tokens[-1] name = ' '.join(tokens[3:-1]) if SGMLParser.EMAIL_RE.match(email): account = email.split('@')[0] domain = email.split('@')[1] if domain == query: if account not in accounts: accounts.append(account) pksr = PKSResult(name, account, domain, response.id) results.append(pksr) return results