本go 先讀取yaml格式的ip列表,先對ip進行ping一次,如果不通,就不做掃瞄了。掃瞄結果儲存在result_.log 檔案
yaml 格式栗子:
ip:
- 192.168.1.241
- 192.168.1.242
- 192.168.1.243
- 192.168.1.244
- 192.168.1.240
直接上**
package main
import (
"bytes"
"encoding/binary"
"flag"
"fmt"
"io/ioutil"
"log"
"net"
"os"
"strconv"
"strings"
"time"
"gopkg.in/yaml.v2"
)var icmp icmp
//定義ping 輸入型別
type icmp struct
//掃瞄位址
var ipaddrs chan string = make(chan string)
//掃瞄結果
var result chan string = make(chan string)
//var presult chan string = make(chan string)
//執行緒數
var thread chan int = make(chan int)
var nowthread int
//關閉程式
var clo chan bool = make(chan bool)
//定義ip型別
type ip struct
//儲存結果
func writeresult()
defer fout.close()
s, ok := <-result
for ok
//通知程序退出
clo <- true
}//根據執行緒引數啟動掃瞄線程
func runscan()
} //等待執行緒終止
for <-thread == 0 }}
//掃瞄線程
func scan(threadid string)
s, ok = <-ipaddrs
} fmt.println("[thread-" + threadid + "] end")
thread <- 0
}//載入ip配置檔案
func openfile() string
var p ip
if err = yaml.unmarshal(bytes, &p); err != nil
ips = p.iplist
return ips
}//處理引數
func processflag(arg string)
if len(tmpports) >= 2
} else
for i := 0; startport+i <= endport; i++
} else
} }t, err := strconv.atoi(os.args[3])
//t, err := arg[3]
if err != nil
//最大執行緒5048
if t < 1 else if t > 5048
//傳送啟動執行緒數
thread <- t
//生成掃瞄位址列表
ips := openfile()
il := len(ips)
for i := 0; i < il; i++
} else
} close(ipaddrs)
}//isping 檢查網路函式
func isping(ip string) bool
_, err = conn.write(buffer.bytes())
if err != nil
conn.setreaddeadline(time.now().add(time.second * 2))
num, err := conn.read(recvbuf)
if err != nil
conn.setreaddeadline(time.time{})
if string(recvbuf[0:num]) != ""
return false
}//check 輸入資料
func checksum(data byte) uint16
if length > 0
sum += (sum >> 16)
return uint16(^sum)
}//執行程式
func main()
//獲取引數
args := make(string, 0, 4)
for i := 0; i < flag.narg(); i++
//啟動掃瞄線程
go runscan()
//啟動結果寫入執行緒
go writeresult()
//引數處理
processflag(args)
//等待退出指令
<-clo
fmt.println("exit")
}
編譯好後執行。
用法:./pscanport ip.yaml 1-65535 2000
引數說明 1:ip列表檔案,2:埠範圍,3:開啟併發數
這裡有編譯好的包。
Python開發埠掃瞄器
首先是最常用的埠掃瞄器 雖說有nmap等強大的工具,不過如果由於條件限制無法安裝nmap呢?我這個指令碼寫的比較簡單,預設掃瞄1 65535全部的埠 實際的話,可以根據需要自己修改指令碼來實現定製化掃瞄 coding utf 8 author yiqing import socket import ...
TCPing 埠掃瞄工具
描述在本地主機和遠端主機之間,tcping可以測試出執行tcp三次握手所需的時間 syn,syn ack,ack 最終ack傳送時間不包括在內,只有最少的時間才能將其丟棄在近端的電線。概要 tcping tdsvf46 i interval n times w interval b n r time...
Go埠掃瞄器
這次呢,咱們來實現乙個簡單的tcp埠掃瞄器!也來體驗一下黑客的風采!我們在使用tcp進行連線時,需要知道對方機器的ip port 連線成功的話,流程如下。有正常,就有失敗,如果被連線方關閉的話,流程如下。還有一種可能是,埠開放,但是 防火牆攔截,流程如下。本質理解之後,就可以開始擼 了。在go中,我...