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

Base words (feature request) #59

Open
Lexus89 opened this issue Aug 10, 2022 · 13 comments
Open

Base words (feature request) #59

Lexus89 opened this issue Aug 10, 2022 · 13 comments

Comments

@Lexus89
Copy link

Lexus89 commented Aug 10, 2022

Hi @digininja First of all thank you for all the hard work you put in this tool. Pipal does a great job analyzing passwords. What I noticed is that the top 10 base words are not really the "base" words. For example, it sometimes happens that "p@ssw0rd" and "p@ssword' are (yes also separately) mentioned as a base word, while you would think in the basis it should be "password" (the others are variations).

Perhaps an idea to merge the functionality of deleet with pipal (https://github.com/digininja/deleet)? It could really improve the value of the output.

@digininja
Copy link
Owner

digininja commented Aug 10, 2022 via email

@Lexus89
Copy link
Author

Lexus89 commented Aug 4, 2023

Very very late reply - perhaps usable for someone having this issue as well - a comparison to dictionary words may help determining what substitutions were used (for deleet). Convert back to the potential original words, search in a custom dictionary file, and the one found is likely to have the correct base word.

@digininja
Copy link
Owner

I've just checked and I've not done anything significant to this code for 10 years! It has probably been about that long since I last touched Ruby for anything more than a few line script.

I'll see if I can remember how any of it works and make some changes.

@Lexus89
Copy link
Author

Lexus89 commented Aug 4, 2023

I've just checked and I've not done anything significant to this code for 10 years! It has probably been about that long since I last touched Ruby for anything more than a few line script.

I'll see if I can remember how any of it works and make some changes.

Haha no worries, I didn't even expect a reply as it was so long ago (I do hope it has not been 10 years already haha! Time flies). Just wanted to share the idea, even if for archiving purposes ;)

@digininja
Copy link
Owner

digininja commented Aug 4, 2023 via email

@digininja
Copy link
Owner

Try the new deleet_checker in here:

https://github.com/digininja/pipal/tree/deleet

@digininja
Copy link
Owner

I've tided up that code, done a few more little fixes, and pushed it all into the main branch.

Hopefully it is all working correctly, any problems, let me know.

@Lexus89
Copy link
Author

Lexus89 commented Aug 7, 2023

Thanks a lot! Looking at the output of deleet, it might bring more concrete results when deleet is focusing on the base word output instead of the raw passwords. With some luck this will return 'potato' as the main base word, which can be used for creating new (client tailored) word lists. When deleet-ing those they can also be merged again (p0t4t, p0t@t, etc. => single 'potat' statistic).

Password list

potato123!
123!potato
potato!
$potato$
p0t4t0
pot@t0
p0t@to2023!

Top 10 base words

potato = 4 (57.14%)
p0t4t = 1 (14.29%)
pot@t = 1 (14.29%)
p0t@to = 1 (14.29%)

Top 10 passwords (from deleet)

potato = 2 (28.57%)
potatoi2e! = 1 (14.29%)
i2e!potato = 1 (14.29%)
potato! = 1 (14.29%)
$potato$ = 1 (14.29%)
potato2o2e! = 1 (14.29%)

There will be some weird cases like 'p0tat0' => 'potat' (due to ltrim/rtrim), which would make things a bit more complicated, but I am hoping the overall result will be more in line with what to feed to the password cracker. With larger results a print all instead of top X could also be useful.

My apologies for these ideas, I tend to overcomplicate things.. :)

@digininja
Copy link
Owner

digininja commented Aug 7, 2023 via email

@digininja
Copy link
Owner

I've just pushed a change that will deleet the base word rather than the main word.

This:

p@ssword
P@ssw0rd1
123Pas5word22
123P@ssw0rd1
fish
pa55word

Used to go to:

password = 2 (33.33%)
passwordi = 1 (16.67%)
i2epassword22 = 1 (16.67%)
i2epasswordi = 1 (16.67%)
fish = 1 (16.67%)

Now goes to:

password = 5 (83.33%)
fish = 1 (16.67%)

@Lexus89
Copy link
Author

Lexus89 commented Aug 16, 2023

The base words are detected a lot better now, really useful thanks a lot! Small thing I noticed; sometimes it also prints an empty base word ("" = x%), probably because the string is empty after deleet-ing, but that doesn't really matter it's good enough for me ;)

@digininja
Copy link
Owner

digininja commented Aug 16, 2023 via email

@digininja
Copy link
Owner

I've just pushed a fix for this.

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