osq-exts/tables/ima/measurements_linux.go (46 lines of code) (raw):

package ima import ( "context" "github.com/osquery/osquery-go/plugin/table" "strings" ) const ( _PCR = "PCR" _IMA_HASH = "IMA_HASH" _TEMPLATE = "Template" _HASH_TYPE = "HashType" _HASH_VALUE = "FileHash" _FILENAME = "FileName" _IMA_SIG = "IMASignature" _MEASUREMENT_BASEPATH = "/sys/kernel/security/ima/" _ASCII_RM = "ascii_runtime_measurements" ) func (m *Measurements) osCompat() error { return nil } func (m *Measurements) osColumns() []table.ColumnDefinition { return []table.ColumnDefinition{ table.BigIntColumn(_PCR), table.TextColumn(_IMA_HASH), table.TextColumn(_TEMPLATE), table.TextColumn(_HASH_TYPE), table.TextColumn(_HASH_VALUE), table.TextColumn(_FILENAME), } } func (m *Measurements) osGenerate(ctx context.Context, queryContext table.QueryContext) (ret []map[string]string, err error) { ascii_runtime_measurements := readFile(_MEASUREMENT_BASEPATH, _ASCII_RM) for _, line := range strings.Split(strings.TrimSuffix(ascii_runtime_measurements, "\n"), "\n") { elem := strings.Split(line, " ") current := map[string]string{ _PCR: elem[0], _IMA_HASH: elem[1], _TEMPLATE: elem[2], _HASH_TYPE: strings.Split(elem[3], ":")[0], _HASH_VALUE: strings.Split(elem[3], ":")[1], _FILENAME: elem[4], } ret = append(ret, current) } return }