Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
nmap — Libreria Go idiomatica per invocare un binario scanner di rete, che consente la scoperta degli host, la scansione delle porte, il rilevamento di servizi/OS e controlli di vulnerabilità tramite script per l'audit di sicurezza. | Kitploit
Strumenti/GitHubGitHub/ullaakut/nmap
Mappatura della ReteScansione PorteAnalisi delle VulnerabilitàRaccolta InformazioniSicurezza di RetePenetration Testing
GitHubullaakut/nmap

nmap

Libreria Go idiomatica per invocare un binario scanner di rete, che consente la scoperta degli host, la scansione delle porte, il rilevamento di servizi/OS e controlli di vulnerabilità tramite script per l'audit di sicurezza.

Vedi Repository
1.0k11828 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

nmap

PkgGoDev github.com/Ullaakut/nmap/v4 Coverage Status

Questa libreria mira a fornire binding idiomatici di nmap per gli sviluppatori Go, al fine di rendere più semplice scrivere strumenti di security audit usando golang.

Cos'è nmap

Nmap (Network Mapper) è uno scanner di rete gratuito e open-source creato da Gordon Lyon. Nmap viene utilizzato per scoprire host e servizi su una rete informatica inviando pacchetti e analizzando le risposte.

Nmap offre una serie di funzionalità per esplorare reti informatiche, tra cui la scoperta degli host e il rilevamento di servizi e sistemi operativi. Queste funzionalità sono estensibili tramite script che forniscono un rilevamento dei servizi più avanzato, l'individuazione delle vulnerabilità e altre funzionalità. Nmap può adattarsi alle condizioni della rete, inclusi latenza e congestione, durante una scansione.

Perché usare Go per i penetration test

La maggior parte degli strumenti di pentest è attualmente scritta in Python e non in Go, perché è facile scrivere rapidamente script, sono disponibili molte librerie ed è un linguaggio semplice da usare. Tuttavia, per scrivere applicazioni robuste e affidabili, Go è lo strumento migliore. È compilato staticamente, ha un sistema di tipi statico, prestazioni molto migliori, è anche un linguaggio molto semplice da usare e le goroutine sono fantastiche... Ma potrei essere leggermente di parte, quindi sentiti libero di non essere d'accordo.

Come funziona

Questa libreria esegue il binario nmap tramite il pacchetto exec di Go e analizza l'output XML. Ciò significa che nmap deve essere installato e disponibile nel tuo PATH affinché questa libreria funzioni.

La compatibilità è confermata con l'attuale ultima versione di nmap, 7.98.

Privilegi

Alcuni tipi di scansione richiedono privilegi elevati (ad esempio, le scansioni SYN, il rilevamento del sistema operativo o l'uso di socket raw). Se abiliti queste opzioni, potresti dover eseguire il tuo programma con sudo o con le capacità appropriate per la tua piattaforma.

[!TIP] Per esecuzioni senza privilegi, preferisci le scansioni di connessione (ad es. -sT).

Esempi

Scansione sincrona

root@kitploit:~
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Ullaakut/nmap/v4"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
	defer cancel()

	// Equivalent to `/usr/local/bin/nmap -p 80,443,843 google.com facebook.com youtube.com`,
	// with a 5-minute timeout.
	scanner, err := nmap.NewScanner(
		nmap.WithTargets("scanme.nmap.org"),
		nmap.WithPorts("80,443,843"),
	)
	if err != nil {
		log.Fatalf("creating nmap scanner: %v", err)
	}

	result, err := scanner.Run(ctx)
	if err != nil {
		log.Fatalf("running network scan: %v", err)
	}

	warnings := result.Warnings()
	if len(warnings) > 0 {
		log.Printf("warning: %v\n", warnings) // Warnings are non-critical errors from nmap.
	}

	// Use the results to print an example output
	for _, host := range result.Hosts {
		if len(host.Ports) == 0 || len(host.Addresses) == 0 {
			continue
		}

		fmt.Printf("Host %q:\n", host.Addresses[0])

		for _, port := range host.Ports {
			fmt.Printf("\tPort %d/%s %s %s\n", port.ID, port.Protocol, port.State, port.Service.Name)
		}
	}

	fmt.Printf("Nmap done: %d hosts up scanned in %.2f seconds\n", len(result.Hosts), result.Stats.Finished.Elapsed)
}

Il programma sopra produce il seguente output:

root@kitploit:~
Host "45.33.32.156":
	Port 80/tcp open http
	Port 443/tcp closed https
	Port 843/tcp closed 
Nmap done: 1 hosts up scanned in 0.42 seconds

Scansione sincrona con avanzamento (solo TTY)

[!IMPORTANT] Questo si basa su sequenze di escape del terminale e funziona solo quando il processo è collegato a una TTY.

[!NOTE] Non è garantito che l'avanzamento aumenti in modo monotono: nmap stima il tempo rimanente e può rivedere tale stima, il che può causare una diminuzione della percentuale riportata.

root@kitploit:~
package main

import (
	"context"
	"log"
	"time"

	"github.com/Ullaakut/nmap/v4"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
	defer cancel()

	scanner, err := nmap.NewScanner(
		nmap.WithTargets("scanme.nmap.org"),
		nmap.WithPorts("1-1024"),
		nmap.WithTimingTemplate(nmap.TimingAggressive),
		nmap.WithProgress(time.Second, handleProgress),
	)
	if err != nil {
		log.Fatalf("creating nmap scanner: %v", err)
	}

	_, err = scanner.Run(ctx)
	if err != nil {
		log.Fatalf("running network scan: %v", err)
	}
}

func handleProgress(p nmap.TaskProgress) {
	log.Println("Current progress: ", p.Percent)
}

Questo esempio produce il seguente output:

root@kitploit:~
2026/01/27 16:13:02 task "Connect Scan": 2.59% remaining 38
2026/01/27 16:13:02 task "Connect Scan": 21.26% remaining 4
2026/01/27 16:13:04 task "Connect Scan": 42.61% remaining 5
2026/01/27 16:13:04 task "Connect Scan": 45.51% remaining 4
2026/01/27 16:13:05 task "Connect Scan": 53.44% remaining 4
2026/01/27 16:13:07 task "Connect Scan": 59.77% remaining 5
2026/01/27 16:13:07 task "Connect Scan": 62.77% remaining 4
2026/01/27 16:13:08 task "Connect Scan": 73.24% remaining 3
2026/01/27 16:13:09 task "Connect Scan": 81.71% remaining 2
2026/01/27 16:13:10 task "Connect Scan": 92.92% remaining 1
2026/01/27 16:13:11 task "Connect Scan": 100.00% remaining 0

Scansione asincrona

root@kitploit:~
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Ullaakut/nmap/v4"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
	defer cancel()

	scanner, err := nmap.NewScanner(
		nmap.WithTargets("scanme.nmap.org"),
		nmap.WithPorts("1-1024"),
	)
	if err != nil {
		log.Fatalf("creating nmap scanner: %v", err)
	}

	stdout, stderr, resultCh, err := scanner.RunAsync(ctx)
	if err != nil {
		log.Fatalf("running network scan: %v", err)
	}

	for {
		select {
		case <-ctx.Done():
			log.Fatalf("scan timed out: %v", ctx.Err())
		case out := <-stdout:
			fmt.Printf("nmap output: %s\n", out)
		case errOut := <-stderr:
			fmt.Printf("nmap error output: %s\n", errOut)
		case result := <-resultCh:
			if result.Err != nil {
				log.Fatalf("running network scan: %v", result.Err)
			}

			fmt.Printf("Nmap done: %d hosts up\n", len(result.Result.Hosts))
			return
		}
	}
}

Altri esempi

Consulta la directory examples per altri esempi di utilizzo.

Esempio avanzato

Cameradar utilizza già questa libreria al suo interno per comunicare con nmap, scoprire stream RTSP e accedervi da remoto.

Altri esempi:

  • Scansione di base
  • Conta gli host per ciascun sistema operativo su una rete
  • Rilevamento dei servizi
  • Spoofing di indirizzi IP e decoy
  • Elenca le interfacce locali

Risorse esterne

  • Documentazione ufficiale di nmap
  • Guida di riferimento di Nmap
Scarica lo strumento