saracen/zipextra

GitHub: saracen/zipextra

zipextra 是一个用于编码和解码 ZIP 归档格式「Extra Fields」的 Go 库,支持 NTFS、Unicode Comment 和 Unix 等扩展字段。

Stars: 7 | Forks: 1

# zipextra [![](https://godoc.org/github.com/saracen/zipextra?status.svg)](http://godoc.org/github.com/saracen/zipextra) `zipextra` 是一个用于编码和解码 ZIP 归档格式“Extra Fields”的库。 欢迎贡献代码。 ## 支持的字段 | 标识符 | 名称 | | ---------- | --------------------------- | | `0x000a` | NTFS | | `0x6375` | Info-ZIP's Unicode Comment | | `0x7875` | Info-ZIP's New Unix | ### 示例 ``` func ExampleZipExtra() { // create temporary file w, err := ioutil.TempFile("", "zipextra-example") if err != nil { panic(err) } // create new zip writer zw := zip.NewWriter(w) // create a new zip file header fh := &zip.FileHeader{Name: "test_file.txt"} // add some extra fields fh.Extra = append(fh.Extra, zipextra.NewInfoZIPNewUnix(big.NewInt(1000), big.NewInt(1000)).Encode()...) fh.Extra = append(fh.Extra, zipextra.NewInfoZIPUnicodeComment("Hello, 世界").Encode()...) // create the file fw, err := zw.CreateHeader(fh) if err != nil { panic(err) } fw.Write([]byte("foobar")) zw.Close() // open the newly created zip zr, err := zip.OpenReader(w.Name()) if err != nil { panic(err) } defer zr.Close() // parse extra fields fields, err := zipextra.Parse(zr.File[0].Extra) if err != nil { panic(err) } // print extra field information for id, field := range fields { switch id { case zipextra.ExtraFieldUnixN: unix, _ := field.InfoZIPNewUnix() fmt.Printf("UID: %d, GID: %d\n", unix.Uid, unix.Gid) case zipextra.ExtraFieldUCom: ucom, _ := field.InfoZIPUnicodeComment() fmt.Printf("Comment: %s\n", ucom.Comment) } } // Output: // UID: 1000, GID: 1000 // Comment: Hello, 世界 } ```
标签:EVTX分析, 日志审计