이는 독일의 한 크래커가 어찌저찌 구한 젯브레인의 루트 인증서와 몇 개의 시드를 통해 디코딩에 성공하여 추출한 정보이므로, 너님의 라이선스 키 또한 이런 구조를 가지고 있다고 보면 된다.
{
"LicenseId": "네 라이선스 키 중 첫번째 대시(-) 앞에 있는 일종의 식별 ID",
"LicenseeName": "라이선스 소유자",
"AssigneeName": "라이선스 제공자 이름(주로 License Server에서 제공)",
"AssigneeEmail": "라이선스 제공자 이메일(주로 License Server에서 제공)",
"LicenseRestriction": "라이선스 제약사항 문자열",
"CheckConcurrentUse": false, // 동시 사용 허용 여부
"Products": [ // 각 제품 코드와 사용기한
{ "Code": "II", "PaidUpTo": "2020-12-31" }, // IntelliJ IDEA
{ "Code": "AC", "PaidUpTo": "2020-12-31" }, // AppCode
{ "Code": "DPN", "PaidUpTo": "2020-12-31" }, // DotTrace
{ "Code": "PS", "PaidUpTo": "2020-12-31" }, // PhpStorm
{ "Code": "GO", "PaidUpTo": "2020-12-31" }, // GoLand
{ "Code": "DM", "PaidUpTo": "2020-12-31" }, // DotMemory
{ "Code": "CL", "PaidUpTo": "2020-12-31" }, // CLion
{ "Code": "RS0", "PaidUpTo": "2020-12-31" }, // Resharper C++
{ "Code": "RC", "PaidUpTo": "2020-12-31" }, // DotCover
{ "Code": "RD", "PaidUpTo": "2020-12-31" }, // Rider
{ "Code": "PC", "PaidUpTo": "2020-12-31" }, // PyCharm
{ "Code": "RM", "PaidUpTo": "2020-12-31" }, // RubyMine
{ "Code": "WS", "PaidUpTo": "2020-12-31" }, // WebStorm
{ "Code": "DB", "PaidUpTo": "2020-12-31" }, // DataGrip
{ "Code": "DC", "PaidUpTo": "2020-12-31" }, // DotCover
{ "Code": "RSU", "PaidUpTo": "2020-12-31" } // Resharper Ultimate
],
"Hash": "내부 해시코드로 추정되며 /0 으로 끝남",
"GracePeriodDays": 0, // 연장 사용 가능기한 (주로 License Server에서 사용)
"AutoProlongated": false, // 연장 여부
"IsAutoProlongated": false // 자동 연장 여부
}
그래서 만약 유출된 키가 보고될 경우 LicenseID 속성 및 라이선스 키 대시(-) 앞 문자열을 나열하면서 This license XXXXXXXX has been cancelled
라는 메시지가 뜰 것이다.
따라서 온라인일 경우 바로 걸리며, 오프라인인 경우 내부 블랙리스트 데이터베이스를 갱신하여 취소된 라이선스 키는 다음 버전에서 사용할 수 없게 된다.
추출한 크래커는 아래의 코멘트를 남겼다.
- i decoded the license keys, they got a pretty good system going on there not gonna lie its practically impossible to edit or generate a key yourself unless u get your hands on their private key
- not that its needed thanks them offering trials which can be easily reset with a bit of reversing effort
- 내가 라이선스 키를 디코드 했는데, 그들은 꽤 좋은 키 체계를 가지고 있어서 거짓말 아니고 저 키를 생성한 개인 키를 추출해 내지 않는 한 키 조작과 생성이 아예 불가능함
- 아 근데 평가판이 간단한 조작만으로 쉽게 초기화되는 거에 고마워할 필요 없음.
언급한 크래커는 한때 여러 메이저 게임을 뚫었던 팀 이름을 포함한 이메일 주소로 사용하여 해당 팀원의 이메일로 추정되지만, 확실한 건 불명이긴 한데 AIDA64 키 생성기를 오픈소스로 푼 거 보면은 관심있는 사람인 건 확실한 것 같다. 근데 직접적으로 조언은 하지 않았지만, 흐름을 봐서 젯브레인을 크랙할 생각은 없다는 뜻으로 내비칠 수 있다. 내가 봐도 젯브레인 제품의 복돌은 바라지 말 것을 권한다.
사실 라이선스 코드 추출 결과는 이미 인증크랙을 개발한 한 중국인이 javaagent
방식으로 제공했을 때, 디코딩된 라이선스 키만 줘도 인증되도록 해주었던 툴로도 정보를 볼 수 있었는데, 지금 봐도 달라진 건 없다고 봐도 무방할 것이다. (참고로 그 때 당시 체계가 정말로 뚫려서 디코딩 된 라이선스 키로도 인증 가능했었다. 그때가 영구 라이선스 마지막 시대였지.)
이와 별도로 크랙을 만든 다른 중국인은 2020.2 이후 현재 더 이상의 크랙을 제공하지 않을 것이라고는 했지만, 지금 평가판을 대화형으로 반자동 초기화 하는 IDE 확장 툴을 오픈소스로 제공하고 있으며, 2020-3 버전도 잘 된다고 한다.
끗.
첨언하여, 내가 왜 이런 복돌 정보를 올리냐고?
뭐 사실 내가 한번 심심해서 젯브레인 키가 아직도 돌아다니고 있나 Github DMCA 모니터링(Watch) 하고 별다른 게 없길래 구글링 하다가 우연히 발견한 gist 가 있는데, 거기에 위 젯브레인 키를 디코드한 코드의 일부를 공개했음(C#
코드였고). 그걸 보고 딱 떠오른게 바로 JWT
인데, 이걸 한층 보안을 더 강화했다고 보면 되고, 그리고 이런 식으로 암호화, 정보과 시그니처 유효성을 강력하게 검증하여 제품 코드를 관리하면 좋겠다고 생각하여 이번 기회에게 제품 키 체계에 대한 많은 도움이 되어 작성했다 이거다. 이걸 dev.to
로 올리면 제3자가 DMCA 콤플레인 들어올 꺼 뻔해서 작성 안하겠다.