相思资源网 Design By www.200059.com

复制代码 代码如下:
//GO语言  实现端口扫描
    //缺陷
    //port  无法设置成全局变量不知道怎么设置的
    //var l = list.New()   这个是数组操作并不是消息队列    跟消息队列功能类似

    //实现功能
    //实现生成 IP段
    //实现端口扫描
    //实现参数传入
    //写入文件到本地
    //main.go 58.215.20.30 58.215.201.30 80
    //文件名 开始IP 结束IP 扫描端口
    //QQ29295842   希望认识更多的朋友技术交流
    //QQ群367196336   go   golang WEB安全开发
    package main

    import (
        "container/list"
        "fmt"
        "net"
        "os"
        "strconv"
        "strings"
        "time"
    )

    func ip2num(ip string) int {
        canSplit := func(c rune) bool { return c == '.' }
        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)
        return data
    }

    func gen_ip(Aip1 int, Aip2 int) {
        index := Aip1
        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) //查看是否连接成功
        if err != 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()
        year, mon, day := now.UTC().Date()
        file_name := fmt.Sprintf("%d-%d-%d_%s", year, mon, day, port)
        for { //死循环
            if l.Len() <= 0 {
                fmt.Println("跳出循环")
                break //#跳出
            }
            // 出队  从前读取
            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; index < 200; index++ {
                go for_ip(os.Args[3])
            }
            for {
                time.Sleep(1 * time.Second) //纳秒为单位
            }

        }
    }

标签:
GO语言,端口扫描器

相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com

评论“GO语言实现的端口扫描器分享”

暂无GO语言实现的端口扫描器分享的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。