红队专题-Golang工具ChYing

在这里插入图片描述

招募六边形战士队员

一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
在这里插入图片描述

原chying工具代码分析

前有 Chying 后有 Tscanplus
在这里插入图片描述

并发访问控制

type SMap struct {
   
	sync.RWMutex   // 标准读写锁
	Map map[int]*HTTPBody
}

并发 原子 写入

func (l *SMap) WriteMap(key int, value *HTTPBody) {
   
	l.Lock()
	l.Map[key] = value
	l.Unlock()   //释放写锁
}

读取

//使用读写锁来允许多个 goroutine 同时读取数据,而不会相互阻塞。
func (l *SMap) ReadMap(key int) *HTTPBody {
   
	l.RLock()   //读锁
	value, _ := l.Map[key]  //若给定的键不存在于 Map 中,返回的值将为 nil。
	l.RUnlock()
	return value
}

通道

// HttpHistory 接受 mitmproxy 代理信息
var HttpHistory chan HTTPHistory

嵌套映射结构

// RepeaterBodyMap Repeater 中回退、前进使用 todo前端还未实现
var RepeaterBodyMap map[string]map[int]*HTTPBody

初始化

func init() {
   
	HttpHistory = make(chan HTTPHistory, 1)   //创建一个缓冲大小为 1 的通道

	HTTPBodyMap = &SMap{
   
		Map: make(map[int]*HTTPBody),   //创建一个空的 map[int]*HTTPBody 映射
	}

	IntruderMap = make(map[string]*SMap)

	RepeaterBodyMap = make(map[string]map[int]*HTTPBody)
}

启动代理服务器

func Run(port int) {
   
	opts := &proxy.Options{
      //配置代理服务器的选项
		Debug:             2,
		Addr:              fmt.Sprintf(":%d", port),
		StreamLargeBodies: 1024 * 1024 * 5,  //数据的阈值
		SslInsecure:       false,   //不安全选项
		CaRootPath:        "",   //CA 根证书路径
	}

	var err error
	Proxy, err = proxy.NewProxy(opts)
	if err != nil {
   
		logging.Logger.Fatal(err)
	}

	// 这种不错,通过添加插件的形式,这样只要实现了接口,p.AddAddon(xxxx), 然后就会自动执行相应的操作
	// 添加一个日志记录插件
	//Proxy.AddAddon(&proxy.LogAddon{})

	Proxy.AddAddon(&Burp{
   })  //向代理服务器添加一个 Burp 插件

	logging.Logger.Errorln(Proxy.Start())  //程序在该函数调用处阻塞,直到代理服务器停止运行。
}

重启代理服务器

func Restart(port int) string {
   
	// 先关闭然后再启动
	err := Proxy.Shutdown(context.TODO())   //关闭代理服务器
	if err != nil {
   
		logging.Logger.Errorln(err)
		return err.Error()
	}
	go Run(port)  //放入一个新的 goroutine 中运行
	//避免阻塞主程序,使其继续执行其他任务。
	return ""
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-13 18:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-13 18:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-13 18:18:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-13 18:18:02       20 阅读

热门阅读

  1. 行为型设计模式—模板模式

    2024-01-13 18:18:02       31 阅读
  2. WPF Converter转换器

    2024-01-13 18:18:02       36 阅读
  3. C++面试八股--inline函数

    2024-01-13 18:18:02       30 阅读
  4. Vue中避免滥用this去读取data中数据

    2024-01-13 18:18:02       39 阅读
  5. Flutter--常用技术文档

    2024-01-13 18:18:02       27 阅读
  6. 网络基础面试题(五)

    2024-01-13 18:18:02       31 阅读