简介

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激活的更多相关文章

  1. Charles 激活入口以及账号密码

    激活入口 // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charles 4.2目前是最新版,可用. Registered ...

  2. Charles学习(一)之macOS Charles 4.x版本的安装、激活、使用以及软件功能了解

    前言 Charles是mac上一款比较好用的抓包工具,那么我们什么情况下需要用到抓包工具呢?比如我想查看一个接口请求的参数.返回值,还有移动设备上的http/https请求. Charles是一个HT ...

  3. MAC抓包工具Charles安装及破解

    参考资料:https://juejin.im/post/5c0a430f51882516207d205d 下载 Charles官网下载安装包,下载成功后根据指示安装即可 官网地址:http://www ...

  4. Charles抓包工具详解

    学习Charles能做什么: 能够用charles分析前后端问题 能够使用charles模拟弱网测试环境 能够使用charles断点构建异常的测试环境 Charles 简介 1.Charles是什么? ...

  5. 前端工程师拿到全新的 Mac 需要做哪些准备

    最近苹果退出了新款 Mac,用了3年15款Pro之后,终于盼到18款的降价,于是含泪更新换代 但是每次换电脑,重装环境的好多东西记不清,于是记个笔记 一.终端 安装 zsh sh -c "$ ...

  6. Charles通用破解激活办法

    Charles通用破解激活办法 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. 目前最新版Charles 4.2.8. Registered Name: https://zhile.i ...

  7. charles系列破解激活办法(最高charles4.2都可以激活)

    // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charles 4.2目前是最新版,可用.   Registered Na ...

  8. Charles Proxy for Mac & Windows (4.1.3)破解激活工具

    1.简介 2017年7月10日更新本博客,Charles已经更新到了4.1.3版本,并对应地给出破解jar包. Charles是一个Mac和Windows平台都可以使用的抓包工具,它的破解激活非常简单 ...

  9. charles破解激活方法,注册码

    1  最简单的,就是买一个激活码,在网上找到一个,记录一下. // Charles Proxy License // 适用于Charles任意版本的注册码,谁还会想要使用破解版呢. // Charle ...

  10. Charles Proxy v4.1.4 免费注册激活方法

    去官网下载最新版Charles,目前是v4.1.4 下载后安装Charles,然后先打开一次Charles软件(Mac系统需要先打开一次,Windows不需要) 到网站 http://charles. ...

随机推荐

  1. DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」

    前言 最近 DeepSeek 狠狠刷了一波屏,国产大模型真的越来越厉害了,官方的服务器已经爆满了,以至于频繁出现反应迟缓甚至宕机的情况,和两年多之前 ChatGPT 的遭遇颇为相似. 我已经好久没有本 ...

  2. Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践

    title: Python 与 PostgreSQL 集成:深入 psycopg2 的应用与实践 date: 2025/2/4 updated: 2025/2/4 author: cmdragon e ...

  3. mount命令及挂载本地yum源

    mount命令 mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自动选择正确的类 ...

  4. LangChain基础篇 (05)

    LangChain 核心模块:Data Conneciton - Document Transformers 一旦加载了文档,通常会希望对其进行转换以更好地适应您的应用程序. 最简单的例子是,您可能希 ...

  5. 并发编程 - 线程同步(七)之互斥锁Monitor

    通过前面对锁lock的基本使用以及注意事项的学习,相信大家对锁的同步机制有了大致了解,今天我们将继续学习--互斥锁Monitor. lock是C#语言中的关键字,是语法糖,lock语句最终会由C#编译 ...

  6. @Scheduled参数及cron表达式解释

    @Scheduled支持以下8个参数:1.cron:表达式,指定任务在特定时间执行:2.fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms:3.fixedDela ...

  7. D pid(16916) tid(19140) 14:05:45 EdgeSnapFeature::PostExitSizeMove: WM_TWINVIEW_SHOW_GRIDLINES -> off

    D pid(16916) tid(19140) 14:05:45 EdgeSnapFeature::PostExitSizeMove: WM_TWINVIEW_SHOW_GRIDLINES -> ...

  8. PERT 图表教程

    (翻译自: PERT Chart Tutorial) PERT 图表 是(程序评估和审查技术)的首字母缩写.PERT 图是一种项目管理工具,用于在项目中安排.组织和协调任务.它基本上是一种分析完成给定 ...

  9. Netty - [01] 概述

    题记部分 一.介绍 Netty 是由JBOSS提供的一个Java开源框架,现为Github上的独立项目. Netty是一个异步的.基于事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络I/O程 ...

  10. C# 网页截图全攻略:三种技术与 Chrome 路径查找指南

    全局配置 string url = "https://blog.csdn.net/sunshineGGB/article/details/122316754"; 一.Puppete ...