Extension Manager was an important app for those who managed Macs in the System 8 and System 9 era. It allowed us to see all of the extensions loaded in the classic OS and disable them. It was also easy to take extensions and move them to the desktop for troubleshooting. In the years since Apple began to pick apart what developers used kernel extensions to do, the type of extensions and how we use them has left us with a few different tools to comb through to see what extensions are on a system and what they do. Thus, let’s bring Extension Manager back (ish).
Let’s start with a little command line interface that takes output from a few different tools Apple developers have baked into macOS (namely systemextensionsctl and pluginkit) and wrap them into swift: https://github.com/krypted/extensionsmanager. This opens up the ability to list names, developers, team IDs, versions, and other important information once easily accessible into easily parsed formats. The usage (per the readme) is fairly straight forward:
extensionsman -all
to show all extensions
or
extensionsman -thirdparty
to show thirdparty extensions
or
extensionsman -n
to show network extensions
or
extensionsman -s
to show system extensions except network extensions
or
extensionsman -raw
to show unformatted result
or
extensionsman -u
to show system extensions that haven’t been loaded
or
extensionsman -h
to show usage information
The project is posted in Xcode with the raw swift, the compiled binary, and as a zipped up Xcode project. Stay tuned for more as it progresses (time permitting).