├── Jenkinsfile ├── Readme.md ├── atlassian-extras-3.2.jar ├── atlassian-extras-decoder-v2-3.1.1.jar ├── atlassian-extras-decoder-v2-3.4.1.jar ├── atlassian-extras-decoder-v2-3.4.1.jar.src └── com │ └── atlassian │ └── extras │ └── decoder │ └── v2 │ ├── Version2LicenseDecoder.class │ └── Version2LicenseDecoder.java ├── atlassian-extras-legacy-3.3.0.jar ├── atlassian-keygen.php ├── atlassian-universal-plugin-manager-plugin-4.0.4.jar ├── bitbucket ├── 7.4.2 │ └── README.md └── old-version │ └── README.md ├── code ├── Version2LicenseDecoder.class ├── Version2LicenseDecoder.java ├── Version2LicenseDecoder_backup.class ├── Version2LicenseDecoder_backup.java ├── atlassian-extras-common-3.4.1 │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── com.atlassian.extras │ │ │ └── atlassian-extras-common │ │ │ ├── pom.properties │ │ │ └── pom.xml │ └── com │ │ └── atlassian │ │ └── extras │ │ └── common │ │ ├── DateEditor.java │ │ ├── DateParsingException.java │ │ ├── LicenseException.java │ │ ├── LicensePropertiesConstants.java │ │ ├── LicenseTypeAndEditionResolver.java │ │ ├── log │ │ ├── Log4jLogger.java │ │ ├── Logger.java │ │ └── StdErrLogger.java │ │ ├── org │ │ └── springframework │ │ │ └── util │ │ │ ├── DefaultPropertiesPersister.class │ │ │ ├── DefaultPropertiesPersister.java │ │ │ ├── StringUtils.class │ │ │ └── StringUtils.java │ │ └── util │ │ ├── LicenseProperties.java │ │ └── ProductLicenseProperties.java └── atlassian-extras-decoder-v2-3.4.1 │ ├── META-INF │ ├── MANIFEST.MF │ └── maven │ │ └── com.atlassian.extras │ │ └── atlassian-extras-decoder-v2 │ │ ├── pom.properties │ │ └── pom.xml │ └── com │ └── atlassian │ └── extras │ └── decoder │ └── v2 │ ├── Version2LicenseDecoder.class │ └── Version2LicenseDecoder.java ├── confluence ├── 6.3.4 │ └── README.md ├── 7.0.1 │ ├── README.md │ ├── atlassian-extras-decoder-v2-3.4.1.jar │ └── atlassian-universal-plugin-manager-plugin-4.0.6.jar └── 7.5.0 │ └── README.md ├── crowd ├── 3.6.2 │ └── README.md └── old-version │ └── README.md ├── jira ├── 7.5.0 │ └── README.md └── 8.0.2 │ └── README.md ├── license_key_bitbucket.txt ├── license_key_confluence.txt ├── license_key_crowd.txt ├── license_key_gliffy_confluence.txt ├── license_key_gliffy_jira.txt ├── license_key_jira.txt ├── license_key_servicedesk.txt ├── mysql-connector-java-5.1.47.jar └── servicedesk └── README.md /Jenkinsfile: -------------------------------------------------------------------------------- 1 | properties([ 2 | parameters([ 3 | string(name: 'PLUG_KEY', defaultValue: ''), 4 | // string(name: 'SERVERID', defaultValue: 'BQX9-6FJT-S0YH-ZCO1'), 5 | choice(name: 'APP', choices: ['Jira', 'Confluence', 'Bitbucket']) 6 | ]) 7 | ]) 8 | 9 | pipeline { 10 | agent { 11 | docker { 12 | image 'php:8.0.5' 13 | args '-u 0' 14 | } 15 | } 16 | stages { 17 | stage('Get key for Jira') { 18 | when { 19 | expression { params.APP == 'Jira' } 20 | } 21 | steps { 22 | sh 'echo "Jira plugin"' 23 | //sh 'printenv' 24 | sh '''#!/bin/bash 25 | sed -i "s/com.gliffy.integration.jira/"$PLUG_KEY"/g" license_key_gliffy_jira.txt 26 | sed -i "s/ServerID=BQX9-6FJT-S0YH-ZCO1/ServerID=BQX9-6FJT-S0YH-ZCO1/g" license_key_gliffy_jira.txt 27 | cat license_key_gliffy_jira.txt 28 | chmod +x atlassian-keygen.php 29 | ./atlassian-keygen.php -e license_key_gliffy_jira.txt 30 | ''' 31 | } 32 | } 33 | stage('Get key for Confluence') { 34 | when { 35 | expression { params.APP == 'Confluence' } 36 | } 37 | steps { 38 | sh 'echo "Confluence plugin"' 39 | //sh 'printenv' 40 | sh '''#!/bin/bash 41 | sed -i "s/com.gliffy.integration.jira/"$PLUG_KEY"/g" license_key_gliffy_confluence.txt 42 | sed -i "s/ServerID=BQX9-6FJT-S0YH-ZCO1/ServerID=B1Y3-1R40-C2Z4-516N/g" license_key_gliffy_confluence.txt 43 | cat license_key_gliffy_confluence.txt 44 | chmod +x atlassian-keygen.php 45 | ./atlassian-keygen.php -e license_key_gliffy_confluence.txt 46 | ''' 47 | } 48 | } 49 | stage('Get key for Bitbucket') { 50 | when { 51 | expression { params.APP == 'Bitbucket' } 52 | } 53 | steps { 54 | sh 'echo "Bitbucket plugin"' 55 | //sh 'printenv' 56 | sh '''#!/bin/bash 57 | sed -i "s/com.gliffy.integration.jira/"$PLUG_KEY"/g" license_key_gliffy_jira.txt 58 | sed -i "s/ServerID=BQX9-6FJT-S0YH-ZCO1/ServerID=BT1U-OG2F-97JH-Y6YO/g" license_key_gliffy_jira.txt 59 | cat license_key_gliffy_jira.txt 60 | chmod +x atlassian-keygen.php 61 | ./atlassian-keygen.php -e license_key_gliffy_jira.txt 62 | ''' 63 | } 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Кряк для продуктов Atlassian 2 | 3 | - JIRA Software 4 | - JIRA Service Desk (Jira Service Management) 5 | - Confluence 6 | - Bitbucket 7 | - Crowd 8 | 9 | ## Способ установки 10 | 11 | 1. Идём в README.md нужной версии и повторяем действия из раздела Dockerfile (копируем указанные .jar файлы в указанные папки в контейнере) 12 | 2. Копируем Server ID сервера нужного продукта и заменяем его в соответствующем license_key_product.txt файле 13 | 3. Генерим ключ командой: php atlassian-keygen.php -e license_key_product.txt 14 | 4. Copy key generate in console 15 | 5. Скопированный ключ используем для активации продукта 16 | 17 | (!) В каждом README есть раздел Способ установки. Он может отличаться от основного способа 18 | 19 | ## Создание собственного файла лицензии для приложения из маркета (для Jira/Confluence) 20 | 21 | 1. Заходим в список установленных приложений и идём к окну ввода Ключа лицензии (License key). 22 | 2. Рядом видим Ключ приложения (App key), например `com.gliffy.integration.jira` 23 | 3. Копируем его 24 | 4. Копируем файл лицензии от confluence/jira и заменяем 4 значения (+ Server ID, если он другой) 25 | 26 | На примере Jira: 27 | 28 | ```text 29 | com.gliffy.integration.jira.active=true 30 | com.gliffy.integration.jira.LicenseTypeName=COMMERCIAL 31 | com.gliffy.integration.jira.NumberOfClusterNodes=0 32 | com.gliffy.integration.jira.NumberOfUsers=-1 33 | ``` 34 | 35 | Для Confluence ключ будет `com.gliffy.integration.confluence` 36 | 37 | Пример можно посмотреть в файле `license_key_gliffy_jira.txt` или `license_key_gliffy_confluence.txt` 38 | 39 | Дальше полученную лицензию можно использовать для генерации ключа (желательно закоммитить файл лицензии, чтобы в след раз не надо было делать то же самое) 40 | 41 | Имя файла называем следующим образом: 42 | 43 | ```text 44 | license_key_${app_name}_${jira|confluence}.txt 45 | ``` 46 | 47 | ## Полезные ссылки 48 | 49 | [Установка Service Desk в JIRA](https://community.atlassian.com/t5/Jira-questions/How-do-I-add-Jira-ServiceDesk-to-my-existing-Jira-Software/qaq-p/293122) 50 | 51 | [Установка и активация Atlassian Confluence 6.3.4](https://ealebed.github.io/posts/2017/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D1%8F-atlassian-confluence-6.3.4/) 52 | 53 | [Установка и активация JIRA Software Server 7.5.0](https://ealebed.github.io/posts/2017/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D1%8F-jira-software-server-7.5.0/) 54 | 55 | [benzfield/bitbucket-crack](https://github.com/benzfield/bitbucket-crack) 56 | 57 | [binhnt-teko/jira-crack](https://github.com/binhnt-teko/jira-crack) 58 | 59 | [hgqapp/atlassian-agent](https://github.com/hgqapp/atlassian-agent) 60 | -------------------------------------------------------------------------------- /atlassian-extras-3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-extras-3.2.jar -------------------------------------------------------------------------------- /atlassian-extras-decoder-v2-3.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-extras-decoder-v2-3.1.1.jar -------------------------------------------------------------------------------- /atlassian-extras-decoder-v2-3.4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-extras-decoder-v2-3.4.1.jar -------------------------------------------------------------------------------- /atlassian-extras-decoder-v2-3.4.1.jar.src/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-extras-decoder-v2-3.4.1.jar.src/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.class -------------------------------------------------------------------------------- /atlassian-extras-decoder-v2-3.4.1.jar.src/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java: -------------------------------------------------------------------------------- 1 | package com.atlassian.extras.decoder.v2; 2 | 3 | import com.atlassian.extras.common.LicenseException; 4 | import com.atlassian.extras.common.org.springframework.util.DefaultPropertiesPersister; 5 | import com.atlassian.extras.decoder.api.AbstractLicenseDecoder; 6 | import java.io.ByteArrayInputStream; 7 | import java.io.ByteArrayOutputStream; 8 | import java.io.DataInputStream; 9 | import java.io.DataOutputStream; 10 | import java.io.IOException; 11 | import java.io.InputStreamReader; 12 | import java.io.Reader; 13 | import java.io.UnsupportedEncodingException; 14 | // import java.security.InvalidKeyException; 15 | import java.security.KeyFactory; 16 | import java.security.NoSuchAlgorithmException; 17 | import java.security.PublicKey; 18 | // import java.security.Signature; 19 | // import java.security.SignatureException; 20 | import java.security.spec.InvalidKeySpecException; 21 | import java.security.spec.X509EncodedKeySpec; 22 | import java.util.Properties; 23 | import java.util.zip.Inflater; 24 | import java.util.zip.InflaterInputStream; 25 | import org.apache.commons.codec.binary.Base64; 26 | 27 | public class Version2LicenseDecoder extends AbstractLicenseDecoder { 28 | public static final int VERSION_NUMBER_1 = 1; 29 | public static final int VERSION_NUMBER_2 = 2; 30 | public static final int VERSION_LENGTH = 3; 31 | public static final int ENCODED_LICENSE_LENGTH_BASE = 31; 32 | public static final byte[] LICENSE_PREFIX = new byte[] { 13, 14, 12, 10, 15 }; 33 | 34 | public static final char SEPARATOR = 'X'; 35 | private static final PublicKey PUBLIC_KEY; 36 | private static final int ENCODED_LICENSE_LINE_LENGTH = 76; 37 | 38 | static { 39 | try { 40 | String pubKeyEncoded = "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS"; 41 | 42 | KeyFactory keyFactory = KeyFactory.getInstance("DSA"); 43 | PUBLIC_KEY = keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decodeBase64( 44 | "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS" 45 | .getBytes()))); 46 | } catch (NoSuchAlgorithmException e) { 47 | 48 | throw new Error(e); 49 | } catch (InvalidKeySpecException e) { 50 | 51 | throw new Error(e); 52 | } 53 | } 54 | 55 | public boolean canDecode(String licenseString) { 56 | return true; 57 | } 58 | 59 | public Properties doDecode(String licenseString) { 60 | String encodedLicenseTextAndHash = getLicenseContent(removeWhiteSpaces(licenseString)); 61 | byte[] zippedLicenseBytes = checkAndGetLicenseText(encodedLicenseTextAndHash); 62 | Reader licenseText = unzipText(zippedLicenseBytes); 63 | 64 | return loadLicenseConfiguration(licenseText); 65 | } 66 | 67 | protected int getLicenseVersion() { 68 | return 2; 69 | } 70 | 71 | private Reader unzipText(byte[] licenseText) { 72 | ByteArrayInputStream in = new ByteArrayInputStream(licenseText); 73 | in.skip(LICENSE_PREFIX.length); 74 | InflaterInputStream zipIn = new InflaterInputStream(in, new Inflater()); 75 | try { 76 | return new InputStreamReader(zipIn, "UTF-8"); 77 | } catch (UnsupportedEncodingException e) { 78 | 79 | throw new LicenseException(e); 80 | } 81 | } 82 | 83 | private String getLicenseContent(String licenseString) { 84 | String lengthStr = licenseString.substring(licenseString.lastIndexOf('X') + 3); 85 | try { 86 | int encodedLicenseLength = Integer.valueOf(lengthStr, 31).intValue(); 87 | return licenseString.substring(0, encodedLicenseLength); 88 | } catch (NumberFormatException e) { 89 | throw new LicenseException("Could NOT decode license length <" + lengthStr + ">", e); 90 | } 91 | } 92 | 93 | private byte[] checkAndGetLicenseText(String licenseContent) { 94 | byte[] licenseText; 95 | try { 96 | byte[] decodedBytes = Base64.decodeBase64(licenseContent.getBytes()); 97 | ByteArrayInputStream in = new ByteArrayInputStream(decodedBytes); 98 | DataInputStream dIn = new DataInputStream(in); 99 | int textLength = dIn.readInt(); 100 | licenseText = new byte[textLength]; 101 | dIn.read(licenseText); 102 | byte[] hash = new byte[dIn.available()]; 103 | dIn.read(hash); 104 | 105 | // try { 106 | // Signature signature = Signature.getInstance("SHA1withDSA"); 107 | // signature.initVerify(PUBLIC_KEY); 108 | // signature.update(licenseText); 109 | // if (!signature.verify(hash)) { 110 | // throw new LicenseException("Failed to verify the license."); 111 | // } 112 | // } catch (InvalidKeyException e) { 113 | 114 | // throw new LicenseException(e); 115 | // } catch (SignatureException e) { 116 | // throw new LicenseException(e); 117 | // } catch (NoSuchAlgorithmException e) { 118 | 119 | // throw new LicenseException(e); 120 | // } 121 | } catch (IOException e) { 122 | 123 | throw new LicenseException(e); 124 | } 125 | 126 | return licenseText; 127 | } 128 | 129 | private Properties loadLicenseConfiguration(Reader text) { 130 | try { 131 | Properties props = new Properties(); 132 | (new DefaultPropertiesPersister()).load(props, text); 133 | return props; 134 | } catch (IOException e) { 135 | throw new LicenseException("Could NOT load properties from reader", e); 136 | } 137 | } 138 | 139 | private static String removeWhiteSpaces(String licenseData) { 140 | if (licenseData == null || licenseData.length() == 0) { 141 | return licenseData; 142 | } 143 | 144 | char[] chars = licenseData.toCharArray(); 145 | StringBuffer buf = new StringBuffer(chars.length); 146 | for (int i = 0; i < chars.length; i++) { 147 | if (!Character.isWhitespace(chars[i])) { 148 | buf.append(chars[i]); 149 | } 150 | } 151 | 152 | return buf.toString(); 153 | } 154 | 155 | public static String packLicense(byte[] text, byte[] hash) throws LicenseException { 156 | try { 157 | ByteArrayOutputStream out = new ByteArrayOutputStream(); 158 | DataOutputStream dOut = new DataOutputStream(out); 159 | dOut.writeInt(text.length); 160 | dOut.write(text); 161 | dOut.write(hash); 162 | 163 | byte[] allData = out.toByteArray(); 164 | String result = (new String(Base64.encodeBase64(allData))).trim(); 165 | 166 | result = result + 'X' + "0" + '\002' + Integer.toString(result.length(), 31); 167 | result = split(result); 168 | return result; 169 | } catch (IOException e) { 170 | 171 | throw new LicenseException(e); 172 | } 173 | } 174 | 175 | private static String split(String licenseData) { 176 | if (licenseData == null || licenseData.length() == 0) { 177 | return licenseData; 178 | } 179 | 180 | char[] chars = licenseData.toCharArray(); 181 | StringBuffer buf = new StringBuffer(chars.length + chars.length / 76); 182 | for (int i = 0; i < chars.length; i++) { 183 | buf.append(chars[i]); 184 | if (i > 0 && i % 76 == 0) { 185 | buf.append('\n'); 186 | } 187 | } 188 | 189 | return buf.toString(); 190 | } 191 | } 192 | -------------------------------------------------------------------------------- /atlassian-extras-legacy-3.3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-extras-legacy-3.3.0.jar -------------------------------------------------------------------------------- /atlassian-keygen.php: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/php 2 | opts = getopt("s:r:e:d:h"); 23 | 24 | $this->getMode(); 25 | 26 | if ($this->mode == "encode") { 27 | $this->getSourceFile(); 28 | $this->getResultFile(); 29 | $this->getSignatureFile(false); 30 | $this->encodeFile(); 31 | } elseif ($this->mode == "decode") { 32 | $this->getSourceFile(); 33 | $this->getResultFile(); 34 | $this->getSignatureFile(true); 35 | $this->decodeFile(); 36 | } elseif ($this->mode == "help") { 37 | $this->showHelp(); 38 | } else { 39 | $this->showHelp(); 40 | $this->showError("Invalid mode"); 41 | exit(1); 42 | } 43 | } 44 | 45 | public function encodeFile() 46 | { 47 | $code = file_get_contents($this->sourceFile); 48 | printf(" > Source => %s:\n%s", $this->sourceFile, $code); 49 | 50 | printf(" > Signature => %s:\n", $this->signatureFile ? $this->signatureFile : ""); 51 | if ($this->signatureFile) { 52 | $signature = file_get_contents($this->signatureFile); 53 | $this->printBinaryCode($signature); 54 | } else { 55 | $signature = null; 56 | } 57 | 58 | $result = $this->encodeVersion2License($code, $signature); 59 | printf(" > Result => %s:\n", $this->resultFile ? $this->resultFile : ""); 60 | $this->printCode($result); 61 | if ($this->resultFile) { 62 | file_put_contents($this->resultFile, $result); 63 | } 64 | } 65 | 66 | public function decodeFile() 67 | { 68 | $code = file_get_contents($this->sourceFile); 69 | $code = $this->stripSpaces($code); 70 | printf(" > Source => %s:\n", $this->sourceFile); 71 | $this->printCode($code); 72 | 73 | $result = $this->decodeVersion2License($code, $signature); 74 | 75 | printf(" > Signature => %s:\n", $this->signatureFile ? $this->signatureFile : ""); 76 | $this->printBinaryCode($signature); 77 | if ($this->signatureFile) { 78 | file_put_contents($this->signatureFile, $signature); 79 | } 80 | 81 | printf(" > Result => %s:\n%s", $this->resultFile ? $this->resultFile : "", $result); 82 | if ($this->resultFile) { 83 | file_put_contents($this->resultFile, $result); 84 | } 85 | } 86 | 87 | public function getSourceFile() 88 | { 89 | $opt = $this->mode == "encode" ? "e" : "d"; 90 | if (!array_key_exists($opt, $this->opts)) { 91 | printf("ERROR: You need to specify source file\n"); 92 | exit(1); 93 | } 94 | $this->sourceFile = $this->opts[$opt]; 95 | if (!file_exists($this->sourceFile)) { 96 | printf("ERROR: Unable to find source file: %s\n", $this->sourceFile); 97 | exit(1); 98 | } 99 | } 100 | 101 | public function getResultFile() 102 | { 103 | if (!array_key_exists("r", $this->opts)) { 104 | $this->resultFile = false; 105 | } else { 106 | $this->resultFile = $this->opts["r"]; 107 | } 108 | } 109 | 110 | public function getSignatureFile($optional) 111 | { 112 | if (!array_key_exists("s", $this->opts)) { 113 | return false; 114 | } 115 | $this->signatureFile = $this->opts["s"]; 116 | if (!$optional && !file_exists($this->signatureFile)) { 117 | printf("ERROR: Unable to find signature file: %s\n", $this->signatureFile); 118 | exit(1); 119 | } 120 | } 121 | 122 | public function showError($message) 123 | { 124 | printf("ERROR: %s\n", $message); 125 | } 126 | 127 | public function showHelp() 128 | { 129 | printf("Atlassian Jira Keygen v2\n"); 130 | printf("(jira will accept keys generated by this keygen only if patched for that)\n"); 131 | printf("Usage: %s <-e|-d|-h> -f [-s ] [-r ]\n", basename($_SERVER["argv"][0])); 132 | printf("Options:\n"); 133 | printf(" -h this screen\n"); 134 | printf(" -e encode license file and attach signature\n"); 135 | printf(" -d decode license file and detach signature\n"); 136 | printf(" -s signature file\n"); 137 | printf(" -r put results in file\n"); 138 | } 139 | 140 | public function getMode() 141 | { 142 | if (array_key_exists("h", $this->opts)) { 143 | $this->mode = "help"; 144 | } elseif (array_key_exists("e", $this->opts)) { 145 | $this->mode = "encode"; 146 | } elseif (array_key_exists("d", $this->opts)) { 147 | $this->mode = "decode"; 148 | } else { 149 | $this->mode = false; 150 | } 151 | } 152 | 153 | private function stripSpaces($code) 154 | { 155 | return str_replace(["\r", "\n", "\t", " "], "", $code); 156 | } 157 | 158 | private function printBinaryCode($text) 159 | { 160 | for ($i = 0; $i < strlen($text); $i++) { 161 | printf("%02X", ord(substr($text, $i, 1))); 162 | if (($i + 1) % 40 == 0) { 163 | printf("\n"); 164 | } 165 | } 166 | printf("\n"); 167 | } 168 | 169 | private function printCode($text) 170 | { 171 | for ($i = 0; $i < strlen($text); $i++) { 172 | printf("%s", substr($text, $i, 1)); 173 | if (($i + 1) % 80 == 0) { 174 | printf("\n"); 175 | } 176 | } 177 | printf("\n"); 178 | } 179 | 180 | private function decodeVersion2License($code, &$signature = null) 181 | { 182 | $code = str_replace(["\r", "\n", "\t", " "], "", $code); 183 | 184 | $xPos = strrpos($code, "X"); 185 | $ver = substr($code, $xPos + 1, 2); 186 | if ($ver != "02") { 187 | $this->showError("Invalid license version: $ver"); 188 | exit(1); 189 | } 190 | //$code = substr($code, 0, intval($xPos + 3, 31)); 191 | 192 | $code = substr($code, 0, intval($xPos, 31)); 193 | 194 | printf(" > data:\n"); 195 | $this->printCode($code); 196 | 197 | $code = base64_decode($code); 198 | 199 | printf(" > binary data:\n"); 200 | $this->printBinaryCode($code); 201 | 202 | //Parse get data -> get size 203 | $sizeRec = unpack("N", substr($code, 0, 4)); 204 | $size = $sizeRec[1]; 205 | print("> size: \n "); 206 | print($sizeRec[1]); 207 | 208 | //Bypass 4 position (size) -> get text 209 | $text = substr($code, 4, $size); 210 | 211 | //Bypass $size + 4 -> get signature 212 | $signature = substr($code, $size + 4); 213 | 214 | //Check version of text 215 | $id = substr($text, 0, 5); 216 | $id2 = chr(13) . chr(14) . chr(12) . chr(10) . chr(15); 217 | if ($id != $id2) { 218 | $this->showError("Invalid license v2 format"); 219 | exit(1); 220 | } 221 | //Get text after strip id (version) 222 | $text = substr($text, 5); // strip id 223 | printf(" > zlib prefix:\n"); 224 | $this->printBinaryCode(substr($text, 0, 2)); 225 | 226 | //Get text after strip rfc1950 header 227 | $text = substr($text, 2); // strip rfc1950 header 228 | printf(" > zlib suffix:\n"); 229 | $this->printBinaryCode(substr($text, -4)); 230 | 231 | $text = substr($text,0, strlen($text) - 4); //binhnt 232 | 233 | $text = gzinflate($text); // decompress 234 | 235 | return $text; 236 | } 237 | 238 | private function encodeVersion2License($text, $signature = null) 239 | { 240 | $id = chr(13) . chr(14) . chr(12) . chr(10) . chr(15); 241 | $gzPrefix = "\x78\xDA"; 242 | $gzSuffix = mhash(MHASH_ADLER32, $text); 243 | printf(" > zlib prefix:\n"); 244 | $this->printBinaryCode($gzPrefix); 245 | printf(" > zlib suffix:\n"); 246 | $this->printBinaryCode($gzSuffix); 247 | 248 | $text = $id . $gzPrefix . gzdeflate($text) . $gzSuffix; 249 | printf(" > size:\n"); 250 | print(strlen($text)); 251 | $size = pack("N", strlen($text)); 252 | 253 | $data = $size .$text. $signature; 254 | 255 | printf(" > binary data:\n"); 256 | $this->printBinaryCode($data); 257 | 258 | $data = trim(base64_encode($data)); 259 | printf(" > data:\n"); 260 | $this->printCode($data); 261 | 262 | $result = $data . "X" . "0" . "2" . base_convert(strlen($data), 10, 31); 263 | return $result; 264 | } 265 | } 266 | 267 | $app = new Application(); 268 | $app->run(); 269 | -------------------------------------------------------------------------------- /atlassian-universal-plugin-manager-plugin-4.0.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/atlassian-universal-plugin-manager-plugin-4.0.4.jar -------------------------------------------------------------------------------- /bitbucket/7.4.2/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Bitbucket (>= 7.4.2) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM atlassian/bitbucket-server:7.10.0 7 | 8 | COPY atlassian-extras-decoder-v2-3.4.1.jar /opt/atlassian/bitbucket/app/WEB-INF/lib 9 | ``` 10 | 11 | ## Проверенные образы Bitbucket 12 | 13 | - atlassian/bitbucket-server:7.4.2 14 | - atlassian/bitbucket-server:7.10.0 15 | 16 | ## Способ установки 17 | 18 | Как везде 19 | -------------------------------------------------------------------------------- /bitbucket/old-version/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Bitbucket (< 7.4.2) (на самом деле < 6 или типа того) 2 | 3 | Old bitbucket versions: 4 | 6.4.0-ubuntu 7.3-ubuntu 7.4.0-ubuntu 5.9.1 5 | 6 | Dockerfile: 7 | 8 | ```dockerfile 9 | FROM atlassian/bitbucket-server:6.0.0 10 | 11 | COPY atlassian-extras-3.2.jar /opt/atlassian/bitbucket/app/WEB-INF/lib 12 | COPY atlassian-extras-decoder-v2-3.1.1.jar /opt/atlassian/bitbucket/app/WEB-INF/lib 13 | COPY atlassian-extras-legacy-3.3.0.jar /opt/atlassian/bitbucket/app/WEB-INF/lib 14 | ``` 15 | 16 | ## Проверенные образы Bitbucket 17 | 18 | -- 19 | 20 | ## Способ установки 21 | 22 | Как везде 23 | -------------------------------------------------------------------------------- /code/Version2LicenseDecoder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/code/Version2LicenseDecoder.class -------------------------------------------------------------------------------- /code/Version2LicenseDecoder.java: -------------------------------------------------------------------------------- 1 | import com.atlassian.extras.common.LicenseException; 2 | import com.atlassian.extras.common.org.springframework.util.DefaultPropertiesPersister; 3 | import com.atlassian.extras.decoder.api.AbstractLicenseDecoder; 4 | import com.atlassian.extras.decoder.v2.Version2LicenseDecoder; 5 | import java.io.ByteArrayInputStream; 6 | import java.io.ByteArrayOutputStream; 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.IOException; 10 | import java.io.InputStreamReader; 11 | import java.io.Reader; 12 | import java.io.UnsupportedEncodingException; 13 | 14 | import java.security.KeyFactory; 15 | import java.security.NoSuchAlgorithmException; 16 | import java.security.PublicKey; 17 | 18 | 19 | import java.security.spec.InvalidKeySpecException; 20 | import java.security.spec.X509EncodedKeySpec; 21 | import java.util.Properties; 22 | import java.util.zip.Inflater; 23 | import java.util.zip.InflaterInputStream; 24 | import org.apache.commons.codec.binary.Base64; 25 | 26 | public class Version2LicenseDecoder 27 | extends AbstractLicenseDecoder 28 | { 29 | public static final int VERSION_NUMBER_1 = 1; 30 | public static final int VERSION_NUMBER_2 = 2; 31 | public static final int VERSION_LENGTH = 3; 32 | public static final int ENCODED_LICENSE_LENGTH_BASE = 31; 33 | public static final byte[] LICENSE_PREFIX = { 13, 14, 12, 10, 15 }; 34 | 35 | public static final char SEPARATOR = 'X'; 36 | private static final PublicKey PUBLIC_KEY; 37 | private static final int ENCODED_LICENSE_LINE_LENGTH = 76; 38 | 39 | 40 | static { 41 | try { 42 | String str = "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS"; 43 | 44 | KeyFactory keyFactory = KeyFactory.getInstance("DSA"); 45 | PUBLIC_KEY = keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decodeBase64("MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS".getBytes()))); 46 | } 47 | catch (NoSuchAlgorithmException noSuchAlgorithmException) { 48 | 49 | throw new Error(noSuchAlgorithmException); 50 | } 51 | catch (InvalidKeySpecException invalidKeySpecException) { 52 | 53 | throw new Error(invalidKeySpecException); 54 | } 55 | } 56 | 57 | public boolean canDecode(String paramString) { 58 | paramString = removeWhiteSpaces(paramString); 59 | 60 | int i = paramString.lastIndexOf('X'); 61 | if (i == -1 || i + 3 >= paramString.length()) 62 | { 63 | return false; 64 | } 65 | 66 | 67 | try { 68 | int j = Integer.parseInt(paramString.substring(i + 1, i + 3)); 69 | if (j != 1 && j != 2) 70 | { 71 | return false; 72 | } 73 | 74 | String str = paramString.substring(i + 3); 75 | int k = Integer.valueOf(str, 31).intValue(); 76 | if (i != k) 77 | { 78 | return false; 79 | } 80 | 81 | return true; 82 | } 83 | catch (NumberFormatException numberFormatException) { 84 | 85 | return false; 86 | } 87 | } 88 | 89 | public Properties doDecode(String paramString) { 90 | String str = getLicenseContent(removeWhiteSpaces(paramString)); 91 | byte[] arrayOfByte = checkAndGetLicenseText(str); 92 | Reader reader = unzipText(arrayOfByte); 93 | 94 | return loadLicenseConfiguration(reader); 95 | } 96 | 97 | protected int getLicenseVersion() { return 2; } 98 | 99 | private Reader unzipText(byte[] paramArrayOfByte) { 100 | ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(paramArrayOfByte); 101 | byteArrayInputStream.skip(LICENSE_PREFIX.length); 102 | InflaterInputStream inflaterInputStream = new InflaterInputStream(byteArrayInputStream, new Inflater()); 103 | 104 | try { 105 | return new InputStreamReader(inflaterInputStream, "UTF-8"); 106 | } 107 | catch (UnsupportedEncodingException unsupportedEncodingException) { 108 | 109 | throw new LicenseException(unsupportedEncodingException); 110 | } 111 | } 112 | 113 | private String getLicenseContent(String paramString) { 114 | String str = paramString.substring(paramString.lastIndexOf('X') + 3); 115 | 116 | try { 117 | int i = Integer.valueOf(str, 31).intValue(); 118 | return paramString.substring(0, i); 119 | } 120 | catch (NumberFormatException numberFormatException) { 121 | 122 | throw new LicenseException("Could NOT decode license length <" + str + ">", numberFormatException); 123 | } 124 | } 125 | 126 | private byte[] checkAndGetLicenseText(String paramString) { 127 | byte[] arrayOfByte; 128 | try { 129 | byte[] arrayOfByte1 = Base64.decodeBase64(paramString.getBytes()); 130 | ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(arrayOfByte1); 131 | DataInputStream dataInputStream = new DataInputStream(byteArrayInputStream); 132 | int i = dataInputStream.readInt(); 133 | arrayOfByte = new byte[i]; 134 | dataInputStream.read(arrayOfByte); 135 | byte[] arrayOfByte2 = new byte[dataInputStream.available()]; 136 | dataInputStream.read(arrayOfByte2); 137 | 138 | 139 | } 140 | catch (IOException iOException) { 141 | 142 | throw new LicenseException(iOException); 143 | } 144 | 145 | return arrayOfByte; 146 | } 147 | 148 | private Properties loadLicenseConfiguration(Reader paramReader) { 149 | try { 150 | Properties properties = new Properties(); 151 | (new DefaultPropertiesPersister()).load(properties, paramReader); 152 | return properties; 153 | } 154 | catch (IOException iOException) { 155 | 156 | throw new LicenseException("Could NOT load properties from reader", iOException); 157 | } 158 | } 159 | 160 | private static String removeWhiteSpaces(String paramString) { 161 | if (paramString == null || paramString.length() == 0) 162 | { 163 | return paramString; 164 | } 165 | 166 | char[] arrayOfChar = paramString.toCharArray(); 167 | StringBuffer stringBuffer = new StringBuffer(arrayOfChar.length); 168 | for (byte b = 0; b < arrayOfChar.length; b++) { 169 | 170 | if (!Character.isWhitespace(arrayOfChar[b])) 171 | { 172 | stringBuffer.append(arrayOfChar[b]); 173 | } 174 | } 175 | 176 | return stringBuffer.toString(); 177 | } 178 | 179 | public static String packLicense(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2) throws LicenseException { 180 | try { 181 | ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 182 | DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream); 183 | dataOutputStream.writeInt(paramArrayOfByte1.length); 184 | dataOutputStream.write(paramArrayOfByte1); 185 | dataOutputStream.write(paramArrayOfByte2); 186 | 187 | byte[] arrayOfByte = byteArrayOutputStream.toByteArray(); 188 | String str = (new String(Base64.encodeBase64(arrayOfByte))).trim(); 189 | 190 | str = str + 'X' + "0" + '\002' + Integer.toString(str.length(), 31); 191 | return split(str); 192 | } 193 | catch (IOException iOException) { 194 | 195 | throw new LicenseException(iOException); 196 | } 197 | } 198 | 199 | private static String split(String paramString) { 200 | if (paramString == null || paramString.length() == 0) 201 | { 202 | return paramString; 203 | } 204 | 205 | char[] arrayOfChar = paramString.toCharArray(); 206 | StringBuffer stringBuffer = new StringBuffer(arrayOfChar.length + arrayOfChar.length / 76); 207 | for (byte b = 0; b < arrayOfChar.length; b++) { 208 | 209 | stringBuffer.append(arrayOfChar[b]); 210 | if (b && b % 76 == 0) 211 | { 212 | stringBuffer.append('\n'); 213 | } 214 | } 215 | 216 | return stringBuffer.toString(); 217 | } 218 | 219 | } 220 | -------------------------------------------------------------------------------- /code/Version2LicenseDecoder_backup.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/code/Version2LicenseDecoder_backup.class -------------------------------------------------------------------------------- /code/Version2LicenseDecoder_backup.java: -------------------------------------------------------------------------------- 1 | import com.atlassian.extras.common.LicenseException; 2 | import com.atlassian.extras.common.org.springframework.util.DefaultPropertiesPersister; 3 | import com.atlassian.extras.decoder.api.AbstractLicenseDecoder; 4 | import com.atlassian.extras.decoder.v2.Version2LicenseDecoder; 5 | import java.io.ByteArrayInputStream; 6 | import java.io.ByteArrayOutputStream; 7 | import java.io.DataInputStream; 8 | import java.io.DataOutputStream; 9 | import java.io.IOException; 10 | import java.io.InputStreamReader; 11 | import java.io.Reader; 12 | import java.io.UnsupportedEncodingException; 13 | import java.security.InvalidKeyException; 14 | import java.security.KeyFactory; 15 | import java.security.NoSuchAlgorithmException; 16 | import java.security.PublicKey; 17 | import java.security.Signature; 18 | import java.security.SignatureException; 19 | import java.security.spec.InvalidKeySpecException; 20 | import java.security.spec.X509EncodedKeySpec; 21 | import java.util.Properties; 22 | import java.util.zip.Inflater; 23 | import java.util.zip.InflaterInputStream; 24 | import org.apache.commons.codec.binary.Base64; 25 | 26 | public class Version2LicenseDecoder 27 | extends AbstractLicenseDecoder 28 | { 29 | public static final int VERSION_NUMBER_1 = 1; 30 | public static final int VERSION_NUMBER_2 = 2; 31 | public static final int VERSION_LENGTH = 3; 32 | public static final int ENCODED_LICENSE_LENGTH_BASE = 31; 33 | public static final byte[] LICENSE_PREFIX = { 13, 14, 12, 10, 15 }; 34 | 35 | public static final char SEPARATOR = 'X'; 36 | private static final PublicKey PUBLIC_KEY; 37 | private static final int ENCODED_LICENSE_LINE_LENGTH = 76; 38 | 39 | static { 40 | try { 41 | pubKeyEncoded = "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS"; 42 | 43 | 44 | KeyFactory keyFactory = KeyFactory.getInstance("DSA"); 45 | PUBLIC_KEY = keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decodeBase64("MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS".getBytes()))); 46 | } 47 | catch (NoSuchAlgorithmException e) { 48 | throw new Error(e); 49 | } 50 | catch (InvalidKeySpecException e) { 51 | 52 | 53 | throw new Error(e); 54 | } 55 | } 56 | 57 | public boolean canDecode(String licenseString) { 58 | licenseString = removeWhiteSpaces(licenseString); 59 | 60 | int pos = licenseString.lastIndexOf('X'); 61 | if (pos == -1 || pos + 3 >= licenseString.length()) 62 | { 63 | return false; 64 | } 65 | 66 | try { 67 | int version = Integer.parseInt(licenseString.substring(pos + 1, pos + 3)); 68 | if (version != 1 && version != 2) 69 | { 70 | return false; 71 | } 72 | 73 | String lengthStr = licenseString.substring(pos + 3); 74 | int encodedLicenseLength = Integer.valueOf(lengthStr, 31).intValue(); 75 | if (pos != encodedLicenseLength) 76 | { 77 | return false; 78 | } 79 | 80 | return true; 81 | } 82 | catch (NumberFormatException e) { 83 | 84 | return false; 85 | } 86 | } 87 | 88 | public Properties doDecode(String licenseString) { 89 | String encodedLicenseTextAndHash = getLicenseContent(removeWhiteSpaces(licenseString)); 90 | byte[] zippedLicenseBytes = checkAndGetLicenseText(encodedLicenseTextAndHash); 91 | Reader licenseText = unzipText(zippedLicenseBytes); 92 | 93 | return loadLicenseConfiguration(licenseText); 94 | } 95 | 96 | protected int getLicenseVersion() { return 2; } 97 | 98 | private Reader unzipText(byte[] licenseText) { 99 | ByteArrayInputStream in = new ByteArrayInputStream(licenseText); 100 | in.skip(LICENSE_PREFIX.length); 101 | InflaterInputStream zipIn = new InflaterInputStream(in, new Inflater()); 102 | 103 | try { 104 | return new InputStreamReader(zipIn, "UTF-8"); 105 | } 106 | catch (UnsupportedEncodingException e) { 107 | 108 | 109 | throw new LicenseException(e); 110 | } 111 | } 112 | 113 | private String getLicenseContent(String licenseString) { 114 | String lengthStr = licenseString.substring(licenseString.lastIndexOf('X') + 3); 115 | 116 | try { 117 | int encodedLicenseLength = Integer.valueOf(lengthStr, 31).intValue(); 118 | return licenseString.substring(0, encodedLicenseLength); 119 | } 120 | catch (NumberFormatException e) { 121 | 122 | throw new LicenseException("Could NOT decode license length <" + lengthStr + ">", e); 123 | } 124 | } 125 | 126 | private byte[] checkAndGetLicenseText(String licenseContent) { 127 | byte[] licenseText; 128 | try { 129 | byte[] decodedBytes = Base64.decodeBase64(licenseContent.getBytes()); 130 | ByteArrayInputStream in = new ByteArrayInputStream(decodedBytes); 131 | DataInputStream dIn = new DataInputStream(in); 132 | int textLength = dIn.readInt(); 133 | licenseText = new byte[textLength]; 134 | dIn.read(licenseText); 135 | byte[] hash = new byte[dIn.available()]; 136 | dIn.read(hash); 137 | 138 | try { 139 | Signature signature = Signature.getInstance("SHA1withDSA"); 140 | signature.initVerify(PUBLIC_KEY); 141 | signature.update(licenseText); 142 | if (!signature.verify(hash)) 143 | { 144 | throw new LicenseException("Failed to verify the license."); 145 | } 146 | } 147 | catch (InvalidKeyException e) { 148 | throw new LicenseException(e); 149 | } 150 | catch (SignatureException e) { 151 | 152 | throw new LicenseException(e); 153 | } 154 | catch (NoSuchAlgorithmException e) { 155 | 156 | 157 | throw new LicenseException(e); 158 | } 159 | 160 | } catch (IOException e) { 161 | 162 | 163 | throw new LicenseException(e); 164 | } 165 | 166 | return licenseText; 167 | } 168 | 169 | private Properties loadLicenseConfiguration(Reader text) { 170 | try { 171 | Properties props = new Properties(); 172 | (new DefaultPropertiesPersister()).load(props, text); 173 | return props; 174 | } 175 | catch (IOException e) { 176 | 177 | throw new LicenseException("Could NOT load properties from reader", e); 178 | } 179 | } 180 | 181 | private static String removeWhiteSpaces(String licenseData) { 182 | if (licenseData == null || licenseData.length() == 0) 183 | { 184 | return licenseData; 185 | } 186 | 187 | char[] chars = licenseData.toCharArray(); 188 | StringBuffer buf = new StringBuffer(chars.length); 189 | for (int i = 0; i < chars.length; i++) { 190 | 191 | if (!Character.isWhitespace(chars[i])) 192 | { 193 | buf.append(chars[i]); 194 | } 195 | } 196 | 197 | return buf.toString(); 198 | } 199 | 200 | public static String packLicense(byte[] text, byte[] hash) throws LicenseException { 201 | try { 202 | ByteArrayOutputStream out = new ByteArrayOutputStream(); 203 | DataOutputStream dOut = new DataOutputStream(out); 204 | dOut.writeInt(text.length); 205 | dOut.write(text); 206 | dOut.write(hash); 207 | 208 | byte[] allData = out.toByteArray(); 209 | result = (new String(Base64.encodeBase64(allData))).trim(); 210 | 211 | 212 | 213 | 214 | result = result + 'X' + "0" + '\002' + Integer.toString(result.length(), 31); 215 | return split(result); 216 | 217 | } 218 | catch (IOException e) { 219 | 220 | 221 | throw new LicenseException(e); 222 | } 223 | } 224 | 225 | private static String split(String licenseData) { 226 | if (licenseData == null || licenseData.length() == 0) 227 | { 228 | return licenseData; 229 | } 230 | 231 | char[] chars = licenseData.toCharArray(); 232 | StringBuffer buf = new StringBuffer(chars.length + chars.length / 76); 233 | for (int i = 0; i < chars.length; i++) { 234 | 235 | buf.append(chars[i]); 236 | if (i > 0 && i % 76 == 0) 237 | { 238 | buf.append('\n'); 239 | } 240 | } 241 | 242 | return buf.toString(); 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Built-By: bamboo-agent 3 | Created-By: Apache Maven 3.5.3 4 | Build-Jdk: 1.8.0_144 5 | 6 | -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/META-INF/maven/com.atlassian.extras/atlassian-extras-common/pom.properties: -------------------------------------------------------------------------------- 1 | #Created by Apache Maven 3.5.3 2 | version=3.4.1 3 | groupId=com.atlassian.extras 4 | artifactId=atlassian-extras-common 5 | -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/META-INF/maven/com.atlassian.extras/atlassian-extras-common/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | com.atlassian.extras 7 | atlassian-extras-closedsource 8 | 3.4.1 9 | 10 | 11 | atlassian-extras-common 12 | 13 | Atlassian Extras - Common 14 | 15 | 16 | 17 | com.atlassian.extras 18 | atlassian-extras-api 19 | ${project.version} 20 | 21 | 22 | log4j 23 | log4j 24 | compile 25 | 26 | 27 | junit 28 | junit 29 | test 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/DateEditor.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common; 2 | /* */ 3 | /* */ import java.text.DateFormat; 4 | /* */ import java.text.ParseException; 5 | /* */ import java.text.SimpleDateFormat; 6 | /* */ import java.util.Date; 7 | /* */ import java.util.TimeZone; 8 | /* */ import java.util.regex.Matcher; 9 | /* */ import java.util.regex.Pattern; 10 | /* */ 11 | /* */ 12 | /* */ 13 | /* */ 14 | /* */ 15 | /* */ 16 | /* */ 17 | /* */ 18 | /* */ public final class DateEditor 19 | /* */ { 20 | /* */ private static final String DATE_FORMAT = "yyyy-MM-dd"; 21 | /* */ static final String PERIOD_PREFIX = "P"; 22 | /* */ private static final long MILLIS_IN_HOUR = 3600000L; 23 | /* */ public static final String UNLIMITED = "unlimited"; 24 | /* 24 */ private static final Pattern DURATION_PATTERN = Pattern.compile("Duration\\:([0-9]+)"); 25 | /* */ 26 | /* 26 */ private static final Pattern PERIOD_PATTERN = Pattern.compile("P([0-9]+)H"); 27 | /* */ 28 | /* 28 */ private static final Pattern DATE_IN_MILLIS_PATTERN = Pattern.compile("[0-9]+"); 29 | /* */ 30 | /* 30 */ private static final Pattern ISO_DATE_PATTERN = Pattern.compile("^([1-2][0-9]{3}-(0[1-9]|1[0-2])-([0-2][0-9]|3[0-1]))(\\s|[T])?.*"); 31 | /* */ 32 | /* 32 */ static final TimeZone TIME_ZONE = TimeZone.getTimeZone("Australia/Sydney"); 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ 38 | /* */ 39 | /* */ 40 | /* */ 41 | /* */ 42 | /* */ 43 | /* */ 44 | /* */ 45 | /* */ 46 | /* */ 47 | /* */ 48 | /* */ 49 | /* */ 50 | /* */ public static Date getDate(String dateString) { 51 | /* 51 */ if (dateString == null || dateString.length() == 0) { 52 | /* 52 */ throw new DateParsingException(dateString); 53 | /* */ } 54 | /* */ 55 | /* */ 56 | /* 56 */ if (dateString.equals("unlimited")) { 57 | /* 57 */ return null; 58 | /* */ } 59 | /* */ 60 | /* */ 61 | /* 61 */ Matcher durationMatcher = DURATION_PATTERN.matcher(dateString); 62 | /* 62 */ if (durationMatcher.matches()) { 63 | /* 63 */ long dateInMillis = System.currentTimeMillis() + Long.parseLong(durationMatcher.group(1)); 64 | /* 64 */ return new Date(dateInMillis); 65 | /* */ } 66 | /* */ 67 | /* */ 68 | /* 68 */ Matcher periodMatcher = PERIOD_PATTERN.matcher(dateString); 69 | /* 69 */ if (periodMatcher.matches()) { 70 | /* */ 71 | /* 71 */ long dateInMillis = System.currentTimeMillis() + Integer.parseInt(periodMatcher.group(1)) * 3600000L; 72 | /* */ 73 | /* 73 */ return new Date(dateInMillis); 74 | /* */ } 75 | /* */ 76 | /* */ 77 | /* 77 */ Matcher dateInMillisMatcher = DATE_IN_MILLIS_PATTERN.matcher(dateString); 78 | /* 78 */ if (dateInMillisMatcher.matches()) { 79 | /* 79 */ return new Date(Long.parseLong(dateString)); 80 | /* */ } 81 | /* */ 82 | /* */ 83 | /* 83 */ Matcher isoDateMatcher = ISO_DATE_PATTERN.matcher(dateString); 84 | /* 84 */ if (isoDateMatcher.matches()) { 85 | /* */ try { 86 | /* 86 */ return getDateFormat().parse(isoDateMatcher.group(1)); 87 | /* 87 */ } catch (ParseException e) { 88 | /* */ 89 | /* */ 90 | /* 90 */ throw new DateParsingException(dateString, e); 91 | /* */ } 92 | /* */ } 93 | /* */ 94 | /* 94 */ throw new DateParsingException(dateString); 95 | /* */ } 96 | /* */ 97 | /* */ 98 | /* */ 99 | /* */ 100 | /* */ 101 | /* */ 102 | /* */ 103 | /* */ public static String getString(Date date) { 104 | /* 104 */ return (date != null) ? getDateFormat().format(date) : "unlimited"; 105 | /* */ } 106 | /* */ 107 | /* */ private static DateFormat getDateFormat() { 108 | /* 108 */ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 109 | /* 109 */ dateFormat.setTimeZone(TIME_ZONE); 110 | /* 110 */ return dateFormat; 111 | /* */ } 112 | /* */ } 113 | 114 | 115 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\DateEditor.class 116 | * Java compiler version: 8 (52.0) 117 | * JD-Core Version: 1.1.3 118 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/DateParsingException.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common; 2 | /* */ 3 | /* */ 4 | /* */ 5 | /* */ 6 | /* */ 7 | /* */ 8 | /* */ public class DateParsingException 9 | /* */ extends LicenseException 10 | /* */ { 11 | /* */ private final String dateString; 12 | /* */ 13 | /* */ public DateParsingException(String dateString) { 14 | /* 14 */ this.dateString = dateString; 15 | /* */ } 16 | /* */ 17 | /* */ public DateParsingException(String dateString, Throwable throwable) { 18 | /* 18 */ super(throwable); 19 | /* 19 */ this.dateString = dateString; 20 | /* */ } 21 | /* */ 22 | /* */ public String getMessage() { 23 | /* 23 */ return "Could NOT parse <" + this.dateString + "> into a 'license' date"; 24 | /* */ } 25 | /* */ } 26 | 27 | 28 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\DateParsingException.class 29 | * Java compiler version: 8 (52.0) 30 | * JD-Core Version: 1.1.3 31 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/LicenseException.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common; 2 | /* */ 3 | /* */ import com.atlassian.extras.api.LicenseException; 4 | /* */ 5 | /* */ 6 | /* */ 7 | /* */ 8 | /* */ 9 | /* */ 10 | /* */ public class LicenseException 11 | /* */ extends LicenseException 12 | /* */ { 13 | /* */ public LicenseException() {} 14 | /* */ 15 | /* */ public LicenseException(String message) { 16 | /* 16 */ super(message); 17 | /* */ } 18 | /* */ 19 | /* */ public LicenseException(String message, Throwable cause) { 20 | /* 20 */ super(message, cause); 21 | /* */ } 22 | /* */ 23 | /* */ public LicenseException(Throwable cause) { 24 | /* 24 */ super(cause); 25 | /* */ } 26 | /* */ } 27 | 28 | 29 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\LicenseException.class 30 | * Java compiler version: 8 (52.0) 31 | * JD-Core Version: 1.1.3 32 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/LicensePropertiesConstants.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common; 2 | /* */ 3 | /* */ import com.atlassian.extras.api.Product; 4 | /* */ import java.util.Date; 5 | /* */ 6 | /* */ 7 | /* */ 8 | /* */ 9 | /* */ 10 | /* */ 11 | /* */ 12 | /* */ 13 | /* */ 14 | /* */ 15 | /* */ 16 | /* */ 17 | /* */ 18 | /* */ 19 | /* */ 20 | /* */ 21 | /* */ 22 | /* */ 23 | /* */ 24 | /* */ 25 | /* */ 26 | /* */ 27 | /* */ 28 | /* */ 29 | /* */ 30 | /* */ 31 | /* */ 32 | /* */ 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ public final class LicensePropertiesConstants 38 | /* */ { 39 | /* */ public static final String LICENSE_VERSION = "licenseVersion"; 40 | /* */ public static final String ACTIVE_FLAG = "active"; 41 | /* */ public static final String ACTIVE_VALUE = "true"; 42 | /* */ public static final String ORGANISATION = "Organisation"; 43 | /* */ public static final String CONTACT_NAME = "ContactName"; 44 | /* */ public static final String CONTACT_EMAIL = "ContactEMail"; 45 | /* */ public static final String LICENSE_EXPIRY_DATE = "LicenseExpiryDate"; 46 | /* */ public static final String GRACE_PERIOD = "GracePeriod"; 47 | /* */ public static final int DEFAULT_GRACE_PERIOD = 0; 48 | /* */ public static final String MAINTENANCE_EXPIRY_DATE = "MaintenanceExpiryDate"; 49 | /* */ public static final String PURCHASE_DATE = "PurchaseDate"; 50 | /* */ public static final String CREATION_DATE = "CreationDate"; 51 | /* */ public static final String SERVER_ID = "ServerID"; 52 | /* */ public static final String LICENSE_ID = "LicenseID"; 53 | /* */ public static final String LICENSE_TYPE = "LicenseType"; 54 | /* */ public static final String LICENSE_TYPE_NAME = "LicenseTypeName"; 55 | /* */ public static final String MAX_NUMBER_OF_USERS = "NumberOfUsers"; 56 | /* */ public static final String PARTNER_NAME = "PartnerName"; 57 | /* */ public static final String EVALUATION_LICENSE = "Evaluation"; 58 | /* */ public static final String STARTER_LICENSE = "Starter"; 59 | /* */ public static final String SUBSCRIPTION_LICENSE = "Subscription"; 60 | /* */ public static final String DESCRIPTION = "Description"; 61 | /* */ public static final String SUPPORT_ENTITLEMENT_NUMBER = "SEN"; 62 | /* */ public static final String NAMESPACE_SEPARATOR = "."; 63 | /* 63 */ public static final Date DEFAULT_CREATION_DATE = DateEditor.getDate("1970-01-01"); 64 | /* 64 */ public static final Date DEFAULT_EXPIRY_DATE = DEFAULT_CREATION_DATE; 65 | /* */ 66 | /* */ 67 | /* */ public static final int UNLIMITED_USERS = -1; 68 | /* */ 69 | /* */ 70 | /* */ public static final int DEFAULT_MAX_USERS = 0; 71 | /* */ 72 | /* */ 73 | /* */ public static final String MAX_NUMBER_CONF_CLUSTER_NODES = "NumberOfClusterNodes"; 74 | /* */ 75 | /* */ 76 | /* */ public static final int UNLIMITED_CONF_CLUSTER_NODES = -1; 77 | /* */ 78 | /* */ 79 | /* */ public static final int DEFAULT_CONF_CLUSTER_NODES = 0; 80 | /* */ 81 | /* */ 82 | /* */ public static final String MAX_NUMBER_BAM_REMOTE_AGENTS = "NumberOfBambooRemoteAgents"; 83 | /* */ 84 | /* */ 85 | /* */ public static final String MAX_NUMBER_BAM_LOCAL_AGENTS = "NumberOfBambooLocalAgents"; 86 | /* */ 87 | /* */ 88 | /* */ public static final String MAX_NUMBER_BAM_PLANS = "NumberOfBambooPlans"; 89 | /* */ 90 | /* */ 91 | /* */ public static final int DEFAULT_BAM_REMOTE_AGENTS = 1; 92 | /* */ 93 | /* */ 94 | /* */ public static final int DEFAULT_BAM_LOCAL_AGENTS = -1; 95 | /* */ 96 | /* */ 97 | /* */ public static final int DEFAULT_BAM_PLANS = -1; 98 | /* */ 99 | /* */ public static final int BAMBOO_UNLIMITED = -1; 100 | /* */ 101 | /* */ public static final String LICENSE_EDITION = "LicenseEdition"; 102 | /* */ 103 | /* */ public static final String DATA_CENTER = "DataCenter"; 104 | /* */ 105 | /* */ 106 | /* */ public static String getKey(Product product, String key) { 107 | /* 107 */ return product.getNamespace() + "." + key; 108 | /* */ } 109 | /* */ } 110 | 111 | 112 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\LicensePropertiesConstants.class 113 | * Java compiler version: 8 (52.0) 114 | * JD-Core Version: 1.1.3 115 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/LicenseTypeAndEditionResolver.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common; 2 | /* */ 3 | /* */ import com.atlassian.extras.api.LicenseEdition; 4 | /* */ import com.atlassian.extras.api.LicenseType; 5 | /* */ 6 | /* */ 7 | /* */ 8 | /* */ 9 | /* */ public class LicenseTypeAndEditionResolver 10 | /* */ { 11 | /* */ public static LicenseEdition getLicenseEdition(String editionName) { 12 | /* */ try { 13 | /* 13 */ return LicenseEdition.valueOf(editionName.toUpperCase()); 14 | /* 14 */ } catch (IllegalArgumentException e) { 15 | /* 15 */ throw new LicenseException("Failed to lookup license edition <" + editionName + ">"); 16 | /* 16 */ } catch (NullPointerException e) { 17 | /* 17 */ throw new LicenseException("Failed to lookup license edition <" + editionName + ">"); 18 | /* */ } 19 | /* */ } 20 | /* */ 21 | /* */ public static LicenseType getLicenseType(String typeName) { 22 | /* */ try { 23 | /* 23 */ return LicenseType.valueOf(typeName.toUpperCase()); 24 | /* 24 */ } catch (IllegalArgumentException e) { 25 | /* 25 */ throw new LicenseException("Failed to lookup license type <" + typeName + ">"); 26 | /* 26 */ } catch (NullPointerException e) { 27 | /* 27 */ throw new LicenseException("Failed to lookup license type <" + typeName + ">"); 28 | /* */ } 29 | /* */ } 30 | /* */ } 31 | 32 | 33 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\LicenseTypeAndEditionResolver.class 34 | * Java compiler version: 8 (52.0) 35 | * JD-Core Version: 1.1.3 36 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/log/Log4jLogger.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.log; 2 | /* */ 3 | /* */ import org.apache.log4j.Logger; 4 | /* */ 5 | /* */ class Log4jLogger 6 | /* */ implements Logger.Log 7 | /* */ { 8 | /* */ private Logger logger; 9 | /* */ 10 | /* */ public Log4jLogger() {} 11 | /* */ 12 | /* */ public Log4jLogger(Class clazz) { 13 | /* 13 */ this.logger = Logger.getLogger(clazz); 14 | /* */ } 15 | /* */ 16 | /* */ public void setClass(Class clazz) { 17 | /* 17 */ this.logger = Logger.getLogger(clazz); 18 | /* */ } 19 | /* */ 20 | /* */ public void debug(Object o) { 21 | /* 21 */ this.logger.debug(o); 22 | /* */ } 23 | /* */ 24 | /* */ public void debug(Object o, Throwable t) { 25 | /* 25 */ this.logger.debug(o, t); 26 | /* */ } 27 | /* */ 28 | /* */ public void info(Object o) { 29 | /* 29 */ this.logger.info(o); 30 | /* */ } 31 | /* */ 32 | /* */ public void info(Object o, Throwable t) { 33 | /* 33 */ this.logger.info(o, t); 34 | /* */ } 35 | /* */ 36 | /* */ public void warn(Object o) { 37 | /* 37 */ this.logger.info(o); 38 | /* */ } 39 | /* */ 40 | /* */ public void warn(Object o, Throwable t) { 41 | /* 41 */ this.logger.info(o, t); 42 | /* */ } 43 | /* */ 44 | /* */ public void error(Object o) { 45 | /* 45 */ this.logger.error(o); 46 | /* */ } 47 | /* */ 48 | /* */ public void error(Object o, Throwable t) { 49 | /* 49 */ this.logger.error(o, t); 50 | /* */ } 51 | /* */ 52 | /* */ public void fatal(Object o) { 53 | /* 53 */ this.logger.fatal(o); 54 | /* */ } 55 | /* */ 56 | /* */ public void fatal(Object o, Throwable t) { 57 | /* 57 */ this.logger.fatal(o, t); 58 | /* */ } 59 | /* */ } 60 | 61 | 62 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\log\Log4jLogger.class 63 | * Java compiler version: 8 (52.0) 64 | * JD-Core Version: 1.1.3 65 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/log/Logger.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.log; 2 | /* */ 3 | /* */ 4 | /* */ 5 | /* */ 6 | /* */ 7 | /* */ public class Logger 8 | /* */ { 9 | /* */ private static final Class LOG4J_LOGGER_CLASS; 10 | /* */ 11 | /* */ static { 12 | /* 12 */ Class log4jLogger = null; 13 | /* */ try { 14 | /* 14 */ log4jLogger = Class.forName("com.atlassian.extras.common.log.Log4jLogger"); 15 | /* 15 */ } catch (ClassNotFoundException classNotFoundException) { 16 | /* */ 17 | /* */ } finally { 18 | /* 18 */ LOG4J_LOGGER_CLASS = log4jLogger; 19 | /* */ } 20 | /* */ } private static Log logger; public static interface Log { 21 | /* */ void setClass(Class param1Class); void debug(Object param1Object); void debug(Object param1Object, Throwable param1Throwable); void info(Object param1Object); void info(Object param1Object, Throwable param1Throwable); void warn(Object param1Object); void warn(Object param1Object, Throwable param1Throwable); void error(Object param1Object); void error(Object param1Object, Throwable param1Throwable); void fatal(Object param1Object); 22 | /* */ void fatal(Object param1Object, Throwable param1Throwable); } 23 | /* 23 */ public enum Level { DEBUG, INFO, WARN, ERROR, FATAL; } 24 | /* */ 25 | /* */ 26 | /* */ 27 | /* */ 28 | /* */ 29 | /* */ 30 | /* */ 31 | /* */ 32 | /* */ 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ 38 | /* */ 39 | /* */ 40 | /* */ 41 | /* */ 42 | /* */ 43 | /* */ 44 | /* */ 45 | /* */ 46 | /* */ 47 | /* */ 48 | /* */ 49 | /* */ 50 | /* */ 51 | /* */ 52 | /* 52 */ private static Level stdErrLogLevel = Level.INFO; 53 | /* */ 54 | /* */ public static void setInstance(Log logger) { 55 | /* 55 */ Logger.logger = logger; 56 | /* */ } 57 | /* */ 58 | /* */ 59 | /* */ public static Log getInstance(Class clazz) { 60 | /* 60 */ if (logger != null) { 61 | /* 61 */ return logger; 62 | /* */ } 63 | /* */ 64 | /* */ 65 | /* */ try { 66 | /* 66 */ if (LOG4J_LOGGER_CLASS != null) { 67 | /* 67 */ Log log4j = (Log)LOG4J_LOGGER_CLASS.newInstance(); 68 | /* 68 */ log4j.setClass(clazz); 69 | /* 69 */ return log4j; 70 | /* */ } 71 | /* */ 72 | /* 72 */ } catch (IllegalAccessException illegalAccessException) { 73 | /* */ 74 | /* 74 */ } catch (InstantiationException instantiationException) { 75 | /* */ 76 | /* 76 */ } catch (NoClassDefFoundError noClassDefFoundError) {} 77 | /* */ 78 | /* */ 79 | /* */ 80 | /* */ 81 | /* 81 */ logger = new StdErrLogger(stdErrLogLevel); 82 | /* 82 */ return logger; 83 | /* */ } 84 | /* */ 85 | /* */ public static void setStdErrLogLevel(Level stdErrLogLevel) { 86 | /* 86 */ if (stdErrLogLevel == null) { 87 | /* 87 */ throw new IllegalArgumentException("StdErrLogger Log Level must not be null."); 88 | /* */ } 89 | /* 89 */ Logger.stdErrLogLevel = stdErrLogLevel; 90 | /* 90 */ logger = null; 91 | /* */ } 92 | /* */ } 93 | 94 | 95 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\log\Logger.class 96 | * Java compiler version: 8 (52.0) 97 | * JD-Core Version: 1.1.3 98 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/log/StdErrLogger.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.log; 2 | /* */ 3 | /* */ import java.io.PrintStream; 4 | /* */ 5 | /* */ 6 | /* */ class StdErrLogger 7 | /* */ implements Logger.Log 8 | /* */ { 9 | /* */ private final Logger.Level level; 10 | /* */ 11 | /* */ StdErrLogger() { 12 | /* 12 */ this(Logger.Level.INFO); 13 | /* */ } 14 | /* */ 15 | /* */ StdErrLogger(Logger.Level level) { 16 | /* 16 */ this.level = level; 17 | /* */ } 18 | /* */ 19 | /* 19 */ private static final PrintStream PRINT_STREAM = System.err; 20 | /* */ 21 | /* */ 22 | /* */ public void setClass(Class clazz) {} 23 | /* */ 24 | /* */ 25 | /* */ public void debug(Object msg) { 26 | /* 26 */ if (this.level.compareTo(Logger.Level.DEBUG) <= 0) { 27 | /* 27 */ PRINT_STREAM.println(msg); 28 | /* */ } 29 | /* */ } 30 | /* */ 31 | /* */ public void debug(Object msg, Throwable t) { 32 | /* 32 */ if (this.level.compareTo(Logger.Level.DEBUG) <= 0) { 33 | /* 33 */ PRINT_STREAM.println(msg); 34 | /* 34 */ t.printStackTrace(PRINT_STREAM); 35 | /* */ } 36 | /* */ } 37 | /* */ 38 | /* */ public void info(Object msg) { 39 | /* 39 */ if (this.level.compareTo(Logger.Level.INFO) <= 0) { 40 | /* 40 */ PRINT_STREAM.println(msg); 41 | /* */ } 42 | /* */ } 43 | /* */ 44 | /* */ public void info(Object msg, Throwable t) { 45 | /* 45 */ if (this.level.compareTo(Logger.Level.INFO) <= 0) { 46 | /* 46 */ PRINT_STREAM.println(msg); 47 | /* 47 */ t.printStackTrace(PRINT_STREAM); 48 | /* */ } 49 | /* */ } 50 | /* */ 51 | /* */ public void warn(Object msg) { 52 | /* 52 */ if (this.level.compareTo(Logger.Level.WARN) <= 0) { 53 | /* 53 */ PRINT_STREAM.println(msg); 54 | /* */ } 55 | /* */ } 56 | /* */ 57 | /* */ public void warn(Object msg, Throwable t) { 58 | /* 58 */ if (this.level.compareTo(Logger.Level.WARN) <= 0) { 59 | /* 59 */ PRINT_STREAM.println(msg); 60 | /* 60 */ t.printStackTrace(PRINT_STREAM); 61 | /* */ } 62 | /* */ } 63 | /* */ 64 | /* */ public void error(Object msg) { 65 | /* 65 */ if (this.level.compareTo(Logger.Level.ERROR) <= 0) { 66 | /* 66 */ PRINT_STREAM.println(msg); 67 | /* */ } 68 | /* */ } 69 | /* */ 70 | /* */ public void error(Object msg, Throwable t) { 71 | /* 71 */ if (this.level.compareTo(Logger.Level.ERROR) <= 0) { 72 | /* 72 */ PRINT_STREAM.println(msg); 73 | /* 73 */ t.printStackTrace(PRINT_STREAM); 74 | /* */ } 75 | /* */ } 76 | /* */ 77 | /* */ public void error(Throwable t) { 78 | /* 78 */ if (this.level.compareTo(Logger.Level.ERROR) <= 0) { 79 | /* 79 */ t.printStackTrace(PRINT_STREAM); 80 | /* */ } 81 | /* */ } 82 | /* */ 83 | /* */ public void fatal(Object msg) { 84 | /* 84 */ if (this.level.compareTo(Logger.Level.FATAL) <= 0) { 85 | /* 85 */ PRINT_STREAM.println(msg); 86 | /* */ } 87 | /* */ } 88 | /* */ 89 | /* */ public void fatal(Object msg, Throwable t) { 90 | /* 90 */ if (this.level.compareTo(Logger.Level.FATAL) <= 0) { 91 | /* 91 */ PRINT_STREAM.println(msg); 92 | /* 92 */ t.printStackTrace(PRINT_STREAM); 93 | /* */ } 94 | /* */ } 95 | /* */ 96 | /* */ public void fatal(Throwable t) { 97 | /* 97 */ if (this.level.compareTo(Logger.Level.FATAL) <= 0) 98 | /* 98 */ t.printStackTrace(PRINT_STREAM); 99 | /* */ } 100 | /* */ } 101 | 102 | 103 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\log\StdErrLogger.class 104 | * Java compiler version: 8 (52.0) 105 | * JD-Core Version: 1.1.3 106 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/DefaultPropertiesPersister.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/DefaultPropertiesPersister.class -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/DefaultPropertiesPersister.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.org.springframework.util; 2 | /* */ 3 | /* */ import java.io.BufferedReader; 4 | /* */ import java.io.BufferedWriter; 5 | /* */ import java.io.IOException; 6 | /* */ import java.io.InputStream; 7 | /* */ import java.io.OutputStream; 8 | /* */ import java.io.Reader; 9 | /* */ import java.io.Writer; 10 | /* */ import java.util.Date; 11 | /* */ import java.util.Enumeration; 12 | /* */ import java.util.Properties; 13 | /* */ import org.slf4j.Logger; 14 | /* */ import org.slf4j.LoggerFactory; 15 | /* */ 16 | /* */ 17 | /* */ 18 | /* */ 19 | /* */ 20 | /* */ 21 | /* */ 22 | /* */ 23 | /* */ 24 | /* */ 25 | /* */ 26 | /* */ 27 | /* */ 28 | /* */ 29 | /* */ 30 | /* */ 31 | /* */ 32 | /* */ 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ 38 | /* */ 39 | /* */ 40 | /* */ 41 | /* */ 42 | /* */ 43 | /* */ 44 | /* */ 45 | /* */ 46 | /* */ 47 | /* */ 48 | /* */ 49 | /* */ 50 | /* */ 51 | /* */ 52 | /* */ 53 | /* */ 54 | /* */ 55 | /* */ 56 | /* */ 57 | /* */ 58 | /* */ 59 | /* */ 60 | /* */ 61 | /* */ 62 | /* */ 63 | /* */ 64 | /* */ 65 | /* */ public class DefaultPropertiesPersister 66 | /* */ { 67 | /* */ public void load(Properties props, InputStream is) throws IOException { 68 | /* 66 */ props.load(is); 69 | /* */ } 70 | /* */ 71 | /* */ public void load(Properties props, Reader reader) throws IOException { 72 | /* 70 */ BufferedReader in = new BufferedReader(reader); 73 | Logger log = LoggerFactory.getLogger(DefaultPropertiesPersister.class); 74 | /* */ while (true) { 75 | /* 72 */ String line = in.readLine(); 76 | /* 73 */ if (line == null) { 77 | /* */ return; 78 | /* */ } 79 | /* 76 */ line = StringUtils.trimLeadingWhitespace(line); 80 | /* 77 */ if (line.length() > 0) { 81 | /* 78 */ char firstChar = line.charAt(0); 82 | /* 79 */ if (firstChar != '#' && firstChar != '!') { 83 | /* 80 */ while (endsWithContinuationMarker(line)) { 84 | /* 81 */ String nextLine = in.readLine(); 85 | /* 82 */ line = line.substring(0, line.length() - 1); 86 | /* 83 */ if (nextLine != null) { 87 | /* 84 */ line = line + StringUtils.trimLeadingWhitespace(nextLine); 88 | /* */ } 89 | /* */ } 90 | /* 87 */ int separatorIndex = line.indexOf("="); 91 | /* 88 */ if (separatorIndex == -1) { 92 | /* 89 */ separatorIndex = line.indexOf(":"); 93 | /* */ } 94 | /* 91 */ String key = (separatorIndex != -1) ? line.substring(0, separatorIndex) : line; 95 | /* 92 */ String value = (separatorIndex != -1) ? line.substring(separatorIndex + 1) : ""; 96 | /* 93 */ key = StringUtils.trimTrailingWhitespace(key); 97 | /* 94 */ value = StringUtils.trimLeadingWhitespace(value); 98 | /* 95 */ props.put(unescape(key), unescape(value)); 99 | log.warn("================ PROPS ===============\n"); 100 | log.warn("key: {}\nvalue: {}", unescape(key), unescape(value)); 101 | /* */ } 102 | /* */ } 103 | /* */ } 104 | /* */ } 105 | /* */ 106 | /* */ protected boolean endsWithContinuationMarker(String line) { 107 | /* 102 */ boolean evenSlashCount = true; 108 | /* 103 */ int index = line.length() - 1; 109 | /* 104 */ while (index >= 0 && line.charAt(index) == '\\') { 110 | /* 105 */ evenSlashCount = !evenSlashCount; 111 | /* 106 */ index--; 112 | /* */ } 113 | /* 108 */ return !evenSlashCount; 114 | /* */ } 115 | /* */ 116 | /* */ protected String unescape(String str) { 117 | /* 112 */ StringBuffer outBuffer = new StringBuffer(str.length()); 118 | /* 113 */ for (int index = 0; index < str.length(); ) { 119 | /* 114 */ char c = str.charAt(index++); 120 | /* 115 */ if (c == '\\') { 121 | /* 116 */ c = str.charAt(index++); 122 | /* 117 */ if (c == 't') { 123 | /* 118 */ c = '\t'; 124 | /* 119 */ } else if (c == 'r') { 125 | /* 120 */ c = '\r'; 126 | /* 121 */ } else if (c == 'n') { 127 | /* 122 */ c = '\n'; 128 | /* 123 */ } else if (c == 'f') { 129 | /* 124 */ c = '\f'; 130 | /* */ } 131 | /* */ } 132 | /* 127 */ outBuffer.append(c); 133 | /* */ } 134 | /* 129 */ return outBuffer.toString(); 135 | /* */ } 136 | /* */ 137 | /* */ 138 | /* */ public void store(Properties props, OutputStream os, String header) throws IOException { 139 | /* 134 */ props.store(os, header); 140 | /* */ } 141 | /* */ 142 | /* */ public void store(Properties props, Writer writer, String header) throws IOException { 143 | /* 138 */ BufferedWriter out = new BufferedWriter(writer); 144 | /* 139 */ if (header != null) { 145 | /* 140 */ out.write("#" + header); 146 | /* 141 */ out.newLine(); 147 | /* */ } 148 | /* 143 */ out.write("#" + new Date()); 149 | /* 144 */ out.newLine(); 150 | /* 145 */ for (Enumeration keys = props.keys(); keys.hasMoreElements(); ) { 151 | /* 146 */ String key = (String)keys.nextElement(); 152 | /* 147 */ String val = props.getProperty(key); 153 | /* 148 */ out.write(escape(key, true) + "=" + escape(val, false)); 154 | /* 149 */ out.newLine(); 155 | /* */ } 156 | /* 151 */ out.flush(); 157 | /* */ } 158 | /* */ 159 | /* */ protected String escape(String str, boolean isKey) { 160 | /* 155 */ int len = str.length(); 161 | /* 156 */ StringBuffer outBuffer = new StringBuffer(len * 2); 162 | /* 157 */ for (int index = 0; index < len; index++) { 163 | /* 158 */ char c = str.charAt(index); 164 | /* 159 */ switch (c) { 165 | /* */ case ' ': 166 | /* 161 */ if (index == 0 || isKey) { 167 | /* 162 */ outBuffer.append('\\'); 168 | /* */ } 169 | /* 164 */ outBuffer.append(' '); 170 | /* */ break; 171 | /* */ case '\\': 172 | /* 167 */ outBuffer.append("\\\\"); 173 | /* */ break; 174 | /* */ case '\t': 175 | /* 170 */ outBuffer.append("\\t"); 176 | /* */ break; 177 | /* */ case '\n': 178 | /* 173 */ outBuffer.append("\\n"); 179 | /* */ break; 180 | /* */ case '\r': 181 | /* 176 */ outBuffer.append("\\r"); 182 | /* */ break; 183 | /* */ case '\f': 184 | /* 179 */ outBuffer.append("\\f"); 185 | /* */ break; 186 | /* */ default: 187 | /* 182 */ if ("=: \t\r\n\f#!".indexOf(c) != -1) { 188 | /* 183 */ outBuffer.append('\\'); 189 | /* */ } 190 | /* 185 */ outBuffer.append(c); break; 191 | /* */ } 192 | /* */ } 193 | /* 188 */ return outBuffer.toString(); 194 | /* */ } 195 | /* */ } 196 | 197 | 198 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\org\springframewor\\util\DefaultPropertiesPersister.class 199 | * Java compiler version: 8 (52.0) 200 | * JD-Core Version: 1.1.3 201 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/StringUtils.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/StringUtils.class -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/org/springframework/util/StringUtils.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.org.springframework.util; 2 | /* */ 3 | /* */ import java.util.ArrayList; 4 | /* */ import java.util.Arrays; 5 | /* */ import java.util.Collection; 6 | /* */ import java.util.Iterator; 7 | /* */ import java.util.LinkedList; 8 | /* */ import java.util.List; 9 | /* */ import java.util.Locale; 10 | /* */ import java.util.Set; 11 | /* */ import java.util.StringTokenizer; 12 | /* */ import java.util.TreeSet; 13 | /* */ 14 | /* */ 15 | /* */ 16 | /* */ 17 | /* */ 18 | /* */ 19 | /* */ 20 | /* */ 21 | /* */ 22 | /* */ 23 | /* */ 24 | /* */ 25 | /* */ 26 | /* */ 27 | /* */ 28 | /* */ 29 | /* */ 30 | /* */ 31 | /* */ 32 | /* */ 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ 38 | /* */ 39 | /* */ 40 | /* */ 41 | /* */ 42 | /* */ 43 | /* */ 44 | /* */ 45 | /* */ 46 | /* */ 47 | /* */ 48 | /* */ 49 | /* */ 50 | /* */ 51 | /* */ 52 | /* */ 53 | /* */ 54 | /* */ 55 | /* */ 56 | /* */ 57 | /* */ 58 | /* */ 59 | /* */ 60 | /* */ 61 | /* */ 62 | /* */ 63 | /* */ 64 | /* */ 65 | /* */ 66 | /* */ 67 | /* */ 68 | /* */ 69 | /* */ 70 | /* */ public abstract class StringUtils 71 | /* */ { 72 | /* */ private static final String FOLDER_SEPARATOR = "/"; 73 | /* */ private static final String WINDOWS_FOLDER_SEPARATOR = "\\"; 74 | /* */ private static final String TOP_PATH = ".."; 75 | /* */ private static final String CURRENT_PATH = "."; 76 | /* */ 77 | /* */ public static boolean hasLength(String str) { 78 | /* 78 */ return (str != null && str.length() > 0); 79 | /* */ } 80 | /* */ 81 | /* */ 82 | /* */ 83 | /* */ 84 | /* */ 85 | /* */ 86 | /* */ 87 | /* */ 88 | /* */ 89 | /* */ 90 | /* */ 91 | /* */ 92 | /* */ 93 | /* */ 94 | /* */ 95 | /* */ 96 | /* */ 97 | /* */ 98 | /* */ public static boolean hasText(String str) { 99 | /* */ int strLen; 100 | /* 100 */ if (str == null || (strLen = str.length()) == 0) { 101 | /* 101 */ return false; 102 | /* */ } 103 | /* 103 */ for (int i = 0; i < strLen; i++) { 104 | /* 104 */ if (!Character.isWhitespace(str.charAt(i))) { 105 | /* 105 */ return true; 106 | /* */ } 107 | /* */ } 108 | /* 108 */ return false; 109 | /* */ } 110 | /* */ 111 | /* */ 112 | /* */ 113 | /* */ 114 | /* */ 115 | /* */ 116 | /* */ 117 | /* */ 118 | /* */ public static String trimLeadingWhitespace(String str) { 119 | /* 119 */ if (str.length() == 0) { 120 | /* 120 */ return str; 121 | /* */ } 122 | /* 122 */ StringBuffer buf = new StringBuffer(str); 123 | /* 123 */ while (buf.length() > 0 && Character.isWhitespace(buf.charAt(0))) { 124 | /* 124 */ buf.deleteCharAt(0); 125 | /* */ } 126 | /* 126 */ return buf.toString(); 127 | /* */ } 128 | /* */ 129 | /* */ 130 | /* */ 131 | /* */ 132 | /* */ 133 | /* */ 134 | /* */ 135 | /* */ 136 | /* */ public static String trimTrailingWhitespace(String str) { 137 | /* 137 */ if (str.length() == 0) { 138 | /* 138 */ return str; 139 | /* */ } 140 | /* 140 */ StringBuffer buf = new StringBuffer(str); 141 | /* 141 */ while (buf.length() > 0 && Character.isWhitespace(buf.charAt(buf.length() - 1))) { 142 | /* 142 */ buf.deleteCharAt(buf.length() - 1); 143 | /* */ } 144 | /* 144 */ return buf.toString(); 145 | /* */ } 146 | /* */ 147 | /* */ 148 | /* */ 149 | /* */ 150 | /* */ 151 | /* */ 152 | /* */ 153 | /* */ 154 | /* */ public static int countOccurrencesOf(String str, String sub) { 155 | /* 155 */ if (str == null || sub == null || str.length() == 0 || sub.length() == 0) { 156 | /* 156 */ return 0; 157 | /* */ } 158 | /* 158 */ int count = 0, pos = 0, idx = 0; 159 | /* 159 */ while ((idx = str.indexOf(sub, pos)) != -1) { 160 | /* 160 */ count++; 161 | /* 161 */ pos = idx + sub.length(); 162 | /* */ } 163 | /* 163 */ return count; 164 | /* */ } 165 | /* */ 166 | /* */ 167 | /* */ 168 | /* */ 169 | /* */ 170 | /* */ 171 | /* */ 172 | /* */ 173 | /* */ 174 | /* */ 175 | /* */ public static String replace(String inString, String oldPattern, String newPattern) { 176 | /* 176 */ if (inString == null) { 177 | /* 177 */ return null; 178 | /* */ } 179 | /* 179 */ if (oldPattern == null || newPattern == null) { 180 | /* 180 */ return inString; 181 | /* */ } 182 | /* */ 183 | /* 183 */ StringBuffer sbuf = new StringBuffer(); 184 | /* */ 185 | /* 185 */ int pos = 0; 186 | /* 186 */ int index = inString.indexOf(oldPattern); 187 | /* */ 188 | /* 188 */ int patLen = oldPattern.length(); 189 | /* 189 */ while (index >= 0) { 190 | /* 190 */ sbuf.append(inString.substring(pos, index)); 191 | /* 191 */ sbuf.append(newPattern); 192 | /* 192 */ pos = index + patLen; 193 | /* 193 */ index = inString.indexOf(oldPattern, pos); 194 | /* */ } 195 | /* 195 */ sbuf.append(inString.substring(pos)); 196 | /* */ 197 | /* */ 198 | /* 198 */ return sbuf.toString(); 199 | /* */ } 200 | /* */ 201 | /* */ 202 | /* */ 203 | /* */ 204 | /* */ 205 | /* */ 206 | /* */ public static String delete(String inString, String pattern) { 207 | /* 207 */ return replace(inString, pattern, ""); 208 | /* */ } 209 | /* */ 210 | /* */ 211 | /* */ 212 | /* */ 213 | /* */ 214 | /* */ 215 | /* */ 216 | /* */ public static String deleteAny(String inString, String chars) { 217 | /* 217 */ if (inString == null || chars == null) { 218 | /* 218 */ return inString; 219 | /* */ } 220 | /* 220 */ StringBuffer out = new StringBuffer(); 221 | /* 221 */ for (int i = 0; i < inString.length(); i++) { 222 | /* 222 */ char c = inString.charAt(i); 223 | /* 223 */ if (chars.indexOf(c) == -1) { 224 | /* 224 */ out.append(c); 225 | /* */ } 226 | /* */ } 227 | /* 227 */ return out.toString(); 228 | /* */ } 229 | /* */ 230 | /* */ 231 | /* */ 232 | /* */ 233 | /* */ 234 | /* */ 235 | /* */ 236 | /* */ 237 | /* */ 238 | /* */ 239 | /* */ 240 | /* */ 241 | /* */ 242 | /* */ 243 | /* */ 244 | /* */ 245 | /* */ 246 | /* */ 247 | /* */ public static String[] tokenizeToStringArray(String str, String delimiters) { 248 | /* 248 */ return tokenizeToStringArray(str, delimiters, true, true); 249 | /* */ } 250 | /* */ 251 | /* */ 252 | /* */ 253 | /* */ 254 | /* */ 255 | /* */ 256 | /* */ 257 | /* */ 258 | /* */ 259 | /* */ 260 | /* */ 261 | /* */ 262 | /* */ 263 | /* */ 264 | /* */ 265 | /* */ 266 | /* */ 267 | /* */ 268 | /* */ 269 | /* */ 270 | /* */ 271 | /* */ 272 | /* */ public static String[] tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens) { 273 | /* 273 */ StringTokenizer st = new StringTokenizer(str, delimiters); 274 | /* 274 */ List tokens = new ArrayList(); 275 | /* 275 */ while (st.hasMoreTokens()) { 276 | /* 276 */ String token = st.nextToken(); 277 | /* 277 */ if (trimTokens) { 278 | /* 278 */ token = token.trim(); 279 | /* */ } 280 | /* 280 */ if (!ignoreEmptyTokens || token.length() > 0) { 281 | /* 281 */ tokens.add(token); 282 | /* */ } 283 | /* */ } 284 | /* 284 */ return tokens.toArray(new String[tokens.size()]); 285 | /* */ } 286 | /* */ 287 | /* */ 288 | /* */ 289 | /* */ 290 | /* */ 291 | /* */ 292 | /* */ 293 | /* */ 294 | /* */ 295 | /* */ 296 | /* */ 297 | /* */ 298 | /* */ 299 | /* */ public static String[] delimitedListToStringArray(String str, String delimiter) { 300 | /* 300 */ if (str == null) { 301 | /* 301 */ return new String[0]; 302 | /* */ } 303 | /* 303 */ if (delimiter == null) { 304 | /* 304 */ return new String[] { str }; 305 | /* */ } 306 | /* */ 307 | /* 307 */ List result = new ArrayList(); 308 | /* 308 */ int pos = 0; 309 | /* 309 */ int delPos = 0; 310 | /* 310 */ while ((delPos = str.indexOf(delimiter, pos)) != -1) { 311 | /* 311 */ result.add(str.substring(pos, delPos)); 312 | /* 312 */ pos = delPos + delimiter.length(); 313 | /* */ } 314 | /* 314 */ if (str.length() > 0 && pos <= str.length()) 315 | /* */ { 316 | /* 316 */ result.add(str.substring(pos)); 317 | /* */ } 318 | /* */ 319 | /* 319 */ return result.toArray(new String[result.size()]); 320 | /* */ } 321 | /* */ 322 | /* */ 323 | /* */ 324 | /* */ 325 | /* */ 326 | /* */ 327 | /* */ 328 | /* */ public static String[] commaDelimitedListToStringArray(String str) { 329 | /* 329 */ return delimitedListToStringArray(str, ","); 330 | /* */ } 331 | /* */ 332 | /* */ 333 | /* */ 334 | /* */ 335 | /* */ 336 | /* */ 337 | /* */ 338 | /* */ 339 | /* */ public static Set commaDelimitedListToSet(String str) { 340 | /* 340 */ Set set = new TreeSet(); 341 | /* 341 */ String[] tokens = commaDelimitedListToStringArray(str); 342 | /* 342 */ for (int i = 0; i < tokens.length; i++) { 343 | /* 343 */ set.add(tokens[i]); 344 | /* */ } 345 | /* 345 */ return set; 346 | /* */ } 347 | /* */ 348 | /* */ 349 | /* */ 350 | /* */ 351 | /* */ 352 | /* */ 353 | /* */ 354 | /* */ 355 | /* */ 356 | /* */ public static String arrayToDelimitedString(Object[] arr, String delim) { 357 | /* 357 */ if (arr == null) { 358 | /* 358 */ return "null"; 359 | /* */ } 360 | /* 360 */ StringBuffer sb = new StringBuffer(); 361 | /* 361 */ for (int i = 0; i < arr.length; i++) { 362 | /* 362 */ if (i > 0) { 363 | /* 363 */ sb.append(delim); 364 | /* */ } 365 | /* 365 */ sb.append(arr[i]); 366 | /* */ } 367 | /* 367 */ return sb.toString(); 368 | /* */ } 369 | /* */ 370 | /* */ 371 | /* */ 372 | /* */ 373 | /* */ 374 | /* */ 375 | /* */ 376 | /* */ 377 | /* */ 378 | /* */ 379 | /* */ 380 | /* */ 381 | /* */ public static String collectionToDelimitedString(Collection c, String delim, String prefix, String suffix) { 382 | /* 382 */ if (c == null) { 383 | /* 383 */ return "null"; 384 | /* */ } 385 | /* 385 */ StringBuffer sb = new StringBuffer(); 386 | /* 386 */ Iterator it = c.iterator(); 387 | /* 387 */ int i = 0; 388 | /* 388 */ while (it.hasNext()) { 389 | /* 389 */ if (i++ > 0) { 390 | /* 390 */ sb.append(delim); 391 | /* */ } 392 | /* 392 */ sb.append(prefix + it.next() + suffix); 393 | /* */ } 394 | /* 394 */ return sb.toString(); 395 | /* */ } 396 | /* */ 397 | /* */ 398 | /* */ 399 | /* */ 400 | /* */ 401 | /* */ 402 | /* */ 403 | /* */ 404 | /* */ public static String collectionToDelimitedString(Collection coll, String delim) { 405 | /* 405 */ return collectionToDelimitedString(coll, delim, "", ""); 406 | /* */ } 407 | /* */ 408 | /* */ 409 | /* */ 410 | /* */ 411 | /* */ 412 | /* */ 413 | /* */ 414 | /* */ 415 | /* */ public static String arrayToCommaDelimitedString(Object[] arr) { 416 | /* 416 */ return arrayToDelimitedString(arr, ","); 417 | /* */ } 418 | /* */ 419 | /* */ 420 | /* */ 421 | /* */ 422 | /* */ 423 | /* */ 424 | /* */ 425 | /* */ public static String collectionToCommaDelimitedString(Collection coll) { 426 | /* 426 */ return collectionToDelimitedString(coll, ","); 427 | /* */ } 428 | /* */ 429 | /* */ 430 | /* */ 431 | /* */ 432 | /* */ 433 | /* */ 434 | /* */ 435 | /* */ 436 | /* */ 437 | /* */ public static String[] addStringToArray(String[] arr, String str) { 438 | /* 438 */ String[] newArr = new String[arr.length + 1]; 439 | /* 439 */ System.arraycopy(arr, 0, newArr, 0, arr.length); 440 | /* 440 */ newArr[arr.length] = str; 441 | /* 441 */ return newArr; 442 | /* */ } 443 | /* */ 444 | /* */ 445 | /* */ 446 | /* */ 447 | /* */ 448 | /* */ 449 | /* */ 450 | /* */ public static String[] sortStringArray(String[] source) { 451 | /* 451 */ if (source == null) { 452 | /* 452 */ return new String[0]; 453 | /* */ } 454 | /* 454 */ Arrays.sort((Object[])source); 455 | /* 455 */ return source; 456 | /* */ } 457 | /* */ 458 | /* */ 459 | /* */ 460 | /* */ 461 | /* */ 462 | /* */ 463 | /* */ 464 | /* */ 465 | /* */ public static String unqualify(String qualifiedName) { 466 | /* 466 */ return unqualify(qualifiedName, '.'); 467 | /* */ } 468 | /* */ 469 | /* */ 470 | /* */ 471 | /* */ 472 | /* */ 473 | /* */ 474 | /* */ 475 | /* */ 476 | /* */ public static String unqualify(String qualifiedName, char separator) { 477 | /* 477 */ return qualifiedName.substring(qualifiedName.lastIndexOf(separator) + 1); 478 | /* */ } 479 | /* */ 480 | /* */ 481 | /* */ 482 | /* */ 483 | /* */ 484 | /* */ 485 | /* */ 486 | /* */ 487 | /* */ 488 | /* */ public static String capitalize(String str) { 489 | /* 489 */ return changeFirstCharacterCase(true, str); 490 | /* */ } 491 | /* */ 492 | /* */ 493 | /* */ 494 | /* */ 495 | /* */ 496 | /* */ 497 | /* */ 498 | /* */ 499 | /* */ 500 | /* */ public static String uncapitalize(String str) { 501 | /* 501 */ return changeFirstCharacterCase(false, str); 502 | /* */ } 503 | /* */ 504 | /* */ private static String changeFirstCharacterCase(boolean capitalize, String str) { 505 | /* */ int strLen; 506 | /* 506 */ if (str == null || (strLen = str.length()) == 0) { 507 | /* 507 */ return str; 508 | /* */ } 509 | /* 509 */ StringBuffer buf = new StringBuffer(strLen); 510 | /* 510 */ if (capitalize) { 511 | /* 511 */ buf.append(Character.toUpperCase(str.charAt(0))); 512 | /* */ } else { 513 | /* 513 */ buf.append(Character.toLowerCase(str.charAt(0))); 514 | /* */ } 515 | /* 515 */ buf.append(str.substring(1)); 516 | /* 516 */ return buf.toString(); 517 | /* */ } 518 | /* */ 519 | /* */ 520 | /* */ 521 | /* */ 522 | /* */ 523 | /* */ 524 | /* */ 525 | /* */ 526 | /* */ public static String getFilename(String path) { 527 | /* 527 */ int separatorIndex = path.lastIndexOf("/"); 528 | /* 528 */ return (separatorIndex != -1) ? path.substring(separatorIndex + 1) : path; 529 | /* */ } 530 | /* */ 531 | /* */ 532 | /* */ 533 | /* */ 534 | /* */ 535 | /* */ 536 | /* */ 537 | /* */ 538 | /* */ 539 | /* */ 540 | /* */ public static String applyRelativePath(String path, String relativePath) { 541 | /* 541 */ int separatorIndex = path.lastIndexOf("/"); 542 | /* 542 */ if (separatorIndex != -1) { 543 | /* 543 */ String newPath = path.substring(0, separatorIndex); 544 | /* 544 */ if (!relativePath.startsWith("/")) { 545 | /* 545 */ newPath = newPath + "/"; 546 | /* */ } 547 | /* 547 */ return newPath + relativePath; 548 | /* */ } 549 | /* 549 */ return relativePath; 550 | /* */ } 551 | /* */ 552 | /* */ 553 | /* */ 554 | /* */ 555 | /* */ 556 | /* */ 557 | /* */ 558 | /* */ 559 | /* */ 560 | /* */ 561 | /* */ 562 | /* */ public static String cleanPath(String path) { 563 | /* 563 */ String pathToUse = replace(path, "\\", "/"); 564 | /* 564 */ String[] pathArray = delimitedListToStringArray(pathToUse, "/"); 565 | /* 565 */ List pathElements = new LinkedList(); 566 | /* 566 */ int tops = 0; 567 | /* 567 */ for (int i = pathArray.length - 1; i >= 0; i--) { 568 | /* 568 */ if (!".".equals(pathArray[i])) 569 | /* */ { 570 | /* 570 */ if ("..".equals(pathArray[i])) { 571 | /* 571 */ tops++; 572 | /* */ } 573 | /* 573 */ else if (tops > 0) { 574 | /* 574 */ tops--; 575 | /* */ } else { 576 | /* 576 */ pathElements.add(0, pathArray[i]); 577 | /* */ } 578 | /* */ } 579 | /* */ } 580 | /* 580 */ return collectionToDelimitedString(pathElements, "/"); 581 | /* */ } 582 | /* */ 583 | /* */ 584 | /* */ 585 | /* */ 586 | /* */ 587 | /* */ 588 | /* */ 589 | /* */ 590 | /* */ public static boolean pathEquals(String path1, String path2) { 591 | /* 591 */ return cleanPath(path1).equals(cleanPath(path2)); 592 | /* */ } 593 | /* */ 594 | /* */ 595 | /* */ 596 | /* */ 597 | /* */ 598 | /* */ 599 | /* */ 600 | /* */ 601 | /* */ 602 | /* */ 603 | /* */ public static Locale parseLocaleString(String localeString) { 604 | /* 604 */ String[] parts = tokenizeToStringArray(localeString, "_ ", false, false); 605 | /* 605 */ String language = (parts.length > 0) ? parts[0] : ""; 606 | /* 606 */ String country = (parts.length > 1) ? parts[1] : ""; 607 | /* 607 */ String variant = (parts.length > 2) ? parts[2] : ""; 608 | /* 608 */ return (language.length() > 0) ? new Locale(language, country, variant) : null; 609 | /* */ } 610 | /* */ } 611 | 612 | 613 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\common\org\springframewor\\util\StringUtils.class 614 | * Java compiler version: 8 (52.0) 615 | * JD-Core Version: 1.1.3 616 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/util/LicenseProperties.java: -------------------------------------------------------------------------------- 1 | package com.atlassian.extras.common.util; 2 | 3 | import java.util.Date; 4 | import java.util.Map; 5 | 6 | public interface LicenseProperties { 7 | String getProperty(String paramString); 8 | 9 | String getProperty(String paramString1, String paramString2); 10 | 11 | int getInt(String paramString, int paramInt); 12 | 13 | Date getDate(String paramString, Date paramDate); 14 | 15 | boolean getBoolean(String paramString); 16 | 17 | Map getPropertiesEndingWith(String paramString); 18 | } 19 | 20 | 21 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\commo\\util\LicenseProperties.class 22 | * Java compiler version: 8 (52.0) 23 | * JD-Core Version: 1.1.3 24 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-common-3.4.1/com/atlassian/extras/common/util/ProductLicenseProperties.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.common.util; 2 | /* */ 3 | /* */ import com.atlassian.extras.api.Product; 4 | /* */ import com.atlassian.extras.common.DateEditor; 5 | /* */ import com.atlassian.extras.common.LicensePropertiesConstants; 6 | /* */ import java.util.Date; 7 | /* */ import java.util.Enumeration; 8 | /* */ import java.util.HashMap; 9 | /* */ import java.util.Map; 10 | /* */ import java.util.Properties; 11 | /* */ 12 | /* */ 13 | /* */ 14 | /* */ 15 | /* */ 16 | /* */ 17 | /* */ 18 | /* */ public class ProductLicenseProperties 19 | /* */ implements LicenseProperties 20 | /* */ { 21 | /* */ private final Product product; 22 | /* */ private final Properties properties; 23 | /* */ 24 | /* */ public ProductLicenseProperties(Product product, Properties properties) { 25 | /* 25 */ this.product = product; 26 | /* 26 */ if (product == null) { 27 | /* 27 */ throw new IllegalArgumentException("Product must NOT be null!"); 28 | /* */ } 29 | /* 29 */ if (properties == null) { 30 | /* 30 */ throw new IllegalArgumentException("Properties must NOT be null!"); 31 | /* */ } 32 | /* */ 33 | /* 33 */ this.properties = properties; 34 | /* */ } 35 | /* */ 36 | /* */ public String getProperty(String s) { 37 | /* 37 */ return getProperty(s, null); 38 | /* */ } 39 | /* */ 40 | /* */ public String getProperty(String s, String defaultValue) { 41 | /* 41 */ String o = this.properties.getProperty(LicensePropertiesConstants.getKey(this.product, s)); 42 | /* 42 */ return (o != null) ? o : this.properties.getProperty(s, defaultValue); 43 | /* */ } 44 | /* */ 45 | /* */ public int getInt(String propertyName, int defaultValue) { 46 | /* 46 */ String stringValue = getProperty(propertyName); 47 | /* 47 */ if (stringValue == null || stringValue.length() == 0) { 48 | /* 48 */ return defaultValue; 49 | /* */ } 50 | /* */ 51 | /* */ try { 52 | /* 52 */ return Integer.parseInt(stringValue); 53 | /* 53 */ } catch (NumberFormatException e) { 54 | /* 54 */ return defaultValue; 55 | /* */ } 56 | /* */ } 57 | /* */ 58 | /* */ public Date getDate(String key, Date defaultValue) { 59 | /* 59 */ String stringValue = getProperty(key); 60 | /* 60 */ if (stringValue == null || stringValue.length() == 0) { 61 | /* 61 */ return defaultValue; 62 | /* */ } 63 | /* 63 */ return DateEditor.getDate(stringValue); 64 | /* */ } 65 | /* */ 66 | /* */ 67 | /* */ public boolean getBoolean(String key) { 68 | /* 68 */ return Boolean.valueOf(getProperty(key)).booleanValue(); 69 | /* */ } 70 | /* */ 71 | /* */ public Map getPropertiesEndingWith(String ending) { 72 | /* 72 */ Map props = new HashMap<>(); 73 | /* 73 */ for (Enumeration enumeration = this.properties.propertyNames(); enumeration.hasMoreElements(); ) { 74 | /* 74 */ String propName = enumeration.nextElement().toString(); 75 | /* 75 */ if (propName.endsWith(ending)) { 76 | /* 76 */ props.put(propName, getProperty(propName)); 77 | /* */ } 78 | /* */ } 79 | /* 79 */ return props; 80 | /* */ } 81 | /* */ } 82 | 83 | 84 | /* Location: C:\Trash\lib - Copy\atlassian-extras-common-3.4.1.jar!\com\atlassian\extras\commo\\util\ProductLicenseProperties.class 85 | * Java compiler version: 8 (52.0) 86 | * JD-Core Version: 1.1.3 87 | */ -------------------------------------------------------------------------------- /code/atlassian-extras-decoder-v2-3.4.1/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Built-By: bamboo-agent 3 | Created-By: Apache Maven 3.5.3 4 | Build-Jdk: 1.8.0_144 5 | 6 | -------------------------------------------------------------------------------- /code/atlassian-extras-decoder-v2-3.4.1/META-INF/maven/com.atlassian.extras/atlassian-extras-decoder-v2/pom.properties: -------------------------------------------------------------------------------- 1 | #Created by Apache Maven 3.5.3 2 | version=3.4.1 3 | groupId=com.atlassian.extras 4 | artifactId=atlassian-extras-decoder-v2 5 | -------------------------------------------------------------------------------- /code/atlassian-extras-decoder-v2-3.4.1/META-INF/maven/com.atlassian.extras/atlassian-extras-decoder-v2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | com.atlassian.extras 7 | atlassian-extras-closedsource 8 | 3.4.1 9 | 10 | 11 | atlassian-extras-decoder-v2 12 | 13 | Atlassian Extras - Decoder 14 | 15 | 16 | 17 | com.atlassian.extras 18 | atlassian-extras-decoder-api 19 | ${project.version} 20 | 21 | 22 | com.atlassian.extras 23 | atlassian-extras-common 24 | ${project.version} 25 | 26 | 27 | commons-codec 28 | commons-codec 29 | 30 | 31 | junit 32 | junit 33 | test 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /code/atlassian-extras-decoder-v2-3.4.1/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/code/atlassian-extras-decoder-v2-3.4.1/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.class -------------------------------------------------------------------------------- /code/atlassian-extras-decoder-v2-3.4.1/com/atlassian/extras/decoder/v2/Version2LicenseDecoder.java: -------------------------------------------------------------------------------- 1 | /* */ package com.atlassian.extras.decoder.v2; 2 | /* */ 3 | /* */ import com.atlassian.extras.common.LicenseException; 4 | /* */ import com.atlassian.extras.decoder.api.AbstractLicenseDecoder; 5 | /* */ import java.io.ByteArrayInputStream; 6 | /* */ import java.io.ByteArrayOutputStream; 7 | /* */ import java.io.DataInputStream; 8 | /* */ import java.io.DataOutputStream; 9 | /* */ import java.io.IOException; 10 | /* */ import java.io.InputStreamReader; 11 | /* */ import java.io.Reader; 12 | /* */ import java.io.UnsupportedEncodingException; 13 | /* */ import java.security.InvalidKeyException; 14 | /* */ import java.security.KeyFactory; 15 | /* */ import java.security.NoSuchAlgorithmException; 16 | /* */ import java.security.PublicKey; 17 | /* */ import java.security.Signature; 18 | /* */ import java.security.SignatureException; 19 | /* */ import java.security.spec.InvalidKeySpecException; 20 | /* */ import java.security.spec.X509EncodedKeySpec; 21 | /* */ import java.util.Properties; 22 | /* */ import java.util.zip.Inflater; 23 | /* */ import java.util.zip.InflaterInputStream; 24 | /* */ import org.apache.commons.codec.binary.Base64; 25 | /* */ 26 | /* */ 27 | /* */ 28 | /* */ 29 | /* */ 30 | /* */ 31 | /* */ 32 | /* */ 33 | /* */ 34 | /* */ 35 | /* */ 36 | /* */ 37 | /* */ 38 | /* */ 39 | /* */ 40 | /* */ 41 | /* */ 42 | /* */ 43 | /* */ 44 | /* */ 45 | /* */ 46 | /* */ 47 | /* */ 48 | /* */ 49 | /* */ 50 | /* */ 51 | /* */ public class Version2LicenseDecoder 52 | /* */ extends AbstractLicenseDecoder 53 | /* */ { 54 | /* */ public static final int VERSION_NUMBER_1 = 1; 55 | /* */ public static final int VERSION_NUMBER_2 = 2; 56 | /* */ public static final int VERSION_LENGTH = 3; 57 | /* */ public static final int ENCODED_LICENSE_LENGTH_BASE = 31; 58 | /* 59 */ public static final byte[] LICENSE_PREFIX = new byte[] { 13, 14, 12, 10, 15 }; 59 | /* */ 60 | /* */ public static final char SEPARATOR = 'X'; 61 | /* */ private static final PublicKey PUBLIC_KEY; 62 | /* */ private static final int ENCODED_LICENSE_LINE_LENGTH = 76; 63 | /* */ 64 | /* */ static { 65 | /* */ try { 66 | /* 67 */ String pubKeyEncoded = "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS"; 67 | /* */ 68 | /* */ 69 | /* */ 70 | /* */ 71 | /* */ 72 | /* */ 73 | /* 74 */ KeyFactory keyFactory = KeyFactory.getInstance("DSA"); 74 | /* 75 */ PUBLIC_KEY = keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decodeBase64("MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAIvfweZvmGo5otwawI3no7Udanxal3hX2haw962KL/nHQrnC4FG2PvUFf34OecSK1KtHDPQoSQ+DHrfdf6vKUJphw0Kn3gXm4LS8VK/LrY7on/wh2iUobS2XlhuIqEc5mLAUu9Hd+1qxsQkQ50d0lzKrnDqPsM0WA9htkdJJw2nS".getBytes()))); 75 | /* 76 */ } catch (NoSuchAlgorithmException e) { 76 | /* */ 77 | /* 78 */ throw new Error(e); 78 | /* 79 */ } catch (InvalidKeySpecException e) { 79 | /* */ 80 | /* 81 */ throw new Error(e); 81 | /* */ } 82 | /* */ } 83 | /* */ 84 | /* */ public boolean canDecode(String licenseString) { 85 | return true; 86 | /* */ } 87 | /* */ 88 | /* */ public Properties doDecode(String licenseString) { 89 | /* */ 90 | /* 117 */ return loadLicenseConfiguration(); 91 | /* */ } 92 | /* */ 93 | /* */ protected int getLicenseVersion() { 94 | /* 121 */ return 2; 95 | /* */ } 96 | /* */ 97 | /* */ private Reader unzipText(byte[] licenseText) { 98 | /* 125 */ ByteArrayInputStream in = new ByteArrayInputStream(licenseText); 99 | /* 126 */ in.skip(LICENSE_PREFIX.length); 100 | /* 127 */ InflaterInputStream zipIn = new InflaterInputStream(in, new Inflater()); 101 | /* */ try { 102 | /* 129 */ return new InputStreamReader(zipIn, "UTF-8"); 103 | /* 130 */ } catch (UnsupportedEncodingException e) { 104 | /* */ 105 | /* 132 */ throw new LicenseException(e); 106 | /* */ } 107 | /* */ } 108 | /* */ 109 | /* */ private String getLicenseContent(String licenseString) { 110 | /* 137 */ String lengthStr = licenseString.substring(licenseString.lastIndexOf('X') + 3); 111 | /* */ try { 112 | /* 139 */ int encodedLicenseLength = Integer.valueOf(lengthStr, 31).intValue(); 113 | /* 140 */ return licenseString.substring(0, encodedLicenseLength); 114 | /* 141 */ } catch (NumberFormatException e) { 115 | /* 142 */ throw new LicenseException("Could NOT decode license length <" + lengthStr + ">", e); 116 | /* */ } 117 | /* */ } 118 | /* */ 119 | /* */ private byte[] checkAndGetLicenseText(String licenseContent) { 120 | /* */ byte[] licenseText; 121 | /* */ try { 122 | /* 149 */ byte[] decodedBytes = Base64.decodeBase64(licenseContent.getBytes()); 123 | /* 150 */ ByteArrayInputStream in = new ByteArrayInputStream(decodedBytes); 124 | /* 151 */ DataInputStream dIn = new DataInputStream(in); 125 | /* 152 */ int textLength = dIn.readInt(); 126 | /* 153 */ licenseText = new byte[textLength]; 127 | /* 154 */ dIn.read(licenseText); 128 | /* 155 */ byte[] hash = new byte[dIn.available()]; 129 | /* 156 */ dIn.read(hash); 130 | /* */ 131 | /* */ try { 132 | /* 159 */ Signature signature = Signature.getInstance("SHA1withDSA"); 133 | /* 160 */ signature.initVerify(PUBLIC_KEY); 134 | /* 161 */ signature.update(licenseText); 135 | /* 162 */ if (!signature.verify(hash)) { 136 | /* 163 */ throw new LicenseException("Failed to verify the license."); 137 | /* */ } 138 | /* 165 */ } catch (InvalidKeyException e) { 139 | /* */ 140 | /* 167 */ throw new LicenseException(e); 141 | /* 168 */ } catch (SignatureException e) { 142 | /* 169 */ throw new LicenseException(e); 143 | /* 170 */ } catch (NoSuchAlgorithmException e) { 144 | /* */ 145 | /* 172 */ throw new LicenseException(e); 146 | /* */ } 147 | /* 174 */ } catch (IOException e) { 148 | /* */ 149 | /* 176 */ throw new LicenseException(e); 150 | /* */ } 151 | /* */ 152 | /* 179 */ return licenseText; 153 | /* */ } 154 | /* */ 155 | /* */ private Properties loadLicenseConfiguration() { 156 | /* 218 */ Properties props = new Properties(); 157 | 158 | 159 | 160 | props.setProperty("keyVersion", "1600708331"); 161 | props.setProperty("ContactName", "criitch@yandex.ru"); 162 | props.setProperty("stash.LicenseTypeName", "COMMERCIAL"); 163 | // props.setProperty("PurchaseDate", "2021-02-16"); 164 | // props.setProperty("LicenseExpiryDate", "2021-03-18"); 165 | props.setProperty("ContactEMail", "criitch@yandex.ru"); 166 | props.setProperty("ServerID", "BHSU-H7B8-CYII-GD2C"); 167 | props.setProperty("stash.DataCenter", "false"); 168 | props.setProperty("DataCenter", "false"); 169 | props.setProperty("licenseHash", "MCwCFDf0z5imd6W/I6QHhovJN5GVJqq+AhRVBJGbHYSYZBxU659kjnV4F3uhgA=="); 170 | props.setProperty("Subscription", "true"); 171 | // props.setProperty("MaintenanceExpiryDate", "2021-03-18"); 172 | props.setProperty("stash.active", "true"); 173 | props.setProperty("LicenseID", "LIDSEN-L10306231"); 174 | props.setProperty("SEN", "SEN-L16822378"); 175 | // props.setProperty("Organisation", "MyCorp"); 176 | props.setProperty("CreationDate", "2021-02-16"); 177 | // props.setProperty("stash.NumberOfUsers", "-1"); 178 | props.setProperty("stash.Starter", "false"); 179 | props.setProperty("licenseVersion", "2"); 180 | props.setProperty("Description", "Bitbucket (Server): Cracked (Evaluation = false)"); 181 | // props.setProperty("Evaluation", "true"); 182 | 183 | 184 | 185 | props.setProperty("LicenseExpiryDate", "2099-01-01"); 186 | props.setProperty("MaintenanceExpiryDate", "2099-01-01"); 187 | props.setProperty("Evaluation", "false"); 188 | props.setProperty("NumberOfUsers", "-1"); 189 | props.setProperty("Organisation", "MyCorp"); 190 | props.setProperty("PurchaseDate", "2017-01-01"); 191 | props.setProperty("SEN", "SEN-L10306231"); 192 | 193 | /* 220 */ return props; 194 | /* */ } 195 | /* */ 196 | /* */ 197 | /* */ 198 | /* */ 199 | /* */ private static String removeWhiteSpaces(String licenseData) { 200 | /* 196 */ if (licenseData == null || licenseData.length() == 0) { 201 | /* 197 */ return licenseData; 202 | /* */ } 203 | /* */ 204 | /* 200 */ char[] chars = licenseData.toCharArray(); 205 | /* 201 */ StringBuffer buf = new StringBuffer(chars.length); 206 | /* 202 */ for (int i = 0; i < chars.length; i++) { 207 | /* 203 */ if (!Character.isWhitespace(chars[i])) { 208 | /* 204 */ buf.append(chars[i]); 209 | /* */ } 210 | /* */ } 211 | /* */ 212 | /* 208 */ return buf.toString(); 213 | /* */ } 214 | /* */ 215 | /* */ 216 | /* */ 217 | /* */ 218 | /* */ 219 | /* */ 220 | /* */ public static String packLicense(byte[] text, byte[] hash) throws LicenseException { 221 | /* */ try { 222 | /* 218 */ ByteArrayOutputStream out = new ByteArrayOutputStream(); 223 | /* 219 */ DataOutputStream dOut = new DataOutputStream(out); 224 | /* 220 */ dOut.writeInt(text.length); 225 | /* 221 */ dOut.write(text); 226 | /* 222 */ dOut.write(hash); 227 | /* */ 228 | /* 224 */ byte[] allData = out.toByteArray(); 229 | /* 225 */ String result = (new String(Base64.encodeBase64(allData))).trim(); 230 | /* */ 231 | /* */ 232 | /* */ 233 | /* */ 234 | /* 230 */ result = result + 'X' + "0" + '\002' + Integer.toString(result.length(), 31); 235 | /* 231 */ result = split(result); 236 | /* 232 */ return result; 237 | /* 233 */ } catch (IOException e) { 238 | /* */ 239 | /* 235 */ throw new LicenseException(e); 240 | /* */ } 241 | /* */ } 242 | /* */ 243 | /* */ 244 | /* */ 245 | /* */ 246 | /* */ private static String split(String licenseData) { 247 | /* 243 */ if (licenseData == null || licenseData.length() == 0) { 248 | /* 244 */ return licenseData; 249 | /* */ } 250 | /* */ 251 | /* 247 */ char[] chars = licenseData.toCharArray(); 252 | /* 248 */ StringBuffer buf = new StringBuffer(chars.length + chars.length / 76); 253 | /* 249 */ for (int i = 0; i < chars.length; i++) { 254 | /* 250 */ buf.append(chars[i]); 255 | /* 251 */ if (i > 0 && i % 76 == 0) { 256 | /* 252 */ buf.append('\n'); 257 | /* */ } 258 | /* */ } 259 | /* */ 260 | /* 256 */ return buf.toString(); 261 | /* */ } 262 | /* */ } 263 | 264 | 265 | /* Location: C:\Trash\lib\atlassian-extras-decoder-v2-3.4.1.jar!\com\atlassian\extras\decoder\v2\Version2LicenseDecoder.class 266 | * Java compiler version: 8 (52.0) 267 | * JD-Core Version: 1.1.3 268 | */ -------------------------------------------------------------------------------- /confluence/6.3.4/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Confluence (= 6.3.4) 2 | 3 | [Установка и активация Atlassian Confluence 6.3.4](https://ealebed.github.io/posts/2017/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D1%8F-atlassian-confluence-6.3.4/) 4 | -------------------------------------------------------------------------------- /confluence/7.0.1/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Confluence (>= 7.0.1) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM cptactionhank/atlassian-confluence:7.0.1 7 | 8 | COPY atlassian-extras-decoder-v2-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib 9 | COPY atlassian-universal-plugin-manager-plugin-4.0.6.jar /opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins 10 | ``` 11 | 12 | ## Проверенные образы Confluence 13 | 14 | - cptactionhank/atlassian-confluence:7.0.1 15 | 16 | ## Способ установки 17 | 18 | (!!!) .jar файлы надо брать из той же папки, а не из корня (!!!) 19 | 20 | Когда проверял - ловил баги с установкой плагинов, поэтому лучше обновить конфу до 7.5.0 и использовать нужный кряк 21 | -------------------------------------------------------------------------------- /confluence/7.0.1/atlassian-extras-decoder-v2-3.4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/confluence/7.0.1/atlassian-extras-decoder-v2-3.4.1.jar -------------------------------------------------------------------------------- /confluence/7.0.1/atlassian-universal-plugin-manager-plugin-4.0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/confluence/7.0.1/atlassian-universal-plugin-manager-plugin-4.0.6.jar -------------------------------------------------------------------------------- /confluence/7.5.0/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Confluence (>= 7.0.5) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM atlassian/confluence-server:7.5.0-ubuntu 7 | 8 | COPY atlassian-extras-decoder-v2-3.4.1.jar /opt/atlassian/confluence/confluence/WEB-INF/lib 9 | ``` 10 | 11 | ## Проверенные образы Confluence 12 | 13 | - atlassian/confluence-server:7.5.0-ubuntu 14 | 15 | ## Способ установки 16 | 17 | Как везде 18 | -------------------------------------------------------------------------------- /crowd/3.6.2/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Crowd (>= 3.6.2) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM atlassian/crowd:3.6.2-ubuntu 7 | 8 | COPY atlassian-extras-3.2.jar /opt/atlassian/crowd/crowd-webapp/WEB-INF/lib 9 | ``` 10 | 11 | ## Проверенные образы Crowd 12 | 13 | - atlassian/crowd:3.6.2-ubuntu 14 | 15 | ## Способ установки 16 | 17 | Как везде 18 | -------------------------------------------------------------------------------- /crowd/old-version/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Crowd (< 3.6.2) (на самом деле < 3.0.0 или типа того) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM atlassian/crowd:3.0.0-ubuntu 7 | 8 | COPY atlassian-extras-3.2.jar /opt/atlassian/crowd/crowd-webapp/WEB-INF/lib 9 | COPY atlassian-extras-decoder-v2-3.1.1.jar /opt/atlassian/crowd/crowd-webapp/WEB-INF/lib 10 | COPY atlassian-extras-legacy-3.3.0.jar /opt/atlassian/crowd/crowd-webapp/WEB-INF/lib 11 | ``` 12 | 13 | ## Проверенные образы Crowd 14 | 15 | -- 16 | 17 | ## Способ установки 18 | 19 | Как везде 20 | -------------------------------------------------------------------------------- /jira/7.5.0/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Jira (= 7.5.0) 2 | 3 | [Установка и активация JIRA Software Server 7.5.0](https://ealebed.github.io/posts/2017/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D1%8F-jira-software-server-7.5.0/) -------------------------------------------------------------------------------- /jira/8.0.2/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Jira (>= 8.0.2) 2 | 3 | Dockerfile: 4 | 5 | ```dockerfile 6 | FROM atlassian/jira-software:8.12.0-ubuntu 7 | 8 | COPY atlassian-extras-3.2.jar /opt/atlassian/jira/atlassian-jira/WEB-INF/lib/ 9 | ``` 10 | 11 | ## Проверенные образы Jira 12 | 13 | - cptactionhank/atlassian-jira-software:8.0.2 14 | - atlassian/jira-software:8.12.0-ubuntu 15 | 16 | ## Способ установки 17 | 18 | Как везде 19 | -------------------------------------------------------------------------------- /license_key_bitbucket.txt: -------------------------------------------------------------------------------- 1 | Description=Bitbucket\: Commercial 2 | CreationDate=2019-01-01 3 | bb.active=true 4 | Evaluation=false 5 | bb.LicenseTypeName=COMMERCIAL 6 | MaintenanceExpiryDate=2099-01-01 7 | bb.NumberOfClusterNodes=0 8 | Organisation=chungkol.com 9 | ServerID=BT1U-OG2F-97JH-Y6YO 10 | SEN=L15764983 11 | LicenseID=LIDSEN-L15764983 12 | bb.NumberOfUsers=-1 13 | LicenseExpiryDate=2099-01-01 14 | PurchaseDate=2019-01-01 15 | stash.LicenseTypeName=COMMERCIAL 16 | stash.DataCenter=false 17 | stash.active=true 18 | stash.NumberOfUsers=-1 19 | stash.Starter=false 20 | -------------------------------------------------------------------------------- /license_key_confluence.txt: -------------------------------------------------------------------------------- 1 | Description=Confluence\: Commercial 2 | CreationDate=2019-01-01 3 | conf.active=true 4 | Evaluation=false 5 | conf.LicenseTypeName=COMMERCIAL 6 | MaintenanceExpiryDate=2099-01-01 7 | conf.NumberOfClusterNodes=0 8 | Organisation=chungkol.com 9 | ServerID=B1Y3-1R40-C2Z4-516N 10 | SEN=L15762276 11 | LicenseID=LIDSEN-L15762276 12 | conf.NumberOfUsers=-1 13 | LicenseExpiryDate=2099-01-01 14 | PurchaseDate=2019-01-01 15 | -------------------------------------------------------------------------------- /license_key_crowd.txt: -------------------------------------------------------------------------------- 1 | Description=Crowd\: Commercial 2 | CreationDate=2019-01-01 3 | crowd.active=true 4 | Evaluation=false 5 | crowd.LicenseTypeName=COMMERCIAL 6 | MaintenanceExpiryDate=2099-01-01 7 | crowd.NumberOfClusterNodes=0 8 | Organisation=chungkol.com 9 | ServerID=BT1U-OG2F-97JH-Y6YO 10 | SEN=L15764983 11 | LicenseID=LIDSEN-L15764983 12 | crowd.NumberOfUsers=-1 13 | LicenseExpiryDate=2099-01-01 14 | PurchaseDate=2019-01-01 15 | -------------------------------------------------------------------------------- /license_key_gliffy_confluence.txt: -------------------------------------------------------------------------------- 1 | Description=Confluence\: Commercial 2 | CreationDate=2019-01-01 3 | com.gliffy.integration.confluence.active=true 4 | Evaluation=false 5 | com.gliffy.integration.confluence.LicenseTypeName=COMMERCIAL 6 | MaintenanceExpiryDate=2099-01-01 7 | com.gliffy.integration.confluence.NumberOfClusterNodes=0 8 | Organisation=chungkol.com 9 | ServerID=BQX9-6FJT-S0YH-ZCO1 10 | SEN=L15762276 11 | LicenseID=LIDSEN-L15762276 12 | com.gliffy.integration.confluence.NumberOfUsers=-1 13 | LicenseExpiryDate=2099-01-01 14 | PurchaseDate=2019-01-01 15 | -------------------------------------------------------------------------------- /license_key_gliffy_jira.txt: -------------------------------------------------------------------------------- 1 | Description=Jira\: Commercial 2 | CreationDate=2019-01-01 3 | com.gliffy.integration.jira.active=true 4 | Evaluation=false 5 | com.gliffy.integration.jira.LicenseTypeName=COMMERCIAL 6 | MaintenanceExpiryDate=2099-01-01 7 | com.gliffy.integration.jira.NumberOfClusterNodes=0 8 | Organisation=chungkol.com 9 | ServerID=BQX9-6FJT-S0YH-ZCO1 10 | SEN=L15762276 11 | LicenseID=LIDSEN-L15762276 12 | com.gliffy.integration.jira.NumberOfUsers=-1 13 | LicenseExpiryDate=2099-01-01 14 | PurchaseDate=2019-01-01 15 | -------------------------------------------------------------------------------- /license_key_jira.txt: -------------------------------------------------------------------------------- 1 | #Tue Aug 27 20:57:42 CDT 2019 2 | greenhopper.LicenseEdition=ENTERPRISE 3 | NumberOfUsers=-1 4 | ContactName=test@teko.vn 5 | jira.NumberOfUsers=-1 6 | PurchaseDate=2019-08-28 7 | LicenseTypeName=COMMERCIAL 8 | LicenseExpiryDate=2099-09-27 9 | ContactEMail=binh.nt@teko.vn 10 | ServerID=BQX9-6FJT-S0YH-ZCO1 11 | jira.product.jira-software.active=true 12 | jira.LicenseEdition=ENTERPRISE 13 | greenhopper.LicenseTypeName=COMMERCIAL 14 | MaintenanceExpiryDate=2099-09-27 15 | jira.product.jira-software.NumberOfUsers=-1 16 | LicenseID=LIDSEN-L14136671 17 | SEN=SEN-L14136671 18 | jira.product.jira-software.Starter=false 19 | Organisation=Test 20 | CreationDate=2019-08-28 21 | licenseVersion=2 22 | greenhopper.enterprise=true 23 | Description=Jira Software (Server)\: COMMERCIAL 24 | jira.active=true 25 | jira.LicenseTypeName=COMMERCIAL 26 | greenhopper.active=true 27 | Evaluation=false 28 | -------------------------------------------------------------------------------- /license_key_servicedesk.txt: -------------------------------------------------------------------------------- 1 | #Tue Aug 27 20:57:42 CDT 2019 2 | greenhopper.LicenseEdition=ENTERPRISE 3 | NumberOfUsers=-1 4 | ContactName=test@teko.vn 5 | jira.NumberOfUsers=-1 6 | PurchaseDate=2019-08-28 7 | LicenseTypeName=COMMERCIAL 8 | LicenseExpiryDate=2099-09-27 9 | ContactEMail=binh.nt@teko.vn 10 | ServerID=BQX9-6FJT-S0YH-ZCO1 11 | jira.product.jira-servicedesk.active=true 12 | jira.LicenseEdition=ENTERPRISE 13 | greenhopper.LicenseTypeName=COMMERCIAL 14 | MaintenanceExpiryDate=2099-09-27 15 | jira.product.jira-servicedesk.NumberOfUsers=-1 16 | LicenseID=LIDSEN-L15762272 17 | SEN=SEN-L15762272 18 | jira.product.jira-servicedesk.Starter=false 19 | Organisation=Test 20 | CreationDate=2019-08-28 21 | licenseVersion=2 22 | greenhopper.enterprise=true 23 | Description=Jira Service Desk (Server)\: COMMERCIAL 24 | jira.active=true 25 | jira.LicenseTypeName=COMMERCIAL 26 | greenhopper.active=true 27 | Evaluation=false 28 | -------------------------------------------------------------------------------- /mysql-connector-java-5.1.47.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IAlexEgorov/AtlassianCrack/39c753833cb4b2aac1710327ddb46541ecda6f64/mysql-connector-java-5.1.47.jar -------------------------------------------------------------------------------- /servicedesk/README.md: -------------------------------------------------------------------------------- 1 | # Кряк для Atlassian Service Desk (Jira Service Management) (= 4.12.0) 2 | 3 | Ломается за счёт взлома Jira, только ключ надо сгенерировать по файлу license_key_servicedesk.txt 4 | --------------------------------------------------------------------------------