Super Fast Sub-domain Takeover Detection!

Overview

GitHub Stars     GitHub Forks     GitHub Issues
Now, the Host is Mine! - Super Fast Sub-domain Takeover Detection
    GitHub Downloads     Cargo Installs


NtHiM - Super Fast Sub-domain Takeover Detection

  


Installation

Method 1: Using Pre-compiled Binaries

The pre-compiled binaries for different systems are available in the Releases page. You can download the one suitable for your system, unzip the file and start using NtHiM.

Method 2: Using Crates.io

NtHiM is available on Crates.io. So, if you have Rust installed on your system, you can simply install NtHiM with the following command:

cargo install NtHiM

Method 3: Manual Build

You will need Cargo to perform the manual build for NtHiM. If you have Cargo installed, you can simply follow the steps below:

  1. Clone this repository, git clone https://github.com/TheBinitGhimire/NtHiM;
  2. Go inside the folder, cd NtHiM;
  3. Use the cargo build command,
  4. Go inside the newly-created target folder, and open the debug folder inside it, cd target/debug;
  5. You will find NtHiM.exe (on Microsoft Windows) or NtHiM binary (on Linux).

The installation walkthrough for NtHiM has been uploaded to YouTube, covering all of these three methods, and you can watch the video here: How to Install and Use NtHiM (Now, the Host is Mine!)? Super Fast Sub-domain Takeover Detection!


Usage

Flag Description Example
-h Display help related to usage! NtHiM -h
-t Scan a single target! NtHiM -t https://example.example.com
-f Scan a list of targets from a file! NtHiM -f hostnames.txt
-c Number of Concurrent Threads! NtHiM -c 100 -f hostnames.txt
-V Display the version information! NtHiM -V

Use Case 1 (Single Target):

NtHiM -t https://example.example.com

Use Case 2 (Multiple Targets):

NtHiM -f hostnames.txt

Usage Demonstration:

NtHiM Usage Demonstration


Examples

Single Target

Single Target

Multiple Targets using Concurrent Threads

Multiple Targets using Concurrent Threads


Workflow

Platform Identification

NtHiM uses the data provided in EdOverflow/can-i-take-over-xyz for the platform identification.


Frequently Asked Questions (FAQs)

If you have any questions regarding NtHiM, please raise an issue by going to the Issues page.

Some of your queries might have been answered in one of the existing issues, so please make sure to check the Issues with the FAQ label before raising an issue on your own.


Contributions and Feature Requests

If you are interested in contributing in the development of NtHiM, you can feel free to create a Pull Request with modifications in the original code, or you shall open up a new issue, and I will try to include the feature as requested.

There is no restriction on anyone for contributing to the development of NtHiM. If you would like to contribute, you can feel free to do so.

Comments
  • thread 'main' panicked at 'Unable to open cache file!: Os { code: 24, kind: Other, message:

    thread 'main' panicked at 'Unable to open cache file!: Os { code: 24, kind: Other, message: "Too many open files" }', src/platforms.rs:37:53

    thread 'main' panicked at 'Unable to open cache file!: Os { code: 24, kind: Other, message: "Too many open files" }', src/platforms.rs:37:53

    when 100+ subs in a file.

    bug 
    opened by gprime31 14
  • [Bug] Crashes when passing huge list using -f

    [Bug] Crashes when passing huge list using -f

    The tool is crashing and results in the below error:

    thread 'main' panicked at 'a parsed Url should always be a valid Uri: InvalidUri(InvalidUriChar)', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/reqwest-0.10.10/src/into_url.rs:44:14 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace [2] 19988 abort NtHiM -f ~/monitor/data/subdom_url NtHiM -f ~/monitor/data/subdom_url 2.29s user 1.22s system 7% cpu 44.835 total

    image

    bug 
    opened by sumgr0 3
  • [Feature enhancement] Enumerate recursively of domain

    [Feature enhancement] Enumerate recursively of domain

    Hi, @TheBinitGhimire ,

    It will be much more awesome if NiHiM can enumerate the domain and its subdomain recursively.

    example NtHim -t https://*.example.com

    opened by Aju100 3
  • Increase platform detection

    Increase platform detection

    Hey,

    I am not good with rust but I noticed that you had the platform detection JSON hardcoded in platform.rs.

    It would be nice to provide a separate JSON file that will contain all the information. This way people can also use their custom list.

    If you want you can take a look at one of my tools i.e takeover in that I have a file named providers.json which was made by scraping the can-i-take-over-xyz repository's readme combining it with subjack's fingerprint.json and subOver's provider.json

    opened by mzfr 2
  • Support for multiple signatures/fingerprint for the same platform via JSON provided from https://git.io/signatures_json

    Support for multiple signatures/fingerprint for the same platform via JSON provided from https://git.io/signatures_json

    Please make content key to be iterated via JSON, and check the content through each iterated content making it look something like:

    {"platforms": [
          {
              "platform": "GitHub Pages",
              "content": [
    			"<p><strong>There isn't a GitHub Pages site here.</strong></p>",
                            "For root URLs (like http://example.com/) you must provide an index.html file"
    			]
    	},
    	{...},
    ]}
    

    Cheers!

    enhancement 
    opened by naryal2580 1
  • Accept invalid/self-signed SSL certificates

    Accept invalid/self-signed SSL certificates

    Hey @TheBinitGhimire,

    Fix for: https://twitter.com/WHOISbinit/status/1357018526171553792

    The issue was that the module reqwest doesn't allow connecting to a host with invalid/self-signed SSL certificates as it could introduce vulnerabilities (As mentioned in docs). But for use cases like this, we can override it with .danger_accept_invalid_certs().

    I believe this solves the issue as a whole. I tested with a random IP I found with invalid certificate and it doesn't reach Err(_).

    Screenshot from 2021-02-04 12-59-28

    Also compiles without any warnings too. :+1:

    Nice project and Good Luck! :raised_hands::heart:

    opened by mufeedvh 1
  • Update main.rs

    Update main.rs

    TLDR: Jhataro haneko, I don't even know r in Rust language :D

    Honestly, this was my first time seeing a rust code. Just googled stuff and copy pasted code. I don't even know if works or not.

    hehe

    opened by Prabesh01 1
  • Reduce match statement into an if-else statement

    Reduce match statement into an if-else statement

    match statements with only one useful arm can be reduced to an if-else statement. This helps improve readability, an if-else statement nests lesser than a match.

    Use the pattern of the single match arm as the pattern within an if let statement. The body of the wildcard arm resides within the else block.

    opened by raheel0x01 0
  • Allow user input fingerprint.json file

    Allow user input fingerprint.json file

    Instead of having a fixed fingerprint file, it would be more convenient to use a flag to parse the fingerprint.json file.

    The format for the json could be similar to the other Go-based tools to ensure ease and convenience to managing a single format.

    enhancement 
    opened by sumgr0 1
  • [FAQ] What to do if I get

    [FAQ] What to do if I get "failed to run custom build command for `openssl-sys v ...`" error?

    Some users might get an error that says the following:

    failed to run custom build command for `openssl-sys v ...`
    

    Due to this error, the Cargo build or installation process for NtHiM might be stopped. But, there is a fix for this issue, and it is clearly mentioned at the Docs.rs documentation for openssl, which can be found here: https://docs.rs/openssl/0.10.34/openssl/

    If you are one of the victims of this issue, then I would suggest you to use the following commands to resolve the issue for your respective platform.

    macOS (Homebrew)

    brew install [email protected]
    

    macOS (MacPorts)

    sudo port install openssl
    

    macOS (pkgsrc)

    sudo pkgin install openssl
    

    Arch Linux

    sudo pacman -S pkg-config openssl
    

    Debian and Ubuntu

    sudo apt-get install pkg-config libssl-dev
    

    Fedora

    sudo dnf install pkg-config openssl-devel
    

    By performing one of these actions, the issue might be resolved in your case. If this doesn't resolve the issue, please let me know!

    Thanks, Binit Ghimire (@TheBinitGhimire)

    FAQ 
    opened by TheBinitGhimire 3
Releases(0.1.4)
Owner
Binit Ghimire
I am a Tech Enthusiastic full-stack web developer, programmer and web/network penetration tester from Nepal.
Binit Ghimire
PubSubRT - an industrial pub/sub server

PubSubRT - an industrial real-time pub/sub server What is PSRT PSRT is a pub/sub real-time telemetry protocol, optimized for industrial needs: providi

Altertech 87 Jan 2, 2023
An application for downloading public domain ebooks from irc.

An application for downloading public domain ebooks from irc. Despite the name it is not to be used for illegal activities and I am in no way responsible for any such use.

null 33 Nov 25, 2022
Implementation of algorithms for Domain Name System (DNS) Cookies construction

DNS Cookie RFC7873 left the construction of Server Cookies to the discretion of the DNS Server (implementer) which has resulted in a gallimaufry of di

Rushmore Mushambi 2 Feb 4, 2022
A super minimal wrapper around unix sockets for IPC on top of tokio.

tokio-unix-ipc This crate implements a minimal abstraction over UNIX domain sockets for the purpose of IPC on top of tokio.

Armin Ronacher 26 Nov 18, 2022
A super naive, (possibly unreliable), VPN implementation.

Poor Man's VPN A super naive, (possibly unreliable), VPN implementation. Try on Docker Containers You can test the VPN on docker containers. up.sh scr

algon 2 Sep 7, 2022
Super simple tokio chat server for educational purposes.

achat A collection of simple modules which showcase simple use of tasks, channels, and other tokio primitives to implement simple networking applicati

Rafael Bachmann 2 Dec 29, 2022
Simple and fast layer 4 proxy in Rust

Fourth 这一波在第四层。 English Fourth是一个Rust实现的Layer 4代理,用于监听指定端口TCP流量,并根据规则转发到指定目标。 功能 监听指定端口代理到本地或远端指定端口 监听指定端口,通过TLS ClientHello消息中的SNI进行分流 安装方法 为了确保获得您架构

Rui Li 17 Nov 8, 2022
Fast User-Space TCP/UDP Stack

Catnip Catnip is a TCP/IP stack that focuses on being an embeddable, low-latency solution for user-space networking. Building and Running 1. Clone Thi

Demikernel 79 Sep 9, 2022
A fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption

A fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption

editso 1.3k Dec 30, 2022
A fast and stable reverse proxy for NAT traversal, written in Rust

rathole A fast and stable reverse proxy for NAT traversal, written in Rust rathole, like frp, can help to expose the service on the device behind the

Yujia Qiao 4.6k Dec 30, 2022
RCProxy - a lightweight, fast but powerful Redis Cluster Proxy written in Rust

RCProxy - a lightweight, fast but powerful Redis Cluster Proxy written in Rust

Cris Liao 16 Dec 4, 2022
Fast Discord RPC Client written in Rust

Discord RPC Client Examples Big image, small image, details and one button discordrpc -c 942151169185316874 -d 'untypeable nickname' --button-1-text '

Oskar 10 Jan 1, 2023
Fast and easy-to-use event-driven network library.

message-io is a fast and easy-to-use event-driven network library. The library handles the OS socket internally and offers a simple event message API

Luis Enrique Muñoz Martín 830 Jan 3, 2023
A fast, offline reverse geocoder in Python

Reverse Geocoder A Python library for offline reverse geocoding. It improves on an existing library called reverse_geocode developed by Richard Penman

Ajay Thampi 1.8k Dec 26, 2022
Web3-proxy: a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.

web3-proxy Web3-proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers. Signed transactions (eth_sendRawTrans

null 55 Jan 8, 2023
Self-hosted, fast, and efficient replacement for ngrok, built with Rust

reverse-proxy reverse-proxy is a self-hosted, fast, and efficient replacement for ngrok, built with Rust. The project leverages the power of Tokio and

null 4 May 22, 2023
Hopper - Fast, configurable, lightweight Reverse Proxy for Minecraft

Hopper Hopper is a lightweight reverse proxy for minecraft. It allows you to connect multiple servers under the same IP and port, with additional func

Pietro 174 Jun 29, 2023
A Lightning-Fast DNS Resolver written in Rust 🦀

dnsresolver A Lightning-Fast DNS Resolver Table of Contents Installation Usage Basic Usage Resolving Hosts with Ports Virtual Host Enumeration Using U

zoidsec 47 Nov 8, 2023
A simple ping utility written in Rust, that is focused on being size efficient and fast.

MeowPing MeowPing is a command-line utility for testing network connectivity using ICMP echo requests or TCP connections. It provides similar function

enty 3 Feb 28, 2024