-
Notifications
You must be signed in to change notification settings - Fork 0
Github:Auditing:Find External Collaborators
lbonanomi edited this page Jan 20, 2025
·
1 revision
import json
import requests
import sys
token = '$TOKEN_GOES_HERE'
def paged(org, cursor=""):
payload = { "query": "query { organization(login: \"" + org + "\") {repositories(visibility: PUBLIC, first: 100, after: \"" + cursor + "\") {pageInfo {startCursor hasNextPage endCursor}nodes {name collaborators(affiliation: OUTSIDE, first: 100) {edges {permission} nodes {login}}}}}}" }
data = json.dumps(payload)
headers = {"Content-type": "application/json", "Authorization": "bearer " + token} ##, "User-Agent": "python3"}
x = requests.post("https://api.github.com/graphql", headers=headers, data=data).json()
try:
for y in x['data']['organization']['repositories']['nodes']:
them = []
repo = y['name']
for collaborator in y['collaborators']['nodes']:
them.append(collaborator['login'])
if len(them):
print(org + "," + repo, ",", ",".join(them))
if x['data']['organization']['repositories']['pageInfo']['hasNextPage']:
paged(org, cursor=x['data']['organization']['repositories']['pageInfo']['endCursor'])
except Exception:
print("No permissions in", org)
for org in [ "org1", "org2", "org3" ]:
paged(org, cursor="")
- Backup-and-Restore
- Console
- Emergencies
- Housekeeping
- Integrations-and-External-Programs
- Search
- Throttles
- Usage