diff --git a/main.go b/main.go deleted file mode 100644 index 99ebe7c..0000000 --- a/main.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "log" - - "golang.org/x/sys/windows" -) - -func checkCurrentUserRoot() (bool, error) { - var err error = nil - var sid *windows.SID - - // Although this looks scary, it is directly copied from the - // official windows documentation. The Go API for this is a - // direct wrap around the official C++ API. - // See https://docs.microsoft.com/en-us/windows/desktop/api/securitybaseapi/nf-securitybaseapi-checktokenmembership - - err = windows.AllocateAndInitializeSid( - &windows.SECURITY_NT_AUTHORITY, - 2, - windows.SECURITY_BUILTIN_DOMAIN_RID, - windows.DOMAIN_ALIAS_RID_ADMINS, - 0, 0, 0, 0, 0, 0, - &sid) - if err != nil { - return false, err - } - - defer windows.FreeSid(sid) - - // This appears to cast a null pointer so I'm not sure why this - // works, but this guy says it does and it Works for Me™: - // https://github.com/golang/go/issues/28804#issuecomment-438838144 - token := windows.Token(0) - - member, err := token.IsMember(sid) - if err != nil { - return false, err - } - - // Also note that an admin is _not_ necessarily considered - // elevated. - // For elevation see https://github.com/mozey/run-as-admin - if token.IsElevated() || member { - return true, err - } - - return false, err -} - -func main() { - isRoot, err := checkCurrentUserRoot() - log.Println(isRoot, err) -} diff --git a/permission/permission_test.go b/permission/permission_test.go index 760f457..1d78798 100644 --- a/permission/permission_test.go +++ b/permission/permission_test.go @@ -1,18 +1,15 @@ +//go:build windows || linux + package permissionutil import ( "testing" - osutils "github.com/projectdiscovery/utils/os" "github.com/stretchr/testify/require" ) func TestIsRoot(t *testing.T) { - t.Run("windows - linux", func(t *testing.T) { - isRoot, err := checkCurrentUserRoot() - if osutils.IsWindows() || osutils.IsLinux() { - require.Nil(t, err) - require.NotNil(t, isRoot) - } - }) + isRoot, err := checkCurrentUserRoot() + require.Nil(t, err) + require.NotNil(t, isRoot) }