# CodeFort
**Repository Path**: insfly/codefort
## Basic Information
- **Project Name**: CodeFort
- **Description**: CodeFort致力于保卫您的字节码安全
- **Primary Language**: Java
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/anoraks/codefort
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2024-04-17
- **Last Updated**: 2024-04-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
CodeFort v1.0.6
Java 字节码加密插件,配置简单、多种方式、远程管理!
https://gitee.com/anoraks/codefort
-------------------------------------------------------------------------------
## 简介
`CodeFort`是一个用于class加密的**Maven插件**,通过诸多实用的策略配置,旨在帮助开发者简便,快捷的保护代码安全。
### CodeFort名称的由来
CodeFort = Code + Fort,Code是代码的表示,Fort表示堡垒。CodeFort寓意保卫代码安全。
## 🛠️包含组件
一个字节码加密的Maven插件,项目以下组件:
| 模块 | 介绍 |
| -------------------|---------------------------------------------------------------------------------- |
| codefort-core | 核心代码模块 |
| codefort-plugin | 加密插件模块 |
| codefort-web | 远程控制模块 |
-------------------------------------------------------------------------------
## 版本
### 1.0.6
- 启动时默认密码自动匹配
- Attach侵入检测以及代码校验
## 安装
### Maven
在项目的pom.xml的plugins中加入以下内容:
```xml
io.gitee.anoraks
codefort-plugin
1.0.6
123456
2017-03-01 22:33:23
2027-03-01 22:33:23
FVFKD2YM1WFY
1000
license-client-2.0.jar
host.skiree.springdemo
host.skiree.springdemo.excludes
127.0.0.1
7007
示例项目
true
RSA公钥
package
CodeFort
```
-------------------------------------------------------------------------------
### 提供bug反馈或建议
提交问题反馈请说明正在使用的JDK版本、CodeFort版本和相关依赖库版本。
- [Gitee issue](https://gitee.com/anoraks/codefort/issues)
## 使用
### 参数说明
| 参数 | 说明 |
| -------------------|---------------------------------------------------------------------------------- |
| password | 加密密码(默认为:cfasy) |
| startTime | 开始时间 |
| endTime | 结束时间
| biosMark | CPU序列号
| availableTime | 剩余可用时间(单位:毫秒,优先级小于时间区间判断)
| libs | 需要加密的依赖包,若多个逗号分隔
| packages | 需要加密路径,若多个逗号分隔
| excludes | 加密排除路径,若多个逗号分隔
| host | 远程控制主机IP
| port | 远程控制主机端口
| explain | 项目说明
| isDebug | 是否开启Debug
| rsaPublicKey | 远程控制公钥
### 运行说明
如果正常打包的项目为 springdemo.jar,则会在通路下生成springdemo-encrypted.jar,运行下边的命令执行。
```bash
java -javaagent:springdemo-encrypted.jar -jar springdemo-encrypted.jar
```
输入密码后,如果配置了远程控制就可以在管理页面进行操作。
```
_____ __ ____ __
/ ___/__ ___/ /__ / __/__ ____/ /_
/ /__/ _ \/ _ / -_) _// _ \/ __/ __/
\___/\___/\_,_/\__/_/ \___/_/ \__/
[13:45:07.217-INFO] 无法在运行参数中获取密码,将会从系统参数获取
[13:45:07.220-INFO] 无法在系统参数中获取密码,将会从控制台获取
[13:45:07.220-INFO] 提示: 如果未设置密码请直接回车键跳过
[13:45:07.220-INFO] 请输入密码 :
[13:47:30.250-DEBUG] Socket服务器IP: 127.0.0.1,端口: 7007
[13:47:30.260-DEBUG] 连接成功
[13:47:40.262-INFO] CodeFort 致力保卫您的代码安全, 联系QQ 2940397985
```
如下所示就是成功连接上了控制台

在控制台目前可以进行信息提示操作和强制下线操作,如下所示

```
[13:48:13.754-INFO] 这个先关闭了,有啥事儿,再联系我
[13:48:15.305-INFO] 此服务已被强制下线!如有疑问请联系管理员或开发者
```
### 远程配置
如果要启用远程管理请注意codefort-web项目下的application.yml的codefort.port参数请注意和打包插件的端口一致,
其次是coffee.lucks.codefort.unit.ServerConst.rsaKey的值是私钥,需要和打包时的rsaPublicKey公钥对应。
```yml
codefort:
# socket端口
port: 7007
# 管理平台账号
user: admin
# 管理平台密码
password: 123456
```