https://github.com/lcvvvv/gomasscan
gomasscan是一个纯go编写的masscan扫描库
https://github.com/lcvvvv/gomasscan
go masscan scanner
Last synced: 9 months ago
JSON representation
gomasscan是一个纯go编写的masscan扫描库
- Host: GitHub
- URL: https://github.com/lcvvvv/gomasscan
- Owner: lcvvvv
- Created: 2022-06-03T04:05:47.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-06-03T14:22:41.000Z (over 3 years ago)
- Last Synced: 2024-06-18T23:07:07.306Z (over 1 year ago)
- Topics: go, masscan, scanner
- Language: Go
- Homepage:
- Size: 20.5 KB
- Stars: 79
- Watchers: 5
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gomasscan
gomasscan是一个纯go编写的masscan扫描库
## 前提
- 只支持darwin/linux
- 需要高权限
- 需要安装libpcap
## 写在前面
- 部署PF_RING DNA设备的情况下,理论发包量可以达到到1000万/秒
- darwin上的理论发包量能够达到30万/秒,linux则能达到150万
- darwin上实测,发包量可以达到14万/秒,linux暂未测试,为什么会存在这样的折扣,原因未知
## 使用
```go
package main
import (
"fmt"
"github.com/lcvvvv/gomasscan"
"time"
)
func main() {
//创建扫描器对象
client, err := gomasscan.NewScanner()
if err != nil {
panic(err)
}
defer client.Done()
//开放端口处理函数
client.HandlerOpen = func(ip string, port int) {
//输出开放端口
fmt.Println(ip, port)
}
//将IP地址加入筛选范围内
var ip = "192.168.0.1"
var startTime = time.Now()
_ = client.Add(ip)
//开始扫描
go func() {
for i := 0; i < 65536; i++ {
client.SendSYN(ip, i, gomasscan.SYN)
}
}()
for {
time.Sleep(time.Second)
elapsed := time.Since(startTime)
seconds := elapsed.Seconds()
fmt.Println("发包量", client.Count()/uint64(seconds), "/s")
}
}
```
## 感谢
- [naabu](https://github.com/projectdiscovery/naabu)
- [masscan](https://github.com/zan8in/masscan)