🎀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. ...
随机推荐
- python 控制流程
条件语句 if语法 if True: print("hello") print("world!") 输出: helloworld! 举例: "&quo ...
- 使用xtrabackup对MySQL8.0.34进行备份和恢复
Percona XtraBackup 是一款开源的.用于 MySQL 和 MariaDB 的热备份工具,它可以在不停止数据库服务的情况下进行全量或增量备份,并且能够快速恢复数据.以下从特点.安装.备份 ...
- JS深度理解
事件循环 程序运行需要有自己专属的内存空间,可以把这块内存简单理解为进程 每个应用至少有一个进程,进程间相互独立,要通信,也需要双方同意 线程 有进程后,就可以运行程序的代码 运行代码的 [人] 称为 ...
- SqlServer中获取字符串中的数字部分
具体SQL如下所示: --获取字符串中的数字部分 CREATE FUNCTION [dbo].[f_GetNumStr] ( @Str NVARCHAR(MAX) ) RETURNS NVARCHAR ...
- [阿里DIN] 从论文源码梳理深度学习几个概念
[阿里DIN] 从论文源码梳理深度学习几个概念 目录 [阿里DIN] 从论文源码梳理深度学习几个概念 0x00 摘要 0x01 全连接层 1.1 全连接层作用 1.2 CNN 1.3 RNN 1.4 ...
- FLink自定义Sink,生产的数据导出到Redis
一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.自定义sink 2.1 自定义sink package net.xdclass.cl ...
- AI-启动
前言 我们都知道AI可以帮助我们完成很多工作,同时也可以帮助我们快速生成一些繁琐的文档:本篇介绍接入一些开源的大预言模型: 准备 OpenAPI 首先需要了解下什么是OpenAPI,OpenAPI是一 ...
- DeepSeek+AnythingLLM,搭建本地AI知识库,真的太香了!三分钟搞定智能助手,小白也能轻松上手!
1. 痛点暴击:你的知识管理还在原始时代吗? 你是否每次查找文档翻遍文件夹,会议纪要总在关键时刻"失踪"? 别慌!今天揭秘一个"真香"组合--DeepSeek+ ...
- MybatisPlus - [08] RestFul
编号 接口 请求方式 请求路径 请求参数 返回值 1 新增用户 POST /users 用户表单实体 无 2 删除用户 DELETE /users/{id} 用户id 无 3 根据id查询用户 GET ...
- 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程序,新手也能快速上手!
大家好,我是狂师. 在当今数字化时代,智能客服已成为提升用户体验.提高运营效率的关键工具. 今天,我们将为大家带来一个超级简单的教程,教你如何在短短3分钟内,利用腾讯微搭平台,将满血 DeepSeek ...
