2017-06-23 3 views
1

中にエラーが発生しました私は、Windows 10上で移動中に書かれたこのプログラムをコンパイルしようとしているが、私はこれらのエラーを取得:囲碁言語:コンパイル

warpwallet_cracker.go:12:2: cannot find package "github.com/vsergeev/btckeygenie/btckey" in any of: 
     C:\Go\src\github.com\vsergeev\btckeygenie\btckey (from $GOROOT) 
     C:\Users\user\go\src\github.com\vsergeev\btckeygenie\btckey (from $GOPATH) 
warpwallet_cracker.go:4:5: cannot find package "golang.org/x/crypto/pbkdf2" in any of: 
     C:\Go\src\golang.org\x\crypto\pbkdf2 (from $GOROOT) 
     C:\Users\user\go\src\golang.org\x\crypto\pbkdf2 (from $GOPATH) 
warpwallet_cracker.go:5:2: cannot find package "golang.org/x/crypto/scrypt" in any of: 
     C:\Go\src\golang.org\x\crypto\scrypt (from $GOROOT) 
     C:\Users\user\go\src\golang.org\x\crypto\scrypt (from $GOPATH) 

のGithub:

https://github.com/nachowski/warpwallet_cracker

ここでコードがあります

package main 

import (
    "golang.org/x/crypto/pbkdf2" 
    "golang.org/x/crypto/scrypt" 
    "bytes" 
    "crypto/sha256" 
    "fmt" 
    "time" 
    "os" 
    "math/rand" 
    "github.com/vsergeev/btckeygenie/btckey" 
) 

const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 
func random(r *rand.Rand, n int) string { 
    b := make([]byte, n) 
    for i := range b { 
     b[i] = letterBytes[r.Intn(62)] 
    } 

    return string(b) 
} 

func main() { 
    r := rand.New(rand.NewSource(time.Now().Unix())) 

    var address string 
    saltValue := "" 

    if len(os.Args) >= 2 { 
     address = os.Args[1] 
     if len(os.Args) == 3 { 
      saltValue = os.Args[2] 
     } else { 
      saltValue = ""; 
     } 
    } else { 
     fmt.Printf("Usage: %s [Address] [Salt - optional]\n\n", os.Args[0]) 
     os.Exit(0) 
    } 

    fmt.Printf("Using address \"%s\" and salt \"%s\"\n", address, saltValue) 

    tries := 0 
    start := time.Now() 
    for { 
     passphraseValue := random(r, 8) 
     result := bruteforce(passphraseValue, saltValue, address); 
     if result != "" { 
      fmt.Printf("Found! Passphrase %s\n", passphraseValue) 
      os.Exit(0) 
     } else { 
      tries += 1 
      fmt.Printf("\rTried %d passphrases in %s [last passphrase: %s]", tries, time.Since(start), passphraseValue) 
     } 
    } 
} 

func bruteforce(passphraseValue string, saltValue string, address string) string { 
    var priv btckey.PrivateKey 
    var err error 

    pass := fmt.Sprint(passphraseValue, "\x01") 
    salt := fmt.Sprint(saltValue, "\x01") 
    key, _ := scrypt.Key([]byte(pass), []byte(salt), 262144, 8, 1, 32) 
    pass = fmt.Sprint(passphraseValue, "\x02") 
    salt = fmt.Sprint(saltValue, "\x02") 
    key2 := pbkdf2.Key([]byte(pass), []byte(salt), 65536, 32, sha256.New) 

    var result bytes.Buffer 
    for i := 0; i < len(key); i++ { 
     result.WriteByte(key[i]^key2[i]) 
    } 

    err = priv.FromBytes(result.Bytes()) 
    if err != nil { 
     fmt.Printf("Error importing private key: %s [%s]\n", err, passphraseValue) 
     return "" 
    } 

    address_uncompressed := priv.ToAddressUncompressed() 

    if (address_uncompressed == address) { 
     return passphraseValue 
    } 

    return "" 
} 

問題が何であるか分かりません。だれでも助けてくれますか?

+0

ここにすべての関連コードを直接掲載してください。コードにリンクしないでください。 – Carcigenicate

+2

すべての依存関係を取得するには 'get get。/ ...'を実行します。 – Adrian

答えて

2

"go get"コマンドを使用して依存関係をインストールする必要があります。

エラーメッセージに記載されているように、依存関係はインストールされていません。 エラーメッセージをもう少し見てみると、3つの異なるエラーが発生しています。 go標準ライブラリの一部ではないパッケージごとに1つ。

go標準ライブラリに含まれていないパッケージをインポートしようとすると、goコンパイラは$ GOROOTパスと$ GOPATHパスの下を見て、インポートしようとした名前と一致するパッケージを探します。見つからなければ、コンパイラは上記のエラーをスローします。 @Adrianが言ったように、次のコマンドを実行します。

go get ./...

は自動的に依存関係のすべてをダウンロードします。

関連する問題