Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I fixed your bad code and i dont know how to get it to you so started this feel free to reply to it! #15

Open
jamieduk opened this issue Apr 14, 2024 · 2 comments

Comments

@jamieduk
Copy link

jamieduk commented Apr 14, 2024

your code sucks i made it million times better i suggest you update your code with this

// sudo apt install golang
// go run main.go YOURSTRING 1
package main

import (
	"bytes"
	"crypto/ed25519"
	"crypto/sha512"
	"encoding/base32"
	"fmt"
	"io/ioutil"
	"os"
	"regexp"
	"runtime"
	"strconv"
	"strings"
	"sync"

	"golang.org/x/crypto/sha3"
)

func generate(wg *sync.WaitGroup, re *regexp.Regexp) {

	for {

		publicKey, secretKey, err := ed25519.GenerateKey(nil)
		checkErr(err)

		onionAddress := encodePublicKey(publicKey)

		// If a matching address is found, save key and notify wait group
		if re.MatchString(onionAddress) == true {
			fmt.Println(onionAddress)
			save(onionAddress, publicKey, expandSecretKey(secretKey))
			wg.Done()
		}
	}
}

func expandSecretKey(secretKey ed25519.PrivateKey) [64]byte {

	hash := sha512.Sum512(secretKey[:32])
	hash[0] &= 248
	hash[31] &= 127
	hash[31] |= 64
	return hash

}

func encodePublicKey(publicKey ed25519.PublicKey) string {

	// checksum=H(".onion checksum" || pubkey || version)
	var checksumBytes bytes.Buffer
	checksumBytes.Write([]byte(".onion checksum"))
	checksumBytes.Write([]byte(publicKey))
	checksumBytes.Write([]byte{0x03})
	checksum := sha3.Sum256(checksumBytes.Bytes())

	// onion_address=base32(pubkey || checksum || version)
	var onionAddressBytes bytes.Buffer
	onionAddressBytes.Write([]byte(publicKey))
	onionAddressBytes.Write([]byte(checksum[:2]))
	onionAddressBytes.Write([]byte{0x03})
	onionAddress := base32.StdEncoding.EncodeToString(onionAddressBytes.Bytes())

	return strings.ToLower(onionAddress)

}

func save(onionAddress string, publicKey ed25519.PublicKey, secretKey [64]byte) {
	os.MkdirAll(onionAddress, 0700)

	secretKeyFile := append([]byte("== ed25519v1-secret: type0 ==\x00\x00\x00"), secretKey[:]...)
	checkErr(ioutil.WriteFile(onionAddress+"/hs_ed25519_secret_key", secretKeyFile, 0600))

	publicKeyFile := append([]byte("== ed25519v1-public: type0 ==\x00\x00\x00"), publicKey...)
	checkErr(ioutil.WriteFile(onionAddress+"/hs_ed25519_public_key", publicKeyFile, 0600))

	checkErr(ioutil.WriteFile(onionAddress+"/hostname", []byte(onionAddress+".onion\n"), 0600))
}

func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Set runtime to use all available CPUs.
	runtime.GOMAXPROCS(runtime.NumCPU())

	// Compile regex from first argument.
	re, _ := regexp.Compile("^" + os.Args[1])

	// Get the number of desired addreses from second argument.
	numAddresses, _ := strconv.Atoi(os.Args[2])

	// WaitGroup of size equal to desired number of addresses
	var wg sync.WaitGroup
	wg.Add(numAddresses)

	// For each CPU, run a generate goroutine
	for i := 0; i < runtime.NumCPU(); i++ {
		go generate(&wg, re)
	}

	// Exit after the desired number of addresses have been found.
	wg.Wait()

}

@jamieduk
Copy link
Author

jamieduk commented Apr 14, 2024

Alsao your readme should never point to a website thats dumb asf always put actual instructions its not fkin hard


sudo apt install -y golang

go run main.go YOURSTRING 1

Where Yourstring is your desired hostname start string
And Where 1 is the number of found hostname matches to stop at!

@ManicDevs
Copy link

ManicDevs commented Apr 23, 2024

@jamieduk - I don't know what you are on about, because your code actually has errors too. lol

"Also" your spelling and grammar is poor.
_
Alas, If you are saying where 1 is the number of found hostname that the match would stop on.

go run cmd/tor_oniongen/main.go gi 1
gilwjn6rhlzzde5hr2sgt4pagd4hk2awva5tbt2ltvd32xeph2643dyd
gi6tqwh65qvzqf45a4hmmhals455dymyfzaorhne5nedhsrfvc3rzaad
gindlcw4ta2rcra4b7p3mf6fu5bqbitpcgyfst6apq52vagv4cgvhsad

Enjoy, - So I see not how your code is any better.

go run cmd/tor_oniongen/main.go gi 1
gibmvhsu2xjfxdjop54lix47bec3mfkz6nqakupnmg43e2lgc7twedqd
gibdlum7gqiqawagnwzwgzgv6ry2rblq57pvfmjsw2rr3a32kasneyid
panic: sync: negative WaitGroup counter

goroutine 11 [running]:
sync.(*WaitGroup).Add(0xd6ae6e22080b9ba0?, 0xa38d2f61f1ba42b6?)
/snap/go/10585/src/sync/waitgroup.go:62 +0xd8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants