Giter VIP home page Giter VIP logo

Comments (10)

dylon avatar dylon commented on July 18, 2024

You can to do this, but you'll want to customize the dictionary and transition function. I'll put together a prototype and post it shortly.

from liblevenshtein-java.

matanox avatar matanox commented on July 18, 2024

@dylon hope all is well!

I took the liberty renaming this issue to the more generic case. Maybe I've forgotten which existing API endpoints come to aid here, but otherwise, passwords aside, I find this may be a nice augmentation useful not only for demos but for testing and even performance testing scenarios. I find it might be a very nice addition, in case the data structures implicitly support this "reversed feature" ― and if something very mathematical can be said about how the feature would yield its outputs.

from liblevenshtein-java.

sanchopansa avatar sanchopansa commented on July 18, 2024

@matanster -- thanks for renaming the question. It's much more descriptive this way!

@matanster @dylon -- so in the end, is it possible to do this string generation with the library?

from liblevenshtein-java.

neysofu avatar neysofu commented on July 18, 2024

@sanchopansa As far as my understanding of the code goes, it would be a lot of work to do what you want. You are better off with a brute-force spell-checker, which does exactly what you're asking. Maybe this blog post can help you.

from liblevenshtein-java.

dylon avatar dylon commented on July 18, 2024

After more investigation, generating strings is definitely possible but will require some modification. To be honest, when I realized you want a rainbow table for password cracking, I stopped working on this.

The feature would be useful for other things, so I'll work on it eventually; I welcome pull requests. As it stands, my build scripts need to be updated for the latest version of Gradle, and Java 9 has broken Lombok and TestNG. I need to fix those issues before I can work on anything else.

from liblevenshtein-java.

sanchopansa avatar sanchopansa commented on July 18, 2024

IMHO that's a ridiculous reason to stop working on a very useful feature, but it's your codebase and you're free to spend your time on it as you wish in the end. I respect that.

However, I must note that there is a plethora of tools for password cracking and whole open source distros dedicated to pentesting. With a little bit of effort and basic programming knowledge anyone could accomplish what I described above, even if not in the most optimal manner, so you are not protecting anyone by not implementing this. On the other hand, having this feature would be useful for many other applications, with the first one that springs to mind being generating DNA sequences, which are at a certain Levenshtein distance from an existing one.

In the end, technology can be used for good and evil and fundamentally there is no way to protect against the latter. Not implementing something is definitely not the solution. Luckily, many people prefer to concentrate on the positives.

from liblevenshtein-java.

matanox avatar matanox commented on July 18, 2024

@sanchopansa I think you've gotten things quite wrong. This is open source. Nobody here is required to develop anything for you. You are enjoying other people's efforts practically for free, and you have no moral grounds to make such comments, nor are they civil at all. That said, I too would not develop a feature meant uniquely for password cracking, if that were the case, even if your story about using it to recover your own password were taken to be true. In short, I think you owe the maintainer an apology.

from liblevenshtein-java.

sanchopansa avatar sanchopansa commented on July 18, 2024

@matanster -- I think you've gotten things quite wrong. I am not expecting anyone to implement anything for me. I can do it myself when necessary :) I think I made this quite clear above by saying that the owner of the codebase is free to do with it as they choose and I respect that. It is their time after all... I also haven't followed up on this issue at all and I did resolve my problems on my own, so I am not sure how you came to the conclusion that I have any expectations from the author(s) of this library, let alone claiming that my comment is not moral or civil.

I am only pointing out the fact that not implementing something because it can be used for a bad purpose is the wrong mindset. The internet, open source software and technology in general is sadly enabling a lot of very bad things to happen. Is this a reason not to develop them? As open source contributors, we should focus on the benefits that the technology brings, not halt development because something can be used with bad intentions, especially when it clearly has good applications...

from liblevenshtein-java.

dylon avatar dylon commented on July 18, 2024

I have an ethical responsibility to protect my consumers to the best of my abilities. I will not willingly implement a feature for malicious reasons. It is true that this feature could be used for many things, but only password cracking was referenced in the requests.

from liblevenshtein-java.

sanchopansa avatar sanchopansa commented on July 18, 2024

I appreciate your work and your efforts. I am just going to say that "password cracking" can most definitely be used for non-malicious reasons as well :)

I don't want to force my opinion on anyone though and as I said I respect your choices, so let's leave it at that.

from liblevenshtein-java.

Related Issues (20)

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.