{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.JoaoAnt/pythoncode-tutorials","documentNamespace":"https://spdx.org/spdxdocs/protobom/12f356dd-911a-43f8-bfe4-c337950487cf","comment":"Exact versions could not be resolved for some packages. For more information: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#dependencies-included.","creationInfo":{"creators":["Tool: protobom-v0.0.0-20251216165153-1f3f3060931e+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2025-12-31T18:03:28Z"},"packages":[{"name":"pymongo","SPDXID":"SPDXRef-pypi-pymongo-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pymongo"}]},{"name":"requests","SPDXID":"SPDXRef-pypi-requests-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/requests"}]},{"name":"shodan","SPDXID":"SPDXRef-pypi-shodan-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/shodan"}]},{"name":"bs4","SPDXID":"SPDXRef-pypi-bs4-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/bs4"}]},{"name":"numpy","SPDXID":"SPDXRef-pypi-numpy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/numpy"}]},{"name":"opencv-python","SPDXID":"SPDXRef-pypi-opencv-python-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/opencv-python"}]},{"name":"unicorn","SPDXID":"SPDXRef-pypi-unicorn-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/unicorn"}]},{"name":"keystone-engine","SPDXID":"SPDXRef-pypi-keystone-engine-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/keystone-engine"}]},{"name":"capstone","SPDXID":"SPDXRef-pypi-capstone-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/capstone"}]},{"name":"pyzbar","SPDXID":"SPDXRef-pypi-pyzbar-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pyzbar"}]},{"name":"mysql-connector-python","SPDXID":"SPDXRef-pypi-mysql-connector-python-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mysql-connector-python"}]},{"name":"tabulate","SPDXID":"SPDXRef-pypi-tabulate-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tabulate"}]},{"name":"colorama","SPDXID":"SPDXRef-pypi-colorama-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/colorama"}]},{"name":"paramiko","SPDXID":"SPDXRef-pypi-paramiko-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/paramiko"}]},{"name":"pycryptodome","SPDXID":"SPDXRef-pypi-pycryptodome-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pycryptodome"}]},{"name":"pypiwin32","SPDXID":"SPDXRef-pypi-pypiwin32-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pypiwin32"}]},{"name":"cryptography","SPDXID":"SPDXRef-pypi-cryptography-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/cryptography"}]},{"name":"pillow","SPDXID":"SPDXRef-pypi-pillow-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pillow"}]},{"name":"keyboard","SPDXID":"SPDXRef-pypi-keyboard-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/keyboard"}]},{"name":"tqdm","SPDXID":"SPDXRef-pypi-tqdm-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tqdm"}]},{"name":"pikepdf","SPDXID":"SPDXRef-pypi-pikepdf-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pikepdf"}]},{"name":"com.github.JoaoAnt/pythoncode-tutorials","SPDXID":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","versionInfo":"master","downloadLocation":"git+https://github.com/JoaoAnt/pythoncode-tutorials","filesAnalyzed":false,"licenseDeclared":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/JoaoAnt/pythoncode-tutorials@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-shodan-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-unicorn-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pillow-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pikepdf-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-capstone-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-mysql-connector-python-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pycryptodome-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pypiwin32-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-cryptography-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-numpy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-opencv-python-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pyzbar-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-tabulate-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-colorama-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-keyboard-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-pymongo-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-bs4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-keystone-engine-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-paramiko-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-tqdm-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relatedSpdxElement":"SPDXRef-pypi-requests-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-JoaoAnt-pythoncode-tutorials-master-b38676","relationshipType":"DESCRIBES"}]}