auth.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:shadowsocks-remix 作者: SuperSuperSuperSuper5 项目源码 文件源码
def pack_auth_data(self, auth_data, buf):
        if len(buf) == 0:
            return b''
        if len(buf) > 400:
            rnd_len = common.ord(os.urandom(1)[0]) % 512
        else:
            rnd_len = struct.unpack('<H', os.urandom(2))[0] % 1024
        data = auth_data
        data_len = 4 + 16 + 10 + len(buf) + rnd_len + 4
        data = data + struct.pack('<H', data_len) + struct.pack('<H', rnd_len)
        uid = os.urandom(4)
        encryptor = encrypt.Encryptor(to_bytes(base64.b64encode(uid + self.server_info.key)) + self.salt, 'aes-128-cbc', b'\x00' * 16)
        data = uid + encryptor.encrypt(data)[16:]
        data += hmac.new(self.server_info.iv + self.server_info.key, data, hashlib.sha1).digest()[:10]
        data += os.urandom(rnd_len) + buf
        data += struct.pack('<I', (zlib.adler32(data) & 0xFFFFFFFF))
        return data
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号