123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package main
- import (
- "crypto/sha256"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "runtime"
- flag "github.com/spf13/pflag"
- )
- var driveLetter string
- var report string
- func init() {
- flag.StringVarP(&report, "report", "r", "", "json formatted report file.")
- }
- func main() {
- log.Println("starting GoHash")
- flag.Parse()
- index := make(map[string][]string)
- data, err := ioutil.ReadFile(report)
- if err != nil {
- fmt.Print(err)
- }
- err = json.Unmarshal(data, &index)
- if err != nil {
- fmt.Print(err)
- }
- log.Printf("found %d entries to check.", len(index))
- myFolder := flag.Arg(0)
- file, err := os.Stat(myFolder)
- if os.IsNotExist(err) {
- log.Fatalln("File does not exists:", myFolder)
- }
- if file.IsDir() {
- log.Println("start with folder:", myFolder)
- driveLetter = ""
- if runtime.GOOS == "windows" {
- driveLetter = filepath.VolumeName(myFolder) + "/"
- }
- log.Printf("driveletter: %s", driveLetter)
- doSomething()
- } else {
- log.Printf("file %s has hash %s\n", myFolder, getSha256Hash(myFolder))
- }
- log.Println("done")
- }
- func doSomething() {
- }
- func getSha256Hash(fileStr string) string {
- f, err := os.Open(fileStr)
- if err != nil {
- log.Fatal(err)
- }
- defer f.Close()
- h := sha256.New()
- if _, err := io.Copy(h, f); err != nil {
- log.Fatal(err)
- }
- return hex.EncodeToString(h.Sum(nil))
- }
|