├── LICENSE.txt ├── README.md ├── cmd └── extract │ └── main.go ├── go.mod ├── go.sum ├── internal └── mnemonic.go └── release.sh /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2023 Jack Wilsdon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Seedvault backup extractor 2 | A tool for extracting [Seedvault](https://github.com/seedvault-app/seedvault) backups. 3 | 4 | **Note**: this tool only supports v1 backups. Use [tlambertz/seedvault_backup_parser](https://github.com/tlambertz/seedvault_backup_parser) for v0 backups. 5 | 6 | ## Usage 7 | Download the latest version for your platform from the [releases](https://github.com/jackwilsdon/seedvault-extractor/releases) page and run it: 8 | 9 | ```Text 10 | $ ./seedvault-extractor path-to-your-backup "your mnemonic here" 11 | ``` 12 | 13 | Note that you need to provide the path to a specific backup, not to the backups directory. For example: 14 | 15 | ```Text 16 | .SeedVaultAndroidBackup 17 | ├╴ 1681333934634 18 | ├╴ 1681333947258 19 | └╴ 3e72aa3b9c869632.sv 20 | ``` 21 | 22 | The above backups directory contains two backups, `1681333934634` and `1681333947258`. They can be extracted like so: 23 | 24 | ```Text 25 | $ ./seedvault-extractor .SeedVaultAndroidBackup/1681333934634 "my mneumonic here" 26 | $ ./seedvault-extractor .SeedVaultAndroidBackup/1681333947258 "my mneumonic here" 27 | ``` 28 | 29 | You can tell if a directory is a backup as it will contain a `.backup.metadata` file. 30 | 31 | A `.tar` for each application in the backup will be extracted to the working directory. 32 | 33 | ## Notes 34 | * Extracting storage backups is currently unsupported. 35 | * KV backups are currently exported in SQLite format. 36 | * This tool has only been tested on Linux. Please [let me know](https://github.com/jackwilsdon/seedvault-extractor/issues/new) how it's working for you on other platforms. 37 | * Additional debug output can be enabled by setting the `DEBUG` environment variable to `1`. Debug output may contain sensitive data! 38 | 39 | ## Building 40 | You can build the extractor by running `go build ./cmd/extract` (with Go 1.21). This will place a compiled `extract` binary in the working directory. 41 | -------------------------------------------------------------------------------- /cmd/extract/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bufio" 5 | "bytes" 6 | "compress/gzip" 7 | "crypto/sha256" 8 | "crypto/sha512" 9 | "encoding/base64" 10 | "encoding/binary" 11 | "encoding/hex" 12 | "encoding/json" 13 | "errors" 14 | "fmt" 15 | "github.com/google/tink/go/streamingaead/subtle" 16 | "github.com/jackwilsdon/seedvault-extractor/internal" 17 | "golang.org/x/crypto/hkdf" 18 | "golang.org/x/crypto/pbkdf2" 19 | "io" 20 | "os" 21 | "path/filepath" 22 | "strconv" 23 | "strings" 24 | ) 25 | 26 | const ( 27 | typeKVBackup = 1 28 | typeFullBackup = 2 29 | ) 30 | 31 | func main() { 32 | if len(os.Args) != 3 { 33 | _, _ = fmt.Fprintf(os.Stderr, "usage: %s path-to-backup mnemonic\n", filepath.Base(os.Args[0])) 34 | os.Exit(1) 35 | } 36 | 37 | backupPath := os.Args[1] 38 | metadataPath := filepath.Join(backupPath, ".backup.metadata") 39 | _, err := os.Stat(metadataPath) 40 | if errors.Is(err, os.ErrNotExist) { 41 | _, _ = fmt.Fprintln(os.Stderr, "error: not a backup (missing .backup.metadata)") 42 | os.Exit(1) 43 | } else if err != nil { 44 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to stat %q: %s\n", metadataPath, err) 45 | os.Exit(1) 46 | } 47 | 48 | metadataFile, err := os.Open(metadataPath) 49 | if err != nil { 50 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to open %q: %s\n", metadataPath, err) 51 | os.Exit(1) 52 | } 53 | defer func() { 54 | _ = metadataFile.Close() 55 | }() 56 | 57 | metadataReader := bufio.NewReader(metadataFile) 58 | version, err := metadataReader.ReadByte() 59 | if err != nil { 60 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to read version from %q: %s\n", metadataPath, err) 61 | os.Exit(1) 62 | } 63 | if version != 1 { 64 | _, _ = fmt.Fprintf(os.Stderr, "error: unsupported version %d (only version 1 is supported)\n", version) 65 | os.Exit(1) 66 | } 67 | 68 | debug := os.Getenv("DEBUG") == "1" 69 | if debug { 70 | fmt.Printf("version: %d\n", version) 71 | } 72 | 73 | backupName := filepath.Base(backupPath) 74 | token, err := strconv.ParseUint(backupName, 10, 64) 75 | if err != nil { 76 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to parse backup name %q: %s\n", backupName, err) 77 | os.Exit(1) 78 | } 79 | 80 | if debug { 81 | fmt.Printf("token: %d\n", token) 82 | } 83 | 84 | seed, err := mnemonicToSeed(os.Args[2]) 85 | if err != nil { 86 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to read seed from mnemonic: %s\n", err) 87 | os.Exit(1) 88 | } 89 | if debug { 90 | fmt.Printf("seed: %s\n", hex.EncodeToString(seed)) 91 | } 92 | 93 | key := hkdfExpand(seed[32:], []byte("app data key"), 32) 94 | if debug { 95 | fmt.Printf("key: %s\n", hex.EncodeToString(key)) 96 | } 97 | 98 | associatedData := make([]byte, 10) 99 | associatedData[0] = version 100 | binary.BigEndian.PutUint64(associatedData[2:], token) 101 | metadataBytes, err := decrypt(metadataReader, key, associatedData) 102 | if err != nil { 103 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to decrypt metadata: %s\n", err) 104 | os.Exit(1) 105 | } 106 | if debug { 107 | fmt.Printf("metadata: %s\n", string(metadataBytes)) 108 | } 109 | 110 | var metadataMap map[string]json.RawMessage 111 | if err := json.Unmarshal(metadataBytes, &metadataMap); err != nil { 112 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to unmarshal metadata: %s\n", err) 113 | os.Exit(1) 114 | } 115 | 116 | metadataMetaBytes, ok := metadataMap["@meta@"] 117 | if !ok { 118 | _, _ = fmt.Fprintf(os.Stderr, "error: missing @meta@ key\n") 119 | os.Exit(1) 120 | } 121 | var metadataMeta struct { 122 | Version byte `json:"version"` 123 | Salt string `json:"salt"` 124 | } 125 | if err := json.Unmarshal(metadataMetaBytes, &metadataMeta); err != nil { 126 | _, _ = fmt.Fprintf(os.Stderr, "error: failed to unmarshal @meta@: %s\n", err) 127 | os.Exit(1) 128 | } 129 | if metadataMeta.Version != version { 130 | _, _ = fmt.Fprintf(os.Stderr, "error: @meta@ version %d does not match metadata file version %d\n", metadataMeta.Version, version) 131 | os.Exit(1) 132 | } 133 | 134 | for packageName, packageMetaBytes := range metadataMap { 135 | if packageName == "@meta@" { 136 | continue 137 | } 138 | if packageName == "@end@" { 139 | continue 140 | } 141 | 142 | err = func() error { 143 | var packageMeta struct { 144 | BackupType string `json:"backupType"` 145 | State string `json:"state"` 146 | } 147 | if err := json.Unmarshal(packageMetaBytes, &packageMeta); err != nil { 148 | return fmt.Errorf("failed to unmarshal metadata: %w", err) 149 | } 150 | if packageMeta.State != "" { 151 | fmt.Printf("skipping %q (unsupported state %q)\n", packageName, packageMeta.State) 152 | return nil 153 | } 154 | if packageMeta.BackupType != "KV" && packageMeta.BackupType != "FULL" { 155 | fmt.Printf("skipping %q (unsupported backup type %q)\n", packageName, packageMeta.BackupType) 156 | return nil 157 | } 158 | 159 | h := sha256.Sum256([]byte(metadataMeta.Salt + packageName)) 160 | packagePath := filepath.Join(backupPath, base64.RawURLEncoding.EncodeToString(h[:])) 161 | packageFile, err := os.Open(packagePath) 162 | if err != nil { 163 | return fmt.Errorf("failed to open %q: %w", packagePath, err) 164 | } 165 | defer func() { 166 | _ = packageFile.Close() 167 | }() 168 | 169 | packageReader := bufio.NewReader(packageFile) 170 | packageVersion, err := packageReader.ReadByte() 171 | if err != nil { 172 | return fmt.Errorf("failed to read version from %q: %w", packagePath, err) 173 | } 174 | if packageVersion != version { 175 | return fmt.Errorf("%q version %d does not match metadata file version %d", packagePath, packageVersion, version) 176 | } 177 | 178 | var type_ byte 179 | if packageMeta.BackupType == "KV" { 180 | type_ = typeKVBackup 181 | } else { 182 | type_ = typeFullBackup 183 | } 184 | 185 | packageBytes, err := decrypt(packageReader, key, getAdditionalData(version, type_, packageName)) 186 | if err != nil { 187 | return fmt.Errorf("failed to decrypt %q: %w", packagePath, err) 188 | } 189 | 190 | var ext string 191 | if packageMeta.BackupType == "KV" { 192 | r, err := gzip.NewReader(bytes.NewReader(packageBytes)) 193 | if err != nil { 194 | return fmt.Errorf("failed to decompress %q: %w", packagePath, err) 195 | } 196 | if packageBytes, err = io.ReadAll(r); err != nil { 197 | return fmt.Errorf("failed to decompress %q: %w", packagePath, err) 198 | } 199 | ext = ".sqlite" 200 | } else { 201 | ext = ".tar" 202 | } 203 | 204 | outPath := packageName + ext 205 | if err := os.WriteFile(outPath, packageBytes, 0777); err != nil { 206 | return fmt.Errorf("failed to write %q: %w", outPath, err) 207 | } 208 | fmt.Println(outPath) 209 | return nil 210 | }() 211 | if err != nil { 212 | _, _ = fmt.Fprintf(os.Stderr, "warning: failed to extract %q: %s\n", packageName, err) 213 | } 214 | } 215 | } 216 | 217 | func mnemonicToSeed(mnemonic string) ([]byte, error) { 218 | phrases := strings.Split(mnemonic, " ") 219 | 220 | if len(phrases) != 12 { 221 | return nil, fmt.Errorf("12 mnemonics needed, yet %d given", len(phrases)) 222 | } 223 | 224 | for _, phrase := range phrases { 225 | if _, ok := internal.Bip39Words[phrase]; !ok { 226 | return nil, fmt.Errorf("invalid mnemonic given (case-sensitive): %s", phrase) 227 | } 228 | } 229 | 230 | return pbkdf2.Key([]byte(mnemonic), []byte("mnemonic"), 2048, 64, sha512.New), nil 231 | } 232 | 233 | func hkdfExpand(secretKey, info []byte, outLengthBytes int64) []byte { 234 | r := hkdf.Expand(sha256.New, secretKey, info) 235 | k := make([]byte, outLengthBytes) 236 | if _, err := io.ReadFull(r, k); err != nil { 237 | panic("failed to read HKDF: " + err.Error()) 238 | } 239 | return k 240 | } 241 | 242 | func getAdditionalData(version byte, type_ byte, packageName string) []byte { 243 | ad := make([]byte, 2+len(packageName)) 244 | ad[0] = version 245 | ad[1] = type_ 246 | copy(ad[2:], packageName) 247 | return ad 248 | } 249 | 250 | func decrypt(r *bufio.Reader, key []byte, associatedData []byte) ([]byte, error) { 251 | a, err := subtle.NewAESGCMHKDF(key, "SHA256", 32, 1<<20, 0) 252 | if err != nil { 253 | return nil, fmt.Errorf("failed to create AESGCMHKDF: %w", err) 254 | } 255 | dr, err := a.NewDecryptingReader(r, associatedData) 256 | if err != nil { 257 | return nil, fmt.Errorf("failed to create decrypting reader: %w", err) 258 | } 259 | data, err := io.ReadAll(dr) 260 | if err != nil { 261 | return nil, fmt.Errorf("failed to read decrypted data: %w", err) 262 | } 263 | return data, nil 264 | } 265 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/jackwilsdon/seedvault-extractor 2 | 3 | go 1.21 4 | 5 | require ( 6 | github.com/google/tink/go v1.7.0 7 | golang.org/x/crypto v0.8.0 8 | ) 9 | 10 | require golang.org/x/sys v0.7.0 // indirect 11 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/google/tink/go v1.7.0 h1:6Eox8zONGebBFcCBqkVmt60LaWZa6xg1cl/DwAh/J1w= 2 | github.com/google/tink/go v1.7.0/go.mod h1:GAUOd+QE3pgj9q8VKIGTCP33c/B7eb4NhxLcgTJZStM= 3 | golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= 4 | golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= 5 | golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= 6 | golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 7 | google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= 8 | -------------------------------------------------------------------------------- /internal/mnemonic.go: -------------------------------------------------------------------------------- 1 | package internal 2 | 3 | import ( 4 | "strings" 5 | ) 6 | 7 | var Bip39Words map[string]any 8 | 9 | func init() { 10 | Bip39Words = make(map[string]any) 11 | for _, phrase := range strings.Split(bip39, "\n") { 12 | Bip39Words[phrase] = struct{}{} 13 | } 14 | } 15 | 16 | // bip39 is taken from https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt 17 | var bip39 = `abandon 18 | ability 19 | able 20 | about 21 | above 22 | absent 23 | absorb 24 | abstract 25 | absurd 26 | abuse 27 | access 28 | accident 29 | account 30 | accuse 31 | achieve 32 | acid 33 | acoustic 34 | acquire 35 | across 36 | act 37 | action 38 | actor 39 | actress 40 | actual 41 | adapt 42 | add 43 | addict 44 | address 45 | adjust 46 | admit 47 | adult 48 | advance 49 | advice 50 | aerobic 51 | affair 52 | afford 53 | afraid 54 | again 55 | age 56 | agent 57 | agree 58 | ahead 59 | aim 60 | air 61 | airport 62 | aisle 63 | alarm 64 | album 65 | alcohol 66 | alert 67 | alien 68 | all 69 | alley 70 | allow 71 | almost 72 | alone 73 | alpha 74 | already 75 | also 76 | alter 77 | always 78 | amateur 79 | amazing 80 | among 81 | amount 82 | amused 83 | analyst 84 | anchor 85 | ancient 86 | anger 87 | angle 88 | angry 89 | animal 90 | ankle 91 | announce 92 | annual 93 | another 94 | answer 95 | antenna 96 | antique 97 | anxiety 98 | any 99 | apart 100 | apology 101 | appear 102 | apple 103 | approve 104 | april 105 | arch 106 | arctic 107 | area 108 | arena 109 | argue 110 | arm 111 | armed 112 | armor 113 | army 114 | around 115 | arrange 116 | arrest 117 | arrive 118 | arrow 119 | art 120 | artefact 121 | artist 122 | artwork 123 | ask 124 | aspect 125 | assault 126 | asset 127 | assist 128 | assume 129 | asthma 130 | athlete 131 | atom 132 | attack 133 | attend 134 | attitude 135 | attract 136 | auction 137 | audit 138 | august 139 | aunt 140 | author 141 | auto 142 | autumn 143 | average 144 | avocado 145 | avoid 146 | awake 147 | aware 148 | away 149 | awesome 150 | awful 151 | awkward 152 | axis 153 | baby 154 | bachelor 155 | bacon 156 | badge 157 | bag 158 | balance 159 | balcony 160 | ball 161 | bamboo 162 | banana 163 | banner 164 | bar 165 | barely 166 | bargain 167 | barrel 168 | base 169 | basic 170 | basket 171 | battle 172 | beach 173 | bean 174 | beauty 175 | because 176 | become 177 | beef 178 | before 179 | begin 180 | behave 181 | behind 182 | believe 183 | below 184 | belt 185 | bench 186 | benefit 187 | best 188 | betray 189 | better 190 | between 191 | beyond 192 | bicycle 193 | bid 194 | bike 195 | bind 196 | biology 197 | bird 198 | birth 199 | bitter 200 | black 201 | blade 202 | blame 203 | blanket 204 | blast 205 | bleak 206 | bless 207 | blind 208 | blood 209 | blossom 210 | blouse 211 | blue 212 | blur 213 | blush 214 | board 215 | boat 216 | body 217 | boil 218 | bomb 219 | bone 220 | bonus 221 | book 222 | boost 223 | border 224 | boring 225 | borrow 226 | boss 227 | bottom 228 | bounce 229 | box 230 | boy 231 | bracket 232 | brain 233 | brand 234 | brass 235 | brave 236 | bread 237 | breeze 238 | brick 239 | bridge 240 | brief 241 | bright 242 | bring 243 | brisk 244 | broccoli 245 | broken 246 | bronze 247 | broom 248 | brother 249 | brown 250 | brush 251 | bubble 252 | buddy 253 | budget 254 | buffalo 255 | build 256 | bulb 257 | bulk 258 | bullet 259 | bundle 260 | bunker 261 | burden 262 | burger 263 | burst 264 | bus 265 | business 266 | busy 267 | butter 268 | buyer 269 | buzz 270 | cabbage 271 | cabin 272 | cable 273 | cactus 274 | cage 275 | cake 276 | call 277 | calm 278 | camera 279 | camp 280 | can 281 | canal 282 | cancel 283 | candy 284 | cannon 285 | canoe 286 | canvas 287 | canyon 288 | capable 289 | capital 290 | captain 291 | car 292 | carbon 293 | card 294 | cargo 295 | carpet 296 | carry 297 | cart 298 | case 299 | cash 300 | casino 301 | castle 302 | casual 303 | cat 304 | catalog 305 | catch 306 | category 307 | cattle 308 | caught 309 | cause 310 | caution 311 | cave 312 | ceiling 313 | celery 314 | cement 315 | census 316 | century 317 | cereal 318 | certain 319 | chair 320 | chalk 321 | champion 322 | change 323 | chaos 324 | chapter 325 | charge 326 | chase 327 | chat 328 | cheap 329 | check 330 | cheese 331 | chef 332 | cherry 333 | chest 334 | chicken 335 | chief 336 | child 337 | chimney 338 | choice 339 | choose 340 | chronic 341 | chuckle 342 | chunk 343 | churn 344 | cigar 345 | cinnamon 346 | circle 347 | citizen 348 | city 349 | civil 350 | claim 351 | clap 352 | clarify 353 | claw 354 | clay 355 | clean 356 | clerk 357 | clever 358 | click 359 | client 360 | cliff 361 | climb 362 | clinic 363 | clip 364 | clock 365 | clog 366 | close 367 | cloth 368 | cloud 369 | clown 370 | club 371 | clump 372 | cluster 373 | clutch 374 | coach 375 | coast 376 | coconut 377 | code 378 | coffee 379 | coil 380 | coin 381 | collect 382 | color 383 | column 384 | combine 385 | come 386 | comfort 387 | comic 388 | common 389 | company 390 | concert 391 | conduct 392 | confirm 393 | congress 394 | connect 395 | consider 396 | control 397 | convince 398 | cook 399 | cool 400 | copper 401 | copy 402 | coral 403 | core 404 | corn 405 | correct 406 | cost 407 | cotton 408 | couch 409 | country 410 | couple 411 | course 412 | cousin 413 | cover 414 | coyote 415 | crack 416 | cradle 417 | craft 418 | cram 419 | crane 420 | crash 421 | crater 422 | crawl 423 | crazy 424 | cream 425 | credit 426 | creek 427 | crew 428 | cricket 429 | crime 430 | crisp 431 | critic 432 | crop 433 | cross 434 | crouch 435 | crowd 436 | crucial 437 | cruel 438 | cruise 439 | crumble 440 | crunch 441 | crush 442 | cry 443 | crystal 444 | cube 445 | culture 446 | cup 447 | cupboard 448 | curious 449 | current 450 | curtain 451 | curve 452 | cushion 453 | custom 454 | cute 455 | cycle 456 | dad 457 | damage 458 | damp 459 | dance 460 | danger 461 | daring 462 | dash 463 | daughter 464 | dawn 465 | day 466 | deal 467 | debate 468 | debris 469 | decade 470 | december 471 | decide 472 | decline 473 | decorate 474 | decrease 475 | deer 476 | defense 477 | define 478 | defy 479 | degree 480 | delay 481 | deliver 482 | demand 483 | demise 484 | denial 485 | dentist 486 | deny 487 | depart 488 | depend 489 | deposit 490 | depth 491 | deputy 492 | derive 493 | describe 494 | desert 495 | design 496 | desk 497 | despair 498 | destroy 499 | detail 500 | detect 501 | develop 502 | device 503 | devote 504 | diagram 505 | dial 506 | diamond 507 | diary 508 | dice 509 | diesel 510 | diet 511 | differ 512 | digital 513 | dignity 514 | dilemma 515 | dinner 516 | dinosaur 517 | direct 518 | dirt 519 | disagree 520 | discover 521 | disease 522 | dish 523 | dismiss 524 | disorder 525 | display 526 | distance 527 | divert 528 | divide 529 | divorce 530 | dizzy 531 | doctor 532 | document 533 | dog 534 | doll 535 | dolphin 536 | domain 537 | donate 538 | donkey 539 | donor 540 | door 541 | dose 542 | double 543 | dove 544 | draft 545 | dragon 546 | drama 547 | drastic 548 | draw 549 | dream 550 | dress 551 | drift 552 | drill 553 | drink 554 | drip 555 | drive 556 | drop 557 | drum 558 | dry 559 | duck 560 | dumb 561 | dune 562 | during 563 | dust 564 | dutch 565 | duty 566 | dwarf 567 | dynamic 568 | eager 569 | eagle 570 | early 571 | earn 572 | earth 573 | easily 574 | east 575 | easy 576 | echo 577 | ecology 578 | economy 579 | edge 580 | edit 581 | educate 582 | effort 583 | egg 584 | eight 585 | either 586 | elbow 587 | elder 588 | electric 589 | elegant 590 | element 591 | elephant 592 | elevator 593 | elite 594 | else 595 | embark 596 | embody 597 | embrace 598 | emerge 599 | emotion 600 | employ 601 | empower 602 | empty 603 | enable 604 | enact 605 | end 606 | endless 607 | endorse 608 | enemy 609 | energy 610 | enforce 611 | engage 612 | engine 613 | enhance 614 | enjoy 615 | enlist 616 | enough 617 | enrich 618 | enroll 619 | ensure 620 | enter 621 | entire 622 | entry 623 | envelope 624 | episode 625 | equal 626 | equip 627 | era 628 | erase 629 | erode 630 | erosion 631 | error 632 | erupt 633 | escape 634 | essay 635 | essence 636 | estate 637 | eternal 638 | ethics 639 | evidence 640 | evil 641 | evoke 642 | evolve 643 | exact 644 | example 645 | excess 646 | exchange 647 | excite 648 | exclude 649 | excuse 650 | execute 651 | exercise 652 | exhaust 653 | exhibit 654 | exile 655 | exist 656 | exit 657 | exotic 658 | expand 659 | expect 660 | expire 661 | explain 662 | expose 663 | express 664 | extend 665 | extra 666 | eye 667 | eyebrow 668 | fabric 669 | face 670 | faculty 671 | fade 672 | faint 673 | faith 674 | fall 675 | false 676 | fame 677 | family 678 | famous 679 | fan 680 | fancy 681 | fantasy 682 | farm 683 | fashion 684 | fat 685 | fatal 686 | father 687 | fatigue 688 | fault 689 | favorite 690 | feature 691 | february 692 | federal 693 | fee 694 | feed 695 | feel 696 | female 697 | fence 698 | festival 699 | fetch 700 | fever 701 | few 702 | fiber 703 | fiction 704 | field 705 | figure 706 | file 707 | film 708 | filter 709 | final 710 | find 711 | fine 712 | finger 713 | finish 714 | fire 715 | firm 716 | first 717 | fiscal 718 | fish 719 | fit 720 | fitness 721 | fix 722 | flag 723 | flame 724 | flash 725 | flat 726 | flavor 727 | flee 728 | flight 729 | flip 730 | float 731 | flock 732 | floor 733 | flower 734 | fluid 735 | flush 736 | fly 737 | foam 738 | focus 739 | fog 740 | foil 741 | fold 742 | follow 743 | food 744 | foot 745 | force 746 | forest 747 | forget 748 | fork 749 | fortune 750 | forum 751 | forward 752 | fossil 753 | foster 754 | found 755 | fox 756 | fragile 757 | frame 758 | frequent 759 | fresh 760 | friend 761 | fringe 762 | frog 763 | front 764 | frost 765 | frown 766 | frozen 767 | fruit 768 | fuel 769 | fun 770 | funny 771 | furnace 772 | fury 773 | future 774 | gadget 775 | gain 776 | galaxy 777 | gallery 778 | game 779 | gap 780 | garage 781 | garbage 782 | garden 783 | garlic 784 | garment 785 | gas 786 | gasp 787 | gate 788 | gather 789 | gauge 790 | gaze 791 | general 792 | genius 793 | genre 794 | gentle 795 | genuine 796 | gesture 797 | ghost 798 | giant 799 | gift 800 | giggle 801 | ginger 802 | giraffe 803 | girl 804 | give 805 | glad 806 | glance 807 | glare 808 | glass 809 | glide 810 | glimpse 811 | globe 812 | gloom 813 | glory 814 | glove 815 | glow 816 | glue 817 | goat 818 | goddess 819 | gold 820 | good 821 | goose 822 | gorilla 823 | gospel 824 | gossip 825 | govern 826 | gown 827 | grab 828 | grace 829 | grain 830 | grant 831 | grape 832 | grass 833 | gravity 834 | great 835 | green 836 | grid 837 | grief 838 | grit 839 | grocery 840 | group 841 | grow 842 | grunt 843 | guard 844 | guess 845 | guide 846 | guilt 847 | guitar 848 | gun 849 | gym 850 | habit 851 | hair 852 | half 853 | hammer 854 | hamster 855 | hand 856 | happy 857 | harbor 858 | hard 859 | harsh 860 | harvest 861 | hat 862 | have 863 | hawk 864 | hazard 865 | head 866 | health 867 | heart 868 | heavy 869 | hedgehog 870 | height 871 | hello 872 | helmet 873 | help 874 | hen 875 | hero 876 | hidden 877 | high 878 | hill 879 | hint 880 | hip 881 | hire 882 | history 883 | hobby 884 | hockey 885 | hold 886 | hole 887 | holiday 888 | hollow 889 | home 890 | honey 891 | hood 892 | hope 893 | horn 894 | horror 895 | horse 896 | hospital 897 | host 898 | hotel 899 | hour 900 | hover 901 | hub 902 | huge 903 | human 904 | humble 905 | humor 906 | hundred 907 | hungry 908 | hunt 909 | hurdle 910 | hurry 911 | hurt 912 | husband 913 | hybrid 914 | ice 915 | icon 916 | idea 917 | identify 918 | idle 919 | ignore 920 | ill 921 | illegal 922 | illness 923 | image 924 | imitate 925 | immense 926 | immune 927 | impact 928 | impose 929 | improve 930 | impulse 931 | inch 932 | include 933 | income 934 | increase 935 | index 936 | indicate 937 | indoor 938 | industry 939 | infant 940 | inflict 941 | inform 942 | inhale 943 | inherit 944 | initial 945 | inject 946 | injury 947 | inmate 948 | inner 949 | innocent 950 | input 951 | inquiry 952 | insane 953 | insect 954 | inside 955 | inspire 956 | install 957 | intact 958 | interest 959 | into 960 | invest 961 | invite 962 | involve 963 | iron 964 | island 965 | isolate 966 | issue 967 | item 968 | ivory 969 | jacket 970 | jaguar 971 | jar 972 | jazz 973 | jealous 974 | jeans 975 | jelly 976 | jewel 977 | job 978 | join 979 | joke 980 | journey 981 | joy 982 | judge 983 | juice 984 | jump 985 | jungle 986 | junior 987 | junk 988 | just 989 | kangaroo 990 | keen 991 | keep 992 | ketchup 993 | key 994 | kick 995 | kid 996 | kidney 997 | kind 998 | kingdom 999 | kiss 1000 | kit 1001 | kitchen 1002 | kite 1003 | kitten 1004 | kiwi 1005 | knee 1006 | knife 1007 | knock 1008 | know 1009 | lab 1010 | label 1011 | labor 1012 | ladder 1013 | lady 1014 | lake 1015 | lamp 1016 | language 1017 | laptop 1018 | large 1019 | later 1020 | latin 1021 | laugh 1022 | laundry 1023 | lava 1024 | law 1025 | lawn 1026 | lawsuit 1027 | layer 1028 | lazy 1029 | leader 1030 | leaf 1031 | learn 1032 | leave 1033 | lecture 1034 | left 1035 | leg 1036 | legal 1037 | legend 1038 | leisure 1039 | lemon 1040 | lend 1041 | length 1042 | lens 1043 | leopard 1044 | lesson 1045 | letter 1046 | level 1047 | liar 1048 | liberty 1049 | library 1050 | license 1051 | life 1052 | lift 1053 | light 1054 | like 1055 | limb 1056 | limit 1057 | link 1058 | lion 1059 | liquid 1060 | list 1061 | little 1062 | live 1063 | lizard 1064 | load 1065 | loan 1066 | lobster 1067 | local 1068 | lock 1069 | logic 1070 | lonely 1071 | long 1072 | loop 1073 | lottery 1074 | loud 1075 | lounge 1076 | love 1077 | loyal 1078 | lucky 1079 | luggage 1080 | lumber 1081 | lunar 1082 | lunch 1083 | luxury 1084 | lyrics 1085 | machine 1086 | mad 1087 | magic 1088 | magnet 1089 | maid 1090 | mail 1091 | main 1092 | major 1093 | make 1094 | mammal 1095 | man 1096 | manage 1097 | mandate 1098 | mango 1099 | mansion 1100 | manual 1101 | maple 1102 | marble 1103 | march 1104 | margin 1105 | marine 1106 | market 1107 | marriage 1108 | mask 1109 | mass 1110 | master 1111 | match 1112 | material 1113 | math 1114 | matrix 1115 | matter 1116 | maximum 1117 | maze 1118 | meadow 1119 | mean 1120 | measure 1121 | meat 1122 | mechanic 1123 | medal 1124 | media 1125 | melody 1126 | melt 1127 | member 1128 | memory 1129 | mention 1130 | menu 1131 | mercy 1132 | merge 1133 | merit 1134 | merry 1135 | mesh 1136 | message 1137 | metal 1138 | method 1139 | middle 1140 | midnight 1141 | milk 1142 | million 1143 | mimic 1144 | mind 1145 | minimum 1146 | minor 1147 | minute 1148 | miracle 1149 | mirror 1150 | misery 1151 | miss 1152 | mistake 1153 | mix 1154 | mixed 1155 | mixture 1156 | mobile 1157 | model 1158 | modify 1159 | mom 1160 | moment 1161 | monitor 1162 | monkey 1163 | monster 1164 | month 1165 | moon 1166 | moral 1167 | more 1168 | morning 1169 | mosquito 1170 | mother 1171 | motion 1172 | motor 1173 | mountain 1174 | mouse 1175 | move 1176 | movie 1177 | much 1178 | muffin 1179 | mule 1180 | multiply 1181 | muscle 1182 | museum 1183 | mushroom 1184 | music 1185 | must 1186 | mutual 1187 | myself 1188 | mystery 1189 | myth 1190 | naive 1191 | name 1192 | napkin 1193 | narrow 1194 | nasty 1195 | nation 1196 | nature 1197 | near 1198 | neck 1199 | need 1200 | negative 1201 | neglect 1202 | neither 1203 | nephew 1204 | nerve 1205 | nest 1206 | net 1207 | network 1208 | neutral 1209 | never 1210 | news 1211 | next 1212 | nice 1213 | night 1214 | noble 1215 | noise 1216 | nominee 1217 | noodle 1218 | normal 1219 | north 1220 | nose 1221 | notable 1222 | note 1223 | nothing 1224 | notice 1225 | novel 1226 | now 1227 | nuclear 1228 | number 1229 | nurse 1230 | nut 1231 | oak 1232 | obey 1233 | object 1234 | oblige 1235 | obscure 1236 | observe 1237 | obtain 1238 | obvious 1239 | occur 1240 | ocean 1241 | october 1242 | odor 1243 | off 1244 | offer 1245 | office 1246 | often 1247 | oil 1248 | okay 1249 | old 1250 | olive 1251 | olympic 1252 | omit 1253 | once 1254 | one 1255 | onion 1256 | online 1257 | only 1258 | open 1259 | opera 1260 | opinion 1261 | oppose 1262 | option 1263 | orange 1264 | orbit 1265 | orchard 1266 | order 1267 | ordinary 1268 | organ 1269 | orient 1270 | original 1271 | orphan 1272 | ostrich 1273 | other 1274 | outdoor 1275 | outer 1276 | output 1277 | outside 1278 | oval 1279 | oven 1280 | over 1281 | own 1282 | owner 1283 | oxygen 1284 | oyster 1285 | ozone 1286 | pact 1287 | paddle 1288 | page 1289 | pair 1290 | palace 1291 | palm 1292 | panda 1293 | panel 1294 | panic 1295 | panther 1296 | paper 1297 | parade 1298 | parent 1299 | park 1300 | parrot 1301 | party 1302 | pass 1303 | patch 1304 | path 1305 | patient 1306 | patrol 1307 | pattern 1308 | pause 1309 | pave 1310 | payment 1311 | peace 1312 | peanut 1313 | pear 1314 | peasant 1315 | pelican 1316 | pen 1317 | penalty 1318 | pencil 1319 | people 1320 | pepper 1321 | perfect 1322 | permit 1323 | person 1324 | pet 1325 | phone 1326 | photo 1327 | phrase 1328 | physical 1329 | piano 1330 | picnic 1331 | picture 1332 | piece 1333 | pig 1334 | pigeon 1335 | pill 1336 | pilot 1337 | pink 1338 | pioneer 1339 | pipe 1340 | pistol 1341 | pitch 1342 | pizza 1343 | place 1344 | planet 1345 | plastic 1346 | plate 1347 | play 1348 | please 1349 | pledge 1350 | pluck 1351 | plug 1352 | plunge 1353 | poem 1354 | poet 1355 | point 1356 | polar 1357 | pole 1358 | police 1359 | pond 1360 | pony 1361 | pool 1362 | popular 1363 | portion 1364 | position 1365 | possible 1366 | post 1367 | potato 1368 | pottery 1369 | poverty 1370 | powder 1371 | power 1372 | practice 1373 | praise 1374 | predict 1375 | prefer 1376 | prepare 1377 | present 1378 | pretty 1379 | prevent 1380 | price 1381 | pride 1382 | primary 1383 | print 1384 | priority 1385 | prison 1386 | private 1387 | prize 1388 | problem 1389 | process 1390 | produce 1391 | profit 1392 | program 1393 | project 1394 | promote 1395 | proof 1396 | property 1397 | prosper 1398 | protect 1399 | proud 1400 | provide 1401 | public 1402 | pudding 1403 | pull 1404 | pulp 1405 | pulse 1406 | pumpkin 1407 | punch 1408 | pupil 1409 | puppy 1410 | purchase 1411 | purity 1412 | purpose 1413 | purse 1414 | push 1415 | put 1416 | puzzle 1417 | pyramid 1418 | quality 1419 | quantum 1420 | quarter 1421 | question 1422 | quick 1423 | quit 1424 | quiz 1425 | quote 1426 | rabbit 1427 | raccoon 1428 | race 1429 | rack 1430 | radar 1431 | radio 1432 | rail 1433 | rain 1434 | raise 1435 | rally 1436 | ramp 1437 | ranch 1438 | random 1439 | range 1440 | rapid 1441 | rare 1442 | rate 1443 | rather 1444 | raven 1445 | raw 1446 | razor 1447 | ready 1448 | real 1449 | reason 1450 | rebel 1451 | rebuild 1452 | recall 1453 | receive 1454 | recipe 1455 | record 1456 | recycle 1457 | reduce 1458 | reflect 1459 | reform 1460 | refuse 1461 | region 1462 | regret 1463 | regular 1464 | reject 1465 | relax 1466 | release 1467 | relief 1468 | rely 1469 | remain 1470 | remember 1471 | remind 1472 | remove 1473 | render 1474 | renew 1475 | rent 1476 | reopen 1477 | repair 1478 | repeat 1479 | replace 1480 | report 1481 | require 1482 | rescue 1483 | resemble 1484 | resist 1485 | resource 1486 | response 1487 | result 1488 | retire 1489 | retreat 1490 | return 1491 | reunion 1492 | reveal 1493 | review 1494 | reward 1495 | rhythm 1496 | rib 1497 | ribbon 1498 | rice 1499 | rich 1500 | ride 1501 | ridge 1502 | rifle 1503 | right 1504 | rigid 1505 | ring 1506 | riot 1507 | ripple 1508 | risk 1509 | ritual 1510 | rival 1511 | river 1512 | road 1513 | roast 1514 | robot 1515 | robust 1516 | rocket 1517 | romance 1518 | roof 1519 | rookie 1520 | room 1521 | rose 1522 | rotate 1523 | rough 1524 | round 1525 | route 1526 | royal 1527 | rubber 1528 | rude 1529 | rug 1530 | rule 1531 | run 1532 | runway 1533 | rural 1534 | sad 1535 | saddle 1536 | sadness 1537 | safe 1538 | sail 1539 | salad 1540 | salmon 1541 | salon 1542 | salt 1543 | salute 1544 | same 1545 | sample 1546 | sand 1547 | satisfy 1548 | satoshi 1549 | sauce 1550 | sausage 1551 | save 1552 | say 1553 | scale 1554 | scan 1555 | scare 1556 | scatter 1557 | scene 1558 | scheme 1559 | school 1560 | science 1561 | scissors 1562 | scorpion 1563 | scout 1564 | scrap 1565 | screen 1566 | script 1567 | scrub 1568 | sea 1569 | search 1570 | season 1571 | seat 1572 | second 1573 | secret 1574 | section 1575 | security 1576 | seed 1577 | seek 1578 | segment 1579 | select 1580 | sell 1581 | seminar 1582 | senior 1583 | sense 1584 | sentence 1585 | series 1586 | service 1587 | session 1588 | settle 1589 | setup 1590 | seven 1591 | shadow 1592 | shaft 1593 | shallow 1594 | share 1595 | shed 1596 | shell 1597 | sheriff 1598 | shield 1599 | shift 1600 | shine 1601 | ship 1602 | shiver 1603 | shock 1604 | shoe 1605 | shoot 1606 | shop 1607 | short 1608 | shoulder 1609 | shove 1610 | shrimp 1611 | shrug 1612 | shuffle 1613 | shy 1614 | sibling 1615 | sick 1616 | side 1617 | siege 1618 | sight 1619 | sign 1620 | silent 1621 | silk 1622 | silly 1623 | silver 1624 | similar 1625 | simple 1626 | since 1627 | sing 1628 | siren 1629 | sister 1630 | situate 1631 | six 1632 | size 1633 | skate 1634 | sketch 1635 | ski 1636 | skill 1637 | skin 1638 | skirt 1639 | skull 1640 | slab 1641 | slam 1642 | sleep 1643 | slender 1644 | slice 1645 | slide 1646 | slight 1647 | slim 1648 | slogan 1649 | slot 1650 | slow 1651 | slush 1652 | small 1653 | smart 1654 | smile 1655 | smoke 1656 | smooth 1657 | snack 1658 | snake 1659 | snap 1660 | sniff 1661 | snow 1662 | soap 1663 | soccer 1664 | social 1665 | sock 1666 | soda 1667 | soft 1668 | solar 1669 | soldier 1670 | solid 1671 | solution 1672 | solve 1673 | someone 1674 | song 1675 | soon 1676 | sorry 1677 | sort 1678 | soul 1679 | sound 1680 | soup 1681 | source 1682 | south 1683 | space 1684 | spare 1685 | spatial 1686 | spawn 1687 | speak 1688 | special 1689 | speed 1690 | spell 1691 | spend 1692 | sphere 1693 | spice 1694 | spider 1695 | spike 1696 | spin 1697 | spirit 1698 | split 1699 | spoil 1700 | sponsor 1701 | spoon 1702 | sport 1703 | spot 1704 | spray 1705 | spread 1706 | spring 1707 | spy 1708 | square 1709 | squeeze 1710 | squirrel 1711 | stable 1712 | stadium 1713 | staff 1714 | stage 1715 | stairs 1716 | stamp 1717 | stand 1718 | start 1719 | state 1720 | stay 1721 | steak 1722 | steel 1723 | stem 1724 | step 1725 | stereo 1726 | stick 1727 | still 1728 | sting 1729 | stock 1730 | stomach 1731 | stone 1732 | stool 1733 | story 1734 | stove 1735 | strategy 1736 | street 1737 | strike 1738 | strong 1739 | struggle 1740 | student 1741 | stuff 1742 | stumble 1743 | style 1744 | subject 1745 | submit 1746 | subway 1747 | success 1748 | such 1749 | sudden 1750 | suffer 1751 | sugar 1752 | suggest 1753 | suit 1754 | summer 1755 | sun 1756 | sunny 1757 | sunset 1758 | super 1759 | supply 1760 | supreme 1761 | sure 1762 | surface 1763 | surge 1764 | surprise 1765 | surround 1766 | survey 1767 | suspect 1768 | sustain 1769 | swallow 1770 | swamp 1771 | swap 1772 | swarm 1773 | swear 1774 | sweet 1775 | swift 1776 | swim 1777 | swing 1778 | switch 1779 | sword 1780 | symbol 1781 | symptom 1782 | syrup 1783 | system 1784 | table 1785 | tackle 1786 | tag 1787 | tail 1788 | talent 1789 | talk 1790 | tank 1791 | tape 1792 | target 1793 | task 1794 | taste 1795 | tattoo 1796 | taxi 1797 | teach 1798 | team 1799 | tell 1800 | ten 1801 | tenant 1802 | tennis 1803 | tent 1804 | term 1805 | test 1806 | text 1807 | thank 1808 | that 1809 | theme 1810 | then 1811 | theory 1812 | there 1813 | they 1814 | thing 1815 | this 1816 | thought 1817 | three 1818 | thrive 1819 | throw 1820 | thumb 1821 | thunder 1822 | ticket 1823 | tide 1824 | tiger 1825 | tilt 1826 | timber 1827 | time 1828 | tiny 1829 | tip 1830 | tired 1831 | tissue 1832 | title 1833 | toast 1834 | tobacco 1835 | today 1836 | toddler 1837 | toe 1838 | together 1839 | toilet 1840 | token 1841 | tomato 1842 | tomorrow 1843 | tone 1844 | tongue 1845 | tonight 1846 | tool 1847 | tooth 1848 | top 1849 | topic 1850 | topple 1851 | torch 1852 | tornado 1853 | tortoise 1854 | toss 1855 | total 1856 | tourist 1857 | toward 1858 | tower 1859 | town 1860 | toy 1861 | track 1862 | trade 1863 | traffic 1864 | tragic 1865 | train 1866 | transfer 1867 | trap 1868 | trash 1869 | travel 1870 | tray 1871 | treat 1872 | tree 1873 | trend 1874 | trial 1875 | tribe 1876 | trick 1877 | trigger 1878 | trim 1879 | trip 1880 | trophy 1881 | trouble 1882 | truck 1883 | true 1884 | truly 1885 | trumpet 1886 | trust 1887 | truth 1888 | try 1889 | tube 1890 | tuition 1891 | tumble 1892 | tuna 1893 | tunnel 1894 | turkey 1895 | turn 1896 | turtle 1897 | twelve 1898 | twenty 1899 | twice 1900 | twin 1901 | twist 1902 | two 1903 | type 1904 | typical 1905 | ugly 1906 | umbrella 1907 | unable 1908 | unaware 1909 | uncle 1910 | uncover 1911 | under 1912 | undo 1913 | unfair 1914 | unfold 1915 | unhappy 1916 | uniform 1917 | unique 1918 | unit 1919 | universe 1920 | unknown 1921 | unlock 1922 | until 1923 | unusual 1924 | unveil 1925 | update 1926 | upgrade 1927 | uphold 1928 | upon 1929 | upper 1930 | upset 1931 | urban 1932 | urge 1933 | usage 1934 | use 1935 | used 1936 | useful 1937 | useless 1938 | usual 1939 | utility 1940 | vacant 1941 | vacuum 1942 | vague 1943 | valid 1944 | valley 1945 | valve 1946 | van 1947 | vanish 1948 | vapor 1949 | various 1950 | vast 1951 | vault 1952 | vehicle 1953 | velvet 1954 | vendor 1955 | venture 1956 | venue 1957 | verb 1958 | verify 1959 | version 1960 | very 1961 | vessel 1962 | veteran 1963 | viable 1964 | vibrant 1965 | vicious 1966 | victory 1967 | video 1968 | view 1969 | village 1970 | vintage 1971 | violin 1972 | virtual 1973 | virus 1974 | visa 1975 | visit 1976 | visual 1977 | vital 1978 | vivid 1979 | vocal 1980 | voice 1981 | void 1982 | volcano 1983 | volume 1984 | vote 1985 | voyage 1986 | wage 1987 | wagon 1988 | wait 1989 | walk 1990 | wall 1991 | walnut 1992 | want 1993 | warfare 1994 | warm 1995 | warrior 1996 | wash 1997 | wasp 1998 | waste 1999 | water 2000 | wave 2001 | way 2002 | wealth 2003 | weapon 2004 | wear 2005 | weasel 2006 | weather 2007 | web 2008 | wedding 2009 | weekend 2010 | weird 2011 | welcome 2012 | west 2013 | wet 2014 | whale 2015 | what 2016 | wheat 2017 | wheel 2018 | when 2019 | where 2020 | whip 2021 | whisper 2022 | wide 2023 | width 2024 | wife 2025 | wild 2026 | will 2027 | win 2028 | window 2029 | wine 2030 | wing 2031 | wink 2032 | winner 2033 | winter 2034 | wire 2035 | wisdom 2036 | wise 2037 | wish 2038 | witness 2039 | wolf 2040 | woman 2041 | wonder 2042 | wood 2043 | wool 2044 | word 2045 | work 2046 | world 2047 | worry 2048 | worth 2049 | wrap 2050 | wreck 2051 | wrestle 2052 | wrist 2053 | write 2054 | wrong 2055 | yard 2056 | year 2057 | yellow 2058 | you 2059 | young 2060 | youth 2061 | zebra 2062 | zero 2063 | zone 2064 | zoo` 2065 | -------------------------------------------------------------------------------- /release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | build() { 4 | mkdir -p release 5 | GOOS=$1 GOARCH=$2 go build -trimpath -o release/seedvault-extractor-$1-$2$3 ./cmd/extract 6 | } 7 | 8 | build windows amd64 .exe 9 | build linux amd64 10 | build darwin amd64 11 | build darwin arm64 12 | --------------------------------------------------------------------------------