Skip to content

Commit 135829f

Browse files
ID-1390 Utility functions to find all ips and emails.
1 parent 786873a commit 135829f

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

domaintools/utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import datetime
22
import dateparser
3+
import re
34

45

56
def get_domain_age(create_date):
@@ -98,3 +99,15 @@ def prune_data(data_obj):
9899
if not isinstance(item, int) and not item:
99100
items_to_prune.append(index)
100101
data_obj[:] = [item for index, item in enumerate(data_obj) if index not in items_to_prune and len(item)]
102+
103+
104+
def find_emails(data_str):
105+
"""Find and returns all emails"""
106+
return set(re.findall(r'[\w\.-]+@[\w\.-]+', data_str))
107+
108+
109+
def find_ips(data_str):
110+
"""Find and returns all ipv4"""
111+
ipv4s = set(re.findall(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b', data_str))
112+
return ipv4s
113+

tests/test_utils.py

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import json
12
from datetime import datetime, timedelta
2-
from tests.settings import utils
3-
from tests.responses.iris_investage_data import espn
3+
44
from tests.responses.expected_data import prune_espn_expected
5+
from tests.responses.iris_investage_data import espn
6+
from tests.settings import utils
57

68

79
def test_get_domain_age():
@@ -38,6 +40,7 @@ def test_investigate_average_risk_score():
3840
result = utils.get_average_risk_score(domains)
3941
assert result == None
4042

43+
4144
def test_detect_average_risk_score():
4245
domains = [
4346
{"risk_score": 25},
@@ -57,6 +60,7 @@ def test_detect_average_risk_score():
5760
result = utils.get_average_risk_score(domains)
5861
assert result == None
5962

63+
6064
def test_investigate_average_age():
6165
two_days_ago = (datetime.now() - timedelta(days=2)).strftime("%Y-%m-%d")
6266
five_days_ago = (datetime.now() - timedelta(days=5)).strftime("%Y-%m-%d")
@@ -86,6 +90,7 @@ def test_investigate_average_age():
8690
result = utils.get_average_age(domains)
8791
assert result == None
8892

93+
8994
def test_detect_average_age():
9095
two_days_ago = int((datetime.now() - timedelta(days=2)).strftime("%Y%m%d"))
9196
five_days_ago = int((datetime.now() - timedelta(days=5)).strftime("%Y%m%d"))
@@ -107,7 +112,37 @@ def test_detect_average_age():
107112
result = utils.get_average_risk_score(domains)
108113
assert result == None
109114

115+
110116
def test_data_prune():
111117
data = espn()
112118
utils.prune_data(data)
113119
assert data == prune_espn_expected()
120+
121+
122+
def test_find_emails():
123+
emails = utils.find_emails(json.dumps(espn()))
124+
125+
126+
127+
def test_find_ips():
128+
ips = utils.find_ips(json.dumps(espn()))
129+
assert ips == {'104.47.44.36',
130+
'104.47.45.36',
131+
'13.224.13.26',
132+
'13.224.13.62',
133+
'13.224.13.66',
134+
'13.224.13.80',
135+
'205.251.192.122',
136+
'205.251.195.78',
137+
'205.251.196.21',
138+
'205.251.199.144',
139+
'74.123.200.120',
140+
'74.123.200.222',
141+
'74.123.200.35',
142+
'74.123.200.36',
143+
'74.123.203.125',
144+
'74.123.203.98',
145+
'99.86.32.125',
146+
'99.86.32.27',
147+
'99.86.32.32',
148+
'99.86.32.4'}

0 commit comments

Comments
 (0)