红队专题-Golang工具ChYing

在这里插入图片描述

Golang工具ChYing

  • 招募六边形战士队员
  • 原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] = valuel.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 errorProxy, 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 ""
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DAY6--learning english

一、积累 1.sip She took a small sip of the hot tea to savor its delicate flavor. 她小口抿了一口热茶,细细品味其中的淡雅滋味。 2.vacuum Expreience the amazing cleaning power of vaccum cleaner. 体验真空吸尘器惊人的清洁能力。 3.stray Stray kitte…

RT-Thread I/O设备驱动接口

创建和注册I/O设备 驱动层负责创建设备实例,并注册到I/O设备管理器中,可以通过静态申明的方式创建设备实例,也可以用下面的接口进行动态创建: rt_device_t rt_device_create(int type, int attach_size);type:设备类…

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

什么企业可以办理CS?

(一)具有独立企业法人地位,从事信息系统建设和服务业务1年以上; (二)社会信誉良好,有良好的资信和公众形象,有良好的知识产权保护意识,近三年无触犯国家法律法规的行为&…

如何在 Windows 10、11 上恢复删除、未保存或覆盖的 Excel 文件?

我们中的大多数人可能都经历过其中一种情况——关闭电源时未保存 Excel 文件或误点击“不要保存”,不小心删除了重要的 Excel 文件,或覆盖了 Excel 文件而未保存原始副本。在遇到这些情况时,我们都会为没有采取适当的措施而感到内疚&#xff…

SpringSecurity入门demo(三)多用户身份认证

WebSecurityConfigurerAdapter配置文件在 configure(AuthenticationManagerBuilder auth) 方法中完成身份认证。前面的demo都只有一个用户,security中使用UserDetailsService做为用户数据源 ,所以可以实现UserDetailsService 接口来自定义用户。实现方…

计算机毕业设计----Springboot超市订单管理系统

项目介绍 该超市订单管理毕业设计基于jdk8版本开发,在部署时需要使用jdk8以上的版本。使用了目前流行的框架组合springbootmybatis的框架技术, 实现了供应商管理对供应商实现增删改查、订单管理对超市订单实现增删改查、用户管理等功能,适用…

第二十二章 调用Callout Library函数 - 使用过程索引进行测试

文章目录 第二十二章 调用Callout Library函数 - 使用过程索引进行测试方法 GetGraph() 使用进程索引进行测试使用进程索引测试新版本的“inputlibrary.dll” 第二十二章 调用Callout Library函数 - 使用过程索引进行测试 方法 GetGraph() Method GetGraph(loopsize As %Inte…

Python 装饰器可以将代码减少一半

一、说明 这里,我将与您分享一些令人惊叹的 Python 装饰器,它们可以将您的代码减少一半。听起来好得令人难以置信,对吧?好吧,让我向您展示它们是如何工作的以及为什么应该在项目中使用它们。 二、什么是 Python 装饰器…

都是取所有行的某列数据,这个array[:,2]和array[:,2:3]有什么不同呢

效果图 代码 import numpy as nplist [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25] ] array np.array(list) print(array) 输出: [[ 1 2 3 4 5][ 6 7 8 9 10][11 12 13 14 15][16 17 18 19 20][21 22 23 24 25]]a arr…

想要安利给所有人的开发工具

Visual Studio Code - 一个轻量级且功能丰富的代码编辑器,支持多种编程语言,拥有强大的插件和工具集。 Git - 一个分布式版本控制系统,可以帮助开发团队协作、跟踪代码变更和管理代码库。 Postman - 一个用于API开发和测试的工具&#xff0…

【上分日记】第369场周赛(分类讨论 + 数学 + 前缀和)

文章目录 前言正文1.3000. 对角线最长的矩形的面积2.3001. 捕获黑皇后需要的最少移动次数3.3002. 移除后集合的最多元素数3.3003. 执行操作后的最大分割数量 总结尾序 前言 终于考完试了,考了四天,也耽搁了四天,这就赶紧来补这场周赛的题了&a…

关于文件上传功能的安全方面的考量

文章目录 场景安全实现 场景 最近做了一个文件上传的功能,下面说进行了哪些方面实现 安全实现 验证登录验证登录用户是否有文件上传接口的权限限制文件大小检验文件后缀,文件头文件单独存储,可以考虑使用第三方服务 比如:七牛云设置文件的rwx权限, rw根…

【Linux实用篇】项目部署 基于Shell脚本自动部署

目录 1. 项目部署 1.1 手动部署项目 1.2 基于Shell脚本自动部署 1.2.1 介绍 1.2.2 推送代码到远程 1.2.3 Git操作 1.2.4 Maven安装 1.2.5 Shell脚本准备 1.2.6 Linux权限 1.2.7 授权并执行脚本 1.2.8 设置静态IP 1. 项目部署 之前我们讲解Linux操作系统时&#xff0…

Dcoker构建部署Java项目过程

目录 前言 一、打包 二、Docker File文件编写 一个简单的Docker File文件 三、上传文件 四、构建镜像 五、运行 六、端口开放 前言 使用Dcoker构建部署Java项目,发布到服务器 一、打包 我这里打包的是item-service这个module,clean-cpmpile-pa…

uniapp 查找不到uview-ui文件怎么办?

用官方的方式总是报:文件查找失败:uview-ui at main.js 解决方案: 1.先安装uview-ui npm install uview-ui 下载成功是这样的: 而不是这样的: 这样的原因是你的项目里没有package.json包,先执行 npm …

Ubuntu平台上C语言利用matio库读取mat文件

一、安装matio库 matio库是一个用于读取和写入MAT文件(MATLAB数据格式)的开源C库。它提供了一组函数和工具,使得在C和C程序中可以方便地读取和写入MAT文件中的数据。MAT文件是MATLAB软件中常用的文件格式,用于存储多维数值数组、…

Qt 调试系统输出报警声以及添加资源

文章目录 前言一、方法1 使用 Qsound1.添加都文件 直接报错2.解决这个错误 添加 QT multimedia3. 加入代码又遇到新的错误小结 二、第二种方法1.引入库2.添加资源2.1依次点击Qt--->Qt Resource File--->Choose2.2给资源文件起个名字,如:res&#…

【每日一题】构造限制重复的字符串

文章目录 Tag题目来源解题思路方法一:贪心空间复杂度: O ( ∑ ) O(\sum) O(∑)。 写在最后 Tag 【贪心】【字符串】【2024-01-13】 题目来源 2182. 构造限制重复的字符串 解题思路 方法一:贪心 思路 解题思想比较简单,利用贪…

【MySQL】:掌握SQL中DDL的数据库定义与操作

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. SQL的分类二. DDL数据库操作2.1 查询所有数据库2.2 查询当前数据库2.3 创建数…