add pgp mail harvester
This commit is contained in:
75
PGPemails.py
Executable file
75
PGPemails.py
Executable file
@@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env python2
|
||||||
|
#
|
||||||
|
# todo
|
||||||
|
# - nicer output, ugly right now
|
||||||
|
# - interpret error 500 (too many results!!) 502 pgp mit edu is down again
|
||||||
|
# - option to download the key as well
|
||||||
|
# - socks support
|
||||||
|
#
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import urllib2
|
||||||
|
from BeautifulSoup import BeautifulSoup
|
||||||
|
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
print "%s -- get emails of company members by pgp.mit.edu"
|
||||||
|
print "<searchstring> <outdir>"
|
||||||
|
print
|
||||||
|
|
||||||
|
search = sys.argv[1]
|
||||||
|
out = sys.argv[2]
|
||||||
|
|
||||||
|
if len(sys.argv)<2:
|
||||||
|
usage()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.mkdir(out)
|
||||||
|
except:
|
||||||
|
print "dir exists %s" % out
|
||||||
|
|
||||||
|
logfile = "%s/%s.txt" % (out,out)
|
||||||
|
flog = open(logfile,"w")
|
||||||
|
|
||||||
|
|
||||||
|
search = search.rstrip("\n")
|
||||||
|
search = search.rstrip("\r")
|
||||||
|
search = urllib2.quote(search)
|
||||||
|
|
||||||
|
url = "http://pgp.mit.edu:11371/pks/lookup?search=%s&op=index" % (search)
|
||||||
|
print "Link: %s" % (url)
|
||||||
|
|
||||||
|
req = urllib2.Request(url)
|
||||||
|
req.add_header("Host","pgp.mit.edu:11371")
|
||||||
|
req.add_header("User-Agent","Internet Explorer")
|
||||||
|
req.add_header("Accept","*/*")
|
||||||
|
req.add_header("Accept-Encoding","text/html")
|
||||||
|
req.add_header("Accept-Charset","us-ascii, ISO-8859-1")
|
||||||
|
req.add_header("Accept-Language","en,*;q=0.1")
|
||||||
|
req.add_header("Referer","http://pgp.mit.edu")
|
||||||
|
req.add_header("Connection","close")
|
||||||
|
|
||||||
|
try:
|
||||||
|
res = urllib2.urlopen(req)
|
||||||
|
except urllib2.HTTPError,e:
|
||||||
|
print "%s" % (e)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
data = res.read()
|
||||||
|
soup = BeautifulSoup(data)
|
||||||
|
links = soup.findAll('a')
|
||||||
|
|
||||||
|
elist = []
|
||||||
|
klist = []
|
||||||
|
for entry in links:
|
||||||
|
elist.append(entry.contents)
|
||||||
|
|
||||||
|
for line in elist:
|
||||||
|
line = str(line)
|
||||||
|
if re.search('@',line):
|
||||||
|
dline = BeautifulSoup(line,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
||||||
|
pdline = str(dline.contents)
|
||||||
|
print pdline
|
||||||
Reference in New Issue
Block a user