Top Related Projects
Adversary Emulation Framework
The Social-Engineer Toolkit (SET) repository from TrustedSec - All new versions of SET will be deployed here.
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
E-mails, subdomains and names Harvester - OSINT
Incredibly fast crawler designed for OSINT.
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Quick Overview
sn0int is an advanced, semi-automatic OSINT (Open Source Intelligence) framework and package manager. It's designed for gathering intelligence about various targets, including IP addresses, domain names, URLs, email addresses, phone numbers, and social media accounts. sn0int is highly extensible and allows users to write their own modules in Lua.
Pros
- Highly extensible with custom Lua modules
- Comprehensive OSINT capabilities for various target types
- Built-in package manager for easy module sharing and installation
- Powerful command-line interface for efficient operation
Cons
- Steep learning curve for beginners
- Requires some programming knowledge to create custom modules
- Limited graphical user interface options
- May require additional setup for certain modules or data sources
Getting Started
To get started with sn0int, follow these steps:
-
Install sn0int:
cargo install sn0int
-
Run sn0int:
sn0int
-
Add a target:
db add domain example.com
-
Run a module:
run dns-resolve
-
View results:
select * from ipaddr
For more detailed instructions and advanced usage, refer to the official documentation at https://sn0int.readthedocs.io/.
Competitor Comparisons
Adversary Emulation Framework
Pros of Sliver
- More comprehensive C2 framework with advanced features like dynamic code generation
- Supports multiple protocols (DNS, HTTP, MTLS) for communication
- Active development with frequent updates and community support
Cons of Sliver
- Steeper learning curve due to more complex functionality
- Requires more resources to run and manage
- Primarily focused on post-exploitation, less suited for OSINT
Code Comparison
sn0int (Rust):
pub fn run() -> Result<()> {
let args = cli::parse();
let config = Config::load(&args)?;
let db = Database::establish(&config)?;
// ...
}
Sliver (Go):
func main() {
appDir := assets.GetRootAppDir()
serverConfig := configs.ServerConfigFromFile(appDir)
server, err := core.StartServer(serverConfig)
// ...
}
Both projects use different languages and have distinct purposes. sn0int is an OSINT framework written in Rust, while Sliver is a C2 framework written in Go. The code snippets show their respective entry points, highlighting the difference in focus and implementation.
The Social-Engineer Toolkit (SET) repository from TrustedSec - All new versions of SET will be deployed here.
Pros of social-engineer-toolkit
- Comprehensive suite of social engineering tools
- Well-established project with a large user base
- Regularly updated with new features and improvements
Cons of social-engineer-toolkit
- Primarily focused on social engineering attacks
- Less modular and extensible compared to sn0int
- May require more setup and configuration for specific tasks
Code Comparison
sn0int:
pub fn run() -> Result<()> {
let args = cli::parse();
let config = Config::load()?;
let db = Database::connect(config.database.as_str())?;
// ...
}
social-engineer-toolkit:
def main():
# print main menu
show_main_menu = create_menu(text.main_text, text.main_menu)
while True:
main_menu_choice = input(show_main_menu).lower()
# ...
Both projects use different programming languages and have distinct architectures. sn0int is written in Rust and focuses on modularity, while social-engineer-toolkit is written in Python and provides a menu-driven interface for various social engineering tools.
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
Pros of SpiderFoot
- More extensive and diverse set of modules for OSINT gathering
- User-friendly web interface for easier operation and result visualization
- Larger community and more frequent updates
Cons of SpiderFoot
- Heavier resource consumption, especially for large-scale scans
- Steeper learning curve due to the vast array of features and options
Code Comparison
SpiderFoot (Python):
class sfp_example(SpiderFootPlugin):
def handleEvent(self, event):
eventName = event.eventType
srcModuleName = event.module
eventData = event.data
# Plugin logic here
sn0int (Rust):
pub fn run(ctx: &mut Args, opts: &Opts) -> Result<()> {
let args = ctx.args();
let client = reqwest::Client::new();
// Module logic here
}
Summary
SpiderFoot offers a more comprehensive OSINT toolkit with a user-friendly interface, making it suitable for users who need a wide range of data sources and visualization options. However, it may require more resources and have a steeper learning curve.
sn0int, written in Rust, is likely more efficient in terms of resource usage and may be easier to pick up for users familiar with command-line tools. It might be more suitable for targeted, specific OSINT tasks or for integration into other workflows.
The choice between the two depends on the user's specific needs, technical expertise, and available resources.
E-mails, subdomains and names Harvester - OSINT
Pros of theHarvester
- More focused on email and domain harvesting
- Supports a wider range of search engines and APIs
- Easier to use for beginners with a simpler command-line interface
Cons of theHarvester
- Less extensible compared to sn0int's plugin system
- Limited data processing and analysis capabilities
- Fewer advanced features for OSINT workflows
Code Comparison
theHarvester:
def start(self):
self.process()
self.store_results()
self.output_results()
sn0int:
fn run(&mut self) -> Result<()> {
self.setup()?;
self.execute()?;
self.teardown()
}
theHarvester focuses on a straightforward process-store-output workflow, while sn0int uses a more modular setup-execute-teardown approach, reflecting its plugin-based architecture.
Both tools are valuable for OSINT, but sn0int offers more flexibility and advanced features for experienced users, while theHarvester excels in quick email and domain harvesting tasks. The choice between them depends on the specific requirements of the OSINT investigation and the user's level of expertise.
Incredibly fast crawler designed for OSINT.
Pros of Photon
- Focused on web crawling and information gathering from websites
- Includes features for extracting emails, social media accounts, and other data
- Supports multiple output formats including JSON and CSV
Cons of Photon
- More limited scope compared to sn0int's broader OSINT capabilities
- Less extensible without a plugin system or scripting support
- May require more manual analysis of results
Code Comparison
Photon (Python):
def photon(url, level, threads, delay, timeout, cook):
# ... (crawling logic)
for url in urls:
# Extract information from URL
return extracted_data
sn0int (Rust):
fn run() -> Result<()> {
let args = Args::parse();
let db = Database::connect(&args.database)?;
let engine = Engine::new(db, args)?;
engine.run()
}
The code snippets highlight the different approaches:
- Photon focuses on web crawling and data extraction
- sn0int provides a more comprehensive framework for OSINT operations
Both tools serve different purposes within the realm of information gathering and analysis, with Photon being more specialized for web crawling and sn0int offering a broader set of OSINT capabilities.
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Pros of nuclei
- Extensive template library for various security checks and vulnerabilities
- Highly customizable and extensible scanning engine
- Active community and frequent updates
Cons of nuclei
- Steeper learning curve for creating custom templates
- Can be resource-intensive for large-scale scans
- Primarily focused on web application security
Code comparison
nuclei:
id: example-template
info:
name: Example Template
author: John Doe
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}/example"
sn0int:
-- Example module
function run(arg)
local url = url_join(arg, '/example')
local req = http_request(url, {
method='GET',
})
local r = http_send(req)
if last_err() then return end
-- Process response
end
Key differences
- nuclei uses YAML-based templates for defining scans, while sn0int uses Lua scripts
- nuclei is more focused on web application security, whereas sn0int is a broader OSINT framework
- sn0int provides a more programmatic approach to information gathering and analysis
- nuclei offers a larger collection of pre-built templates for common vulnerabilities
Both tools are valuable for security professionals, with nuclei excelling in web application security scanning and sn0int offering a versatile platform for OSINT and reconnaissance tasks.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
sn0int
sn0int (pronounced /snoɪnt/
) is a semi-automatic OSINT framework and
package manager. It's used by IT security professionals, bug bounty hunters,
law enforcement agencies and in security awareness trainings to gather
intelligence about a given target or about yourself. sn0int is enumerating
attack surface by semi-automatically processing public information and mapping
the results in a unified format for followup investigations.
Among other things, sn0int is currently able to:
- Harvest subdomains from certificate transparency logs and passive dns
- Mass resolve collected subdomains and scan for http or https services
- Enrich ip addresses with asn and geoip info
- Harvest emails from pgp keyservers and whois
- Discover compromised logins in breaches
- Find somebody's profiles across the internet
- Enumerate local networks with unique techniques like passive arp
- Gather information about phonenumbers
- Harvest activity and images from social media profiles
- Basic image processing
sn0int is heavily inspired by recon-ng and maltego, but remains more flexible and is fully opensource. None of the investigations listed above are hardcoded in the source, instead they are provided by modules that are executed in a sandbox. You can easily extend sn0int by writing your own modules and share them with other users by publishing them to the sn0int registry. This allows you to ship updates for your modules on your own instead of pull-requesting them into the sn0int codebase.
For questions and support join us on IRC: irc.hackint.org:6697/#sn0int
Installation
Archlinux
pacman -S sn0int
Mac OSX
brew install sn0int
Debian/Ubuntu/Kali
There are prebuilt packages signed by a debian maintainer:
sudo apt install curl sq
curl -sSf https://apt.vulns.sexy/kpcyrd.pgp | sq dearmor | sudo tee /etc/apt/trusted.gpg.d/apt-vulns-sexy.gpg > /dev/null
echo deb http://apt.vulns.sexy stable main | sudo tee /etc/apt/sources.list.d/apt-vulns-sexy.list
apt update
Docker
docker run --rm --init -it -v "$PWD/.cache:/cache" -v "$PWD/.data:/data" ghcr.io/kpcyrd/sn0int
Alpine
apk add sn0int
OpenBSD
pkg_add sn0int
Gentoo
layman -a pentoo
emerge --ask net-analyzer/sn0int
NixOS
nix-env -i sn0int
For everything else please have a look at the detailed list.
Getting started
- Installation
- Build from source
- Running your first investigation
- Autonoscope
- Writing your first module
- Database
- Structs
- Activity
- Notifications
- Keyring
- Configuration
- Sandbox
- Function reference
- asn_lookup
- base64_decode
- base64_encode
- base64_custom_decode
- base64_custom_encode
- base32_custom_decode
- base32_custom_encode
- clear_err
- create_blob
- datetime
- db_add
- db_add_ttl
- db_activity
- db_select
- db_update
- dns
- error
- geoip_lookup
- hex
- hmac_md5
- hmac_sha1
- hmac_sha2_256
- hmac_sha2_512
- hmac_sha3_256
- hmac_sha3_512
- html_select
- html_select_list
- http_mksession
- http_request
- http_send
- http_fetch
- http_fetch_json
- img_load
- img_exif
- img_ahash
- img_dhash
- img_phash
- img_nudity
- info
- intval
- json_decode
- json_decode_stream
- json_encode
- key_trunc_pad
- keyring
- last_err
- md5
- mqtt_connect
- mqtt_subscribe
- mqtt_recv
- mqtt_ping
- pgp_pubkey
- pgp_pubkey_armored
- psl_domain_from_dns_name
- ratelimit_throttle
- regex_find
- regex_find_all
- semver_match
- set_err
- sha1
- sha2_256
- sha2_512
- sha3_256
- sha3_512
- sleep
- sn0int_time
- sn0int_time_from
- sn0int_version
- sock_connect
- sock_upgrade_tls
- sock_options
- sock_send
- sock_recv
- sock_sendline
- sock_recvline
- sock_recvall
- sock_recvline_contains
- sock_recvline_regex
- sock_recvn
- sock_recvuntil
- sock_sendafter
- sock_newline
- sodium_secretbox_open
- status
- stdin_readline
- stdin_read_to_end
- str_find
- str_replace
- strftime
- strptime
- strval
- time_unix
- url_decode
- url_encode
- url_escape
- url_join
- url_parse
- url_unescape
- utf8_decode
- warn
- warn_once
- ws_connect
- ws_options
- ws_recv_text
- ws_recv_binary
- ws_recv_json
- ws_send_text
- ws_send_binary
- ws_send_json
- x509_parse_pem
- xml_decode
- xml_named
Rationale
This tool was written for companies to help them understand their attack surface from a blackbox point of view. It's often difficult to understand that something is easier to discover than some people assume, putting them at risk of false security.
It's also designed to be useful for red team assessments and bug bounties, which also help companies to identify weaknesses that could result in a compromise.
Some functionality was written to do the same thing for individuals to raise awareness about personal attack surface, privacy and how much data is publicly available. These issues are often out of scope in bug bounties and sometimes by design. We believe that blaming the user is the wrong approach and these issues should be addressed at the root cause by the people designing those systems.
License
GPLv3+
Top Related Projects
Adversary Emulation Framework
The Social-Engineer Toolkit (SET) repository from TrustedSec - All new versions of SET will be deployed here.
SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.
E-mails, subdomains and names Harvester - OSINT
Incredibly fast crawler designed for OSINT.
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot