请选择 进入手机版 | 继续访问电脑版

4Ameta

 找回密码
 立即注册
搜索
查看: 94|回复: 0

Basic teaching of golang hacker technology【1】Scan target server port

[复制链接]

26

主题

26

帖子

119

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119
发表于 2022-9-13 00:47:10 | 显示全部楼层 |阅读模式
Basic teaching of golang hacker technology【1】Scan target server port

Only for just defense test, don't do evil


  1. package main
  2. import "fmt"
  3. import "sync"

  4. func worker(ports chan int , wg *sync.WaitGroup){
  5.     for p:= range ports{
  6.         fmt.Println(p)
  7.         wg.Done()
  8.      }
  9. }

  10. func main(){
  11.         ports := make(chan int ,100)
  12.         var wg sync.WaitGroup
  13.         for i:=1; i<=1024; i++{
  14.                 go worker(ports,&wg)
  15.         }
  16.         for i:=1; i<= 1024 ; i++{
  17.                 wg.Add(1)
  18.                 ports <- i
  19.         }
  20.         wg.Wait()
  21.         close(ports)
  22. }
复制代码




Golang's channels have the following characteristics:
It's like a container,
Each statement can flow in or pop out an element,
Asynchronous,
You can wait for the assembly to complete



  1. package main
  2. import(
  3.         "fmt"
  4.         "net"
  5.         "sort"
  6. )

  7. func worker(ports , results chan int){
  8.         for p := range ports{
  9.                 address := fmt.Sprintf("scanme.nmap.org:%d",p)
  10.                 conn , err := net.Dial("tcp",address)
  11.                 if err !=nil{
  12.                         results <- 0
  13.                         continue
  14.                 }
  15.                 conn.Close()
  16.                 results <-p
  17.         }
  18. }

  19. func main(){
  20.         ports := make(chan int,100)
  21.         results :=make(chan int)
  22.         var openports []int

  23.         for i :=0; i <cap(ports);i++{
  24.                 go worker(ports , results)
  25.         }

  26.         go func(){
  27.                 for i:=1;i<=1024;i++{
  28.                         ports <-i
  29.                 }
  30.         }()

  31.         for i:=1;i<=1024;i++{
  32.                 port := <-results
  33.                 if port !=0{
  34.                         openports = append(openports,port)
  35.                 }
  36.         }
  37.         close(ports)
  38.         close(results)
  39.         sort.Ints(openports)
  40.         for _,port := range openports{
  41.                 fmt.Printf("%d open\n",port)
  42.         }
  43. }
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|4ameta

GMT+8, 2022-10-4 12:27 , Processed in 0.035695 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表