GithubHelp home page GithubHelp logo

mathewmarcus / bruteforce-gpg Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 0.0 24 KB

Utility to attempt to find the passphrase of a GPG secret key

License: MIT License

C 96.99% Makefile 3.01%
bruteforce c gpg gpg-key gpgme passphrase pthread

bruteforce-gpg's People

Contributors

mathewmarcus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bruteforce-gpg's Issues

The project does not build, some fixes are needed for the makefile

Build ENV

docker run -it -v /mnt:/mnt alpine:3.12 /bin/sh
cd /mnt/Dev/bruteforce-gpg
apk add --update gpgme-dev make gcc musl-dev
make

First errors

/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: agent.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/ccanMDAJ.o: in function `main':
main.c:(.text+0x34f): undefined reference to `gpgme_check_version_internal'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: main.c:(.text+0x359): undefined reference to `gpgme_engine_check_version'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: main.c:(.text+0x37d): undefined reference to `gpgme_strerror'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: main.c:(.text+0x38a): undefined reference to `gpgme_get_protocol_name'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: main.c:(.text+0x3c9): undefined reference to `gpgme_get_protocol_name'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.o: in function `bruteforce_gpg_load_secret_key':
bruteforce_gpg.c:(.text+0x51): undefined reference to `gpgme_new'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x6c): undefined reference to `gpgme_strerror'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xac): undefined reference to `gpgme_data_new_from_file'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc9): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xd3): undefined reference to `gpgme_strerror'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x12a): undefined reference to `gpgme_op_import'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x147): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x153): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x15d): undefined reference to `gpgme_strerror'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x1a2): undefined reference to `gpgme_op_import_result'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x1be): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x1ca): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x212): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x21e): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x418): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x424): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.o: in function `bruteforce_gpg_read_passphrases_from_file':
bruteforce_gpg.c:(.text+0x50e): undefined reference to `gpgme_io_writen'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.o: in function `bruteforce_gpg_crack_passphrase':
bruteforce_gpg.c:(.text+0x5bc): undefined reference to `gpgme_new'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x5e3): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x62e): undefined reference to `gpgme_set_protocol'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x64b): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x661): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x66b): undefined reference to `gpgme_get_protocol_name'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x6b3): undefined reference to `gpgme_get_protocol_name'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x6d8): undefined reference to `gpgme_set_pinentry_mode'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x6f5): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x70b): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x762): undefined reference to `gpgme_set_keylist_mode'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x77f): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x795): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x7fc): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x835): undefined reference to `gpgme_set_passphrase_cb'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x852): undefined reference to `gpgme_get_key'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x86f): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x891): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x8ea): undefined reference to `gpgme_signers_add'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x913): undefined reference to `gpgme_op_delete_ext'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x91f): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x941): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x9a4): undefined reference to `gpgme_data_new_from_mem'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x9c5): undefined reference to `gpgme_signers_clear'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x9dd): undefined reference to `gpgme_op_delete_ext'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0x9f5): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xa0b): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xa5d): undefined reference to `gpgme_data_new'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xa7e): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xa8a): undefined reference to `gpgme_signers_clear'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xaa2): undefined reference to `gpgme_op_delete_ext'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xaba): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xad0): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xb65): undefined reference to `gpgme_op_sign'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xbb4): undefined reference to `gpgme_strerror_r'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc41): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc4d): undefined reference to `gpgme_data_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc65): undefined reference to `gpgme_op_delete_ext'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc71): undefined reference to `gpgme_signers_clear'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: bruteforce_gpg.c:(.text+0xc89): undefined reference to `gpgme_release'
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: log.o: relocation R_X86_64_PC32 against symbol `vprintf' can not be used when making a PIE object; recompile with -fPIE
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status

First fix

Source: https://www.gnupg.org/documentation/manuals/gpgme/Building-the-Source.html

diff --git a/Makefile b/Makefile
index cc162a1..b976637 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 bruteforce-gpg: src/main.c bruteforce_gpg.o log.o agent.o
-       gcc -pthread -l gpgme -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o
+       gcc -pthread -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o `gpgme-config --libs`
 bruteforce_gpg.o: src/bruteforce_gpg.c src/bruteforce_gpg.h
        gcc -c src/bruteforce_gpg.c -o bruteforce_gpg.o
 agent.o: src/agent.c src/agent.h

Second error

/mnt/Dev/bruteforce-gpg # gcc  -no-pie -pthread -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o `gpgme-config --libs` 
/mnt/Dev/bruteforce-gpg # gcc -pthread -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o `gpgme-config --libs` 
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: agent.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: log.o: relocation R_X86_64_PC32 against symbol `vprintf' can not be used when making a PIE object; recompile with -fPIE
/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
/mnt/Dev/bruteforce-gpg # gcc  -no-pie -pthread -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o `gpgme-config --libs`

Complete fix

(-no-pie)

diff --git a/Makefile b/Makefile
index cc162a1..94642e7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 bruteforce-gpg: src/main.c bruteforce_gpg.o log.o agent.o
-       gcc -pthread -l gpgme -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o
+       gcc -no-pie -pthread -o bruteforce-gpg src/main.c bruteforce_gpg.o log.o agent.o `gpgme-config --libs`
 bruteforce_gpg.o: src/bruteforce_gpg.c src/bruteforce_gpg.h
        gcc -c src/bruteforce_gpg.c -o bruteforce_gpg.o
 agent.o: src/agent.c src/agent.h

Project is built !

๐ŸŽ‰

williamdes@williamdes:/mnt/Dev/bruteforce-gpg$ bruteforce-gpg
bruteforce-gpg [-h] [-v] [-t NUM_THREADS] -f WORDLIST GPG_SECRET_KEY

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.