Merge branch 'package-collision' into release/0.15.0-rc2
This commit is contained in:
commit
c12304a71a
|
|
@ -20,8 +20,8 @@ maintainers = [
|
||||||
"Matheus Felipe <matheusfelipeog@protonmail.com>",
|
"Matheus Felipe <matheusfelipeog@protonmail.com>",
|
||||||
"Sondre Karlsen Dyrnes <sondre@villdyr.no>"
|
"Sondre Karlsen Dyrnes <sondre@villdyr.no>"
|
||||||
]
|
]
|
||||||
readme = "docs/pyproj/README.md"
|
readme = "docs/pyproject/README.md"
|
||||||
packages = [ { include = "sherlock"} ]
|
packages = [ { include = "sherlock_project"} ]
|
||||||
keywords = [ "osint", "reconnaissance", "information gathering" ]
|
keywords = [ "osint", "reconnaissance", "information gathering" ]
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 5 - Production/Stable",
|
||||||
|
|
@ -32,7 +32,7 @@ classifiers = [
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Topic :: Security"
|
"Topic :: Security"
|
||||||
]
|
]
|
||||||
homepage = "https://sherlock-project.github.io/"
|
homepage = "https://sherlockproject.xyz/"
|
||||||
repository = "https://github.com/sherlock-project/sherlock"
|
repository = "https://github.com/sherlock-project/sherlock"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -56,4 +56,4 @@ openpyxl = "^3.0.10"
|
||||||
jsonschema = "^4.0.0"
|
jsonschema = "^4.0.0"
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
sherlock = 'sherlock.sherlock:main'
|
sherlock = 'sherlock_project.sherlock:main'
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1 @@
|
||||||
|
sherlock_project/resources/data.json
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
||||||
"title": "Sherlock Targets",
|
|
||||||
"description": "Social media target to probe for existence of usernames",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"$schema": { "type": "string" }
|
|
||||||
},
|
|
||||||
"patternProperties": {
|
|
||||||
"^(?!\\$).*?$": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "User-friendly target name",
|
|
||||||
"required": [ "url", "urlMain", "errorType", "username_claimed" ],
|
|
||||||
"properties": {
|
|
||||||
"url": { "type": "string" },
|
|
||||||
"urlMain": { "type": "string" },
|
|
||||||
"urlProbe": { "type": "string" },
|
|
||||||
"username_claimed": { "type": "string" },
|
|
||||||
"regexCheck": { "type": "string" },
|
|
||||||
"isNSFW": { "type": "boolean" },
|
|
||||||
"headers": { "type": "object" },
|
|
||||||
"request_payload": { "type": "object" },
|
|
||||||
"__comment__": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Used to clarify important target information if (and only if) a commit message would not suffice.\nThis key should not be parsed anywhere within Sherlock."
|
|
||||||
},
|
|
||||||
"tags": {
|
|
||||||
"oneOf": [
|
|
||||||
{ "$ref": "#/$defs/tag" },
|
|
||||||
{ "type": "array", "items": { "$ref": "#/$defs/tag" } }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"request_method": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [ "GET", "POST", "HEAD", "PUT" ]
|
|
||||||
},
|
|
||||||
"errorType": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [ "message", "response_url", "status_code" ]
|
|
||||||
},
|
|
||||||
"errorMsg": {
|
|
||||||
"oneOf": [
|
|
||||||
{ "type": "string" },
|
|
||||||
{ "type": "array", "items": { "type": "string" } }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"errorCode": {
|
|
||||||
"oneOf": [
|
|
||||||
{ "type": "integer" },
|
|
||||||
{ "type": "array", "items": { "type": "integer" } }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"errorUrl": { "type": "string" },
|
|
||||||
"response_url": { "type": "string" }
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"errorMsg": {
|
|
||||||
"properties" : { "errorType": { "const": "message" } }
|
|
||||||
},
|
|
||||||
"errorUrl": {
|
|
||||||
"properties": { "errorType": { "const": "response_url" } }
|
|
||||||
},
|
|
||||||
"errorCode": {
|
|
||||||
"properties": { "errorType": { "const": "status_code" } }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"if": { "properties": { "errorType": { "const": "message" } } },
|
|
||||||
"then": { "required": [ "errorMsg" ] },
|
|
||||||
"else": {
|
|
||||||
"if": { "properties": { "errorType": { "const": "response_url" } } },
|
|
||||||
"then": { "required": [ "errorUrl" ] }
|
|
||||||
},
|
|
||||||
"additionalProperties": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"$defs": {
|
|
||||||
"tag": { "type": "string", "enum": [ "adult", "gaming" ] }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
sherlock_project/resources/data.schema.json
|
||||||
|
|
@ -18,5 +18,5 @@ if __name__ == "__main__":
|
||||||
print(f"Sherlock requires Python 3.8+\nYou are using Python {python_version}, which is not supported by Sherlock.")
|
print(f"Sherlock requires Python 3.8+\nYou are using Python {python_version}, which is not supported by Sherlock.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
from sherlock import sherlock
|
from sherlock_project import sherlock
|
||||||
sherlock.main()
|
sherlock.main()
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
This module defines the objects for notifying the caller about the
|
This module defines the objects for notifying the caller about the
|
||||||
results of queries.
|
results of queries.
|
||||||
"""
|
"""
|
||||||
from sherlock.result import QueryStatus
|
from sherlock_project.result import QueryStatus
|
||||||
from colorama import Fore, Style
|
from colorama import Fore, Style
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,80 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"title": "Sherlock Targets",
|
||||||
|
"description": "Social media target to probe for existence of usernames",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"$schema": { "type": "string" }
|
||||||
|
},
|
||||||
|
"patternProperties": {
|
||||||
|
"^(?!\\$).*?$": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "User-friendly target name",
|
||||||
|
"required": [ "url", "urlMain", "errorType", "username_claimed" ],
|
||||||
|
"properties": {
|
||||||
|
"url": { "type": "string" },
|
||||||
|
"urlMain": { "type": "string" },
|
||||||
|
"urlProbe": { "type": "string" },
|
||||||
|
"username_claimed": { "type": "string" },
|
||||||
|
"regexCheck": { "type": "string" },
|
||||||
|
"isNSFW": { "type": "boolean" },
|
||||||
|
"headers": { "type": "object" },
|
||||||
|
"request_payload": { "type": "object" },
|
||||||
|
"__comment__": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Used to clarify important target information if (and only if) a commit message would not suffice.\nThis key should not be parsed anywhere within Sherlock."
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"oneOf": [
|
||||||
|
{ "$ref": "#/$defs/tag" },
|
||||||
|
{ "type": "array", "items": { "$ref": "#/$defs/tag" } }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"request_method": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [ "GET", "POST", "HEAD", "PUT" ]
|
||||||
|
},
|
||||||
|
"errorType": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [ "message", "response_url", "status_code" ]
|
||||||
|
},
|
||||||
|
"errorMsg": {
|
||||||
|
"oneOf": [
|
||||||
|
{ "type": "string" },
|
||||||
|
{ "type": "array", "items": { "type": "string" } }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"errorCode": {
|
||||||
|
"oneOf": [
|
||||||
|
{ "type": "integer" },
|
||||||
|
{ "type": "array", "items": { "type": "integer" } }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"errorUrl": { "type": "string" },
|
||||||
|
"response_url": { "type": "string" }
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"errorMsg": {
|
||||||
|
"properties" : { "errorType": { "const": "message" } }
|
||||||
|
},
|
||||||
|
"errorUrl": {
|
||||||
|
"properties": { "errorType": { "const": "response_url" } }
|
||||||
|
},
|
||||||
|
"errorCode": {
|
||||||
|
"properties": { "errorType": { "const": "status_code" } }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"if": { "properties": { "errorType": { "const": "message" } } },
|
||||||
|
"then": { "required": [ "errorMsg" ] },
|
||||||
|
"else": {
|
||||||
|
"if": { "properties": { "errorType": { "const": "response_url" } } },
|
||||||
|
"then": { "required": [ "errorUrl" ] }
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false,
|
||||||
|
"$defs": {
|
||||||
|
"tag": { "type": "string", "enum": [ "adult", "gaming" ] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -24,18 +24,18 @@ import requests
|
||||||
__version__ = "0.14.4"
|
__version__ = "0.14.4"
|
||||||
del __version__
|
del __version__
|
||||||
|
|
||||||
from .__init__ import ( # noqa: E402
|
from sherlock_project.__init__ import ( # noqa: E402
|
||||||
__longname__,
|
__longname__,
|
||||||
__version__
|
__version__
|
||||||
)
|
)
|
||||||
|
|
||||||
from requests_futures.sessions import FuturesSession # noqa: E402
|
from requests_futures.sessions import FuturesSession # noqa: E402
|
||||||
from torrequest import TorRequest # noqa: E402
|
from torrequest import TorRequest # noqa: E402
|
||||||
from sherlock.result import QueryStatus # noqa: E402
|
from sherlock_project.result import QueryStatus # noqa: E402
|
||||||
from sherlock.result import QueryResult # noqa: E402
|
from sherlock_project.result import QueryResult # noqa: E402
|
||||||
from sherlock.notify import QueryNotify # noqa: E402
|
from sherlock_project.notify import QueryNotify # noqa: E402
|
||||||
from sherlock.notify import QueryNotifyPrint # noqa: E402
|
from sherlock_project.notify import QueryNotifyPrint # noqa: E402
|
||||||
from sherlock.sites import SitesInformation # noqa: E402
|
from sherlock_project.sites import SitesInformation # noqa: E402
|
||||||
from colorama import init # noqa: E402
|
from colorama import init # noqa: E402
|
||||||
from argparse import ArgumentTypeError # noqa: E402
|
from argparse import ArgumentTypeError # noqa: E402
|
||||||
|
|
||||||
|
|
@ -2,22 +2,22 @@ import os
|
||||||
import json
|
import json
|
||||||
import urllib
|
import urllib
|
||||||
import pytest
|
import pytest
|
||||||
from sherlock.sites import SitesInformation
|
from sherlock_project.sites import SitesInformation
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def sites_obj():
|
def sites_obj():
|
||||||
sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock/resources/data.json"))
|
sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock_project/resources/data.json"))
|
||||||
yield sites_obj
|
yield sites_obj
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def sites_info():
|
def sites_info():
|
||||||
sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock/resources/data.json"))
|
sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock_project/resources/data.json"))
|
||||||
sites_iterable = {site.name: site.information for site in sites_obj}
|
sites_iterable = {site.name: site.information for site in sites_obj}
|
||||||
yield sites_iterable
|
yield sites_iterable
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def remote_schema():
|
def remote_schema():
|
||||||
schema_url: str = 'https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/resources/data.schema.json'
|
schema_url: str = 'https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock_project/resources/data.schema.json'
|
||||||
with urllib.request.urlopen(schema_url) as remoteschema:
|
with urllib.request.urlopen(schema_url) as remoteschema:
|
||||||
schemadat = json.load(remoteschema)
|
schemadat = json.load(remoteschema)
|
||||||
yield schemadat
|
yield schemadat
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import sherlock
|
import sherlock_project
|
||||||
|
|
||||||
#from sherlock.sites import SitesInformation
|
#from sherlock.sites import SitesInformation
|
||||||
#local_manifest = data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock/resources/data.json")
|
#local_manifest = data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock/resources/data.json")
|
||||||
|
|
||||||
def test_username_via_message():
|
def test_username_via_message():
|
||||||
sherlock.__main__("--version")
|
sherlock_project.__main__("--version")
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class Interactives:
|
||||||
"""Check all files within the Sherlock package for matching patterns"""
|
"""Check all files within the Sherlock package for matching patterns"""
|
||||||
pattern:re.Pattern = re.compile(pattern)
|
pattern:re.Pattern = re.compile(pattern)
|
||||||
matching_files:list[str] = []
|
matching_files:list[str] = []
|
||||||
for root, dirs, files in os.walk("sherlock"):
|
for root, dirs, files in os.walk("sherlock_project"):
|
||||||
for file in files:
|
for file in files:
|
||||||
file_path = os.path.join(root,file)
|
file_path = os.path.join(root,file)
|
||||||
if "__pycache__" in file_path:
|
if "__pycache__" in file_path:
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ from jsonschema import validate
|
||||||
|
|
||||||
def test_validate_manifest_against_local_schema():
|
def test_validate_manifest_against_local_schema():
|
||||||
"""Ensures that the manifest matches the local schema, for situations where the schema is being changed."""
|
"""Ensures that the manifest matches the local schema, for situations where the schema is being changed."""
|
||||||
json_relative: str = '../sherlock/resources/data.json'
|
json_relative: str = '../sherlock_project/resources/data.json'
|
||||||
schema_relative: str = '../sherlock/resources/data.schema.json'
|
schema_relative: str = '../sherlock_project/resources/data.schema.json'
|
||||||
|
|
||||||
json_path: str = os.path.join(os.path.dirname(__file__), json_relative)
|
json_path: str = os.path.join(os.path.dirname(__file__), json_relative)
|
||||||
schema_path: str = os.path.join(os.path.dirname(__file__), schema_relative)
|
schema_path: str = os.path.join(os.path.dirname(__file__), schema_relative)
|
||||||
|
|
@ -22,7 +22,7 @@ def test_validate_manifest_against_local_schema():
|
||||||
@pytest.mark.online
|
@pytest.mark.online
|
||||||
def test_validate_manifest_against_remote_schema(remote_schema):
|
def test_validate_manifest_against_remote_schema(remote_schema):
|
||||||
"""Ensures that the manifest matches the remote schema, so as to not unexpectedly break clients."""
|
"""Ensures that the manifest matches the remote schema, so as to not unexpectedly break clients."""
|
||||||
json_relative: str = '../sherlock/resources/data.json'
|
json_relative: str = '../sherlock_project/resources/data.json'
|
||||||
json_path: str = os.path.join(os.path.dirname(__file__), json_relative)
|
json_path: str = os.path.join(os.path.dirname(__file__), json_relative)
|
||||||
|
|
||||||
with open(json_path, 'r') as f:
|
with open(json_path, 'r') as f:
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ import pytest
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
import re
|
import re
|
||||||
from sherlock.sherlock import sherlock
|
from sherlock_project.sherlock import sherlock
|
||||||
from sherlock.notify import QueryNotify
|
from sherlock_project.notify import QueryNotify
|
||||||
from sherlock.result import QueryStatus
|
from sherlock_project.result import QueryStatus
|
||||||
#from sherlock_interactives import Interactives
|
#from sherlock_interactives import Interactives
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import pytest
|
import pytest
|
||||||
from sherlock import sherlock
|
from sherlock_project import sherlock
|
||||||
from sherlock_interactives import Interactives
|
from sherlock_interactives import Interactives
|
||||||
from sherlock_interactives import InteractivesSubprocessError
|
from sherlock_interactives import InteractivesSubprocessError
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
import os
|
import os
|
||||||
from sherlock_interactives import Interactives
|
from sherlock_interactives import Interactives
|
||||||
import sherlock
|
import sherlock_project
|
||||||
|
|
||||||
def test_versioning() -> None:
|
def test_versioning() -> None:
|
||||||
# Ensure __version__ matches version presented to the user
|
# Ensure __version__ matches version presented to the user
|
||||||
assert sherlock.__version__ in Interactives.run_cli("--version")
|
assert sherlock_project.__version__ in Interactives.run_cli("--version")
|
||||||
# Ensure __init__ is single source of truth for __version__ in package
|
# Ensure __init__ is single source of truth for __version__ in package
|
||||||
# Temporarily allows sherlock.py so as to not trigger early upgrades
|
# Temporarily allows sherlock.py so as to not trigger early upgrades
|
||||||
found:list = Interactives.walk_sherlock_for_files_with(r'__version__ *= *')
|
found:list = Interactives.walk_sherlock_for_files_with(r'__version__ *= *')
|
||||||
expected:list = [
|
expected:list = [
|
||||||
# Normalization is REQUIRED for Windows ( / vs \ )
|
# Normalization is REQUIRED for Windows ( / vs \ )
|
||||||
os.path.normpath("sherlock/__init__.py"),
|
os.path.normpath("sherlock_project/__init__.py"),
|
||||||
os.path.normpath("sherlock/sherlock.py"),
|
os.path.normpath("sherlock_project/sherlock.py"),
|
||||||
]
|
]
|
||||||
# Sorting is REQUIRED for Mac
|
# Sorting is REQUIRED for Mac
|
||||||
assert sorted(found) == sorted(expected)
|
assert sorted(found) == sorted(expected)
|
||||||
|
|
|
||||||
2
tox.ini
2
tox.ini
|
|
@ -18,7 +18,7 @@ deps =
|
||||||
pytest
|
pytest
|
||||||
allowlist_externals = coverage
|
allowlist_externals = coverage
|
||||||
commands =
|
commands =
|
||||||
coverage run --source=sherlock --module pytest -v
|
coverage run --source=sherlock_project --module pytest -v
|
||||||
coverage report --show-missing
|
coverage report --show-missing
|
||||||
|
|
||||||
[testenv:offline]
|
[testenv:offline]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue