Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
megadose
GitHub Repository: megadose/holehe-maltego
Path: blob/master/transforms/ToDetailsHOLEHE.py
329 views
1
from maltego_trx.maltego import MaltegoTransform, MaltegoMsg
2
from maltego_trx.transform import DiscoverableTransform
3
from maltego_trx.maltego import OverlayPosition, OverlayType
4
from extensions import registry
5
from holehe.core import *
6
7
8
@registry.register_transform(display_name="Email to Registered Accounts [HOLEHE]", input_entity="maltego.EmailAddress",
9
description='Returns accounts associated with an email address.',
10
settings=[],
11
output_entities=["maltego.Unknown"])
12
class ToDetailsHOLEHE(DiscoverableTransform):
13
14
@classmethod
15
def create_entities(cls, request: MaltegoMsg, response: MaltegoTransform):
16
17
async def maincore():
18
19
def get_timeout():
20
"""Get Timeout from Gravatar.com"""
21
check_timeout = httpx.get("https://gravatar.com")
22
timeout_value = int(check_timeout.elapsed.total_seconds() * 6) + 5
23
return timeout_value
24
25
email = request.Value
26
# Import Modules
27
modules = import_submodules("holehe.modules")
28
websites = get_functions(modules)
29
# Get timeout
30
timeout = get_timeout()
31
# Def the async client
32
client = httpx.AsyncClient(timeout=timeout)
33
# Launching the modules
34
results = []
35
async with trio.open_nursery() as nursery:
36
for website in websites:
37
nursery.start_soon(launch_module, website, email, client, results)
38
39
# Sort by modules names
40
out = sorted(results, key=lambda i: i['name'])
41
# Close the client
42
await client.aclose()
43
44
for website in out:
45
46
if website["exists"]:
47
web = response.addEntity("maltego.Website", website["domain"])
48
web.addProperty("account_found", "Account Found", "loose", True)
49
web.addOverlay("#31bd2a", OverlayPosition.NORTH_WEST, OverlayType.COLOUR)
50
51
if website["emailrecovery"] is not None:
52
email = response.addEntity("maltego.EmailAddress", website["emailrecovery"])
53
email.setLinkLabel("Found in " + website["domain"])
54
55
if website["phoneNumber"] is not None:
56
email = response.addEntity("maltego.PhoneNumber", website["phoneNumber"])
57
email.setLinkLabel("Found in " + website["domain"])
58
59
if website["others"] is not None:
60
response.addEntity("maltego.Phrase", "Found from " + website["name"] + str(website["others"]))
61
62
trio.run(maincore)
63
64