首页 > 解决方案 > 使用 PHP 将 6 个数组字节转换为 int64

问题描述

我正在将 javascript 脚本逆向工程为 PHP,并且有许多函数可以转换:

[224, 221, 199, 147, 195, 47] 的 6 个数组字节

并将其输出到 1632933900000 (这是时间戳,Int64)

您能帮我如何使用 PHP 将上述字节打包/解包为最终整数吗?

样品:

[224, 221, 199, 147, 195, 47] 得到 1632933900000

[224, 143, 228, 137, 198, 47] 得到 1633718700000

附加信息:

javascript 代码很长(它被混淆了)。我只是确定它被放置在 6 个字节内。

在此处输入图像描述

下一个更新...

它转到这个函数(this.buf 是数组字节):

function u() {
    var e = new a(0, 0),
        t = 0;
    if (!(this.len - this.pos > 4)) {
        for (; t < 3; ++t) {
            if (this.pos >= this.len) throw s(this);
            if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 7 * t) >>> 0, this.buf[this.pos++] < 128) return e
        }
        return e.lo = (e.lo | (127 & this.buf[this.pos++]) << 7 * t) >>> 0, e
    }
    for (; t < 4; ++t)
        if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 7 * t) >>> 0, this.buf[this.pos++] < 128) return e;
    if (e.lo = (e.lo | (127 & this.buf[this.pos]) << 28) >>> 0, e.hi = (e.hi | (127 & this.buf[this.pos]) >> 4) >>> 0, this.buf[this.pos++] < 128) return e;
    if (t = 0, this.len - this.pos > 4) {
        for (; t < 5; ++t)
            if (e.hi = (e.hi | (127 & this.buf[this.pos]) << 7 * t + 3) >>> 0, this.buf[this.pos++] < 128) return e
    } else
        for (; t < 5; ++t) {
            if (this.pos >= this.len) throw s(this);
            if (e.hi = (e.hi | (127 & this.buf[this.pos]) << 7 * t + 3) >>> 0, this.buf[this.pos++] < 128) return e
        }
    throw Error("invalid varint encoding")
}

然后它有 [hi and low] 数字,这得到时间戳:

 o.prototype.toNumber = function(e) {
    if (!e && this.hi >>> 31) {
        var t = 1 + ~this.lo >>> 0,
            n = ~this.hi >>> 0;
        return t || (n = n + 1 >>> 0), -(t + 4294967296 * n)
    }
    return this.lo + 4294967296 * this.hi
}

标签: php

解决方案


224 221 199 147 195 47E0 DD C7 93 C3 2F... 的十进制表示,它是247243140743983十进制的。也许不是整个 dword 是时间戳...用于比较:01 7C 32 71 EE E061 54 98 0C. 人们已经可以通过第一个数字注意到这种方法有多远。


JS 中的那个数字可能是类型BigInt

BigInt("0x017C3271EEE0")

BigInt("0xE0DDC793C32F")还是给了247243140743983


推荐阅读