diff --git a/.github/workflows/CI_CD.yaml b/.github/workflows/CI_CD.yaml new file mode 100644 index 0000000..d4cee46 --- /dev/null +++ b/.github/workflows/CI_CD.yaml @@ -0,0 +1,19 @@ +name: CI + +on: + - push + - pull_request + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'corretto' + - name: Build with Maven + run: mvn --batch-mode --update-snapshots clean package \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..33b533b --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# JAVA HASHCODE BREAKER + +# Motivation + +The most popular and powerful tools such as [Hashcat](https://github.com/hashcat) +or [John The Ripper](https://www.openwall.com/john/) used to be as default +hash cracking tools. But to some unknown reasons neither hashcat no john couldn't crack simple Java Object hashcode +function. And even a lot of instruments couldn't identify such type of hash. This is very strange because sometimes Java +developers converts users passwords with simple hashcode function and pushes in to database which make dictionary +attack reasonable. Also, if you don't want to pay to crack you hash on resources +as [Hashes.com](https://hashes.com/en/credits) you may use this tool for testing. + +### Some additional information +[Hashcat: issue Java hashCode() Token Length Exception with Hex integer](https://github.com/hashcat/hashcat/issues/3559) + +![simple_java_hash.png](assets%2Fsimple_java_hash.png) +![hash_unknown_hash.png](assets%2Fhash_unknown_hash.png) +![hashid_unknown_hash.png](assets%2Fhashid_unknown_hash.png) +![hashcat_unknown_hash.png](assets%2Fhashcat_unknown_hash.png) +![john_unknown_hash.png](assets%2Fjohn_unknown_hash.png) + +# Usage +1. Clone the repository +2. Change path to builds + ``` + cd java_hashcode_breaker/builds + ``` +3. Run .jar file with options below + ``` + java -jar .jar -h -w + ``` +4. You can add -v option for verbose output + ``` + java -jar .jar -h -w -v + ``` +5. Happy cracking. + +### Example of work +Without verbosity + +![example.png](assets%2Fexample.png) + +With -v option + +![example_verbose.png](assets%2Fexample_verbose.png) + + diff --git a/assets/example.png b/assets/example.png new file mode 100644 index 0000000..c4b46c3 Binary files /dev/null and b/assets/example.png differ diff --git a/assets/example_verbose.png b/assets/example_verbose.png new file mode 100644 index 0000000..d60c4b8 Binary files /dev/null and b/assets/example_verbose.png differ diff --git a/assets/hash_unknown_hash.png b/assets/hash_unknown_hash.png new file mode 100644 index 0000000..96d8b75 Binary files /dev/null and b/assets/hash_unknown_hash.png differ diff --git a/assets/hashcat_unknown_hash.png b/assets/hashcat_unknown_hash.png new file mode 100644 index 0000000..3929b5e Binary files /dev/null and b/assets/hashcat_unknown_hash.png differ diff --git a/assets/hashid_unknown_hash.png b/assets/hashid_unknown_hash.png new file mode 100644 index 0000000..9e9c557 Binary files /dev/null and b/assets/hashid_unknown_hash.png differ diff --git a/assets/john_unknown_hash.png b/assets/john_unknown_hash.png new file mode 100644 index 0000000..010c833 Binary files /dev/null and b/assets/john_unknown_hash.png differ diff --git a/assets/simple_java_hash.png b/assets/simple_java_hash.png new file mode 100644 index 0000000..c3fc798 Binary files /dev/null and b/assets/simple_java_hash.png differ diff --git a/builds/build.version-0.1.0-24-11-2023.jar b/builds/build.version-0.1.0-24-11-2023.jar new file mode 100644 index 0000000..0aad8a5 Binary files /dev/null and b/builds/build.version-0.1.0-24-11-2023.jar differ diff --git a/pom.xml b/pom.xml index c2b2460..96fbad5 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ com.exploitable - java-hashcode-cracker + java-hashcode-breaker 0.1.0 java-hashcode-cracker java-hashcode-cracker @@ -46,6 +46,14 @@ + + + assets + + * + + + org.springframework.boot @@ -58,7 +66,7 @@ - com.exploitable.javahashcodecracker.JavaHashcodeCrackerApplication + com.exploitable.javahashcodebreaker.JavaHashcodeCrackerApplication diff --git a/src/main/java/com/exploitable/javahashcodecracker/Config.java b/src/main/java/com/exploitable/javahashcodebreaker/Config.java similarity index 96% rename from src/main/java/com/exploitable/javahashcodecracker/Config.java rename to src/main/java/com/exploitable/javahashcodebreaker/Config.java index c481b09..b520246 100644 --- a/src/main/java/com/exploitable/javahashcodecracker/Config.java +++ b/src/main/java/com/exploitable/javahashcodebreaker/Config.java @@ -1,4 +1,4 @@ -package com.exploitable.javahashcodecracker; +package com.exploitable.javahashcodebreaker; import org.apache.commons.cli.CommandLineParser; diff --git a/src/main/java/com/exploitable/javahashcodecracker/HashCrackService.java b/src/main/java/com/exploitable/javahashcodebreaker/HashCrackService.java similarity index 98% rename from src/main/java/com/exploitable/javahashcodecracker/HashCrackService.java rename to src/main/java/com/exploitable/javahashcodebreaker/HashCrackService.java index 74d7773..7eac459 100644 --- a/src/main/java/com/exploitable/javahashcodecracker/HashCrackService.java +++ b/src/main/java/com/exploitable/javahashcodebreaker/HashCrackService.java @@ -1,4 +1,4 @@ -package com.exploitable.javahashcodecracker; +package com.exploitable.javahashcodebreaker; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplication.java b/src/main/java/com/exploitable/javahashcodebreaker/JavaHashcodeCrackerApplication.java similarity index 98% rename from src/main/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplication.java rename to src/main/java/com/exploitable/javahashcodebreaker/JavaHashcodeCrackerApplication.java index 5fc1377..43261e7 100644 --- a/src/main/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplication.java +++ b/src/main/java/com/exploitable/javahashcodebreaker/JavaHashcodeCrackerApplication.java @@ -1,4 +1,4 @@ -package com.exploitable.javahashcodecracker; +package com.exploitable.javahashcodebreaker; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; diff --git a/src/test/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplicationTests.java b/src/test/java/com/exploitable/javahashcodebreaker/JavaHashcodeBreakerApplicationTests.java similarity index 94% rename from src/test/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplicationTests.java rename to src/test/java/com/exploitable/javahashcodebreaker/JavaHashcodeBreakerApplicationTests.java index 9e31687..cc4af26 100644 --- a/src/test/java/com/exploitable/javahashcodecracker/JavaHashcodeCrackerApplicationTests.java +++ b/src/test/java/com/exploitable/javahashcodebreaker/JavaHashcodeBreakerApplicationTests.java @@ -1,4 +1,4 @@ -package com.exploitable.javahashcodecracker; +package com.exploitable.javahashcodebreaker; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Order; @@ -14,9 +14,9 @@ import java.util.Random; @SpringBootTest -class JavaHashcodeCrackerApplicationTests { +class JavaHashcodeBreakerApplicationTests { - private final static File rockyouFile = new File("src/test/java/com/exploitable/javahashcodecracker/rockyousmall-3000.txt"); + private final static File rockyouFile = new File("src/test/java/com/exploitable/javahashcodebreaker/rockyousmall-3000.txt"); @Autowired private HashCrackService hashCrackService; diff --git a/src/test/java/com/exploitable/javahashcodecracker/rockyousmall-3000.txt b/src/test/java/com/exploitable/javahashcodebreaker/rockyousmall-3000.txt similarity index 100% rename from src/test/java/com/exploitable/javahashcodecracker/rockyousmall-3000.txt rename to src/test/java/com/exploitable/javahashcodebreaker/rockyousmall-3000.txt