//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) //纳秒为单位 }
} }
本文向大家介绍python 3.6.7实现端口扫描器,包括了python 3.6.7实现端口扫描器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python 3.6.7端口扫描器的具体代码,供大家参考,具体内容如下 环境:python 3.6.7 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍python 实现端口扫描工具,包括了python 实现端口扫描工具的使用技巧和注意事项,需要的朋友参考一下 以上就是python 实现端口扫描工具的详细内容,更多关于python 端口扫描工具的资料请关注呐喊教程其它相关文章!
这一章将会演示如何通过Python的网络连接来开发一个基础的端口扫描器,我们的设计思路是使用socket一遍又一遍的去连接ip与端口的组合的新值,为了方面我们能够快速的完成它,首先需要介绍一点新的概念,for循环: >>> >>> for port in range(1000,1024): ... print "[+] The port is: "+str(port) ... [+] The
本文向大家介绍Python实现简易端口扫描器代码实例,包括了Python实现简易端口扫描器代码实例的使用技巧和注意事项,需要的朋友参考一下 在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧。 使用效果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍python实现多线程端口扫描,包括了python实现多线程端口扫描的使用技巧和注意事项,需要的朋友参考一下 一个简易的TCP端口扫描器,使用python3实现。 需求:扫描目标网站开放哪些端口号,将所有开放的端口号输出。 分析:使用socket连接,如果连接成功,认为端口开放,如果连接失败,认为端口关闭(有可能端口开放但连接失败,这里简单认为端口不开放) 使用到的库:socket,
主要内容:接口被实现的条件一:接口的方法与实现接口的类型方法格式一致,接口被实现的条件二:接口中所有方法均被实现如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。 实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代码中显式地表示出来。Go语言中没有类似于 implements 的关键字。 Go编译器将自动在需要的时候检查两个类型之间的实现关系。 接口定义后,需要实现接口,调用方才能正确编译通