Skip to content

Commit

Permalink
Merge pull request #5 from TheBestLL/master
Browse files Browse the repository at this point in the history
替换掉local_users表;获取passwordLastSet字段
  • Loading branch information
dean2021 authored Oct 28, 2024
2 parents 3822d8a + b1aaabb commit 465875d
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 115 deletions.
65 changes: 0 additions & 65 deletions extend/tables/system/local_users_windows.go

This file was deleted.

39 changes: 35 additions & 4 deletions extend/tables/system/users_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
package system

import (
"bytes"
"fmt"
"os/exec"
"strings"

"github.com/dean2021/sysql/misc/windows"
"github.com/dean2021/sysql/table"
"github.com/yusufpapurcu/wmi"
)
Expand All @@ -27,14 +33,38 @@ type Win32UserAccount struct {
Status string `json:"status"`
}

func getWin32UserAccount() ([]Win32UserAccount, error) {
var s []Win32UserAccount
err := wmi.Query("SELECT * FROM Win32_UserAccount WHERE LocalAccount=True", &s)
type NewWin32UserAccount struct {
Win32UserAccount `json:",inline"`
PasswordLastSet string `json:"passwordLastSet"`
}

func getWin32UserAccount() ([]NewWin32UserAccount, error) {
var accounts []Win32UserAccount
err := wmi.Query("SELECT * FROM Win32_UserAccount WHERE LocalAccount=True", &accounts)
if err != nil {
return nil, err
}
return s, nil
var results []NewWin32UserAccount
for _, account := range accounts {
results = append(results, NewWin32UserAccount{Win32UserAccount: account, PasswordLastSet: passwordLastSet(account.Name)})
}
return results, nil
}

func passwordLastSet(name string) string {
c := exec.Command("cmd", "/C", fmt.Sprintf("net user %s | findstr 上次设置密码", name))
data, err := c.CombinedOutput()
if err != nil {
return ""
}
data, err = windows.DecodeUTF16(data)
if err != nil {
return ""
}
data = bytes.TrimPrefix(data, []byte("上次设置密码"))
return strings.TrimSpace(string(data))
}

func GenUsers(context *table.QueryContext) (table.TableRows, error) {
var results table.TableRows
accounts, err := getWin32UserAccount()
Expand All @@ -59,6 +89,7 @@ func GenUsers(context *table.QueryContext) (table.TableRows, error) {
"sid": a.SID,
"sidType": a.SIDType,
"status": a.Status,
"passwordLastSet": a.PasswordLastSet,
})
}
return results, nil
Expand Down
1 change: 1 addition & 0 deletions extend/tables/users_table_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func (p *UsersTable) Columns() table.TableColumns {
{Name: "passwordRequired", Type: table.INTEGER_TYPE, Options: table.DEFAULT}, // Assuming boolean is represented as integer
{Name: "sidType", Type: table.INTEGER_TYPE, Options: table.DEFAULT},
{Name: "status", Type: table.TEXT_TYPE, Options: table.DEFAULT},
{Name: "passwordLastSet", Type: table.TEXT_TYPE, Options: table.DEFAULT},
}
}

Expand Down
46 changes: 0 additions & 46 deletions extend/tables/windows_local_user_table.go

This file was deleted.

0 comments on commit 465875d

Please sign in to comment.