代码清单2-3完整的端口扫描器

package main

import (

"fmt"

"net"

)

func main() {

for i := 1; i <= 1024; i++ {

address := fmt.Sprintf("172.23.190.244:%d", i)

conn, err := net.Dial("tcp", address)

if err != nil {

continue

}

conn.Close()

fmt.Printf("%d open\n", i)

}

}

代码清单2-7基本的worker池

package main

import (

"fmt"

"sync"

)

func worker(ports chan int, wg *sync.WaitGroup) {

for p := range ports {

fmt.Println(p)

wg.Done()

}

}

func main() {

ports := make(chan int, 100)

var wg sync.WaitGroup

for i := 0; i < cap(ports); i++ {

go worker(ports, &wg)

}

for i := 0; i <= 1024; i++ {

wg.Add(1)

ports <- i

}

wg.Wait()

close(ports)

}

代码清单2-8使用多通道进行端口扫描

package main

import (

"fmt"

"net"

"sort"

)

func worker(ports, result chan int) {

for p := range ports {

address := fmt.Sprintf("172.23.190.244:%d", p)

conn, err := net.Dial("tcp", address)

if err != nil {

result <- 0

continue

}

conn.Close()

result <- p

}

}

func main() {

ports := make(chan int, 100)

results := make(chan int)

var openports []int

for i := 0; i < cap(ports); i++ {

go worker(ports, results)

}

go func() {

for i := 0; i <= 1024; i++ {

ports <- i

}

}()

for i := 0; i < 1024; i++ {

port := <-results

if port != 0 {

openports = append(openports, port)

}

}

close(ports)

close(results)

sort.Ints(openports)

for _, port := range openports {

fmt.Printf("%d open\n", port)

}

}

Go语言黑帽子学习2相关推荐

  1. go语言黑帽子学习3

    代码清单2-9 reader和writer演示 package main import ( "fmt" "log" "os" ) type ...

  2. Go语言黑帽子学习1

    代码清单2-4 端口扫描器执行速度太快 package main import ( "fmt" "net" ) func main() { for i := 0 ...

  3. scapy python3_【Python3黑帽子学习笔记 on Mac】第四章 Scapy:网络的掌控者

    Scapy:网络掌控者? 哇咔咔,我喜欢!可是我的问题来了,貌似Scapy只支持Python2,那哥哥这Python3咋办呢? [最新更新:目前scapy目前已经支持Python3了,就不用折腾这个了 ...

  4. 关于《Python黑帽子:黑客与渗透测试编程之道》的学习笔记

    本篇文章是学习<Python黑帽子:黑客与渗透测试编程之道>的笔记,会持续地将书上的代码自己敲一遍,从而让自己对Python的安全编程有更多的了解,同时希望各位可以给给建议,不足之处太多了 ...

  5. 《Python 黑帽子》学习笔记 - 命令行选项和参数处理 - Day 4

    在学习书中 netcat 代码的时候,发现其命令行选项和参数的处理存在一些小问题,由于调用 getopt 模块的 getopt() 函数时参数设置不当,会引起代码执行时获取不到参数值或引发异常.该问题 ...

  6. 《Python 黑帽子》学习笔记 - 准备 - Day 1

    信息安全是一个有意思的方向,也是自己的爱好,从零开始,想在工作之余把这个爱好培养为自己的技术能力,而 web 安全相对来说容易入门些,于是选择 web 渗透测试作为学习的起点,并选择同样是容易入门的 ...

  7. 网络安全Day1_黑客、骇客、红客_黑客传奇_黑客事件_白帽子、黑帽子、灰帽子_一些术语

    网络安全Day1 1.黑客.骇客.红客 黑客:hacker (摘自百度百科) 简单来说,黑客不是故意搞破坏的,他们是正面意义的群体.有技术,人又不错. 骇客:cracker,技术不一定好,但是真的坏( ...

  8. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(四):web攻击

    目录 前言 1.urllib2 2.开源web应用安装 3.破解目录和文件位置 4.破解HTML表格认证 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源 ...

  9. 网上说的白帽子黑帽子都是什么?

    很多人从网上听说过白帽子跟黑帽子,但都不知道这些都是什么.这并不是真的是个帽子,这些称号统一指的是黑客.那为什么黑客又有这些白帽子黑帽子的区分呢? 下面的解答来告诉你 黑客是一个中文词语,皆源自英文h ...

最新文章

  1. php最简单验证码代码,简单好用的PHP验证码类
  2. Flex与.NET互操作(十):基于FluorineFx.Net的及时通信应用(Real-time Messaging Applications)(一)...
  3. [转]小心C# 5.0 中的await and async模式造成的死锁
  4. python外星人入侵游戏图片_跪求一个问题@关于外星人入侵游戏(《python编程基础从入门到实...
  5. react-native 安卓支持 gif动态图
  6. 【HDU - 5886】Tower Defence(树的直径,思维,dp)
  7. oracle =1,oracle中的 where 1=1 和where 1 !=1
  8. Sun Java认证
  9. Oracle用户密码使用特殊符号,例如(AND)、$(Dollar)、#(Pound)、*(Star)等
  10. Shell命令_for
  11. Django 框架 新建app 、新建表
  12. opencv 学习第三课 画线段 圆 椭圆 矩形 多边形 插入文字 代码注释版 保证你每一行都能读懂
  13. 南阳理工acm,水仙花数
  14. java实现图片与base64转换
  15. Python-Selennium之爬虫实战--链家二手房爬虫项目
  16. IDEA安装Gitee插件
  17. 好课堂Scratch编程09 趣学篇(五)目标!幽灵古堡
  18. vlookup使用步骤_VLOOKUP函数的使用方法详解
  19. hualinux 编程概念 3.15:天下武功,唯快不破—新时代敏捷项目管理之道
  20. excel2007 COUNTIFS

热门文章

  1. 28dm.app.php,DM盒子app-DM盒子安卓版v1.0(漫画软件)
  2. windows10+py36+MeCab安装总结
  3. adb 命令查看/控制 rk3399 GPIO 输入/输出状态
  4. 直播电商正在老去,电商直播永远年轻
  5. 0.4 - 铝合金牌号及常用铝合金牌号用途
  6. android手机无法进行remount
  7. 前端项目用hbuilder打包成APP后,调用api开启摄像头进行拍照, 5+app框架
  8. 疫情将加速元宇宙办公进程,削弱实体办公|元宇宙科技
  9. SSO(CAS) 的简单搭建与使用
  10. java分割符|失败问题记录