Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JDK11+适配,新版license验证失败修复,merge原作代码 #4

Open
wants to merge 40 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
2163b56
update readme
pengzhile Dec 6, 2018
2507134
update
pengzhile Dec 6, 2018
69e9b4e
add third party plugins
pengzhile Dec 6, 2018
422f660
update env name
pengzhile Dec 10, 2018
235ca21
add link
pengzhile Feb 28, 2019
d0eb2f3
support jdk11
pengzhile Mar 1, 2019
190ea47
fix jdk 11
pengzhile Mar 5, 2019
50da83e
update readme
pengzhile Mar 5, 2019
9a27cde
update
pengzhile Mar 6, 2019
da447a8
remove useless
pengzhile Mar 12, 2019
59a60ea
update
pengzhile Mar 18, 2019
31d9b2c
feat: add JIRA&Crowd FAQ
Apr 3, 2019
6dd8519
Merge pull request #16 from materliu/master
pengzhile Apr 4, 2019
3e55d2a
feat: add Bitbucket FAQ
Apr 8, 2019
b680f45
style: wrong spell
Apr 8, 2019
930f8f2
Merge pull request #17 from materliu/master
pengzhile Apr 9, 2019
2b16f19
feat: add Bamboo FAQ
Apr 10, 2019
3d0c38f
feat: add Crucible & FishEye FAQ
Apr 10, 2019
10744be
Merge pull request #21 from materliu/master
pengzhile Apr 11, 2019
73a565a
add tutorial posts
pengzhile Apr 19, 2019
c4861fa
add confluence faq
pengzhile Apr 24, 2019
5b58d9a
Update Confluence_FAQ.md
pengzhile Apr 24, 2019
44cf41f
Update Confluence_FAQ.md
pengzhile Apr 24, 2019
c044e97
JDK11+ 适配
caelumlux Jan 31, 2023
9036ecc
Merge branch 'gitee-master'
caelumlux Jan 31, 2023
79b8ce7
使用说明更新
caelumlux Jan 31, 2023
3936784
解决类冲突
caelumlux Jan 31, 2023
1c05244
库的位置需要自己修改,支持不同产品
caelumlux Mar 17, 2023
4e4b91f
Update src/main/java/io/zhile/crack/atlassian/agent/KeyTransformer.java
voarsh Jul 4, 2023
32afddf
Update src/main/java/io/zhile/crack/atlassian/license/LicenseProperty…
voarsh Jul 4, 2023
b10798f
Update src/main/java/io/zhile/crack/atlassian/license/products/ThirdP…
voarsh Jul 4, 2023
f77df0c
Update src/main/java/io/zhile/crack/atlassian/license/products/ThirdP…
voarsh Jul 4, 2023
12082b3
Revert "Update src/main/java/io/zhile/crack/atlassian/license/License…
voarsh Jul 4, 2023
8cd8e06
Revert "Update src/main/java/io/zhile/crack/atlassian/license/product…
voarsh Jul 4, 2023
3b0a06d
Merge remote-tracking branch 'bitbucket/master'
voarsh Jul 5, 2023
fccc922
Remove DataCenter and Subscription properties when not applicable
voarsh Jul 5, 2023
5b7e35e
更新使用说明,打包docker 镜像
caelumlux Jul 6, 2023
c28762e
更新使用说明,打包docker 镜像
caelumlux Jul 6, 2023
386a6db
Merge pull request #1 from voarsh2/master
caelumlux Jul 7, 2023
95e6a7d
环境变量传入
caelumlux Jul 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 124 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,88 @@
# Atlassian Agent

#### Support (almost any version):
* JIRA Software
#### Support (almost any version, include 8.0):
* JIRA Software [FAQ](doc/JIRA_FAQ.md)
* JIRA Core
* JIRA Service Desk
* JIRA plugin: Capture
* JIRA plugin: Training
* JIRA plugin: Portfolio
* Confluence
* Confluence [Windows特别注意](doc/Confluence_FAQ.md)
* Confluence plugin: Questions
* Confluence plugin: Team Calendars
* Bamboo
* Bitbucket
* FishEye
* Crowd
* Crucible
* Bamboo [FAQ](doc/Bamboo_FAQ.md)
* Bitbucket [FAQ](doc/Bitbucket_FAQ.md)
* FishEye [FAQ](doc/FishEye_Crucible_FAQ.md)
* Crowd [FAQ](doc/Crowd_FAQ.md)
* Crucible [FAQ](doc/FishEye_Crucible_FAQ.md)
* Third party plugins

## 使用说明

### 优势
* 支持Atlassian家几乎所有产品,同时支持插件。
* 支持Atlassian家几乎所有产品,同时支持插件(包括插件市场的第三方插件)
* 支持DataCenter模式。
* 相比较于传统的crack来说可以很容易的升级你的服务,而不用重新再次破解。
* 提供基于java的命令行 keygen,更方便在终端环境使用。
* 开源项目,你知道破解时都做了什么。

### 直接下载
* 直接下载本项目release包
* 直接下载本项目[release](https://github.com/pengzhile/atlassian-agent/releases)包

### 自行编译
* Clone本项目源码,pom.xml同级目录执行`mvn package`后即可进行编译。
* 使用`target`目录产出的`atlassian-agent-jar-with-dependencies.jar`,而非`atlassian-agent.jar`!
* *如果你不知道我在说什么,最好还是直接下载我编译好的包。*

### 使用帮助
* 破解需要成套使用,不能只破解插件,要先使用`atlassian-agent.jar`破解服务。
* 如果你已经获得`atlassian-agent.jar`,可以试着执行`java -jar atlassian-agent.jar`看看输出的帮助。
* 这里的帮助以Atlassian家的Confluence服务为例。

**新版本的 Atlassian 服务端(只测试了 Bitbucket)加入了一个证书哈希验证,需要根据 "atlassian-extras-decoder-v2" 支持库的位置进行修改代码:`io.zhile.crack.atlassian.agent.KeyTransformer#handleLicenseDecoder`**
~~**新版本的 Atlassian 服务端(只测试了 Bitbucket)加入了一个证书哈希验证,需要根据 "atlassian-extras-decoder-v2" 支持库的位置进行修改代码:`io.zhile.crack.atlassian.agent.KeyTransformer#handleLicenseDecoder`**~~

~~**此处已修复,直接使用jar包即可**~~

### 重要 Important!!

需要在启动脚本中加上相应产品的lib库路径 作为系统变量
示例说明 注意不同产品lib库路径不同,仔细对比

* confluence

confluence_home (安装路径)/bin/start-confluence.sh 第一行添加

```export ATLASSIAN_DIR="/opt/atlassian/confluence/confluence/WEB-INF/lib"```


* bitbucket

bitbucket_home (安装路径)/bin/start-bitbucket.sh 第一行添加

```export ATLASSIAN_DIR="/opt/atlassian/bitbucket/app/WEB-INF/lib"```

### 配置Agent
1. 将`atlassian-agent.jar`放在一个你不会随便删除的位置(你服务器上的所有Atlassian服务可共享同一个`atlassian-agent.jar`)。
2. 设置环境变量`CATALINA_OPTS`(这其实是Tomcat的环境变量,用来指定其启动java程序时附带的参数),把`-javaagent`参数附带上。具体可以这么做:
* 你可以把:`export CATALINA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${CATALINA_OPTS}"`这样的命令放到`.bashrc`或`.bash_profile`这样的文件内。
* 你可以把:`export CATALINA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${CATALINA_OPTS}"`这样的命令放到服务安装所在`bin目录`下的`setenv.sh`或`setenv.bat(供windows使用)`中。
* 你还可以直接命令行执行:`CATALINA_OPTS="-javaagent:/path/to/atlassian-agent.jar" /path/to/start-confluence.sh`来启动你的服务。
* 或者你所知的其他修改环境变量的方法,但如果你机器上有无关的Tomcat服务,则不建议修改全局`CATALINA_OPTS`环境变量。
3. 如果你想验证是否配置成功,可以这么做:
2. 设置环境变量`JAVA_OPTS`(这其实是Java的环境变量,用来指定其启动java程序时附带的参数),把`-javaagent`参数附带上。具体可以这么做:
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"`这样的命令放到`.bashrc`或`.bash_profile`这样的文件内。
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"`这样的命令放到服务安装所在`bin目录`下的`setenv.sh`或`setenv.bat(供windows使用)`中。
* 你还可以直接命令行执行:`JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar" /path/to/start-confluence.sh`来启动你的服务。
* 或者你所知的其他修改环境变量的方法,但如果你机器上有无关的服务,则不建议修改全局`JAVA_OPTS`环境变量。
* 总之你想办法把`-javaagent`参数附带到要启动的java进程上。
3. 配置完成请重启你的Confluence服务。
4. 如果你想验证是否配置成功,可以这么做:
* 执行类似命令:`ps aux|grep java` 找到对应的进程看看`-javaagent`参数是否正确附上。
* 在软件安装目录类似:`/path/to/confluence/logs/catalina.out`Tomcat日志内应该能找到:`========= agent working =========`的输出字样。

### 使用KeyGen
* 你得确认已经配置好agent,参考上面说明。
* 当你试着执行`java -jar /path/to/atlassian-agent.jar`时应该可以看到输出的KeyGen参数帮助。
* 请仔细看看每个参数的作用,特别是`-p`参数的取值范围。
* 第三方插件将其`应用密钥/插件关键字`作为`-p`参数。如:`-p com.gliffy.integration.confluence`
* 在Atlassian服务安装时你应该能看到类似:`AAAA-BBBB-CCCC-DDDD`的server id,请留意。
* 提供了正确的参数运行KeyGen会在终端输出计算好的激活码。
* 将生成的激活码复制出来去激活你要使用的服务。
* 举个栗子:`java -jar atlassian-agent.jar -p conf -m [email protected] -n my_name -o https://zhile.io -s ABCD-1234-EFGH-5678`

### 申明
* 本项目只做个人学习研究之用,不得用于商业用途!
Expand All @@ -67,4 +94,83 @@
* 给本项目发issue。
* 欢迎你来一起完善这个项目,请发PR。
* 你可以加入QQ群:30347511 和我实时交流。
* 访问网站:[https://zhile.io](https://zhile.io) 给我留言。
* 访问网站:[https://zhile.io](https://zhile.io) 给我留言。

## Docker 镜像

### Bitbucket
#### Dockerfile
```dockerfile
FROM atlassian/bitbucket:8.11.2
LABEL maintainer="caelumlux <[email protected]>" version="8.11.2"

ARG AGENT_PATH=/opt/atlassian
ARG AGENT_FILENAME=atlassian-agent-jar-with-dependencies.jar
# 将破解包加入容器
COPY ./atlassian-agent-jar-with-dependencies.jar /opt/atlassian/
ENV ATLASSIAN_DIR="/opt/atlassian/bitbucket/app/WEB-INF/lib"
ENV JAVA_OPTS="-javaagent:${AGENT_PATH}/${AGENT_FILENAME} ${JAVA_OPTS}"
```
#### docker-compose.yml
```yaml
version: "3"

services:
confluence:
image: caelumlux/bitbucket:8.11.2
container_name: bitbucket
ports:
- "7990:7990"
- "7999:7999"
volumes:
- "/var/atlassian/application-data/bitbucket:/var/atlassian/application-data/bitbucket "
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- TZ="Asia/Shanghai"
network_mode: bridge

```
Confluence

#### Dockerfile

```dockerfile
FROM atlassian/confluence:8.1.4
LABEL maintainer="caelumlux <[email protected]>" version="8.1.4"

ARG AGENT_PATH=/opt/atlassian
ARG AGENT_FILENAME=atlassian-agent-jar-with-dependencies.jar
# 将破解包加入容器
COPY ./atlassian-agent-jar-with-dependencies.jar /opt/atlassian/
ENV ATLASSIAN_DIR="/opt/atlassian/confluence/confluence/WEB-INF/lib"
ENV JAVA_OPTS="-javaagent:${AGENT_PATH}/${AGENT_FILENAME} ${JAVA_OPTS}"
```

#### docker-compose.yml

```yaml
version: "3"

services:
confluence:
image: caelumlux/confluence:8.1.4
container_name: confluence
ports:
- "8090:8090"
- "8091:8091"
volumes:
- "/var/atlassian/application-data/confluence:/var/atlassian/application-data/confluence"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- TZ="Asia/Shanghai"
network_mode:
bridge
```

### 热心网友教程(感谢原作者,侵删!)
* [confluence 安装及破解](https://www.qinjj.tech/2019/01/04/confluence%20install/)
* [【黑科技】Atlassian产品线全破解](https://tech.cuixiangbin.com/?p=1248)
* [通过Docker安装JIRA和Confluence(破解版)](https://www.jianshu.com/p/b95ceabd3e9d)
* [通过Docker安装JIRA和Confluence(破解版)](https://my.oschina.net/wuweixiang/blog/3014644)
15 changes: 15 additions & 0 deletions doc/Bamboo_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Bamboo FAQ

### 明明按照文档中说的配置了agent,并且成功激活了confluence,但Bamboo激活时提示生成的密钥无效
这种情况往往是 `JAVA_OPTS` 设置的问题,如果是按照下边方式设置的 `JAVA_OPTS` ,会出现激活失败
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"` 这样的命令放到 `.bashrc` 或 `.bash_profile` 这样的文件内。

原因即是 Bamboo 并没有使用全局设置的这个变量,主要还是依赖的其自身目录中 `安装目录下/bin/setenv.sh` 中的配置,所以编辑这个文件,修改

`JAVA_OPTS="-Xms${JVM_MINIMUM_MEMORY} -Xmx${JVM_MAXIMUM_MEMORY} ${JAVA_OPTS} ${JVM_REQUIRED_ARGS} ${JVM_SUPPORT_RECOMMENDED_ARGS} ${BAMBOO_HOME_MINUSD}"`

处为

`JAVA_OPTS="-javaagent:/atlassian-agent存放目录/atlassian-agent.jar -Xms${JVM_MINIMUM_MEMORY} -Xmx${JVM_MAXIMUM_MEMORY} ${JAVA_OPTS} ${JVM_REQUIRED_ARGS} ${JVM_SUPPORT_RECOMMENDED_ARGS} ${BAMBOO_HOME_MINUSD}"`

再重新尝试激活即可
15 changes: 15 additions & 0 deletions doc/Bitbucket_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Bitbucket FAQ

### 明明按照文档中说的配置了agent,并且成功激活了confluence,但Bitbucket激活时提示生成的密钥无效
这种情况往往是 `JAVA_OPTS` 设置的问题,如果是按照下边方式设置的 `JAVA_OPTS` ,会出现激活失败
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"` 这样的命令放到 `.bashrc` 或 `.bash_profile` 这样的文件内。

原因即是 Bitbucket 并没有使用全局设置的这个变量,主要还是依赖的其自身目录中 `安装目录下/bin/_start-webapp.sh` 中的配置,所以编辑这个文件,修改

`JAVA_OPTS="-classpath $INST_DIR/app $JAVA_OPTS $BITBUCKET_ARGS $JMX_OPTS $JVM_REQUIRED_ARGS $JVM_SUPPORT_RECOMMENDED_ARGS"`

处为

`JAVA_OPTS="-javaagent:/atlassian-agent存放目录/atlassian-agent.jar -classpath $INST_DIR/app $JAVA_OPTS $BITBUCKET_ARGS $JMX_OPTS $JVM_REQUIRED_ARGS $JVM_SUPPORT_RECOMMENDED_ARGS"`

再重新尝试激活即可
15 changes: 15 additions & 0 deletions doc/Confluence_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Confluence FAQ

### Windows下Confluence的激活注意点

* 不要使用start-service.bat启动(如果非要这样启动,自己去注册表改-javaagent参数)
* 使用bin\start-confluence.bat启动
* 在bin\setenv.bat里添加-javaagent参数
* Windows下Confluence有个bug,需要改动setenv.bat修复

```bash
set CATALINA_OPTS=-Xloggc:"%atlassian_logsdir%\gc-%atlassian_timestamp%.log" %CATALINA_OPTS%
//改成
set CATALINA_OPTS=-Xloggc:"%atlassian_logsdir%\gc-%%t.log" %CATALINA_OPTS%
```

7 changes: 7 additions & 0 deletions doc/Crowd_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Crowd FAQ

### 明明按照文档中说的配置了agent,并且成功激活了confluence,但Crowd激活时提示生成的密钥无效
这种情况往往是 `JAVA_OPTS` 设置的问题,如果是按照下边方式设置的 `JAVA_OPTS` ,会出现激活失败
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"` 这样的命令放到 `.bashrc` 或 `.bash_profile` 这样的文件内。

原因即是 Crowd 并没有使用全局设置的这个变量,主要还是依赖的其自身目录中 `安装目录下/apache-tomcat/bin/setenv.sh` 中的配置,所以编辑这个文件,加上 `JAVA_OPTS="-javaagent:/atlassian-agent存放目录/atlassian-agent.jar $JAVA_OPTS"`,再重新尝试激活即可
17 changes: 17 additions & 0 deletions doc/FishEye_Crucible_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# FishEye & Crucible FAQ

### 明明按照文档中说的配置了agent,并且成功激活了confluence,但 FishEye or Crucible 激活时提示生成的密钥无效
这种情况往往是 `JAVA_OPTS` 设置的问题,如果是按照下边方式设置的 `JAVA_OPTS` ,会出现激活失败
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"` 这样的命令放到 `.bashrc` 或 `.bash_profile` 这样的文件内。

原因即是 FishEye 和 Crucible 没有直接使用这个环境变量,使用的是 `FISHEYE_OPTS` 这一环境变量

所以我们打开bin目录中的fisheyectl.sh文件,将其中的

```FISHEYE_CMD="$JAVACMD $FISHEYE_OPTS -Dfisheye.library.path=$FISHEYE_LIBRARY_PATH -Dfisheye.inst=$FISHEYE_INST -Djava.awt.headless=true -Djava.endorsed.dirs=$FISHEYE_HOME/lib/endorsed -jar $FISHEYE_HOME/fisheyeboot.jar"```

添加成

```FISHEYE_CMD="$JAVACMD $FISHEYE_OPTS -javaagent:/path/to/atlassian-agent-v1.2.2/atlassian-agent.jar -Dfisheye.library.path=$FISHEYE_LIBRARY_PATH -Dfisheye.inst=$FISHEYE_INST -Djava.awt.headless=true -Djava.endorsed.dirs=$FISHEYE_HOME/lib/endorsed -jar $FISHEYE_HOME/fisheyeboot.jar"```

再重新尝试激活即可。
7 changes: 7 additions & 0 deletions doc/JIRA_FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# JIRA FAQ

### 明明按照文档中说的配置了agent,并且成功激活了confluence,但JIRA激活时提示生成的密钥无效
这种情况往往是 `JAVA_OPTS` 设置的问题,如果是按照下边方式设置的 `JAVA_OPTS` ,会出现激活失败
* 你可以把:`export JAVA_OPTS="-javaagent:/path/to/atlassian-agent.jar ${JAVA_OPTS}"` 这样的命令放到 `.bashrc` 或 `.bash_profile` 这样的文件内。

原因即是 JIRA 并没有使用全局设置的这个变量,主要还是依赖的其自身目录中 `安装目录下/bin/setenv.sh` 中的配置,所以编辑这个文件,加上 `JAVA_OPTS="-javaagent:/atlassian-agent存放目录/atlassian-agent.jar $JAVA_OPTS"` 在 `JAVA_OPTS` 处,再重新尝试激活即可
11 changes: 8 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,20 @@
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.21.0-GA</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.4.0-b180830.0359</version>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</project>
13 changes: 8 additions & 5 deletions src/main/java/io/zhile/crack/atlassian/Usage.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

/**
* @author pengzhile
* @link https://zhile.io
* @version 1.0
* @link https://zhile.io
*/
public class Usage {
private static final Options OPTIONS = new Options();
Expand All @@ -33,6 +33,7 @@ public class Usage {
PRODUCTS.put("jsd", "JIRA Service Desk");
PRODUCTS.put("training", "Training plugin for JIRA");
PRODUCTS.put("capture", "Capture plugin for JIRA");
PRODUCTS.put("*", "Third party plugin key, looks like: com.foo.bar");

StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : PRODUCTS.entrySet()) {
Expand Down Expand Up @@ -83,9 +84,9 @@ private static void printUsage() {
formatter.printHelp("java -jar " + selfPath, OPTIONS, true);

System.out.println("\n================================================================================");
System.out.println("\n# Crack agent usage: append -javaagent arg to system environment: CATALINA_OPTS.");
System.out.println("\n# Crack agent usage: append -javaagent arg to system environment: JAVA_OPTS.");
System.out.println("# Example(execute this command or append it to setenv.sh/setenv.bat file): \n");
System.out.println(" export CATALINA_OPTS=\"-javaagent:" + selfPath + " ${CATALINA_OPTS}\"");
System.out.println(" export JAVA_OPTS=\"-javaagent:" + selfPath + " ${JAVA_OPTS}\"");
System.out.println("\n# Then start your confluence/jira server.\n");

System.exit(1);
Expand Down Expand Up @@ -149,11 +150,13 @@ private static void runCommand(CommandLine commandLine) {
property = new Capture(contactName, contactEMail, serverID, organisation);
break;
default:
printUsage();
return;
property = new ThirdPlugin(contactName, contactEMail, serverID, organisation);
((ThirdPlugin) property).setProductName(product);
break;
}

try {
property.init();
String licenseCode = Encoder.encode(property.toString());

System.out.println("Your license code(Don't copy this line!!!): \n");
Expand Down
Loading