「微信帐号&语音文件」结构分析-amr文件

2023-05-16

1、关于微信账号

这里提到的微信内部账号(UIN)有三种可能的结构:9位数、10位数、1个负号拼接10位数。

UIN记录在/data/data/com.tencent.mm/shared_prefs/文件夹下的若干文件内,包括com.tencent.mm_preferences.xml、app_brand_global_sp.xml等。

例如:在system_config_prefs.xml文件里的

<int name="default_uin" value="2333333333" />

auth_info_key_prefs.xml文件里的

<int name="_auth_uin" value="2333333333" />

网上盛传的chrome://net-internals/#events抓包法也能得到UIN,通常与上述UIN相同,但只有两种可能的结构:9位数、10位数。如果10位数溢出了32位整型空间,就相当于“1个负号拼接10位数”的情况。

例如:数据包的UIN是233333333,实际的UIN是-1961633963(即233333333减去4294967296)。

接下来,如前文所述,“mm”直接拼接UIN,算出MD5值后得到该账号的文件夹名称。例如:UIN是-1961633963时,MD5(mm-1961633963) = b883740d5f568c04e488befca16eed50。

2、微信语音文件夹的命名规则

前文已经介绍过了,微信的语音文件存储在“voice2”下的两层目录下,而这两层的目录名称非常奇怪,都是两位字符,如“voice\3d\27\……”,name,"voice2”文件夹之下的二级目录名是如何选择的呢?

以这里的“msg_480948061918919ac9300d9102.amr”文件为例,只要把“msg_”去掉,对基本名称的剩余部分(480948061918919ac9300d9102)计算MD5值,得到3d278f649bece4ff979a26db4e50d147,取第1-2位为第一层目录名,第3-4位为第二层目录名,这个文件就在/voice2/3d/27/文件夹下。

3、微信语音文件的命名规则

前文留下了一个思考题,这里的发送者标识“919ac93”是什么含义呢?

首先要明确,微信号包括缺省微信号自定义微信号。缺省微信号通常以“wxid_”(个人号)或“gh_”(公众号)开头,就像身份证号一样。

当用户自行选择自定义微信号后,缺省微信号不被删除或覆盖。而发送者标识就是缺省微信号的MD5值的前7位即使修改自定义微信号后也不变化

另外再说一句,保存头像时,得到的图片文件名称也由缺省微信号的MD5值构成。例如:大家可以关注一下“新闻哥”这个订阅号做个实验。(非推荐行为)

那么,应该对gh_faa35168f414计算MD5值,其头像图片将被保存为hdImg_aaf7752298514c9eeae37e7610181061.jpg,并且其发送者标识是“aaf7752”,即:缺省微信号的md5值,取前面七位。

4、待解决的新问题

1、发送者标识为什么只取7位呢?

笔者猜测是为了压缩文件名、节省数据空间。容易想到,这样做可能导致哈希冲突。对于最常见的缺省微信号格式(wxid_14位小写字母和数字),理论上有36^14种可能(6.14094E+21),而7位哈希只有16^7种可能(2.68435E+8)。

当然在操作中,可以在生成wxid时就丢弃冲突的wxid,直到微信用户数接近2.7亿。然而,马化腾在今年全国人大“代表通道”上透露,微信全球月使用活跃用户数在春节突破十亿大关。那么,怎样判别用户的唯一性?

2、语音文件名称里的发送时间由手机时间决定,不依赖于服务器的标准时间。

那么,怎样确定时间的正确性?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

「微信帐号&amp;语音文件」结构分析-amr文件 的相关文章

  • 使Apache服务器URL支持中文

    文章地址https blog csdn net wc250025 article details 110822265 基本法 想要Apache的URL中支持中文 xff0c 需要安装mod encoding模块 网上大部分文章都是在用老的版
  • W: GPG 错误:http://ppa.launchpad.net lucid Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF368B7的问题

    在安装更新时 xff0c 即在运行 xff0c 命令行sudo apt get update 或者运行更新管理器的时候 xff0c 出现W GPG 错误 xff1a http ppa launchpad net lucid Release
  • WEEK8 周记 作业——kosaraju模拟&DFS序_班长竞选

    WEEK8 周记 作业 kosaraju模拟 amp DFS序 班长竞选 一 题意 1 简述 大学班级选班长 xff0c N 个同学均可以发表意见 若意见为 A B 则表示 A 认为 B 合适 xff0c 意见具有传递性 xff0c 即 A
  • WEEK11 周记 作业——DP0-1背包问题_东东开车了

    一 题意 1 简述 东东开车出去泡妞 在梦中 xff0c 车内提供了 n 张CD唱片 xff0c 已知东东开车的时间是 n 分钟 xff0c 他该如何去选择唱片去消磨这无聊的时间呢 假设 CD数量不超过20张 没有一张CD唱片超过 N 分钟
  • c语言结构体嵌套的对齐方式

    1 xff1a 在代码中有结构体嵌套的方式 xff0c 又需要获取每个变量的地址 那么需要了解结构体嵌套和单一结构体的一些对齐方面的规则 2 xff1a 对于嵌入式的设备来说 xff0c 对齐很重要 xff0c 有些cpu不支持不对齐的访问
  • Cloudreve自建云盘实站:容量和速度自己来决定

    一 前言 为啥要用自建网盘 xff0c 市面上的云盘不香了 xff1f 每一个用户需求的背后都是因为有场景存在 xff0c 而这些差异化的场景也都是因为不同的用户类型产生的 就像我作为技术号主想分享一些自己总结的资料 xff0c 放到一些云
  • Ubuntu安装CUDA cuDNN TensorRT

    CUDA cuDNN TensorRT安装 0 前言 CUDA xff1a 用于 GPU 的一组驱动程序 xff0c 它让 GPU 能够运行底层编程语言来进行并行计算 cuDNN xff1a 用于深度学习的高度优化的原语库 使用 cuDNN
  • 单片机学习笔记7--SysTick定时器(基于百问网STM32F103系列教程)

    第六章 SysTick定时器 SysTick定时器 又名系统滴答定时器 是存在于Cortex M3的一个定时器 24位 xff0c 只能递减 xff0c 嵌套在NVIC中 xff0c 所有的Cortex M内核的单片机都具有这个定时器 只要
  • 如何将自己的Python代码打包发布到pypi上

    什么是pypi 简单的说pypi是一个python包的仓库 xff0c 里面有很多别人写好的python库 xff0c 你可以通过easy install 或者pip进行安装 方便用户更方面的使用你的代码模块 将代码打包并上传到pypi上
  • c++11新特性:变长参数模板详解

    这里写目录标题 C 43 43 11 变长参数模板变长函数参数包如何解参数包sizeof 获得函数参数个数递归模板函数变参模板展开 结论 C 43 43 11 变长参数模板 在C 43 43 11之前 xff0c 无论是类模板 还是函数模板
  • 安装Nvidia驱动run文件

    本文系转载 xff0c 出处 xff1a https blog csdn net lhx 998 article details 76135936 下载指定NVIDIA驱动安装包 xff08 run格式 xff09 run格式文件安装有时比
  • 学习问题记录:centos虚拟机启动到登录界面黑屏

    一 问题描述 centos虚拟机前面启动正常 xff0c 但到了登录界面一直黑屏 二 原因 可能是在 etc profile 修改环境变量时没加 PATH xff0c 导致重启时 etc profile 生效 xff0c 虚拟机原有路径被替
  • 解决 Python paramiko 安装失败的问题

    我昨天试了一下午总算是安装成功了 xff0c 这个模块安装难度主要在于依赖包没有最新版的whl文件可以用 xff0c 而pip下载依赖的时候 xff0c 就会找最新版 xff0c 没有最新版就下载源码自己编译 xff0c 结果就是报错 提示
  • Java如何从字符串中提取数字

    在使用java编程处理字符串时 xff0c 常常需要获取字符串中的数字 xff0c 来进行进一步的计算 接下来介绍几种从字符串中提取数字的方法 1 正则表达式 这里正则表达式表示匹配除数字以外的字符 xff0c 然后replaceAll方法
  • Java生成MD5的两种方式

    1 原生的 package com pibigstar common utils import java security MessageDigest MD5加密工具类 64 author pibigstar public class My
  • linux下如何完全删除用户

    转载 xff1a http blog 51cto com wutengfei 1923446 1 首先进入系统创建一个用户 root 64 localhost useradd haha 创建用户 haha是用户名 root 64 local
  • mysql中的distinct的用法

    distinct的作用 在mysql中 xff0c distinct关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤 xff0c 只返回其中的一条数据给用户 xff0c distinct只可以在select中使用 dist
  • 为什么不建议你使用Mybatis-plus

    MP是一个很响亮的名字 xff0c 毕竟在Mybatis后面加了一个plus xff0c 就好像Iphone机型后面加了plus就感觉更牛一样 但是我要告诉你 xff0c Mybatis plus的特性只会让你的代码更烂 Mybatis p
  • 详细讲解前端如何给后端传输数据,后端如何给前端传输数据(java)

    1 首先前端浏览器与后端交互是基于Http协议进行的 2 servlet的 java文件没有主方法 main方法 也能执行的原因是servlet可以借助其他服务器来执行比如tomcat服务器 tomcat服务器本身也是java编写的 3 t
  • MySQL 总是差八个小时,如何破?

    今天来聊一个简单的话题 xff0c 这是一个小伙伴在微信上问我的 xff0c 对于初学者我非常能理解这类问题带来的困扰 xff0c 各种尝试 xff0c 各种搜索 xff0c 别人说的头头是道 xff0c 但是就是解决不了自己的问题 xff

随机推荐

  • spring boot 一个极简单的 demo 示例

    1 描述 一个spring boot 的简单demo示例 环境 xff1a IDE idea xff1a 2021 3 JDK xff1a 1 8 maven xff1a 3 8 4 spring boot xff1a 2 5 6 2 结果
  • cookie从哪来,存在哪,往哪去!

    什么是cookie cookie最简单的介绍就是服务器返回的一个字符串信息 xff0c 只不过我们每次请求都需要把它发送给服务器 以AFN和android async http为例子 xff0c 默认都会把cookie自动保存并且下次发送请
  • WIFI手机使用正常电脑使用卡顿解决方案

    最近遇到手机连接wifi有50 100M宽带速度 xff0c 电脑连接却卡顿的情况 xff0c 经过查询发现网上主要有这几种说法 xff1a 1 xff1a 信通需要更改 xff0c 可能附近无线设备过多导致通道拥挤 2 xff1a DNS
  • meta标签的作用是什么

    meta标签的作用是什么 meta是用来在HTML文档中模拟HTTP协议的响应头报文 meta 标签用于网页的 xff1c head xff1e 与 xff1c head xff1e 中 xff0c meta 标签的用处很多 meta 的属
  • 使用devenv在命令行中编译项目

    本文介绍如何使用命令行运行Visual Studio编译项目 一 devenv介绍 devenv是VisualStudio的可执行程序 xff0c 一般在 Microsoft Visual Studio 12 0 Common7 IDE 下
  • 浅析私有化即时通讯软件的功能

    即时通讯软件可以分为个人级和企业级 xff0c 个人即时通讯软件通过特定条件添加对方为好友 xff0c 然后就能进行聊天 文件传输 视频通话等 xff0c 这类型功能偏向休闲娱乐 xff1b 企业即时通讯软件与个人通讯软件最大不同是它可以私
  • Windows自动更新是灰色的解救方法

    Windows自动更新是灰色的解救方法一 xff1a 首先单击 开始 运行 gpedit msc xff0c 打开组策略 依次选择 计算机配置 管理模板 WINDOWS组件 WINDOWS UPDATE xff0c 选择 配置自动更新 再选
  • VSCode安装Go开发环境

    安装Golang 下载golang https golang google cn dl 解压 heyw 64 ubuntu software tar xvzf go1 12 7 linux amd64 tar gz 查看版本 heyw 64
  • springboot中bootstrap和application配置文件的加载顺序

    前言 xff1a SpringBoot默认支持properties和yaml两种格式的配置文件 properties格式简单 xff0c 但是只支持键值对 如果需要表达列表 xff0c 最好使用yaml格式 SpringBoot支持自动加载
  • 如何使网页变成灰色

    一般在清明节 xff0c 全国哀悼日 xff0c 大地震的日子 xff0c 以及一些影响力很大的伟人逝世或纪念日的时候 xff0c 如何快速使网站网页变成灰色 xff08 黑白色 xff09 xff0c 以表示我们对逝者的悼念 在网页的 l
  • VUE获取本年、本月、本周、本日、去年、上月等的方法。

    主要函数 64 param originFlag 时间段标识符 xff0c 即thisMonth thisWeek等 xff0c 不传默认本日 当originFlag为 39 days 39 开头的时候 xff0c 后面拼数字n xff0c
  • taokeeper——ZooKeeper监控

    在公司内部 xff0c 有不少应用已经强依赖zookeeper xff0c zookeeper的工作状态直接影响它们的正常工作 目前开源世界中暂没有一个比较成熟的zookeeper monitor 于是开始zookeeper监控这块工作 目
  • 导航栏上拉显示下拉隐藏

    一 需求说明 页面加载时导航栏悬浮在页面的上方 xff0c 当滚动条向下滚动时导航栏隐藏 xff0c 当滚动条向上滚动时导航栏显示 二 原理讲解 页面打开时 xff0c 先获取到页面的滚动条的初始高度 xff08 也可直接设为0 xff09
  • HTML文字超过规定长度后显示省略号(css3)样式

    overflow hidden text overflow ellipsis display webkit box webkit box orient vertical webkit line clamp 2
  • js获取某个元素距离浏览器的边距

    知识储备 xff1a 1 偏移参照 xff08 offsetParent xff1a 在理解偏移大小之前 xff0c 首先要理解offsetParent 人们并没有把offsetParent翻译为偏移父级 xff0c 而是翻译成定位父级 x
  • vue中通过Export2Excel将table导成excel

    1 安装依赖包 npm install S file saver npm install S xlsx npm install D script loader 2 在项目中新建文件夹vendor xff08 名字可以随便取 xff09 xf
  • 51单片机中定时器/计数器初值的计算

    定时计数器的计数初值计算根据工作方式的不同而不同 主要分为两种情况 xff1a xff08 1 xff09 计数工作时 此时计数脉冲由外部脉冲提供 xff0c 根据工作方式确定计数器最大值MAX xff0c 假如你需要每满X个值就溢出计数加
  • mac pytorch安装过程(anaconda+pycharm配置)

    mac pytorch安装过程 xff08 anaconda 43 pycharm配置 xff09 装好pytorch之后 xff0c 在jupter notebook和pycharm中 xff0c import torch时报错 xff0
  • “远程桌面连接”中的声音问题

    远程桌面连接 中的声音问题 问 xff1a 当利用XP 03自带的 远程桌面连接 连接到XP时 xff0c 在选项中设置将声音 带到这台计算机 或 留在远程计算机 都没问题 但是当连接到03时 xff0c 怎么都没声音 xff0c 应当如何
  • 「微信帐号&amp;语音文件」结构分析-amr文件

    1 关于微信账号 这里提到的微信内部账号 xff08 UIN xff09 有三种可能的结构 xff1a 9位数 10位数 1个负号拼接10位数 UIN记录在 data data com tencent mm shared prefs 文件夹