使用golang解压密码zip
Unzip password zip using golang
我正在尝试用 golang 解压一个 zip 文件(带密码)。
r, err := zip.OpenReader("./path/to/the.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if f.IsEncrypted() {
f.SetPassword("?Lu{5nKbXxncjdH/_B)+}C`")
}
r, err := f.Open()
if err != nil {
log.Fatal(err)
}
buf, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
defer r.Close()
fmt.Printf("Size of %v: %v byte(s)\n", f.Name, len(buf))
}
此时我正在使用存储库 https://github.com/yeka/zip 我得到以下输出:
Size of cmxxxgapi/: 0 byte(s)
Size of cmxpi/vxxxxxxxx.yml: 326 byte(s)
Size of cmxxxpi/valxxxxxxe.yml: 379 byte(s)
Size of validations_javxxxo_mxxxxxxxon.yml: 722 byte(s)
Size of validations_xxx_mxxxxxxxxo.yml: 4322 byte(s)
Size of validations_xxxxse.yml: 65 byte(s)
如何解压缩所有这些文件并从我的二进制文件中访问它们。
非常感谢。
Ps。我不能使用 exec.
我终于设法解压了 zip 的内容。我没有正确获取所有文件,因为它没有直接区分文件路径。
我是通过以下方式解决的:
r, err := zip.OpenReader("./path/to/the.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if f.IsEncrypted() {
f.SetPassword("?ksdfkjsdKJHJKjdH/_B)+}C`")
}
r, err := f.Open()
if err != nil {
log.Fatal(err)
}
buf, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
defer r.Close()
if f.FileInfo().IsDir() {
// Make Folder
os.MkdirAll(fpath, os.ModePerm)
} else {
ioutil.WriteFile("./sentinel/validations/"+f.Name, buf ,os.ModePerm)
}
}
我正在尝试用 golang 解压一个 zip 文件(带密码)。
r, err := zip.OpenReader("./path/to/the.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if f.IsEncrypted() {
f.SetPassword("?Lu{5nKbXxncjdH/_B)+}C`")
}
r, err := f.Open()
if err != nil {
log.Fatal(err)
}
buf, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
defer r.Close()
fmt.Printf("Size of %v: %v byte(s)\n", f.Name, len(buf))
}
此时我正在使用存储库 https://github.com/yeka/zip 我得到以下输出:
Size of cmxxxgapi/: 0 byte(s)
Size of cmxpi/vxxxxxxxx.yml: 326 byte(s)
Size of cmxxxpi/valxxxxxxe.yml: 379 byte(s)
Size of validations_javxxxo_mxxxxxxxon.yml: 722 byte(s)
Size of validations_xxx_mxxxxxxxxo.yml: 4322 byte(s)
Size of validations_xxxxse.yml: 65 byte(s)
如何解压缩所有这些文件并从我的二进制文件中访问它们。
非常感谢。
Ps。我不能使用 exec.
我终于设法解压了 zip 的内容。我没有正确获取所有文件,因为它没有直接区分文件路径。
我是通过以下方式解决的:
r, err := zip.OpenReader("./path/to/the.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if f.IsEncrypted() {
f.SetPassword("?ksdfkjsdKJHJKjdH/_B)+}C`")
}
r, err := f.Open()
if err != nil {
log.Fatal(err)
}
buf, err := ioutil.ReadAll(r)
if err != nil {
log.Fatal(err)
}
defer r.Close()
if f.FileInfo().IsDir() {
// Make Folder
os.MkdirAll(fpath, os.ModePerm)
} else {
ioutil.WriteFile("./sentinel/validations/"+f.Name, buf ,os.ModePerm)
}
}