{"id":16160886,"url":"https://github.com/spoutn1k/python-sotools","last_synced_at":"2025-11-17T15:29:57.835Z","repository":{"id":38811331,"uuid":"454233935","full_name":"spoutn1k/python-sotools","owner":"spoutn1k","description":"Python tools to resolve dynamic dependencies of ELF objects","archived":false,"fork":false,"pushed_at":"2023-04-10T17:05:31.000Z","size":100,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-01T22:12:02.986Z","etag":null,"topics":["elf","linker","linux","security","system","tool"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spoutn1k.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-01T02:05:32.000Z","updated_at":"2024-04-01T05:02:22.000Z","dependencies_parsed_at":"2025-01-07T22:31:47.664Z","dependency_job_id":null,"html_url":"https://github.com/spoutn1k/python-sotools","commit_stats":{"total_commits":85,"total_committers":4,"mean_commits":21.25,"dds":0.2705882352941177,"last_synced_commit":"363a8f94d5caf0622bce37a76f3b0d765dc61a03"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/spoutn1k/python-sotools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoutn1k%2Fpython-sotools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoutn1k%2Fpython-sotools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoutn1k%2Fpython-sotools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoutn1k%2Fpython-sotools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spoutn1k","download_url":"https://codeload.github.com/spoutn1k/python-sotools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoutn1k%2Fpython-sotools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284911626,"owners_count":27083424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-17T02:00:06.431Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elf","linker","linux","security","system","tool"],"created_at":"2024-10-10T02:06:13.476Z","updated_at":"2025-11-17T15:29:57.817Z","avatar_url":"https://github.com/spoutn1k.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# python-sotools\n\nCollection of tools to debug and diagnose ELF objects dynamic linking.\n\n## Dynamic linker\n\nThe module contains methods to mimic the default dynamic linker on Linux. The [`resolve`](https://github.com/spoutn1k/python-sotools/blob/ba7a3bdda288f4edd50133e826144224cc2bf561/sotools/linker.py#L31) method implements all the rules involving the search and selection of a shared object given a shared object name (soname) string.\n\n### Dynamic linker cache\n\nThe dynamic linker cache (usually present at `/etc/ld.so.cache`) is a database generated at install time to cache the locations of select shared objects on the system. `python-sotools` supports reading and parsing this file, along with customized search for matches.\n\n### Library set\n\nTo simplify the use of the linker, the `LibrarySet` object is a specialization of a python `set` that allows to quickly resolve a dependency tree. It contains `Library` objects and is complete when all dependencies are contained in the set, and allows to verify all the members' required definitions are also present in another set member.\n\n## Scripts\n\nThe following scripts are installed automatically when installing `python-sotools`:\n\n### `ldd.py`\n\nSimple re-implementation of ldd with the contents of `python-sotools`. This version does not use the actual linker and can be trusted not to run any code when executed with unknown executables, unlike the original.\n\n### `sowhich`\n\nWhich library is resolved ? This command returns the path for the library name given as an argument. That's it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoutn1k%2Fpython-sotools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspoutn1k%2Fpython-sotools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoutn1k%2Fpython-sotools/lists"}