分类 闲聊 下的文章

喜闻乐见,我破我自己lol

总之就是来逆向下freecookie的账号获取逻辑 闲的没事干了

前期准备

首先先给网页整个下载下来

.
│  FreeCookie.htm
│
└─FreeCookie_files
        eduser.css
        kico.css
        kico.js
        main.css
        obf.js
        sha256.min.js
        simple-ad.js

所以通过瞪眼法发现 获取账号的逻辑位于 obf.js

接下来对他进行一个 DEOBF?

脱离浏览器实现获取。。。

绝赞逆向中

通过抓阄成功破甲🤪🎉🎉

PoW: challenge=79193d1ca5e2b185137747c9a48b3d5a:1762835379, difficulty=4
1000/10000000
2000/10000000
3000/10000000
4000/10000000
5000/10000000
6000/10000000
7000/10000000
8000/10000000
9000/10000000
10000/10000000
11000/10000000
12000/10000000
13000/10000000
14000/10000000
15000/10000000
16000/10000000
17000/10000000
18000/10000000
19000/10000000
20000/10000000
21000/10000000
22000/10000000
23000/10000000
24000/10000000
25000/10000000
26000/10000000
27000/10000000
28000/10000000
29000/10000000
30000/10000000
31000/10000000
32000/10000000
33000/10000000
34000/10000000
35000/10000000
36000/10000000
37000/10000000
38000/10000000
39000/10000000
40000/10000000
41000/10000000
42000/10000000
43000/10000000
44000/10000000
done: nonce=44933 time: 0.43
get
acc FWEpRSoRClJ2
pass SqNryfpBIXwW
cookie {"sauth_json":"{\"gameid\":\"x19\",\"login_channel...

| 8 | 更新0322 | 2024-03-22 09:42:44 | 2024-03-22 09:42:44 | 发布 | 0 | 29 | 文章 | 默认分类 |

# 更新0322

加入了侧边栏
相关内容稍后完工

| 24 | FreeCookie反馈页 | 2024-05-06 09:58:58 | 2024-05-06 09:58:58 | 发布 | 1 | 21 | 文章 | 技术 |

# FreeCookie反馈页

直接发在评论区就好,我会定时看!
下面是模板:
 1. 问题反馈
【主题】问题反馈
【浏览器】chrome/edge/firefox(如果使用诸如360极速浏览器之类的将不会获得支持)
【问题】无法获取/出现错误/...
【具体情况】
【是否可以复现】Y/N
【联系方式】QQ/Email
2.建议改进
【主题】建议改进
【具体内容】
【联系方式】QQ/Email

| 27 | FreeCookie-Beta1.0 UpdateLog | 2024-05-08 15:18:00 | 2024-05-08 15:19:32 | 发布 | 0 | 5 | 文章 | 技术,游戏 |

# FreeCookie-Beta1.0 UpdateLog

已经完成了初步测试!
即将释放🥳🥳🥳

0508:
[+]频率限制
[~]数据库性能
[+]获取记录

TODO:
库存显示
更多错误处理
...

Preview:
*图没备份;;;

# FreeCookie 0509

[https://cookie.alexblock.org][1]
[https://cookie.alexblock.org][1]
[https://cookie.alexblock.org][1]
也是基本折腾完了,之后就改改后端的性能吧,数据库实在是搞不动了高雅txt吧
去试试吧
有时间在写点吸assass美化一下
目前正在补货cookie,总量1w个左右,去掉测试~~浪费~~的起码也有9900+
够用一段时间了

[1]: https://cookie.alexblock.org

| 30 | 30get纪念一下 | 2024-05-11 09:22:33 | 2024-05-11 09:22:33 | 发布 | 0 | 0 | 文章 | 闲聊 |

| 31 | FreeCookie的一些心得 | 2024-05-12 09:13:04 | 2024-05-12 09:13:04 | 发布 | 0 | 3 | 文章 | 技术,游戏 |

# FreeCookie的一些心得

试试上这样的偏向小型的后端没啥必要使用数据库
目前后端的逻辑就是cookie的库存纯txt一行一个
然后获取记录都是纯csv的结构😂
没啥办法,都是现学的
从cf获得源ip,现在不会因为cdn导致只有几个ip了,好在没出现吧cf的cdn给限制频率就解决了

| 32 | [FreeCookie]不是哥们,几分钱的cookie都要刷什么心理啊? | 2024-05-12 22:34:14 | 2024-05-12 22:34:14 | 发布 | 2 | 8 | 文章 | 技术,游戏 |

# [FreeCookie]不是哥们,几分钱的cookie都要刷什么心理啊?

搞不懂了,你要cookie直接找人块八毛的买个几万个自己玩呗一晚上偷了我总价值0.2中国元的曲奇
暂时不会Block。。

IP信息:
> IP:    125.36.195.15
> 
> 位置:    中国, 天津市, 天津
> 
> 经纬度:    39.1488, 117.1762
> 
> 时区:    Asia/Shanghai
> 
> 运营商:    CNC Group CHINA169 Tianjin Province Network
> 
> ASN:    AS4837 CHINA UNICOM China169 Backbone

记录:
125.36.195.15,2024-05-12 22:25:16
125.36.195.15,2024-05-12 22:25:28
125.36.195.15,2024-05-12 22:26:12
125.36.195.15,2024-05-12 22:29:45
125.36.195.15,2024-05-12 22:29:57
125.36.195.15,2024-05-12 22:30:10
125.36.195.15,2024-05-12 22:44:59
125.36.195.15,2024-05-12 22:45:47
125.36.195.15,2024-05-12 22:46:04
125.36.195.15,2024-05-12 22:46:22
125.36.195.15,2024-05-12 22:47:06
125.36.195.15,2024-05-12 22:47:18
125.36.195.15,2024-05-12 22:47:31
125.36.195.15,2024-05-12 22:47:44
125.36.195.15,2024-05-12 22:47:56
125.36.195.15,2024-05-12 22:48:09
125.36.195.15,2024-05-12 22:48:22
125.36.195.15,2024-05-12 22:48:38
125.36.195.15,2024-05-12 22:48:52
125.36.195.15,2024-05-12 22:49:05

| 33 | 1500Get! | 2024-05-13 09:52:14 | 2024-05-13 09:52:14 | 发布 | 0 | 0 | 文章 | 闲聊 |

# 1500Get!

1500Get!
感谢支持!

| 4 | MCDR介绍/插件开发心得 | 2024-03-20 08:40:00 | 2024-03-20 08:43:31 | 发布 | 1 | 25 | 文章 | 技术,游戏 |

MCDR介绍/插件开发心得

1.MCDR是什么?

MCDR,全称MCDReforged,是由TIS服务器成员Fallen-Breath开发的一款纯原版的mc服务端扩展与实现,基于python,使开发难度大大降低,你也可以编写!

2.MCDR能干什么?

虽然它的实现原理十分的简洁,但是衍生出的使用方法与扩展性确实无与伦比的

基于它,你可以实现:

tpa(传送玩家插件)

物品交易

更好的计分板

纯原版的指令(虽然客户端不会提示)

甚至是全自动的存档备份

还有很多......

3.怎么实现的?

MCDR 使用了 Popen 来将服务端作为一个子进程启动,因此它便拥有了控制服务端标准输入/输出流的能力

Minecraft 服务器的控制台输出拥有着稳定的输出格式,并包含着大量与服务器有关的有用信息(如玩家聊天信息)。借此,MCDR 可以解析并分析服务端输出,将他们抽象成不同的事件并派发给插件进行响应

在 Minecraft 内置指令系统的帮助下,MCDR 可以通过向服务端标准输入流发送 Minecraft 指令来与 Minecraft 服务器做出交互

就这样!如果你愿意的话,你可以将 MCDR 视为一个盯着服务端控制台看的,可以根据服务端的输出快速地做出响应并向服务端输入相关指令的,一个机器人

——MCDR Github Readme

4.安装

虽然我很想分享如何安装,但是我认为官网/github已经写个足够清晰

不需要进行重复造轮子的事情

当然有问题留言我也会看看的(逃)

十分建议在开始开发前现在自己的电脑上搭建MCDR,一来方便测试,而来为实际部署打好基础

5.插件开发

PS:以下内容皆以MCDR开发文档为准!

让我们开始吧!

MCDR的插件类型

主要分三类——单文件(example.py)| 文件目录型 | 打包插件(example.mcdr)

首先是单文件,这将是接下来讲述的内容

单文件就是一个单纯的.py文件,无法加入MCDR插件仓库 适合初学者进行简单的插件开发(实际使用时注意目标环境是否拥有需要的库)

文件目录与打包插件本质都是一个文件夹,只不过一个打包了(怎么是废话)

这里就不多赘述了

元数据

首先,创建一个example.py

然后再其中输入这样一段内容(不需要引用任何库):

PLUGIN_METADATA = {
    "id": "example",
    "version": "1.0.0",
    "name": "Example",
    "description": "Block Game Utilities",
    "author": "AlexBlock",
    "link": "https://AlexBlock.org",
}

这里面最重要的是id,这将是MCDR本体识别你的插件的入口,虽然不写的话也能运行,但是这样就失去了元数据填写的意义,自己的作品总要又名字和作者罢qwq

很容易理解的:

id-MCDR眼中你插件的名字

version-插件的版本号

name-你能看到的名字

description-简介

author-作者

link-你的网站(没有可以不填或者填github什么的)

好了,现在你的插件已经可以被MCDR识别到了,为什么不试试呢?

对了,别忘了自己修改作者、链接、简介喔!

让插件和你打声招呼吧!祖传Hello world

在上一部分的example.py的元数据下面输入:

def on_load(server, old):
    server.logger.info('Hello World!')

然后重载(!!MCDR r plg)你应该能看到MCDR的控制台输出了

[TaskExecutor/INFO] [example]: Hello World!

那么恭喜你成功的写出了第一个真正的插件!鼓掌👏

好了,平静下来了吗,让我们回看这两行代码

你可以看到我们def了一个名叫 on_load的函数

这是MCDR的保留字符,用于触发插件中的逻辑,所以在声明一个看起来就很 危 的函数时请务必在文档中搜索其个是不是保留函数!

关于这段代码,MCDR文档是这么说的:

`插件被加载:
插件被加载事件将在插件加载后被触发一次,若你需要注册一些事件监听器/命令/帮助消息,以及初始化参数,那么你应该将它们置于这个函数里`

人话就是:当MCDR正在加载插件时,这个插件就会被触发

而第二行使用了server.logger.info方法向MCDR控制台输出消息

更多有关事件的资料你可以在文档找到

消息交互

仔细想想,插件本质用户的输入做出反应(侠义的,但是本质就是一个你问我答的过程)。

那么我们来看看MCDR使用什么方法来向服务器/玩家发送消息。

server.execute-这个方法向服务器控制台发送消息,也就是命令执行的实现

server.tell-等价于原版 /tellraw 指令,实现向特定玩家发送消息

server.say-相当于全局广播你的消息,等价于/tellraw @a

server.reply-如果消息来自玩家,那么使用 tell 方法来回复玩家;如果消息来自控制台,则使用 server.logger.info 来输出到控制台

不多说了,让我们直接来实践一个看看。

做点什么好呢?

做个进服公告吧!

def on_player_joined(server, player: str, info):
    server.tell(player, '================BlockParty================')
    server.tell(player, f'欢迎 {format(player)} 加入!')
    server.tell(player, '==========================================')

看起来好复杂,让我们慢慢看。

on_player_joined-这个函数回调了"玩家加入游戏"这一事件,当有玩家加入游戏时,这个函数中的内容将被执行

server, player: str, info-都是一些返回的数据

server.tell(player,-这里使用server.tell方法向玩家发送消息,由形参player决定发送给谁

format(player)-获取到目标玩家的名字

其实还挺简单的吧!

注册指令

def on_load(server: PluginServerInterface, old):
    server.register_help_message('!!bp', 'BlockParty    强大的服务器实用工具')
    builder = SimpleCommandBuilder()
    builder.command('!!bp', plugin_help)

首先register_help_message将指令注册到吧帮助列表,你将在!!help