🎀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. ...
随机推荐
- Medjed pg walkthrough Intermediate window
nmap nmap -p- -A -sS -T4 192.168.219.127 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-22 01 ...
- el-table当前行的获取和设置,用于表格行操作
1.在vue的data区声明当前行变量对象,如果当前行的信息用于了按钮的状态则需要赋予默认值,否则会报找不到属性的错误,比如下面会用到当前记录的status属性值控制按钮是否可用. //表格选中的行 ...
- 喜讯!天翼云斩获NLP国际顶会比赛两项荣誉
近日,NLP国际顶会ACL(The Association for Computational Linguistics)进行的国际赛事WASSA 2023(13th Workshop on Compu ...
- .NET周刊【1月第4期 2025-01-26】
国内文章 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解 https://www.cnblogs.com/lyhabc/p/18660810/linux-sql-ser ...
- lxl-北京总结
这是 lxl 讲课的总结. lxl lxl 讲课水平很高,相较之下,刚高中毕业以及毕业三年的集训队选手讲课水平不佳. 北京时候: 树上问题:学了点分治和 Boruvka,补了若干奇怪题. DP:学了 ...
- 任务调度器Azkaban(Azkaban环境部署)
文章链接:https://www.cnblogs.com/liugp/p/16273966.html
- 支付宝AES如何加密
继之前给大家介绍了 V3 加密解密的方法之后,今天给大家介绍下支付宝的 AES 加密. 注意:以下说明均在使用支付宝 SDK 集成的基础上,未使用支付宝 SDK 的小伙伴要使用的话老老实实从 AES ...
- Linux驱动---按键
目录 一.Input子系统 1.1.简介 1.2.Input子系统构成 1.3.input_dev结构体 二.输入设备驱动开发流程 2.1.分配和初始化输入设备 2.2.注册设备 2.3.事件上报 2 ...
- 清华大学推出第三讲普通人如何抓住 DeepSeek 红利,普通人必备的免费AI手册!
前言 在当今这个日新月异的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活.工作和社会结构.从智能手机上的语音助手到自动驾驶汽车,从医疗诊断到学术研究,AI的应用无处不在,它如同一股不可阻 ...
- Dev Express WPF GridControl 数据导出到Excel
Dev Express WPF 给控件提供了公共的导出方法: Export to PDF Export to HTML Export to MHT Export to Text Export to C ...