<h1 align="center">
lemmeknow
</h1>
<div align="center">
⚡ 🦀 🔍
</div>
<div align="center">
<strong>Just ask `lemmeknow`!</strong>
</div>
<div align="center">
The fastest way to identify anything
</div>
<br />
<div align="center">
<a href="https://twitter.com/_swanandx">
<img src="https://img.shields.io/badge/twitter-%40__swanandx-blue"
alt="@_swanandx" />
</a>
<a href="https://github.com/swanandx/lemmeknow/issues">
<img src="https://img.shields.io/github/issues/swanandx/lemmeknow"
alt="GitHub issues" />
</a>
<a href="https://github.com/swanandx/lemmeknow/stargazers">
<img src="https://img.shields.io/github/stars/swanandx/lemmeknow"
alt="GitHub stars" />
</a>
<a href="https://github.com/swanandx/lemmeknow/network">
<img src="https://img.shields.io/github/forks/swanandx/lemmeknow"
alt="GitHub forks" />
</a>
<a href="https://github.com/swanandx/lemmeknow/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/swanandx/lemmeknow"
alt="GitHub license" />
</a>
</div>
<div align="center">
<sub>Built with ❤︎ by
<a href="https://twitter.com/_swanandx">swanandx</a> and
<a href="https://github.com/swanandx/lemmeknow/graphs/contributors">
contributors
</a>
</div>
<br />
`lemmeknow` can be used for identifying mysterious text or to analyze hard-coded strings from captured network packets, malwares, or just about anything.
<br />
## 🧰 Usage
Pass `TEXT` or `/PATH/TO/FILE` as argument. If you want output in JSON format, then pass `-j / --json` flag.
- `lemmeknow [OPTIONS] <TEXT/FILENAME>`
*e.g.* `lemmeknow UC11L3JDgDQMyH8iolKkVZ4w --json`
> Run `lemmeknow --help` for all options!
<p align="center">
<img src="images/demo.gif" alt="demo" />
</p>
<br />
## 🔭 Installation
---
### Download executable 📈
You can directly download executable and run it. No need for any installation.
> Check releases [here](https://github.com/swanandx/lemmeknow/releases/).
---
### Using `cargo` 🦀
- `cargo install lemmeknow`
---
### Build it from source 🎯
Clone repository
- `git clone https://github.com/swanandx/lemmeknow && cd lemmeknow`
then build and run
- `cargo run`
*e.g.* `cargo run -- <TEXT/FILENAME> [OPTIONS]`
OR
- `cargo build --release`
- `cd target/release/`
- `./lemmeknow`
e.g. `./lemmeknow <TEXT/FILENAME> [OPTIONS]`
---
<br />
## 🚀 API
Want to use this as a crate in your project? or make a web api for it? No worries! Just add a entry in your `Cargo.toml`
```toml
[dependencies]
lemmeknow = { version = "0.4.0", default-features = false }
```
OR
```toml
[dependencies]
lemmeknow = { git = "https://github.com/swanandx/lemmeknow", default-features = false }
```
> Refer to [documentation](https://docs.rs/lemmeknow) for more info.
<br />
## ⚔️ Benchmarks
lemmeknow is around **33x faster** than pywhat for a file of 8.7MB, and it is **3x faster** for a single string!
| *Summary*: `lemmeknow.exe floss.exe` ran **33.13 ± 9.74** times faster than `pywhat floss.exe` | *Summary*: `lemmeknow.exe 3FZ..Zc5` ran **3.29 ± 0.77** times faster than `pywhat 3FZ..Zc5` |
|  |  |
> Thanks to [SkeletalDemise](https://github.com/SkeletalDemise) for the benchmarks and the whisker plots ✨
<br />
## 🚧 Contributing
You can contribute by adding new regex, improving current regex, improving code performance or fixing minor bugs! Just open a issue or submit a PR.
<br />
## 💖 Acknowledgement
This project is inspired by [PyWhat](https://github.com/bee-san/pyWhat)!
Thanks to developer of it for the awesome idea <3 .