Comments (10)
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.
@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.
@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.
@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.
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.
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.
@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.
@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.
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.
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)
- Support sophisticated, parsing rules when reading a dictionary HOT 1
- Create specialized DawgNodes for common characters
- Consider dynamically-compiling node classes that return constant values
- Support customizing the dictionary-search strategy
- Add development wiki
- Test the example code before generating the documentation
- Create integration test suite
- Create regression test suite
- Cache commands across template tasks for same, Gradle process
- Support variable, error penalties by error type (weighted errors)
- Support variable, error penalties by error type and context
- Support generic, dictionary nodes HOT 1
- Periodically-tweet about resolved issues
- Collapse consecutive, dictionary nodes with only one, outgoing edge HOT 1
- Create a Coverity Scan, Java model
- Before each release, ensure that every closed bug has a regression test
- Add support for One-JAR HOT 1
- Weighted Levenshtein distance support HOT 2
- Is a transducer thread-safe ? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from liblevenshtein-java.