[package]
name = "legba"
description = "A fast multi protocol credential bruteforcer/sprayer/enumerator."
keywords = ["authentication", "bruteforce", "wordlist"]
version = "0.7.0"
authors = ["Simone Margaritelli <evilsocket@gmail.com>"]
license = "GPL-3.0"
edition = "2021"
readme = "README.md"
repository = "https://github.com/evilsocket/legba"
homepage = "https://github.com/evilsocket/legba"


[dependencies]
ahash = "0.8.3"
ansi_term = "0.12.1"
async-channel = "1.9.0"
async-trait = "0.1.73"
chrono = { version = "0.4.31", features = ["serde"] }
clap = { version = "4.4.4", features = ["derive"] }
ctor = "0.2.4"
ctrlc = "3.4.1"
indexmap = { version = "2.0.1", features = ["serde"] }
lazy_static = "1.4.0"
log = "0.4.20"
num_cpus = "1.16.0"
rlimit = "0.10.1"
serde = { version = "1.0.188", features = ["serde_derive"] }
serde_json = "1.0.107"
tokio = { version = "1.32.0", features = ["full"] }
itertools = "0.11.0"
rand = "0.8.5"
env_logger = "0.10.0"
memory-stats = "1.1.0"
human_bytes = "0.4.3"
hex = "0.4.3"
glob = "0.3.1"
cidr-utils = "0.5.11"
url = { version = "2.4.1", optional = true }
regex = { version = "1.9.5" }
reqwest = { version = "0.11.20", features = [
    "multipart",
    "socks",
    "cookies",
], optional = true }
base64 = { version = "0.21.4", optional = true }
ntlmclient = { version = "0.1.0", optional = true }
trust-dns-resolver = { version = "0.23.0", optional = true }
async-ssh2-tokio = { version = "0.8.2", optional = true }
sqlx = { version = "0.7.2", features = [
    "runtime-tokio",
    "tls-native-tls",
    "all-databases",
], optional = true }
async_ftp = { version = "6.0.0", optional = true }
async-smtp = { version = "0.9.0", optional = true }
async-pop = { version = "1.0.2", optional = true, default-features = false, features = [
    "runtime-tokio",
] }
async-native-tls = { version = "0.5.0", default-features = false, features = [
    "runtime-tokio",
] }
async-imap = { version = "0.9.1", default-features = false, features = [
    "runtime-tokio",
], optional = true }
mini-telnet = { version = "0.1.8", optional = true }
ldap3 = { version = "0.11.3", optional = true }
kerberos_crypto = { version = "0.3.6", optional = true }
kerberos_asn1 = { version = "0.2.1", optional = true }
kerberos_constants = { version = "0.0.9", optional = true }
vnc-rs = { version = "0.5.1", optional = true }
mongodb = { version = "2.7.0", optional = true }
sibyl = { version = "0.6.16", optional = true, features = [
    "tokio",
    "nonblocking",
] }
rdp-rs = { version = "0.1.0", optional = true }
scylla = { version = "0.10.1", optional = true }
paho-mqtt = { version = "0.12.3", optional = true }
csv = "1.3.0"
pavao = { version = "0.2.3", optional = true }
fast-socks5 = { version = "0.9.2", optional = true }

[dev-dependencies]
tempfile = "3.8.0"
tokio-test = "0.4.3"

[features]
default = [
    "http",
    "dns",
    "ssh",
    "mssql",
    "mqtt",
    "sql",
    "ftp",
    "smtp",
    "pop3",
    "imap",
    "telnet",
    "ldap",
    "kerberos",
    "vnc",
    "mongodb",
    "rdp",
    # "oracle", optional as it requires libclntsh that's a pain to install and configure
    "stomp",
    "amqp",
    "redis",
    "scylla",
    "tcp_ports",
    "samba",
    "socks5",
]
http = ["dep:url", "dep:reqwest", "dep:base64", "dep:ntlmclient"]
dns = ["dep:trust-dns-resolver"]
ssh = ["dep:async-ssh2-tokio"]
sql = ["dep:sqlx"]
mssql = []
mqtt = ["dep:paho-mqtt"]
ftp = ["dep:async_ftp"]
smtp = ["dep:async-smtp"]
pop3 = ["dep:async-pop"]
imap = ["dep:async-imap"]
telnet = ["dep:mini-telnet"]
ldap = ["dep:ldap3"]
kerberos = [
    "dep:kerberos_crypto",
    "dep:kerberos_asn1",
    "dep:kerberos_constants",
]
vnc = ["dep:vnc-rs"]
mongodb = ["dep:mongodb"]
oracle = ["dep:sibyl"]
rdp = ["dep:rdp-rs"]
stomp = []
amqp = []
redis = []
scylla = ["dep:scylla"]
tcp_ports = []
samba = ["dep:pavao"]
socks5 = ["dep:fast-socks5"]

[profile.release]
lto = true        # Enable link-time optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations
panic = 'abort'   # Abort on panic
strip = true      # Strip symbols from binary*
