GithubHelp home page GithubHelp logo

justintimperio / gomap Goto Github PK

View Code? Open in Web Editor NEW
84.0 5.0 18.0 185 KB

A fully self-contained Nmap like parallel port scanning module in pure Golang that supports SYN-ACK (Silent Scans)

License: MIT License

Go 100.00%
nmap portscanner golang parallel port-scanner service-discovery syn-ack portscan gomap scanning

gomap's People

Contributors

justintimperio avatar lu4p avatar schmenn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gomap's Issues

Feature: Scan all possible ports

Additionally, for my solution to #11 I expanded the "slow" scan (i.e. fastscan==false) option so it scans all 65536 ports. This does take longer (6.5 minutes in my case) but that is still short enough to be useful. So maybe there are three options instead of two:
fastscan: 72 common ports
mediumscan: 3000+ less common ports
fullcan: all 65536 possible ports

Feature request: sort results by port #

I've created a local version that modifies func (results *IPScanResult) String() string so that it sorts the result table by port number.

I find this handy for scanning a large list of open ports.

I can supply a PR if you like.

Unlikely to Support UDP Port Scan

Just a cursory look at the implementation of the code, I reckon the UDP port scan would not work just because of how UDP protocol works. If the the code dials the target with UDP protocol e.g. conn, err = net.Dial("udp", raddr), there will not be any error message from the target server just because UDP is connectionless. A server will only reply when a "meaningful" packet is sent to the UDP port on the target. For more info - https://serverfault.com/a/416269

By the current way of checking for open/close UDP port i.e. presence of error dialing the target, all UDP ports would be open. Which defeats the purpose of a port scan.

Alternatively, can refer to how nmap implements its UDP probe - https://nmap.org/book/scan-methods-udp-scan.html

Distinguish between open/refused/timeout

In my local copy I've made modifications so that the portResult distinguishes between these three cases:
Connect OK - LISTEN process on the other end made a connection
Timeout - Firewall blocked connection
Connection Refused - Firewall did not block connection, but no LISTENing process on the other end. Thus this port could be used for a new server process

I find this handy because I don't want to have to open new ports in the firewall, and so I need to see what ports are open without having to run a listening process on all ports.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.