GSIL实践

为把控项目涉漏风险,公司需自查。本文介绍GSIL工具,其通过API搜索规则文件关键字分析结果。涵盖环境准备,如安装Python、拉取项目等;配置解析,包括告警邮箱和扫描规则;程序调用,如启动测试、测试token有效性等,还提及调用频率、多项目解决方案等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

   目前很多项目的成员都会把在做的项目上传到gihub上面,但很多客户会通过关键字扫描,扫描到项目涉漏的风险。所以要求我们公司先自查。落实把控风险。

 

原理

登录配置:采用token(https://github.com/settings/tokens),使用PyGithub库。

进行API调用(http://pygithub.github.io/PyGithub/v1/introduction.html)。

搜索范围:会进行全网搜索,默认搜索前200个项目,最大5000(github限制)。

过程:通过API(/search/code)搜索规则文件rules.gsil中提交的关键字,然后分析得到的json结果,默认展示前30个相关项目。

 

 

一、环境准备

1. 安装python3+

可参考:

https://blog.youkuaiyun.com/weixin_40844416/article/details/80889165

2. 拉取项目

git clone https://github.com/FeeiCN/gsil.git

3. 切换目录

命令cd gsil/

4. 安装依赖

pip install -r requirements.txt。如果出现类似这种问题

只要执行:python -m pip install --upgrade pip 语句即可。

 

  • 配置详解
  1. gsil/config.gsil配置解析

gsil/config.gsil(重命名自config.gsil.example): 告警邮箱和Github配置

[mail]

host : smtp.exmail.qq.com

# SMTP端口(非SSL端口,但会使用TLS加密)

port : 25

# 多个发件人使用逗号(,)分隔

mails : gsil@feei.cn

from : GSIL

password : your_password

# 多个收件人使用逗号(,)分隔

to : feei@feei.cn

 

[github]

# 扫描到的漏洞仓库是否立刻Clone到本地(~/.gsil/codes/)

# 此选项用作监控其它厂商,避免因为仓库所有者发现后被删除

clone: false

 

# GitHub Token用来调用相关API,多个Token使用逗号(,)分隔

# https://github.com/settings/tokens

tokens : your_token

 

1.1 修改smtp.exmail.qq.com

将smtp.exmail.qq.com 改为:smtp.qq.com;

1.2 申请GitHub Token

  需要申请GitHub Token用来调用相关API,多个Token使用逗号(,)分。地址为 https://github.com/settings/tokens

 

1.3 设置password

采用QQ邮箱作为发送邮箱时,password 不是你的登录密码而是你的QQ邮箱SMTP授权码。开启流程如下:

打开QQ邮箱-》设置

点击账户找到POP3/SMTP服务 然后开启

通过发送短信获取授权码每次需要1毛钱,可长期使用自己保管好。

 

 

2.gsil/rules.gsil 配置解析

gsil/rules.gsil(重命名自rules.gsil.example): 扫描规则:

规则一般选用内网独立的特征,比如蘑菇街的外网是mogujie.com,蘑菇街的内网是mogujie.org,则可以将mogujie.org作为一条规则。其它还有类似代码头部特征、外部邮箱特征等。总之是选一个可以很好辨别项目的关键词作为特征

{

    # 一级分类,一般使用公司名,用作开启扫描的第一个参数(python gsil.py test)

    "test": {

        # 二级分类,一般使用产品线

        "mogujie": {

            # 关键词

            "\"mogujie.org\"": {

                # mode/ext默认可不填

                "mode": "normal-match",

                "ext": "php,java,python,go,js,properties"

            },

            # 其它关键词

            "copyright meili inc": {},

            # 其它关键词

            "yewu1.db.mogujie.host": {},

            # 其它关键词

            "mail.mogujie.com": {}

        }

    }

}

2.1 关键字中文问题

关键字最好不要用中文去匹配,中文匹配会出现乱码。如果一定要用中文则可以更改代码config.py文件145行将读取文件的代码改成with open(rules_path,'rb') 原理就是rb方式是按字节码方式读取文件,则不会引发乱码问题。

2.2 项目搜索范围

在GILS中默认搜索的项目大小为200,即出现匹配关键字的200个项目,最大可设置为5000。如果需要修改默认配置需要找到gsil/engine.py文件中修改。

 

 

 

三、程序调用

1. 启动测试

$ python gsil.py test

2. 测试token有效性

$ python gsil.py --verify-tokens

扫描报告过一次的将不会重复报告,缓存记录在~/.gsil/目录

3.调用频率

方法调用不可太频繁,如果调用过于频繁可能会触发GitHub警告。最好每次间隔不低于15分钟。也可以多申请几个token就可以交替使用了。最后如果觉得自己手动执行过于麻烦也可以自己写个定时脚本。

4.多项目时解决方案

当匹配的关键字出现的总数大于可扫描的总数时,可多次调用方法执行扫描,因为已经扫描过的文件是不会再扫描的(最好间隔时间超过15分钟)否则会出现文件已经扫描过了不再扫描

 

5.结果解析

已经扫描的文件并不会在关键词总数中清除,所以有时候需要调用多少次方法需要自己计算下,或者直到无论怎么调用出现 Processed, skip!时说明所有文件已经扫描完成。

6.扫描范围

此工具会进行全网搜索,默认搜索前200个项目,最大5000(github限制)默认只扫描master分支,暂不支持扫描其他分支。

 

四、参考文献

1、https://www.freebuf.com/articles/es/187669.html

2、https://github.com/FeeiCN/GSIL

 

<think>首先,用户的问题是关于数控加工中如何编写G代码来实现雕刻字母“LJ”。用户意图是获取具体的方法或步骤。 回顾系统指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 参考站内引用: - 引用[1]:关于FasTRIM.LaserCUT软件的描述,但似乎与G代码雕刻无关。 - 引用[2]:关于加工中心刻字宏程序,提到了自变量指定,使用字母如A、B、C、Ii、Ji、Ki等。这更相关,因为它涉及刻字宏程序。 用户意图是编写G代码雕刻字母“LJ”,所以我需要基于引用[2]的信息来构建回答。引用[2]讨论了宏程序中的自变量指定,这可能用于刻字。 关键点从引用[2]: - 使用自变量指定,赋值到局部变量。 - 自变量指定Ⅰ:使用除了G、L、O、N、P以外的字母。 - 自变量指定Ⅱ:使用A、B、C、Ii、Ji、Ki(i为1~10)。 - 这可以用于刻字宏程序。 我需要将这个应用到雕刻字母“LJ”。字母雕刻通常涉及定义路径点,并使用G代码(如G01直线插补)来移动工具。 步骤概述: 1. **理解雕刻过程**:雕刻字母通常需要将字母分解为一系列线段或曲线,然后用G代码控制工具沿着这些路径移动。 2. **使用宏程序**:引用[2]提到宏程序,这允许参数化编程,使代码更灵活。 3. **具体字母“LJ”**: - “L”可以是一个垂直线和一个水平线。 - “J”可以是一个垂直线和一个钩状曲线(可能需要用线段或圆弧近似)。 4. **G代码基础**: - G00:快速移动。 - G01:直线插补。 - G02/G03:圆弧插补(顺时针/逆时针)。 - 坐标系:使用X、Y、Z轴。 5. **宏程序应用**:使用自变量来指定字母的位置、大小等参数。 结构化回答: - **介绍**:解释雕刻字母的基本概念。 - **步骤**:逐步指导如何编写G代码。 - **使用宏程序**:基于引用[2],展示如何使用自变量指定。 - **示例代码**:提供简单的G代码示例。 - **注意事项**:提醒安全、工具补偿等。 - **相关问题**:生成相关的问题。 数学表达式:如果有数学,如坐标计算,使用$...$或$$...$$。例如,圆弧的参数方程可能需要。 对于字母“L”和“J”: - “L”:起点到终点,垂直线和水平线。 - “J”:更复杂,可能需要圆弧。例如,“J”可以用一个垂直线和一个半圆近似。 坐标定义:假设在XY平面雕刻,Z轴控制深度。 使用宏程序:定义宏,用自变量指定位置、高度、宽度等。 基于引用[2],自变量指定Ⅱ使用A、B、C、Ii、Ji、Ki。所以,在宏中,可以设置A为X起点,B为Y起点,C为字母高度等。 回答结构: 1. **理解需求**:简要解释雕刻字母“LJ”的G代码方法。 2. **准备步骤**:设置坐标系、工具等。 3. **字母分解**:描述“L”和“J”的路径。 4. **宏程序介绍**:解释如何使用宏程序参数化。 5. **示例宏**:提供刻字宏的示例。 6. **完整代码**:给出雕刻“LJ”的G代码片段。 7. **注意事项**:安全、精度等。 8. **相关问题**:生成相关问题。 生成相关问题: - 类似示例:1. 如何进行快速排序的性能分析? 2. 快速排序的优化方法? 3. 快速排序有什么应用场景? - 这里:1. 如何优化刻字宏程序的效率? 2. 在G代码中如何处理曲线字母? 3. 刻字应用在哪些数控场景? 引用标识:在引用参考的地方添加[^1]或[^2]。引用[2]是关于刻字宏程序的,所以我会在讨论宏程序时添加[^2]。 确保中文回答。</think>### 数控加工中编写G代码雕刻字母“LJ”的方法 在数控加工中,雕刻字母(如“LJ”)通常涉及将字母分解为一系列几何路径(如直线或圆弧),并使用G代码控制工具沿这些路径移动。这可以通过基础G代码指令或宏程序(参数化编程)实现。参考引用[2],宏程序中的自变量指定(如使用A、B、C、Ii、Ji、Ki)可以简化代码,使字母位置、大小等参数可调[^2]。下面我将逐步解释具体步骤,确保方法真实可靠(基于标准数控编程实践)。 #### 步骤1: 准备工作 在编写G代码前,需完成以下设置: - **坐标系设置**:定义工件坐标系(通常使用G54-G59)。假设雕刻在XY平面进行,Z轴控制深度(雕刻时Z下降,移动时Z抬升)。 - **工具选择**:使用雕刻刀具(如锥形铣刀),设置刀具补偿(G41/G42)和切削参数(如进给率F、主轴转速S)。 - **安全高度**:设置Z轴安全高度(如Z=5mm),避免碰撞。 - **字母参数定义**:为字母“LJ”定义关键参数: - 起点坐标(如X0 Y0)。 - 字母高度(H)和宽度(W)。 - 笔画宽度(根据刀具直径)。 - 例如,“L”可分解为垂直线和水平线;“J”可分解为垂直线和圆弧(用G02/G03近似)。 #### 步骤2: 分解字母路径 雕刻字母的关键是将每个字母转换为工具路径: - **字母“L”**: - 垂直线:从起点(X0, Y0)移动到(X0, Y0 + H)。 - 水平线:从(X0, Y0 + H)移动到(X0 + W, Y0 + H)。 - 数学表达:路径点坐标可参数化。设起点为$(X_s, Y_s)$,高度为$H$,宽度为$W$,则路径点为$(X_s, Y_s) \rightarrow (X_s, Y_s + H) \rightarrow (X_s + W, Y_s + H)$。 - **字母“J”**: - 垂直线:从起点(如X1, Y1)移动到(X1, Y1 + H)。 - 钩状部分:用圆弧近似。例如,以(X1, Y1)为圆心,半径$R$(如$R = W/2$),从(X1, Y1 + H)逆时针移动到(X1 - R, Y1 + H)。 - 数学表达:圆弧路径涉及圆心坐标$(I, J)$。设圆弧起点$(X_s, Y_s + H)$,终点$(X_s - R, Y_s + H)$,圆心$(X_s, Y_s)$,则$I = 0$, $J = -R$(相对坐标)。 - **整体“LJ”路径**:两个字母间需留间隙(如移动距离D),路径顺序:先“L”后“J”。 #### 步骤3: 使用宏程序参数化代码(基于引用[2]) 引用[2]提到,宏程序允许使用自变量指定参数,赋值到局部变量(如#1, #2等)。自变量指定Ⅱ使用A、B、C、Ii、Ji、Ki(i为1~10),使代码更灵活[^2]。以下是雕刻字母的通用宏框架: - **宏定义**:用G65调用宏,自变量指定字母参数: - A:起点X坐标。 - B:起点Y坐标。 - C:字母高度H。 - I1:字母宽度W(J的圆弧半径可设为W/2)。 - **局部变量映射**:自变量赋值到局部变量(如#1 = A, #2 = B, #3 = C, #4 = I1)。 - **优势**:修改参数(如位置或大小)时无需重写代码。 #### 步骤4: 示例G代码雕刻“LJ” 以下是一个完整的G代码示例,结合基础指令和宏程序。代码假设: - 安全高度Z=5mm,雕刻深度Z=-0.5mm。 - 进给率F=100 mm/min。 - “L”和“J”起点间隔为10mm(“L”起点(X0,Y0), “J”起点(X0+15,Y0))。 - 使用圆弧近似“J”的钩状部分。 ```gcode (主程序 - 设置初始参数) G54 G90 G17 G40 G49 G80 (安全初始化: 坐标系, 绝对定位, XY平面, 取消补偿) G00 Z5 (抬升至安全高度) M03 S5000 (主轴启动) G00 X0 Y0 (快速定位到起点) (调用宏雕刻字母"L") G65 P9010 A0 B0 C10 I5 (A=X起点, B=Y起点, C=高度H, I1=宽度W) (移动到"J"的起点,间隔10mm) G00 Z5 G00 X15 Y0 (调用宏雕刻字母"J") G65 P9010 A15 B0 C10 I5 (参数同上) G00 Z5 (返回安全高度) M30 (程序结束) (宏程序O9010 - 通用字母雕刻宏) O9010 #1 = #1 (A: 起点X) #2 = #2 (B: 起点Y) #3 = #3 (C: 高度H) #4 = #4 (I1: 宽度W) (雕刻字母 - 根据参数移动) G00 Z5 G00 X#1 Y#2 (定位到起点) G01 Z-0.5 F50 (下刀至雕刻深度) (判断字母类型 - 此处简化,实际需根据输入扩展) (雕刻"L"路径) G01 X#1 Y[#2 + #3] F100 (垂直线) G01 X[#1 + #4] Y[#2 + #3] (水平线) (雕刻"J"路径 - 近似为直线和圆弧) G01 X#1 Y[#2 + #3] (垂直线) G03 X[#1 - #4/2] Y[#2 + #3] I0 J-[#4/2] (逆时针圆弧, 圆心相对偏移) G00 Z5 (抬刀) M99 (宏结束) ``` **代码说明**: - 宏O9010使用自变量A、B、C、I1映射到局部变量#1-#4[^2]。 - “J”的钩状部分用G03圆弧近似(半径R=W/2),圆心计算基于相对坐标(I,J)。 - 实际使用时,需扩展宏以区分字母(如添加参数指定字母类型)。 #### 步骤5: 注意事项 - **工具补偿**:始终使用刀具半径补偿(G41/G42)以避免尺寸误差。 - **曲线处理**:复杂字母(如“J”)可用多段圆弧或直线近似。精度取决于分段数。 - **安全**:测试代码在模拟软件中运行,避免实际碰撞。Z轴抬升是必需的。 - **优化**:减少空行程(如用G00快速移动),提高效率。 - **兼容性**:不同数控系统(如FANUC、Siemens)语法可能略有差异,请查阅手册调整。 #### 相关问题 1. 如何优化刻字宏程序的效率以减少加工时间? 2. 在G代码中如何处理更复杂的曲线字母(如“S”或“Q”)? 3. 刻字技术在数控加工中有哪些常见应用场景(如工件标识、模具加工)? 通过以上步骤,您可以灵活编写G代码雕刻字母“LJ”。如果您有特定数控系统或更多细节,我可以进一步调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值