Dr Clèm's Blog

SHA1BruteForce

brute-force attack to recover SHA-1 hashed password.

Copyright (C) 2017 Clément Février

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

About

This is a simple C++ software to recover a password for SHA-1 hash. It is performing a brute-force attack.
Complexity: It is a simple brute-force algorithm, so the complexity increases exponentially with the size of the password.
Multithreading: On a N_CORE computer, if SEQTIME is the maximum time when launched with one thread, then the maximum time is SEQTIME / N_TREAD when N_THREAD < N_CORE and SEQTIME / N_CORE when N_THREAD > N_CORE

Install

You need GCC < 8, Boost and Libtomcrypt for the program itself and git to download it. The restriction on GCC comes from an incompatibility between GCC 8 and Boost. On Ubuntu,

% sudo apt install g++ libboost-all-dev libtomcrypt-dev git
Then, you need to clone the git repository
% git clone https://clementfevrier.fr/git/SHA1BruteForce.git
% cd SHA1BruteForce

Use

main.cpp

Modify the parameters in main.cpp.

  • HASH: The SHA-1 hash. Two accepted formats:
    • Without spaces, as usually stored. You need to ensure that it is 40 character-long. Example for the password ZZZ
      116ff222a3b49b63348d7782e4b43ffe2dcbb198
    • With spaces. No restriction on the length of the string. But you need to ensure to have 20 spaced-separated hexadecimal numbers. It is the format used to display hashes in this program. Example for the password ZZZZZZ
      18 f3 f 1b a4 c6 2e 2b 46 e 69 33 6 b3 9a d e2 7d 74 7c
  • MaxLength: Maximum length of the password to test.
  • N_THREAD: Number of threads to launch. The program will launch at most a number of thread corresponding to the number of character to test. In other words, the length of list. In this case, it is 95.

Makefile
(Optional) Profiling

You can use the Makefile as it is, but I recommend to add the flags specific to your architecture. Also, you can profile the code with the following steps. Set the variable test in main.cpp. For example, change line 91

const std::string test = "";
to
const std::string test = "!!!";
Add the flag -fprofile-generate to the variable CC in the Makefile. Clean objects in case already compile before and recompile with the new flag.
% make clean; make -j 2
Execute the code to generate the profile.
% ./sha1
Modify main.cpp to reverte back test to "" otherwise the SHA-1 hash that you want to crack will be ignore. Modify the variable CC in the Makefile to substitute -fprofile-generate by -fprofile-use -fprofile-correction. Finally, clean the objects to enforce recompiling all of them using the profile
$ make clean

Compiling

Then compile with

% make
or, better,
% make -j 2
for parallel compiling. Any number greater than 2 will not have effect because there is only 2 objects.

sha1

Launch it with

% ./sha1
It will display the SHA-1 hash and the corresponding password if it find it.

Cleaning

You can safely clean the temporary objects with

% make clean
You can also clean all files produced by the project to recover fresh-like folder
% make mrproper

Dr Clément Février

I am Dr Clément Février, French, living in Grenoble. I defended my PhD on July 4th, 2016. After my defense I run as deputy deputy (not a typo) for the national parliamentary elections in the 1st circonscription of Isère for the political movement La France Insoumise.


Je voulais poser ma question à la communauté de LibreOffice sur ask.libreoffice.org, étant donné que tout le monde cherche comment faire mais qu'on ne trouve pas cette réponse, mais c'est n'importe quoi ce site pour un site de logiciel libre. Mise à part OpenID, comment s'enregistrer pour poser une question si on ne souhaite pas créer de compte sur Facebook, Twitter ou autre ?

Parfois, je trouve les paramètres par défaut de libreoffice assez déconnant et je ne pense pas que ça corresponde à ce qu'un utilisateur attend. Par exemple, par défaut, lorsqu'on glisse une date, ce sont les années qui avancent. Pour moi, c'est évident que ce sont les jours qui devraient avancer. Pour l'instant, impossible de trouver comment faire avancer les jours à la place des années, et je ne suis pas le seul avec ce problème.
ask.libreoffice.org/en/questio

Elle se fait donc soigner à l'étranger autant que possible (en Turquie où les soins sont gratuits et où elle a sa famille) mais pour quelques urgences a reçu des soins en France, dès mai 2018. Cependant, les feuilles de soin commencent à expirer (validité 2 ans) et elle ne pourra donc pas se faire rembourser.

Cette situation ne peut plus durer et étant donné qu'ils ignorent nos courriers, nous sommes dépassés ne savons plus quoi faire.

L'assurance maladie, dans son courrier, nous dit que ce courrier fait preuve d'attestation de droit (c'est déjà une première étape après plus de 2 ans), mais ignore complètement le fait qu'elle ne peut pas créer de compte, et prétend qu'elle a une carte vital alors que celle-ci n'a jamais été envoyée.

Juin 2020 (plus de deux ans après la démarche initiale, et 6 mois après la dernière demande), réponse au dernier courrier. Le dossier est toujours en cours de traitement. Elle peut utiliser sa carte vital, mais elle n'a jamais été envoyée. Elle ne peut toujours pas créer de compte en ligne, n'a pas reçu de code provisoire, ne peut pas en demander un et n'a pas de carte vital et ne peut pas en demander une.

Janvier 2020, nous relançons la CPAM. Son dossier à disparu durant l'été 2019. On nous demande de recommencer à 0 les démarches, ce que nous faisons immédiatement.
Avril 2020, accusé de réception de la démarche pour le rattachement.
Mai 2020, n'ayant toujours pas de réponse, relance courrier avec accusé de réception.