This looks like a project I could contribute to. For one, I’m thinking about argument parsing so the position of arguments won’t matter as much. Maybe I can look into OpenCL.
Must the code have 0 dependencies? The copy and paste from libsodium is quite strange.
of course, your contribution would be very welcome.
Indeed the idea was to port it to an OpenCL version, hence the copy/paste to avoid any dependencies and the “one brick” code file. Feel free to contribute, and you can contact me if you want to share ideas, even if I don’t have much time these days.
It’s the part I find really strange. Is there something about OpenCL that a one-brick source code file would help? I would like to « unbrick » the source code to an extent or at least avoid making an even bigger brick for what I want to add.
Indeed, it’s pretty ugly as it is. Just rushed the whole thing. Feel free to break it down to smaller pieces (which would definitely be much easier to work with in the first place - I never intended to make it that big in the first place, but things added up one after the other, including parallelism ). Would love to see it refactored and easier to maintain.
I made Ğ1force in Rust, which is a parallelized scrypt bruteforcer. Currently it matches only a single pubkey or a list of pubkeys but can be adapted to match a regex.
Edit: I rewrote Ğ1force, it now accepts regexes and is faster (188 tests/s vs 160 before). It still lacks regex flags, dictionary, live output… It’s not usable yet for vanity pubkeys.
@tuxmain j’ai pas compris à quoi servait G1force du coup je sais pas comment le résumer, tu pourrais me dire ce que tu veux que je mette pour décrire le soft ?
C’est un outil qui teste plein de mots de passe afin de trouver une clé publique donnée. Il peut servir à essayer de voler un compte dont les mots de passe sont faibles, par exemple. Il y a aussi une fonctionnalité pour lister tous les comptes de la Ğ1 qui contiennent de la monnaie ou qui sont membres et qui ont un mot de passe trop faible, afin d’en avertir leur propriétaire.
moved argument parsing to its own function (getopts)
made a function for reading files
The arguments accepted are slightly different.
-n [int] [int] is now -n [int],[int]
It also detects which number of the two is larger so order doesn’t matter. -n 12,5 is acceptable and will display a warning regarding minimum elements.
regex file is indicated by -x
Also is char *allwords freed in the code? I wasn’t able to find where.
You could of course free it at the end of the main program. I didn’t focus much on cleaning up (including running threads) as part of quitting… the program will end anyway and the OS will do the cleanup.
This is an amazing technical discussion about the development of VanityGen! I suggest that you and @testmine open the same subject in the other forum that is more focused on that kind of talk.
Et poursuivre ici une discussion plus grand publique.
Tiens, je commence : à quoi sert VanityGen, c’est pour la revue VanityFair ?
Mais c’est génial! On n’me dit jamais rien à moi… Si on peut compiler ça en une bibliothèque partagée pour en faire un module python, je pourrai l’utiliser dans Tikka !
Bon l’idéal serait d’avoir une bibliothèque utilisable dans plein de langages, peut-être qu’un conversion en Rust pourrait générer une bibliothèque pour C, Python, Javascript (Wasm), etc…?
Bonne idée, je pourrais faire une bibliothèque Ğ1force avec un binding python.
J’ai peur qu’il faille littéralement des milliards d’années à un PC haut de gamme pour trouver une telle clé… (bon ok peut-être des centaines de millions)
Mais si on veut générer une clé privée ou une seed directement, plutôt que des identifiants scrypt, ça ira beaucoup, beaucoup (beaucoup) plus vite, et une clé MarlonBrando est envisageable (je n’ai pas fait le benchmark).
Ceci dit, si on porte ça sur opencl (c’était mon but à l’origine, j’ai jamais pris le temps d’aller jusqu’au bout), ça peut changer pas mal en terme de performances…