// GO言語はポートスキャンを実装します //欠陥 //ポートをグローバル変数として設定できません。設定方法がわかりません // var l = list.New()これは配列操作であり、メッセージキューではありません、これはメッセージキュー関数に似ています //実装関数 // IPセグメント生成を 実装します// ポートスキャンを実装します //パラメータ 入力を実装します//ファイルをローカルに書き込みます//main.go 58.215.20.30 58.215.201.30 80 //ファイル名前開始IP終了IPスキャンポート // QQ29295842希望もっと多くの友達 と知り合う技術交流// QQグループ367196336go golangWEBセキュリティ開発 //ブログhttp://hi.baidu.com/alalmnpackage main import( "container / list " " fmt " " net " " os " " strconv " " strings " " time " ) func ip2num(ip string)int { lisit:= strings.FieldsFunc(ip、canSplit)// [58 215 20 30] //fmt.Println(lisit)ip1_str_int、_:= strconv.Atoi(lisit [0]) ip2_str_int、_:= strconv.Atoi(lisit [1]) ip3_str_int、_:= strconv.Atoi(lisit [2]) ip4_str_int、_:= strconv.Atoi(lisit [3]) return ip1_str_int << 24 | ip2_str_int << 16 | ip3_str_int << 8 | ip4_str_int } func num2ip(num int)string { ip1_int:=(num&0xff000000)>> 24 ip2_int:=(num&0x00ff0000)>> 16 ip3_int:=(num&0x0000ff00)>> 8 ip4_int:= num&0x000000ff / /fmt.Println(ip1_int)data:= fmt.Sprintf( "%d。%d。%d。%d"、ip1_int、ip2_int、ip3_int、ip4_int) func gen_ip(Aip1 int、 } for index <Aip2 { //fmt.Println(num2ip(index))// 入队、圧栈 ip_data:= num2ip(index) // fmt.Println(ip_data)l.PushBack(ip_data) index ++ } } func text_add( name string、data string){//向文件中写入数データtext_add( "file2.txt"、 "qqqqqqqqqqqqqqqqqqqqqqq") f、err:= os.OpenFile(name、os.O_RDWR | os.O_CREATE | os.O_APPEND、 0x644) if err!= nil { panic(err) } defer f.Close() _、err = f.WriteString(data) _、err = f.WriteString( "\ r \ n") if err!= nil { panic(err) } } //text_add("file2.txt "、" qqqqqqqqqqqqqqqqqqqqqqq ") var l = list.New() func socket_ip(host string、port string)bool { var( remote = host +": "+ port ) tcpAddr、_:= net.ResolveTCPAddr( "tcp4"、remote)//変換换IP格式// fmt.Printf( "% s"、tcpAddr) conn、err:= net.DialTCP( "tcp"、nil、tcpAddr)//查番成功iferr != nil { fmt.Printf( "no ==%s:%s \ r \ n"、host、port) return false } defer conn.Close() fmt.Printf( "ok ==%s: %s \ r \ n "、host、port) return true } func for_ip(port string){ now:= time.Now()Now() 年、月、日:= now.UTC()。Date() file_name:= fmt.Sprintf( "%d-%d-%d_%s"、year、mon、day、port) for {// エンドレスループifl.Len()<= 0 { fmt.Println( "out Loop ") break //#Bounce out } //前回の読み取りから i1をデキューします:= l.Front() l.Remove(i1) IP、_:= i1.Value。(string) if socket_ip(IP、port) { // OK //現在の日付をファイル名として取得し、IPを text_add(file_name + "_ ok.txt"、IP)に書き込みます } // else { // text_add(file_name + "_ no.txt"、IP) // } time .Sleep(time.Millisecond * 500)//単位としてのナノ秒 } } func main(){ argsLen:= len(os.Args) // fmt.Println (argsLen) if argsLen!= 4 { fmt.Println( "main.go 58.215.20.30 58.215.201.30 80") } else { gen_ip(ip2num(os.Args [1])、ip2num(os.Args [2])) for index:= 0; インデックス<200; index ++ { go for_ip(os.Args [3]) } for { time.Sleep(1 * time.Second)//纳秒是単位 } } }
GO言語はポートスキャンを実現します
おすすめ
転載: blog.csdn.net/benli8541/article/details/112707214
おすすめ
ランキング