Skip to content

Instantly share code, notes, and snippets.

@henkman
Created July 21, 2016 17:33
Show Gist options
  • Select an option

  • Save henkman/d933a1d2a70cdcd272b558b405cf43c9 to your computer and use it in GitHub Desktop.

Select an option

Save henkman/d933a1d2a70cdcd272b558b405cf43c9 to your computer and use it in GitHub Desktop.
extract files from android backup
package main
import (
"compress/zlib"
"flag"
"io"
"log"
"os"
)
var (
_ab string
_tar string
)
func init() {
flag.StringVar(&_ab, "ab", "", "ab file")
flag.StringVar(&_tar, "tar", "", "tar file")
flag.Parse()
}
func main() {
if _ab == "" || _tar == "" {
flag.Usage()
return
}
in, err := os.Open(_ab)
if err != nil {
log.Fatal(err)
}
defer in.Close()
out, err := os.OpenFile(_tar, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0750)
if err != nil {
log.Fatal(err)
}
defer out.Close()
const BACKUP_HEADER_LENGTH = 24
if _, err := in.Seek(BACKUP_HEADER_LENGTH, os.SEEK_SET); err != nil {
log.Fatal(err)
}
gzin, err := zlib.NewReader(in)
if err != nil {
log.Fatal(err)
}
if _, err := io.Copy(out, gzin); err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment