🗒️go学习—端口扫描
2024-1-24
| 2024-1-24
字数 1691阅读时长 5 分钟
type
status
date
slug
summary
tags
category
icon
password
💡
参考google出的文章代码。https://learnku.com/articles/76670

基础版本

  • net.Dial("tcp", address)
    • 连接指定的 TCP 地址。如果连接成功,该函数会成功建立连接并返回一个非空的conn(连接对象),同时err的值为nil。如果连接失败,则返回一个非空的err,表示连接无法建立。
  • netip := net.ParseIP(ip)
    • 将字符串形式的IP地址(变量ip)解析为net.IP类型的对象(变量netip)。
      net.IP是Go语言中表示IP地址的数据类型,而net.ParseIP()则用于从字符串解析并创建一个对应的IP对象。如果解析成功,netip将包含解析得到的IP地址,如果解析失败,则netipnil
  • start := time.Now() // 获取当前时间 cost := time.Since(start) // 自start开始至此行代码运行的时间
    • 这俩行代码计算扫描时间
 
以下代码扫描127.0.0.1:1-10000端口用于测试:
花费1.5秒
notion image
notion image

使用goroutine(并发)

用一个小脚本解释这种并发,看内部注释即可
go func(n int) {}(num) 表示创建一个匿名的goroutine,并且在goroutine内部执行一个函数。将变量 num 传递给匿名函数,也就是定义的n值。
使用并发的脚本:
花费946.9456ms
notion image

使用goroutine和单通道channel

这个脚本通过控制带缓冲通道 的数量控制并发的速度,相比于上一个脚本更加的灵活
一般来说,这个值越大,程序越快。
代码都是基础,通读一遍懂逻辑即可。
notion image
 
  • 脚本编程
  • crapi安全靶场环境go学习—基础
    Loading...