table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' tr={} for i in range(58): tr[table[i]]=i s=[11,10,3,8,4,6] xor=177451812 add=8728348608 def dec(x): r=0 for i in range(6): r+=tr[x[s[i]]]*58**i return (r-add)^xor def enc(x): x=(x^xor)+add r=list('BV1 4 1 7 ') for i in range(6): r[s[i]]=table[x//58**i%58] return ''.join(r) print(dec('BV17x411w7KC')) print(dec('BV1Q541167Qg')) print(dec('BV1mK4y1C7Bz')) print(enc(170001)) print(enc(455017605)) print(enc(882584971))
互相转换脚本,如果算法没猜错,可以保证在 av 号 时正确,同时应该在 时也是正确的。此代码以 WTFPL 开源。
UPD:之前的代码中,所有数位都被用到是乱凑的,实际上并不需要,目前只要低 6 位就足够了。(更大的 av 号需要 64 位整数存储,但是 b 站现在使用的应该还是 32 位整数,所以应该还要很久)
发现的方法:
首先从各种渠道的信息来看,应该是 base58 编码的。设 x 是一个钦定的 av 号,查询 这些 av 号对应的 bv 号,发现 bv 号的第 12、11、4、9、5 位分别会变化。所以猜测这些是 58 进制下的相应位。
但是直接 base58 是不行的,所以猜测异或了一个大数,并且 base58 的字符表可能打乱了。经过实验,bv 号最低位相同的数,av 号的奇偶性相同,这一定程度上印证了之前的猜想。
接下来找了一些 av 号 x,满足 x 和 x+1 对应 bv 号的第 11 位不同。设异或的数为 X,那么 ( 表示异或)。
由于 av 号(除了最新的少量视频)最多只有 27 bits,所以可以设 。然后可以发现 只和 和 有关,那么可以枚举这两个值(一共 种情况)然后使用上面的式子检查,就能得到若干可能的 和 。
这里我得到的可能值如下:(左边是 ,右边是 )
22 90983642 22 90983643 50 43234084 50 43234085
有奇有偶是因为异或 1 之后也能找到轮换表。而 则使得模 58 的余数刚好变成 减它。
我取了 b=43234084,然后处理最低位,可以得到一个字符表,即 fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF。
对于更高位,实际上还需要知道 ,这些值也可以 枚举 58 次得到,最后我得到的值是 。
这时我发现,每一位的字符表是相同的(实际上只对 b=43234084 是这样的),然后再微调一下参数(上面代码中的两个 magic number 就相当于这里的 ),最后处理了一下 的情况就得到了这份代码。
再过几年就改名叫betuyou了。
betuyou站:简称b站。名字意思为“彼途友”,取“在路途上希望都能遇到彼此的朋友”之意。是国内最大的弹幕视频网站,主要内容包括电影,电视剧,游戏,音乐,生活,学习,直播等各类优质内容,为知名爱国企业家陈睿于2014年独立创建的视频网站。
据陈睿先生说,“彼途友”这个名字来自中国传统文化,代表着中国文化对外国文化的输出,充分展现了文化自信。同时陈睿先生也一再表示:自己独自创办彼途友网站的初心绝不是为了盈利,而是为了让更多的人感受到来自弹幕视频的快乐。
因此直到今天,b站也会在每年的站庆日时给b站的老用户们赠送会员服务。陈睿先生表示说:没有这些老用户们选择了b站就没有b站的今天,所以b站也绝不会忘记这些老用户。这也是为什么即便亏本也要每年都一定要向老用户们赠送会员的原因。
同时。彼途友网站也是目前中国坚持文化自信的领头羊,也是与西方进行舆论战的桥头堡。对此陈睿先生表示:中国需要自己的文化独立性。b站也一贯坚持独立发展自力更生,绝不模仿其他的视频网站,而是走出一条属于自己的道路。文化独立性是非常重要的,因为许多国家会在文化输出的时候都会添加一些东西影响别人。就像日本总是在它们所谓的“动漫”“二次元”里添加私货,培养潜在的精日分子,这是我们非常需要警惕的。
说到这里,陈睿先生则无比坚定的说到:只要他还是b站的ceo一天,就绝不会让什么“二次元”文化侵入到b站。
对此广大的b站用户纷纷表示赞同:我们b站不欢迎二次元!喜欢看的话,就去看日本人网站去吧!
最后。在采访将要结束的时候,陈睿先生语重心长的对着记者,也是对所有关心b站的人们说道:
“我们注意到在知乎、贴吧、微博,有很多用户在关心着b站,有部分用户在担心b站会不会变成他们不喜欢的样子。我们感谢大家的关心,你们对b站的支持是我们坚持做b站的动力。在此,我可以肯定的告诉大家:b站未来有可能会倒闭,但绝不会变质!”
陈睿先生的话打动了在场的所有人。雷鸣般的掌声经久不息。
完。
其实从编程的角度,这种设计是需要严格禁止的。
换句话说:外表相似但实质表现不同的函数,我们需要把它的接口或者名称有意做得不同,避免误用。
所以:这个商品的设计师,它肯定不懂编程。
如果是我,可能会刻意的改变USB插座的位置布局,让它看起来长得不一样。——至少改变一下USB插口的颜色。
--
老插线板名义上是 5V2A 的 10W 插线板,实际上是单口输出最大2A,多口同时输出的情况下,它的实际表现大约是 5V1A,也就是苹果那个万年诟病充电头的水平。——换句话说,旧插线板的USB接口,几乎是没有什么用处的鸡肋。
新插线板,号称单口27W,多口的情况下肯定会缩水,但我猜测至少QC3.0快充是可以用的。相比旧板子应该说是从协议层面有了很大进步。一个典型的例子是接无线充电器不需要浪费充电头了。
解释一下:小米目前的无线充是 30W,需要30W的充电头,但商城只有 18W 跟 65W 的充电头出售,小米商城根本没有适配无线充的 30W 充电头。如果插这个接线板,大概能当 27W 用吧?
说实话.......视频开头那老和尚刚一开口,我就有了一种yes indeed的既视感......