🎀Charles激活
简介
Charles激活码计算
激活
Help -> Register Charles
添加
Registered Name和计算出的License key点击Register
Java
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Random;
import java.util.Scanner;
/**
* @program: ZK
* @description: Charles激活
* @author: zk
* @create: 2024-08-31 10:41
**/
public class CharlesRegister {
private static final int ROUNDS = 12;
private static final int ROUND_KEYS = 2 * (ROUNDS + 1);
private static final Random RAND = new Random();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = sc.nextLine().toLowerCase();
RAND.setSeed(System.nanoTime());
System.out.println("name: " + name + " key: " + crack(name));
}
private static String crack(String text) {
byte[] name = text.getBytes();
int length = name.length + 4;
int padded = ((-length) & (8 - 1)) + length;
ByteBuffer buffer = ByteBuffer.allocate(padded);
buffer.order(ByteOrder.BIG_ENDIAN);
buffer.putInt(name.length);
buffer.put(name);
long ckName = 0x7a21c951691cd470L;
long ckKey = -5408575981733630035L;
CkCipher ck = new CkCipher(ckName);
ByteBuffer outBuffer = ByteBuffer.allocate(padded);
outBuffer.order(ByteOrder.BIG_ENDIAN);
for (int i = 0; i < padded; i += 8) {
long nowVar = buffer.getLong(i);
long dd = ck.encrypt(nowVar);
outBuffer.putLong(dd);
}
int n = 0;
for (byte b : outBuffer.array()) {
n = rotateLeft(n ^ (int) b, 3);
}
int prefix = n ^ 0x54882f8a;
int suffix = RAND.nextInt();
long in = ((long) prefix << 32) | (suffix & 0xffffffffL);
if ((suffix >> 16) == 0x0401 || (suffix >> 16) == 0x0402 || (suffix >> 16) == 0x0403) {
// Keep `in` as is
} else {
in = (in & 0xffffffff00000000L) | 0x01000000L | (suffix & 0xffffff);
}
long out = new CkCipher(ckKey).decrypt(in);
long n2 = 0;
for (int i = 56; i >= 0; i -= 8) {
n2 ^= (in >> i) & 0xff;
}
int vv = (int) (n2 & 0xff);
if (vv < 0) {
vv = -vv;
}
return String.format("%02x%016x", vv, out);
}
private static class CkCipher {
private int[] rk = new int[ROUND_KEYS];
public CkCipher(long ckKey) {
int[] ld = new int[]{(int) ckKey, (int) (ckKey >>> 32)};
rk[0] = -1209970333;
for (int i = 1; i < ROUND_KEYS; i++) {
rk[i] = rk[i - 1] - 1640531527;
}
int a = 0, b = 0, i = 0, j = 0;
for (int k = 0; k < 3 * ROUND_KEYS; k++) {
rk[i] = rotateLeft(rk[i] + (a + b), 3);
a = rk[i];
ld[j] = rotateLeft(ld[j] + (a + b), a + b);
b = ld[j];
i = (i + 1) % ROUND_KEYS;
j = (j + 1) % 2;
}
}
public long encrypt(long in) {
int a = (int) in + rk[0];
int b = (int) (in >>> 32) + rk[1];
for (int r = 1; r <= ROUNDS; r++) {
a = rotateLeft(a ^ b, b) + rk[2 * r];
b = rotateLeft(b ^ a, a) + rk[2 * r + 1];
}
return packLong(a, b);
}
public long decrypt(long in) {
int a = (int) in;
int b = (int) (in >>> 32);
for (int i = ROUNDS; i > 0; i--) {
b = rotateRight(b - rk[2 * i + 1], a) ^ a;
a = rotateRight(a - rk[2 * i], b) ^ b;
}
b -= rk[1];
a -= rk[0];
return packLong(a, b);
}
}
private static int rotateLeft(int x, int y) {
return (x << (y & 31)) | (x >>> (32 - (y & 31)));
}
private static int rotateRight(int x, int y) {
return (x >>> (y & 31)) | (x << (32 - (y & 31)));
}
private static long packLong(int a, int b) {
return ((long) a & 0xffffffffL) | ((long) b << 32);
}
}
Go
package main
import (
"bytes"
"encoding/binary"
"fmt"
"math/rand"
"time"
)
const (
rounds = 12
roundKeys = 2 * (rounds + 1)
)
func main() {
rand.Seed(time.Now().UnixNano())
name := "Charles"
fmt.Println("name:", name, " key:", crack(name))
}
func crack(text string) string {
name := []byte(text)
length := len(name) + 4
padded := ((-length) & (8 - 1)) + length
bs := make([]byte, 4)
binary.BigEndian.PutUint32(bs, uint32(len(name)))
buff := bytes.Buffer{}
buff.Write(bs)
buff.Write(name)
var ckName int64 = 0x7a21c951691cd470
var ckKey int64 = -5408575981733630035
ck := newCkCipher(ckName)
outBuff := bytes.Buffer{}
for i := 0; i < padded; i += 8 {
bf := buff.Bytes()[i : i+8]
buf := bytes.NewBuffer(bf)
var nowVar int64
if err := binary.Read(buf, binary.BigEndian, &nowVar); err != nil {
panic(err)
}
dd := ck.encrypt(nowVar)
outBuff.WriteByte(byte(dd >> 56))
outBuff.WriteByte(byte(dd >> 48))
outBuff.WriteByte(byte(dd >> 40))
outBuff.WriteByte(byte(dd >> 32))
outBuff.WriteByte(byte(dd >> 24))
outBuff.WriteByte(byte(dd >> 16))
outBuff.WriteByte(byte(dd >> 8))
outBuff.WriteByte(byte(dd))
}
var n int32
for _, b := range outBuff.Bytes() {
n = rotateLeft(n^int32(int8(b)), 0x3)
}
prefix:= n ^ 0x54882f8a
suffix:=rand.Int31()
in := int64(prefix) << 32
s := int64(suffix)
switch suffix >> 16 {
case 0x0401:
case 0x0402:
case 0x0403:
in |= s
break
default:
in |= 0x01000000 | (s & 0xffffff)
break
}
out := newCkCipher(ckKey).decrypt(in)
var n2 int64
for i := 56; i >= 0; i -= 8 {
n2 ^= int64((uint64(in) >> i) & 0xff)
}
vv := int32(n2 & 0xff)
if vv < 0 {
vv = -vv
}
return fmt.Sprintf("%02x%016x", vv, uint64(out))
}
type ckCipher struct {
rk [roundKeys]int32
}
func newCkCipher(ckKey int64) ckCipher {
ck := ckCipher{}
var ld [2]int32
ld[0] = int32(ckKey)
ld[1] = int32(uint64(ckKey) >> 32)
ck.rk[0] = -1209970333
for i := 1; i < roundKeys; i++ {
ck.rk[i] = ck.rk[i-1] + -1640531527
}
var a, b int32
var i, j int
for k := 0; k < 3*roundKeys; k++ {
ck.rk[i] = rotateLeft(ck.rk[i]+(a+b), 3)
a = ck.rk[i]
ld[j] = rotateLeft(ld[j]+(a+b), a+b)
b = ld[j]
i = (i + 1) % roundKeys
j = (j + 1) % 2
}
return ck
}
func (ck ckCipher) encrypt(in int64) int64 {
a := int32(in) + ck.rk[0]
b := int32(uint64(in)>>32) + ck.rk[1]
for r := 1; r <= rounds; r++ {
a = rotateLeft(a^b, b) + ck.rk[2*r]
b = rotateLeft(b^a, a) + ck.rk[2*r+1]
}
return pkLong(a, b)
}
func (ck ckCipher) decrypt(in int64) int64 {
a := int32(in)
b := int32(uint64(in) >> 32)
for i := rounds; i > 0; i-- {
b = rotateRight(b-ck.rk[2*i+1], a) ^ a
a = rotateRight(a-ck.rk[2*i], b) ^ b
}
b -= ck.rk[1]
a -= ck.rk[0]
return pkLong(a, b)
}
func rotateLeft(x int32, y int32) int32 {
return int32(x<<(y&(32-1))) | int32(uint32(x)>>(32-(y&(32-1))))
}
func rotateRight(x int32, y int32) int32 {
return int32(uint32(x)>>(y&(32-1))) | int32(x<<(32-(y&(32-1))))
}
func pkLong(a int32, b int32) int64 {
return (int64(a) & 0xffffffff) | (int64(b) << 32)
}
在线
https://www.zzzmode.com/mytools/charles/
申明
上述均为技术学习探索,请勿牟利!!!
请支持正版!!!
结束
🎀Charles激活的更多相关文章
- Charles 激活入口以及账号密码
激活入口 // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charles 4.2目前是最新版,可用. Registered ...
- Charles学习(一)之macOS Charles 4.x版本的安装、激活、使用以及软件功能了解
前言 Charles是mac上一款比较好用的抓包工具,那么我们什么情况下需要用到抓包工具呢?比如我想查看一个接口请求的参数.返回值,还有移动设备上的http/https请求. Charles是一个HT ...
- MAC抓包工具Charles安装及破解
参考资料:https://juejin.im/post/5c0a430f51882516207d205d 下载 Charles官网下载安装包,下载成功后根据指示安装即可 官网地址:http://www ...
- Charles抓包工具详解
学习Charles能做什么: 能够用charles分析前后端问题 能够使用charles模拟弱网测试环境 能够使用charles断点构建异常的测试环境 Charles 简介 1.Charles是什么? ...
- 前端工程师拿到全新的 Mac 需要做哪些准备
最近苹果退出了新款 Mac,用了3年15款Pro之后,终于盼到18款的降价,于是含泪更新换代 但是每次换电脑,重装环境的好多东西记不清,于是记个笔记 一.终端 安装 zsh sh -c "$ ...
- Charles通用破解激活办法
Charles通用破解激活办法 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. 目前最新版Charles 4.2.8. Registered Name: https://zhile.i ...
- charles系列破解激活办法(最高charles4.2都可以激活)
// Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charles 4.2目前是最新版,可用. Registered Na ...
- Charles Proxy for Mac & Windows (4.1.3)破解激活工具
1.简介 2017年7月10日更新本博客,Charles已经更新到了4.1.3版本,并对应地给出破解jar包. Charles是一个Mac和Windows平台都可以使用的抓包工具,它的破解激活非常简单 ...
- charles破解激活方法,注册码
1 最简单的,就是买一个激活码,在网上找到一个,记录一下. // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charle ...
- Charles Proxy v4.1.4 免费注册激活方法
去官网下载最新版Charles,目前是v4.1.4 下载后安装Charles,然后先打开一次Charles软件(Mac系统需要先打开一次,Windows不需要) 到网站 http://charles. ...
随机推荐
- Superset 用户集成方案
注意,一下内容来自外网浏览器翻译,本人使用了将superset集成进入第三方系统,superset采用自定义身份验证+第三系统iframe嵌入方式,但是这个方式存在一个问题,iframe与redire ...
- HTTPS 证书自动化运维:告别手动管理,迎接自动化时代
1. 引言 随着互联网的发展,网络安全变得越来越重要.HTTPS(Hypertext Transfer Protocol Secure)通过使用 SSL/TLS 协议加密数据传输,确保了用户与网站之间 ...
- Win10 20H2 家庭版 环境变量
20H2 家庭版设置环境变量,此电脑--->属性,弹出的是新版本的设置界面,选择左侧的"关于",在最右侧的"相关设置"里面,选择"高级系统设置& ...
- 2024大湾区网络安全大会,AOne来了!
近日,2024大湾区网络安全大会暨第二十六期花城院士科技会议在广州启幕.学者专家.高校院长.政府相关负责人及行业大咖齐聚一堂,围绕网络安全的前沿话题与挑战展开深入交流与探讨.天翼云科技有限公司网络安全 ...
- ChatGPT 背后的英雄——AI芯片
本文分享自天翼云开发者社区<ChatGPT 背后的英雄--AI芯片>,作者:w****n AI芯片能为人工智能应用提供所需的基础算力:按技术架构主要分为GPU.FPGA和ASIC.Chat ...
- Q:Linux符号连接的层数过多
创建符号链接的时候源文件一定要使用绝对路径,尤其是链接不在同一目录时候,用相对路径会出现这种bug,具体是红色闪烁状态.:正常应该是青绿色 例如: 安装zabbix_agent遇到的问题,在root ...
- FreeSql学习笔记——10.贪婪加载
前言 FreeSql贪婪加载主要对应导航属性,将需要的数据一次加载出来,包括查询表的子表或者关联表的关联数据,用于一对一.一对多.多对一.多对多的关系数据查询,查询的时候一对一.多对一关系查询是可 ...
- 攻城攻心的混淆大师——深入解析第十八届CISCN x 第二届长城杯初赛Reverse赛题vt
前言 在初赛结束近两月之际,笔者在复盘过程中意外发现了这道当时无人能解的难题.经过两日深入的探索与钻研,笔者终于成功地对这道赛题进行了全面的解构.在品味破译flag所带来的喜悦之余,笔者亦深感此题蕴含 ...
- 如何在Spring Boot项目中添加国密SM4加密支持?——基于过滤器的实现
如何在Spring Boot项目中添加国密SM4加密支持呢?--基于过滤器的实现 引言 在数字化时代,数据安全至关重要,尤其是在API交互过程中,确保传输数据的安全性是保护隐私和机密信息的关键.中 ...
- 燕千云ITSM已支持DeepSeek对接!AI能力持续升级
春节期间,DeepSeek火爆全网,引发热议,作为国产AI大模型的黑马,DeepSeek凭借独特的训练方法.先进的模型架构和强大的联网推理能力,正不断拓展AI技术的应用边界.其"快思考&qu ...
