Doghouse

In the Mood for Love

标签 Coding 下的文章

麻将向听数拾遗

参考 九条可怜 大佬的 利用查表法求麻将向听数。过程中有一些数学证明省略了,在这里记录一下加深理解。说句题外话,大佬在知乎唯二的两篇文章,最新的一篇 大数快速取模魔法,和我当时做的关于伽罗华域(Galois Field, GF)的毕设简直不要太贴合。哎,我真是学艺不精。

原文主要是针对向听数计算和序列生成进行讲解的,本文主题亦如此。

0x01 向听数计算

对于大众麻将,包括日本麻将和国标麻将,不考虑特殊牌型(七对、十三幺、不靠等)基本的胡牌条件为:m 个面子加上 1 个对子,即可胡牌。为行文方便,将胡牌公式简单记为

3m+2

其中 3 代表面子,2 代表对子。结合麻将规则,容易知道对于能够胡牌的手牌总数 N,有

N \in \{2, 5, 8, 11, 14\}

牌效率理论定义了向听数(Syanten),指一副牌距离听牌状态最少还差几次打摸动作。0 向听 = 听牌,-1 向听 = 胡牌。若非特殊说明,下文所指的向听数皆为一般牌型的向听数。

对两张不同的牌 x, y 定义距离计算函数 D(x,y)

D(x,y) = \begin{cases} 0,  (x, y 为同种牌)\\ 1,  (x, y 为同种数牌,且数字差 = 1) \\ 2,  (x, y 为同种数牌,且数字差 = 2) \\ \infty,  (otherwise) \\ \end{cases}

根据 3m + 2 ,将牌组序列 tiles 分为两个部分:要凑成若干个面子的部分 tiles_{m},\ \sum tiles_{m}\ mod\ 3=0 和要凑成一对对子的部分 tiles_{p},\ \sum tiles_{p}=2。定义向听数计算函数 S(tiles)

885 0 3,840 9 m 36 s Read All

某 APP 付费视频解密

仅供信息安全学习,部分内容做了 * 替换

起因是在这个 APP 买的付费视频总会不定期清除,就想着下下来存着,以免之后找不到。一开始想着电脑开个模拟器录屏算了,但想想还是有点麻烦,干脆直接分析。

0x00 准备工作

  1. 雷电模拟器 4.0.43 32 位版本,64 位版本在我这里能运行,但登录 APP 失败
  2. 安装要破解的 APP
  3. 安装 Xposed 框架和 JustTrustMe 模块并开启
  4. 安装反射大师
  5. 安装终端模拟器
  6. 电脑安装 Fiddler4/Proxifier,配置 Fiddler4 Capture HTTPS CONNECTs;Proxifier 新增 Proxy 为 Fiddler4 的 Proxy,并新增 Rule:Applications 为 ld*.exe
  7. 安装 Frida,并将对应的 frida-server 放到模拟器上
  8. FFMpeg

1,559 13 2,170 5 m 25 s Read All

PBOC 2.0 密钥计算(C#)

最近在分析PBOC卡的读写。手头有一些基于PBOC 2.0标准的ISO 14443A-4 CPU卡,其实就是我的校园卡。

介绍的话就不多说了,直接切入正题,讲解PBOC 2.0标准下的一卡通的圈存过程,并附上过程中所需密钥的相应算法(C#)。文中所有命令中的数据皆为16进制值。阅读本文需要对PBOC 2.0标准有一定的了解。

432 0 1,674 4 m 11 s Read All