🎀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. ...
随机推荐
- Delphi XE TVirtualQuery raised exception class ESQLiteError with message 'duplicate column name:dw'
使用Delphi XE7+UniDAC+TVirtualQuery开发的过程中,对已经查询到内存中的数据集TUniQuery组件,再次运用SQL语句进行查询 结果程序运行后提示错误:raised ex ...
- Flink客户端操作
一.mysql数据准备 mysql -hip -uroot -p密码 CREATE DATABASE flink; USE flink; CREATE TABLE user ( id INTEGER ...
- mac安装gcc7
查看gcc版本 gcc --version 1.安装gcc brew install gcc@7 cd /usr/local/Cellar 改名mv gcc\@7/ gcc 2.打开mac的SIP ...
- 多线程之lamda表达式
代码简化过程 public class TestLambda1 { //3.静态内部类 static class Like2 implements ILike{ ...
- Dotfuscator混淆时的配置信息
这个是64位的Framework
- Linux - 安装centos7.x之后发现ping不了www.baidu.com
1.首先检查网络配置 /etc/sysconfig/network-scripts 下的网卡配置文件是否有误 检查方向:IP.网关.子网掩码.DNS.ONBOOT参数 2.检查防火墙是否关闭 # 查看 ...
- Shell - 集群监控脚本合集
node_heart_check.sh #!/bin/bash scriptPath=$(dirname "$0") for ip in `cat /etc/hosts | gre ...
- NebulaGraph Desktop 使用初体验
前言 前两天 NebulaGraph 官方宣布了全新的开源 Desktop,旨在通过一体化方案解决图数据库部署复杂.工具碎片化.学习成本高等的痛点问题,我也是跃跃欲试.前期在初识 NebulaGrap ...
- 青岛oj集训1
2025/3/4 内容:有向无环图(DAG) 优点:DAG有很多良好性质 拓扑排序 用处:可以根据拓扑序进行dp 这次计算所用的所有边的权值都是有计算过的 一张DAG图肯定有拓扑序(bfs序,dfs序 ...
- 2024数证杯决赛团体赛wp
2024数证杯决赛团体赛wp 容器密码:mW7@B!tRp*Xz46Y9#KFUV^J2&NqoHqTpLCE%8rvGW(AX#1k@YL3$M5!bWY*9HLFq7UZR6^T!XoVm ...
