PHPackages                             kazemisoroush/ntm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. kazemisoroush/ntm

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

kazemisoroush/ntm
=================

Network topology mapper with Laravel 5.

v1.2(8y ago)6296[1 issues](https://github.com/kazemisoroush/ntm/issues)MITPHPPHP &gt;=5.3.0

Since Nov 4Pushed 7y ago2 watchersCompare

[ Source](https://github.com/kazemisoroush/ntm)[ Packagist](https://packagist.org/packages/kazemisoroush/ntm)[ RSS](/packages/kazemisoroush-ntm/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (4)Dependencies (5)Versions (5)Used By (0)

Network Topology Mapper
=======================

[](#network-topology-mapper)

Network topology mapper with Laravel 5. This package runs an Nmap scan on input hosts and networks, parses and populates the database with extracted values. First you must add service provider into your `app.php` config file.

```
'providers' => [
    ...
    Ntcm\Ntm\NtmServiceProvider::class
    ...
]
```

Then you must publish config files. This will copy `ntm.php` config file inside your config directory.

```
$ php artisan vendor:publish

```

Before doing the migrations, you can customize your table names inside `ntm.php` file in your config directory. With no config file and by default all tables are prefixed with `mapper_`. After that do the database migration.

```
$ php artisan migrate

```

Now you can run a scan like so:

```
use Ntcm\Ntm\Ntm;

$targets = 'scanme.nmap.org';

Ntm::create()
   ->setTimeout(60) // in seconds...
   ->scan($targets)
   ->parseOutputFile();
```

This will scan the host inside a `1.xml` file and store the parsed information into the database with `scan_id = 1`. You can also input an array of targets like so:

```
$targets = ['scanme.nmap.org', '192.168.101.0/24'];

Ntm::create()
   ->setTimeout(60)
   ->scan($targets)
   ->parseOutputFile();
```

Besides you can enable / disable different scan attributes. These are the default values for the attributes.

```
$targets = ['scanme.nmap.org', '192.168.101.0/24'];

Ntm::create()
   ->setTimeout(60)
   ->scan($targets)
   ->setTraceroute(true)
   ->setReverseDns(true)
   ->setPortScan(true)
   ->setOsDetection(true)
   ->setServiceInfo(true)
   ->setVerbose(false)
   ->setTreatHostsAsOnline(true)
   ->parseOutputFile();
```

Scan Command
------------

[](#scan-command)

You can run a scan using `ScanCommand` class like so:

```
$targets = ['scanme.nmap.org', '192.168.101.0/24'];

// call scan artisan command...
Artisan::call('scan', [
  'targets'     => $targets,
  '--os'        => true, // to enable operating system scan...
  '--ports'     => true, // to enable well-known TCP ports...
  '--scheduled' => '0 1,13 * * * *' // you can use this to schedule the scan...
]);
```

Scheduled Scan
--------------

[](#scheduled-scan)

You can schedule your scans by adding this code to `schedule` method of your `App\Console\Kernel` class:

```
    /**
     * Define the application's command schedule.
     *
     * @param Schedule $schedule
     *
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        foreach(Target::scheduled()->get() as $target) {
            $schedule
                ->command('scan', [
                    'ranges'  => $target->range,
                    '--os'    => $target->ports,
                    '--ports' => $target->os,
                ])
                ->cron($target->scheduled);
        }
    }
```

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance17

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 98.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

4

Last Release

3150d ago

Major Versions

v0.2-alpha → v1.02017-11-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/e6a152bfc2f2f57a2657dc49dce5b7da9990debd06df42c0083f5b53765cffee?d=identicon)[kazemisoroush](/maintainers/kazemisoroush)

---

Top Contributors

[![kazemisoroush](https://avatars.githubusercontent.com/u/8931595?v=4)](https://github.com/kazemisoroush "kazemisoroush (292 commits)")[![JG91](https://avatars.githubusercontent.com/u/24375675?v=4)](https://github.com/JG91 "JG91 (5 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/kazemisoroush-ntm/health.svg)

```
[![Health](https://phpackages.com/badges/kazemisoroush-ntm/health.svg)](https://phpackages.com/packages/kazemisoroush-ntm)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k532.1M19.4k](/packages/laravel-framework)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.1k91.3M282](/packages/laravel-horizon)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751284.3k37](/packages/civicrm-civicrm-core)[illuminate/process

The Illuminate Process package.

44813.9k97](/packages/illuminate-process)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9417.2k55](/packages/open-dxp-opendxp)[japanese-date/japanese-date

日本の暦、祝日を取り扱うライブラリ

169.9k](/packages/japanese-date-japanese-date)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
