`
m635674608
  • 浏览: 4931769 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

QQ协议分析之TCPF包数据分析

 
阅读更多

说明:

本文档说明的是解密以后的TCPF数据包的字段内容。有关如何解密,请参阅有关的其它文档。分析的结果,是基于QQ 2003 (0808) 内部代码 0A 1D的版本。

0x0022,登录命令

发送方:客户端

样本:

000: 4A 35 5D 6E AE DB FA 9C
008: 96 BE 19 7E A3 E2 B2 48
016: 00 00 00 00 00 00 00 00
024: 00 00 00 00 00 00 00 00
032: 00 00 00 3A 30 9B 69 60
040: A8 32 73 B2 22 1F AA 65
048: 6C 09 F8 01 0A 3A 0D 30
056: 92 CD 77 AB 42 B9 BC 64
064: 9F 17 57 D4 C3

000 - 015: 用户QQ密码的 MD5 的 MD5 作为密钥,对空字串进行加密的结果。0A 1D版的TEA算法采取了随机PADDING的方式,所以这个数字每次看起来都不同。但是解密以后总是空字符串。

016 - 016: 总是 0x00。

017 - 020: 以前为IP地址,现在为全零。不知道具有互联网IP的机器是否有真正的地址。

021 - 022: 以前为端口号,现在为全零。

023 - 051: 不明含义,总是相同。

052 - 052: 登录模式。0A为正常方式,28为隐身。

053 - 068: 应该是和机器相关的识别号,在相同的机器上总是相同。

响应方:服务器

成功登录的样本:

000: 00 61 42 58 45 55 6B 58
008: 7A 42 57 36 78 6E 49 41
016: 59 01 82 5D 90 40 E7 A7
024: E3 0F A0 7F 00 00 01 1F
032: 40 3F 51 22 DA 03 0A 5B
040: 83 50 D2 91 55 AE FC 3A
048: 5B D4 E9 31 97 C5 85 13
056: 64 6B 30 0A CE F1 33 3D
064: 8D C2 CF 1F 40 3D AC F9
072: 8E 1F 40 00 00 1C BB 67
080: 00 CB 49 E6 FF B6 FB 01
088: 97 41 6E 96 30 48 76 48
096: EF B8 1D 1E 5A EA EB E9
104: AB 00 4A 23 D2 00 00 00
112: 00 00 00 00 00 00 00 00
120: 00 40 E7 A7 E3 3F 51 22
128: 91 00 00 00 00 00 00 00
136: 00

000 - 000: 成功登录应该为0。

001 - 016: 以后通信的密钥。

017 - 020: 登录的QQ号码。

021 - 026: 服务器检测到的客户端的IP地址和端口号。

027 - 032: 127.0.0.1:8000,应该是服务器检测到自己的IP和端口号?作用不明。

033 - 036: 本次登录时间?

......

063 - 068: 一个端口为8000的IP地址,作用不明。

069 - 074: 一个端口为8000的IP地址,这个地址就是DTPF协议组通讯的服务器。

075 - 076: 总是0,应该为分隔。

......

109 - 120: 总是0。

121 - 124: 客户端的IP。(上次登录的IP?)

125 - 128: 上次登录退出时间?

...

129 - 136: 总是0。

其它:未知。


密码错误的样本(用Random Key解密):

000: 02 C3 DC C2 EB B4 ED CE
008: F3 A3 A1

000 - 000: 密码错误: 02。
001 - 010: 字符串“密码错误!”,GB18030 编码


要求转到其它服务器登录(未观察到,根据perl-OICQ的资料):

000 - 000: 转到新服务器:01。

001 - 004: 请求的QQ号。

005 - 008: 新的服务器IP。

009 - 010: 新的服务器端口号。


0x0001,注销命令:

发送方:客户端(连续发送4次)

样本:

000: 42 80 D8 9A 5A 03 F8 12
008: 75 1F 50 4C C1 0E E8 A5

000 - 015: QQ密码的 MD5 的 MD5。


0x001D,未知命令:

发送方:客户端,在登录成功后发送。而且总是连发两个。

第一个样本:

000: 03

000 - 000 :总是03,应该是子命令。

第二个样本:

000: 04

000 - 000 :总是04,应该是子命令。

响应方:服务器(定长的响应)

第一个响应样本:

000: 03 00 52 65 76 65 6D 6D
008: 41 35 65 52 54 64 4E 36
016: 64 4B 00 00 00 00 00 00
024: 00 00 00 00 00 00 38 3D
032: 1E 4A 4E 36 53 87 8E B5
040: E0 24 5C 97 80 8C 64 23
048: F4 FF BC 42 69 72 39 1D
056: F6 31 22 65 37 BE 00 D1
064: 8E A6 F8 4C 75 82 F7 B4
072: 49 1F FF 72 3E 26 01 13
080: 1B 18 F6 5A BD 8E 58 00
088: 01 00 00

000 - 000: 03,应该表明是对03号子命令的响应。

001 - 001: 00,应该是分隔。

002 - 017: 16个字符,全由字母和数字组成。

018 - 029: 全0。

030 - 030: 总是38,应该是后面数据的长度。

...

087 - 090: 总是 00 01 00 00。

第二个响应样本:

000: 04 00 43 44 7A 7A 38 63
008: 74 6A 52 55 4B 55 35 43
016: 52 6B 00 00 00 00 00 00
024: 00 00 00 00 00 00 38 A2
032: 5B B9 D3 0E 67 E8 93 BD
040: 0E B4 F6 AE BF 54 47 D7
048: 0F 69 84 5D F2 81 5D D8
056: 12 BF EC 1E 1A 83 D2 58
064: 1D 94 D4 03 EB 91 3B 13
072: A6 B4 66 37 5C A1 96 48
080: 15 8F BD E0 A8 6C 5F 00
088: 01 00 00

000 - 000: 04,应该表明是对04号子命令的响应。


0x0006,获取用户信息:

发送方:客户端

样本:

000: 32 35 33 32 30 38 34 38

需要获取信息的用户QQ号码。ascii字符串形式。

应答方:服务器

样本:

000: 32 35 33 32 30 38 34 38
008: 1E 6A 65 66 66 5F 79 65
016: 63 6E 1E D6 D0 BB AA C8
024: CB C3 F1 B9 B2 BA CD B9
032: FA 1E B9 E3 B6 AB CA A1
040: 1E 35 31 30 30 30 30 1E
048: 64 6F 6E 67 20 66 65 6E
056: 67 20 72 64 2E 20 31 34
064: 35 1E 2D 1E 33 31 1E C4
072: D0 1E 2D 1E 6A 65 66 66
080: 5F 79 65 63 6E 40 73 69
088: 6E 6F 6D 61 63 2E 63 6F
096: 6D 1E 1E 1E 1E 30 1E 1E
104: CD A8 D0 C5 1E 2D 1E 30
112: 1E 1E 1E 32 30 34 1E 31
120: 33 30 30 35 31 36 31 32
128: 34 34 1E 30 1E CF B2 BB
136: B6 BA CD C8 CE BA CE C8
144: CB C1 C4 CC EC A1 A3 1E
152: B9 E3 D6 DD 1E 2D 1E 2D
160: 1E 30 1E 32 1E 30 1E 55
168: 53 54 43 1E 31 32 1E 31
176: 32 1E 32 1E 30 1E 2D

返回的数值由一个个字段组成,数字也是以字符串表示,没有填写的很多为-。每个字段用1E分隔。分别的含义为:

QQ号码,昵称,国家,省,邮政编码,街道地址,电话,年纪,
性别:男女的GB编码。
真实姓名,电子邮件,寻呼编号,寻呼号,寻呼机供应商,寻呼台号,寻呼机类型,
职业,主页,
添加好友认证方式:'0' 不认证,'1' 需认证,'2' 不许添加
未知20,未知21,
头像:0-255的字符串表示,每三个代表一组正常,离开,忙的头像
手机号码,
手机类型:'0' 为无移动QQ,'1'为开通移动QQ。
自我描述:
城市,
未知27,未知28,未知29,
是否公开手机:'0' 公开 '1' 好友 '2' 不公开
是否公开联系方式:'0' 公开 '1' 好友 '2' 不公开
学校,
星座:以下的对应关系,见pagers.plist
生肖,
血型,
QQShow,
未知37。


0x000D,设置状态:

发送者:客户端

样本:

000: 0A 00 00 00 00

000 - 000: 状态:0A 正常,1E 离开,40 隐身

001 - 004: 总是0。


应答者:服务器

样本:

000: 30

成功返回 30 ('0')。


0x0026,获取好友列表:

发送者:客户端

样本:

000: 00 00 00

000 - 001: 获取的好友列表的位置标志(第一个从 00 00 开始,以后的根据上一次响应包的标志值)。

002 - 002: 总是 0。(QQ 2000 无此数据)

应答者:服务器

样本:

000: 00 32 01 72 D1 90 00 ED
008: 11 00 04 B0 A2 BB A2 00
016: 00 01 74 55 CD 00 D8 15
024: 01 06 BB A8 D4 F3 C0 E0
032: 02 40 01 7C 13 30 00 DE
040: 18 01 08 CF EB B7 C9 B5
048: C4 D0 C4 00 00 01 7C 50
056: 8A 00 99 1D 00 03 47 59
064: 48 00 02 01 7D 1A 2A 00
072: B7 00 01 04 D4 B6 BA BD
080: 00 00 01 7E 79 A5 00 A2
088: 13 01 04 D1 A9 C2 D8 00
096: 00 01 81 E1 25 00 21 17
104: 01 07 B2 BB D2 AA BF DE
112: 20 00 00 00 01 82 90 00
120: 60 1F 00 04 6A 65 66 66
128: 00 00 00 13 3E DF 00 60
136: 17 01 09 20 20 73 61 62
144: 72 69 6E 61 00 40 00 32
152: F5 5E 00 39 19 01 06 79
160: 76 6F 6E 6E 65 00 00 00
168: 38 F3 B9 00 C3 00 00 08
176: CA B1 B4 FA C0 CF C8 CB
184: 00 00 00 41 98 95 00 90
192: 15 01 04 44 65 65 72 00
200: 00 00 44 B7 10 00 90 14
208: 01 08 D4 C2 B9 E2 C5 AE
216: BA A2 02 00 00 55 04 61
224: 00 90 11 01 08 C6 AF C1
232: C1 B1 A6 B1 B4 02 00 00
240: 59 AF 21 00 60 1A 01 07
248: CF B8 CE C3 D7 D0 7E 02
256: 66 00 5A 86 9B 00 21 00
264: 01 04 C0 B6 D6 BD 00 00
272: 00 5C 03 6E 00 A5 20 00
280: 06 B3 CC BA A3 C2 D7 00
288: 00 00 67 7C EC 00 72 1C
296: 00 06 6A 61 63 33 33 33
304: 00 00 00 70 7F C8 00 78
312: 00 01 04 C3 A8 C1 E1 00
320: 00 00 82 00 BF 00 51 00
328: 00 09 20 20 20 B7 BD BE
336: F5 CF FE 00 00 00 A0 C0
344: 6A 00 63 12 01 04 C3 CE
352: BE B2 00 00 00 D1 06 59
360: 00 60 00 00 08 D2 BB BD
368: A3 C6 AE CF E3 00 40 00
376: F0 BA 07 00 8A 00 01 04
384: C7 E0 C7 E0 00 00 00 F2
392: 69 9F 00 AB 16 01 0A 5E
400: 5F 5E C7 EF C7 EF 5E 5F
408: 5E 00 00 01 03 1B 44 00
416: D5 13 00 08 B0 AE C4 E3
424: B5 C4 C8 CB 00 00 01 0F
432: A2 D5 00 78 02 01 05 57
440: F2 AB C4 DE 02 40 01 17
448: 48 76 00 51 00 00 06 BA
456: DC B0 B2 C8 AB 00 00 01
464: 3B AD D7 00 F0 18 01 0A
472: B9 C6 BB F3 A1 CA CC EC
480: CA B9 00 00 01 44 AE 12
488: 00 87 20 00 0A 20 20 20
496: 20 51 51 D6 AE B8 B8 00
504: 00 01 B3 8C 71 00 99 1A
512: 00 08 C3 E6 B4 F8 CE A2
520: D0 A6 00 00 01 C0 29 68
528: 00 F9 12 01 06 D0 A1 C0
536: B1 BD B7 00 00 01 CA 96
544: 03 00 F9 00 01 04 D0 A1
552: BB A2 02 40 01 CB 81 C2
560: 00 90 12 01 0B 4C A1 EE
568: 76 65 CF E3 C4 CE B6 F9
576: 00 00 01 E9 1B 7F 00 0C
584: 18 00 08 B6 FE C2 BF B1
592: E4 C1 CB 00 00 02 20 F1
600: D4 00 A8 13 01 04 CE A8
608: D2 BB 00 00 02 36 B5 07
616: 00 A8 1A 01 04 BF C9 DD
624: E6 02 00 02 4C 03 88 00
632: A8 0F 01 0C A6 C4 A6 D3
640: A7 F1 A7 D1 C6 A1 C0 E6
648: 02 00 02 4D 98 8B 00 B4
656: 16 00 06 BB B5 C6 A2 C6
664: F8 00 00 02 65 0A 51 00
672: A8 00 01 04 C7 A7 CA BD
680: 00 00 02 7A DB D0 00 90
688: 00 01 02 58 32 00 00 02
696: 7C 37 4E 00 7B 15 01 04
704: 63 6F 63 6F 00 00 02 88
712: D5 EA 00 42 00 00 04 D1
720: C5 B7 E7 00 00 02 93 67
728: 5A 00 90 12 01 0C C4 C7
736: C3 B4 B0 AE CB FB CE AA
744: CA B2 00 00

000 - 001: 下一次发送0x0026命令的数据起始位置。如果为FF FF,则没有后续数据需要继续接收。

以后为一组组的数据,每组数据的定义为(按偏移位置描述):

000 - 003: QQ号码

004 - 004: 总是0,分隔

005 - 005: 头像编号

006 - 006: 年纪

007 - 007: 性别。00 男;01 女。

008 - 008: 昵称长度。

009 - 009 + 昵称长度 - 1: 昵称。

009 + 昵称长度: QQ Show 标志。
bit 1: 是否有QQ Show。

010 + 昵称长度:用户属性标志。
bit 1: 是否QQ会员。
bit 5: 是否开通移动QQ。
bit 6: 是否绑定手机。


0x0027,获取在线好友

发送者:客户端

样本:

000: 02 00 00 00 00

000 - 000: 0x02,获取在线好友清单。0x03,作用不明。

001 - 004: 总是 0x00。

应答者:服务器

0x02 的应答样本:

000: FF 01 0F A2 D5 01 00 00
008: 00 00 00 00 00 0A 04 05
016: 44 F2 A5 BB 57 3B 85 4B
024: CF D0 F0 72 5F EE A4 31
032: 02 40

000 - 000: 标志。FF 应该表示没有后续数据。但如果在一个包内无法传送全部好友(大约最多20个好友左右)时的标志是什么,暂时未知。

001 - 为33字节一组的在线好友数据。每组数据的描述(按偏移位置计算):

000 - 003: QQ号。

004 - 004: 未知作用。目前发现总是0x01。

005 - 008: IP 地址。目前全零。

009 - 010: 端口号。目前全零。

011 - 011: 总是00,应为地址后的分隔。

012 - 012: 状态。0A 正常,1E 离开。

013 - 014: 怀疑代表所使用客户软件所具有的功能。QQ 2003为04 05。

015 - 030: 该QQ号码加上其Session Key后的MD5Digest。是否两程序直接通讯时候的密钥?

031 - 032: 用户的属性。同0x0026指令用户数据的最后两字节定义。


0x03 的应答样本:

000: FF 04 4A A2 01 02 00 00
008: 00 00 00 00 00 0A 00 00
016: 00 00 00 00 00 00 00 00
024: 00 00 00 00 00 00 00 00
032: 00 00 04 4A A2 02 02 00
040: 00 00 00 00 00 00 0A 00
048: 00 00 00 00 00 00 00 00
056: 00 00 00 00 00 00 00 00
064: 00 00 00 04 4A A2 03 02
072: 00 00 00 00 00 00 00 0A
080: 00 00 00 00 00 00 00 00
088: 00 00 00 00 00 00 00 00
096: 00 00 00 00 04 4A A2 04
104: 02 00 00 00 00 00 00 00
112: 0A 00 00 00 00 00 00 00
120: 00 00 00 00 00 00 00 00
128: 00 00 00 00 00 04 4A A2
136: 05 02 00 00 00 00 00 00
144: 00 0A 00 00 00 00 00 00
152: 00 00 00 00 00 00 00 00
160: 00 00 00 00 00 00 04 4A
168: A2 06 02 00 00 00 00 00
176: 00 00 0A 00 00 00 00 00
184: 00 00 00 00 00 00 00 00
192: 00 00 00 00 00 00 00 04
200: 4A A2 07 02 00 00 00 00
208: 00 00 00 0A 00 00 00 00
216: 00 00 00 00 00 00 00 00
224: 00 00 00 00 00 00 00 00
232: 04 4A A2 08 02 00 00 00
240: 00 00 00 00 0A 00 00 00
248: 00 00 00 00 00 00 00 00
256: 00 00 00 00 00 00 00 00
264: 00 04 4A A2 09 02 00 00
272: 00 00 00 00 00 0A 00 00
280: 00 00 00 00 00 00 00 00
288: 00 00 00 00 00 00 00 00
296: 00 00 04 4A A2 0B 02 00
304: 00 00 00 00 00 00 0A 00
312: 00 00 00 00 00 00 00 00
320: 00 00 00 00 00 00 00 00
328: 00 00 00 04 4A A2 0C 02
336: 00 00 00 00 00 00 00 0A
344: 00 00 00 00 00 00 00 00
352: 00 00 00 00 00 00 00 00
360: 00 00 00 00 04 4A A2 0D
368: 02 00 00 00 00 00 00 00
376: 0A 00 00 00 00 00 00 00
384: 00 00 00 00 00 00 00 00
392: 00 00 00 00 00

000 - 000: 标志。FF 应该表示没有后续数据。

其他:未知。


0x0016 发送消息

发送者:客户端

样本:

000: 00 01 82 90 01 82 5D 90
008: 0A 1D 00 01 82 90 01 82
016: 5D 90 9F 22 9C 77 9E B5
024: 0C 68 60 0F 13 37 06 F4
032: EA 2C 00 0B 4D B5 3F 65
040: 38 44 00 60 00 00 00 01
048: 00 00 00 00 01 61 61 61
056: 20 00 0A 00 00 00 00 86
064: 02 CB CE CC E5 0D

000 - 003: 发送方QQ号。
004 - 007: 接收方QQ号。
008 - 009: 发送方客户端版本号。
010 - 013: 发送方QQ号。
014 - 017: 接收方QQ号。
018 - 033: 发送方QQ号+session Key的MD5 Digest。
034 - 035: 总是00 0b。怀疑表明到消息特性前的长度。
036 - 037: 消息的序列号。
038 - 041: 发送时间。为自1970年1月1日起经过的秒数。
042 - 042: 总是00
043 - 043: 头像。
044 - 046: 总是0x00。
047 - 047: 消息特性标识。旧版0x00,新版0x01。是否表明存在字体属性字段。
048 - 051: 总是0x00。
052 - 052: 消息类型。0x01,普通消息。0x02,自动回复消息。
053 - 不定长: 消息内容。C字符串形式,以0x00结尾。好象每个消息结尾前都有一个空格字符。
消息结尾+000 - 000: 字号。
+001 - 003: 颜色的RGB值。
+004 - 004: 未知。总是0x00。
+005 - 005: 字符编码类别。0x86,GB2312。0x00,英文字符。
+006 - 006: 与选用的字体相关的属性,具体含义未知。
+007 - 不定长。字体名。
最后:与选定字体相关的属性,具体含义未知。

应答者:服务器

样本:

000: 00

000 - 000: 0x00,成功。
  

0x0017,接收消息

发送者:服务器

其中 018-019为消息类型标识,目前已观察到的消息类型有:

00 09 普通消息
00 20 群消息
00 21 加入群通知
00 22 被从群删除通知
00 23 请求批准加入群通知
00 24 加入群请求批准通知
00 25 加入群请求拒绝通知
00 26 创建群通知
00 30 系统通知消息
        文件传送通知

普通消息(00 09)样本:

000: 01 82 5D 90 00 01 82 90
008: 00 09 49 BB 3D 8D C2 EB
016: 1F 40 00 09 0A 1D 01 82
024: 5D 90 00 01 82 90 AA D6
032: 54 47 90 04 6D 76 8D D0
040: 4D CB 64 B8 87 7A 00 0B
048: 00 6B 3F 65 39 32 00 60
056: 00 00 00 01 00 00 00 00
064: 01 62 62 62 20 00 0A 00
072: 00 00 00 86 02 CB CE CC
080: E5 0D

000 - 003: 发送者的QQ号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 发送者的IP地址。(转发的消息是服务器的地址)
016 - 017: 发送者的端口号。
018 - 019: 消息类型标识。(00 09)
020 - 021: 发送者QQ版本号。
022 - 025: 发送者QQ号。
026 - 029: 接收者QQ号。
030 - 045: 发送方QQ号+session Key的MD5 Digest。
046 - 047: 总是00 0b。怀疑表明到消息特性前的长度。
048 - 049: 消息的序列号。
050 - 053: 发送时间。为自1970年1月1日起经过的秒数。
054 - 054: 总是00。
055 - 055: 头像。
056 - 058: 总是0x00。
059 - 059: 消息特性标识。旧版0x00,新版0x01。是否表明存在字体属性字段。
060 - 063: 总是0x00。
064 - 064: 消息类型。0x01,普通消息。0x02,自动回复消息。
065 - 不定长: 消息内容。C字符串形式,以0x00结尾。好象每个消息结尾前都有一个空格字符。
消息结尾+000 - 000: 字号。
+001 - 003: 颜色的RGB值。
+004 - 004: 未知。总是0x00。
+005 - 005: 字符编码类别。0x86,GB2312。0x00,英文字符。
+006 - 006: 与选用的字体相关的属性,具体含义未知。
+007 - 不定长。字体名。
最后:与选定字体相关的属性,具体含义未知。

群消息(00 20)样本:

000: 0C 04 A9 F4 01 82 5D 90
008: 00 0D 1A 8C DA 12 5F C6
016: 1F 40 00 20 0C 04 A9 F4
024: 02 01 39 A4 76 00 00 00
032: 01 3F 7C EF 88 00 00 00
040: 00 00 12 68 69 0D 0A 20
048: 00 09 00 00 00 00 86 02
056: CB CE CC E5 0D

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 20)
020 - 023: 外部群号。
024 - 024: 02,可能表示临时群。
025 - 028: 群消息发送者QQ号。
029 - 030: 总是0x00。
031 - 032: 消息的序列号。
033 - 036: 发送时间。
037 - 040: 总是0x00。
041 - 042: 后面消息数据的长度。
065 - 不定长: 消息内容。C字符串形式,以0x00结尾。好象每个消息结尾前都有一个空格字符。
消息结尾+000 - 000: 字号。
+001 - 003: 颜色的RGB值。
+004 - 004: 未知。总是0x00。
+005 - 005: 字符编码类别。0x86,GB2312。0x00,英文字符。
+006 - 006: 与选用的字体相关的属性,具体含义未知。
+007 - 不定长。字体名。
最后:与选定字体相关的属性,具体含义未知。

加入群通知(00 21)样本

000: 0C 21 53 A4 01 82 5D 90
008: 00 04 5F 77 DA 12 5F C6
016: 1F 40 00 21 00 17 0D 24
024: 01 01 82 5D 90

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 21)
020 - 023: 外部群号。
024 - 024: 群类型:0x01,固定群;0x02,临时群。
025 - 028: 新添加的成员。(自己的QQ)。

被从群删除通知(00 22)样本

000: 0C 21 53 A4 01 82 5D 90
008: 00 02 A6 55 DA 12 5F C6
016: 1F 40 00 22 00 17 0D 24
024: 01 01 82 5D 90

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 22)
020 - 023: 外部群号。
024 - 024: 群类型:0x01,固定群;0x02,临时群。
025 - 028: 被删除的成员的QQ号。

请求批准加入群通知(00 23)样本

000: 0C 21 53 A4 0E C9 37 04
008: 00 09 2E 9F DA 12 5F 8B
016: 1F 40 00 23 00 17 0D 24
024: 01 01 82 5D 90 04 74 65
032: 73 74

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 23)
020 - 023: 外部群号。
024 - 024: 群类型:0x01,固定群;0x02,临时群。
025 - 028: 申请加入者QQ号。
029 - 不定长: Pascal 字符串的附言。

加入群请求批准通知(00 24)样本

000: 0C 21 53 A4 01 82 5D 90
008: 00 0B B2 6B DA 12 5F C6
016: 1F 40 00 24 00 17 0D 24
024: 01 0E C9 37 04 02 CE DE

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 24)
020 - 023: 外部群号。
024 - 024: 群类型:0x01,固定群;0x02,临时群。
025 - 028: 批准者(群管理员)QQ号。
029 - 不定长: Pascal 字符串的原因。(这里总是 02 CE DE,就是“无”)

加入群请求拒绝通知(00 25)样本

000: 0C 21 53 A4 01 82 5D 90
008: 00 04 72 6D DA 12 5F C6
016: 1F 40 00 25 00 17 0D 24
024: 01 0E C9 37 04 04 68 68
032: 68 68

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 25)
020 - 023: 外部群号。
024 - 024: 群类型:0x01,固定群;0x02,临时群。
025 - 028: 拒绝者(群管理员)QQ号。
029 - 不定长: Pascal 字符串的拒绝原因。

新创建群通知(00 26)样本

000: 0C 04 A9 F4 01 82 5D 90
008: 00 0C B8 79 DA 12 5F C6
016: 1F 40 00 26 0C 04 A9 F4
024: 02 00 01 82 90

000 - 003: 内部群号。
004 - 007: 接收者的QQ号。
008 - 011: 应为服务器转发消息的流水号。
012 - 015: 服务器IP地址。
016 - 017: 服务器的端口号。
018 - 019: 消息类型标识。(00 26)
020 - 023: 外部群号。
024 - 024: 0x02,可能表示临时群。
025 - 028: 管理员QQ号。

系统通知消息(00 30)样本(可能只用于通知多处登录的情况)

000: 00 00 27 10 01 82 5D 90
008: 00 00 B3 A3 00 00 00 00
016: 00 00 00 30 01 2F B1 A7
024: C7 B8 CD A8 D6 AA C4 FA
032: A3 AC 51 51 2D 32 35 33
040: 32 30 38 34 38 D4 DA B1
048: F0 B4 A6 B5 C7 C2 BC A3
056: AC C4 FA B1 BB C6 C8 CF
064: C2 CF DF A1 A3

000 - 003: 发送者,10000。
004 - 007: 接收者QQ号。
008 - 011: 流水号。
012 - 017: 发送者IP和端口号。这里全零。
018 - 019: 消息类型标识。(00 30)
020 - 020: 未知
021 - 021: 消息长度
022 - 不定长: 消息内容。

应答者:客户端

样本:

000: 01 82 5D 90 00 01 82 90
008: 00 09 49 BB 3D 8D C2 EB

为接收到的消息的前16个字符。


0x0030,群操作命令

第一个字节为子命令,目前了解的子命令包括:

0x01: 创建新群

0x02: 添加/删除群成员

0x03: 更改群信息

0x04: 获取群的有关信息

0x05: 激活群

0x06: 查找群

0x07: 加入群

0x08 加入群验证信息

0x09: 退出群

0x0A: 向群发送消息

0x0B: 获取在线群成员

0x0C: 获取群成员信息

0x01 创建新群

发送者:客户端

样本:

000: 01 02 02 00 00 00 00 04
008: 6E 61 6D 65 00 00 0B 61
016: 6E 6F 75 6E 63 65 6D 65
024: 6E 74 0B 64 65 73 63 72
032: 69 70 74 69 6F 6E 01 39
040: A4 76 03 50 1B 3F 04 17
048: AF 5C 00 05 A6 C3 00 06
056: 5D 10 02 90 21 67 01 82
064: 5D 90

000 - 000: 0x01,创建新群子命令。
001 - 001: 0x02,代表创建的是临时群。0x01为固定群
002 - 002: 身份认证模式。0x01,不需要认证;0x02,需认证;0x03,不允许添加。创建多人通话时为0x00。
003 - 005: 总是 0x00。
006 - 006: 分类。0x00,同学;0x01,朋友;0x02,同事;0x03,其它。
007 - 不定长: Pascal字符串形式的群名。
+ 000 - 001: 总是0x00。应为分隔。
+ 002 - 不定长:Pascal字符串形式的群内通知。
+ 000 - 不定长:Pascal字符串形式的群描述。
+ 000 - 最后: 四个字节一组的群成员QQ号码。(不包括群创建者(管理员))

应答者:服务器

样本:

000: 01 00 0C 04 A9 F4 0C 04
008: A9 F4

000 - 000: 0x01,创建新群子命令标识。
001 - 001: 0x00,应该代表成功。
002 - 005: 内部群号。
006 - 009: 外部群号。

0x02: 添加/删除群成员

发送者:客户端

样本:

000: 02 0C 08 9C 10 01 00 01
008: 82 90 00 32 F5 5E 00 38
016: F3 B9 00 41 98 95

000 - 000: 0x02,添加删除群成员子命令标识
001 - 004: 内部群号。
005 - 005: 操作。0x01,添加;0x02,删除。
006 - 不定长:四个一组的涉及的QQ号码。

应答者:服务器

样本:

000: 02 00 0C 08 7E 3C

000 - 000: 0x02,添加删除群成员子命令标识。
001 - 001: 0x00,应该代表成功。
002 - 005: 内部群号。

0x03: 更改群信息

发送者:客户端

样本:

000: 03 0C 08 7E 3C 01 02 00
008: 00 00 00 03 61 61 61 00
016: 00 03 61 61 61 03 61 61
024: 61

000 - 000: 0x03,更改群信息子命令。
001 - 004: 内部群号
005 - 005: 总是 0x01。应该表明操作类别是修改。
006 - 006: 身份认证模式。0x01,不需要认证;0x02,需认证;0x03,不允许添加。创建多人通话时为0x00。
007 - 009: 总是 0x00。
010 - 010: 分类。0x00,同学;0x01,朋友;0x02,同事;0x03,其它。
011 - 不定长: Pascal字符串形式的群名。
+ 000 - 001: 总是0x00。应为分隔。
+ 002 - 不定长:Pascal字符串形式的群内通知。
+ 000 - 不定长:Pascal字符串形式的群描述。

应答者:服务器

样本:

03 00 0C 08 7E 3C

000 - 000: 0x03,更改群信息子命令。
001 - 001: 0x00,应该代表成功。
002 - 005: 内部群号。

0x04 获取群的有关信息

发送者:客户端

样本:

000: 04 0C 04 A9 F4

000 - 000: 0x04,获取群信息子命令标识。
001 - 004: 内部群号。

应答者:服务器

样本:

000: 04 00 0C 04 A9 F4 0C 04
008: A9 F4 02 00 01 82 90 02
016: 00 00 00 00 00 00 00 00
024: 04 6E 61 6D 65 00 00 0B
032: 61 6E 6F 75 6E 63 65 6D
040: 65 6E 74 0B 64 65 73 63
048: 72 69 70 74 69 6F 6E 00
056: 01 82 90 00 00 05 A6 C3
064: 00 00 06 5D 10 00 01 39
072: A4 76 00 01 82 5D 90 00
080: 02 90 21 67 00 03 50 1B
088: 3F 00 04 17 AF 5C 00

000 - 000: 0x04,获取群信息子命令标识。
001 - 001: 0x00,代表成功。
002 - 005: 内部群号。
006 - 009: 外部群号。
010 - 010: 0x02,可能代表临时群。
011 - 014: 群管理员QQ号。
015 - 015: 身份认证模式。0x01,不需要认证;0x02,需认证;0x03,不允许添加。创建多人通话时为0x00。
016 - 018: 总是 0x00。
019 - 019: 分类。0x00,同学;0x01,朋友;0x02,同事;0x03,其它。
020 - 023: 总是0x00。
024 - 不定长: Pascal字符串格式群名。
+000 - 001: 总是0x00,应为分隔。
+002 - 不定长: Pascal字符串格式的群内公告。
+000 - 不定长: Pascal字符串格式的群描述。
+000 - 不定长: 以0x00分隔的群成员QQ号清单。(包括群管理员)。

0x05 激活群

发送者:客户端

样本:

000: 05 0C 04 A9 F4

000 - 000: 0x05,激活群子命令标识
001 - 004: 内部群号

应答者:服务器

样本:

000: 05 00 0C 04 A9 F4

000 - 000: 0x05,激活群子命令标识。
001 - 001: 0x00,表示命令成功。
002 - 005: 内部群号。

0x06 查找群

发送者:客户端

样本:

000: 06 02 00 00 00 00

000 - 000: 0x06,查找群子命令标识。
001 - 001: 查找模式:0x01,按群编号查找。0x02,查找示范群。
002 - 005: 外部群号。查找示范群全是0x00。

应答者:服务器

样本:

000: 06 00 02 0C 0B CD 52 00
008: 01 86 D2 01 00 00 27 10
016: 00 00 00 00 06 B2 C6 BE
024: AD 39 34 00 00 01 28 CE
032: D2 C3 C7 D5 E2 D2 BB C8
040: BA D4 E7 D2 D1 B2 BB D4
048: D9 CA C7 B5 B1 C4 EA B2
056: BB B6 AE CA C2 B5 C4 C3
064: A7 D7 B2 C9 D9 C4 EA 0C
072: 0B CD 53 00 01 86 D3 01
080: 00 00 27 10 00 00 00 02
088: 0C B5 D8 C7 F2 B5 DB B9
096: FA D5 BD B6 D3 00 00 01
104: 1E 51 51 C8 BA C8 C3 CE
112: D2 C3 C7 BD BB C1 F7 B1
120: E4 B5 C3 C8 E7 B4 CB BC
128: F2 B5 A5 A3 BA A3 A9 0C
136: 0B CD 54 00 01 86 D4 01
144: 00 00 27 10 00 00 00 01
152: 06 D7 D4 D3 CE C2 BF 00
160: 00 01 20 B0 AE BA C3 D7
168: D4 D6 FA D3 CE B5 C4 C2
176: BF D3 D1 C3 C7 A3 AC D3
184: EB C4 E3 D2 BB C6 F0 CD
192: AC D0 D0 0C 0B CD 55 00
200: 01 86 D5 01 00 00 27 10
208: 00 00 00 02 10 C1 AA BF
216: B5 B9 AB CB BE C7 FE B5
224: C0 D4 DA CF DF 00 00 01
232: 1A C1 AA B4 B4 B9 AB CB
240: BE B4 FA C0 ED C9 CC D0
248: C5 CF A2 BD BB BB BB CD
256: A8 B5 C0 0C 0B CD 56 00
264: 01 86 D6 01 00 00 27 10
272: 00 00 00 02 12 D1 D8 BD
280: AD B1 A8 C9 E7 DF AC B8
288: E5 C8 CB D7 A8 C7 F8 00
296: 00 01 1E CC D8 D4 BC DF
304: AC B8 E5 C8 CB B5 C4 D0
312: C5 CF A2 D6 D0 D0 C4 A3
320: AC CB FB C8 CB CE F0 C8
328: C5 0C 0B CD 57 00 01 86
336: D7 01 00 00 27 10 00 00
344: 00 02 10 BA E3 CF E8 B9
352: AB CB BE CD AC CA C2 BD
360: BB C1 F7 00 00 01 28 CD
368: AC D4 DA D2 BB B8 F6 B5
376: D8 B7 BD C4 C3 B9 A4 D7
384: CA B5 C4 A3 AC C8 BA C8
392: C3 CE D2 C3 C7 BD BB C1
400: F7 B8 FC B7 BD B1 E3 0C
408: 0B CD 58 00 01 86 D8 01
416: 00 00 27 10 00 00 00 01
424: 0E 31 33 B6 B0 39 38 30
432: 31 33 31 C5 AE C9 FA 00
440: 00 01 14 C5 AE C9 FA D7
448: D4 D3 D0 C5 AE C9 FA B5
456: C4 CC EC B5 D8 A3 A1 0C
464: 0B CD 59 00 01 86 D9 01
472: 00 00 27 10 00 00 00 01
480: 0A CB DE C9 E1 CD F8 CD
488: F8 C3 CB 00 00 01 14 CD
496: F8 C1 A6 CE DE CF DE A3
504: AC D6 BB D2 AA BB A5 C1
512: AA A3 A1 0C 0B CD 5A 00
520: 01 86 DA 01 00 00 27 10
528: 00 00 00 02 09 34 31 34
536: BD CC D1 D0 CA D2 00 00
544: 01 14 D7 D4 B3 C9 D2 BB
552: CC E5 A3 AC C2 DB D1 A7
560: CA F5 CC EC B5 D8 0C 0B
568: CD 5B 00 01 86 DB 01 00
576: 00 27 10 00 00 00 02 0E
584: D3 A2 D3 EF D0 AD BB E1
592: BC BC CA F5 B2 BF 00 00
600: 01 2C D5 E2 C0 EF D3 D0
608: CE DE CA FD C4 D1 CC E2
616: A3 AC BB B9 D3 D0 CE DE
624: CA FD C4 D1 CC E2 B5 C4
632: CC E2 BD E2 A3 A1 BF EC
640: C0 B4 C0 B2 A3 A1

000 - 000: 0x06,查找群子命令标识。
001 - 001: 0x00,表示命令成功。
002 - 002: 0x02,也许表示查找的结果是示范群。
003 - 不定长。一组组的群数据。每组的格式为:
+000 - 003: 内部群号。(可能会变化)
  004 - 007: 外部群号。
  008 - 008: 0x01。应该表示是固定群。
  009 - 012: 创建者QQ号。
  013 - 015: 全为0x00。
  016 - 016: 分类标识:0x00,同学;0x01,朋友;0x02,同事;0x03,其它。
  017 - 不定长: Pascal字符串的群名称。
+000 - 001: 全是0x00,分隔。
+002 - 002: 身份验证:0x01,不需要认证;0x02,需认证;0x03,不允许添加。
+003 - 不定长: Pascal字符串的群描述。

0x07 加入群

发送者:客户端

样本:

000: 07 0C 0B CD 52

000 - 000: 0x07,加入群子命令。
001 - 004: 要加入的群的内部群号。

应答者:服务器

样本:

000: 07 00 0C 0B CD 52 01

000 - 000: 0x07,加入群子命令。
001 - 000: 0x00,表示命令成功。
002 - 005: 要加入的群的内部群号。
006 - 006: 01 表示成功,02 表示需要验证信息。

0x08 加入群验证信息

发送者:客户端

样本:

000: 08 0C 21 53 A4 01 00 00
008: 00 00 04 74 65 73 74

000 - 000: 0x08,验证信息子命令
001 - 004: 要加入群的内部群号。
005 - 005: 操作类别:0x01,请求;0x02,同意;0x03,拒绝。
006 - 009: 要求加入的QQ号。(操作类别为0x01时,此字段为0)
010 - 不定长,pascal字符串形式相关信息。(操作类别为0x02的时候,此信息为0xCE 0xDE,GB18030的“无”字)。

应答者:服务器

样本:

000: 08 00 0C 21 53 A4

000 - 000: 0x08,加入群验证信息子命令。
001 - 000: 0x00,表示命令成功。
002 - 005: 要加入的群的内部群号。

0x09 退出群

发送者:客户端

样本:

000: 09 0C 0A 38 89

000 - 000: 0x09,退出群子命令。
001 - 004: 要退出的群的内部群号。

应答者:服务器

样本:

000: 09 00 0C 0A 38 89

000 - 000: 0x09,退出群子命令。
001 - 000: 0x00,表示命令成功。
002 - 005: 要退出的群的内部群号。

0x0A 向群发送消息

发送者:客户端

样本:

000: 0A 0C 04 A9 F4 00 10 68
008: 69 20 00 09 00 00 00 00
016: 86 02 CB CE CC E5 0D

000 - 000: 0x0A,向群发送消息子命令标识。
001 - 004: 内部群号。
005 - 006: 消息数据长度。
007 - 不定长:消息内容。C字符串形式,以0x00结尾。
+000 - 000: 字号。
+001 - 003: 颜色的RGB值。
+004 - 004: 未知。总是0x00。
+005 - 005: 字符编码类别。0x86,GB2312。0x00,英文字符。
+006 - 006: 与选用的字体相关的属性,具体含义未知。
+007 - 不定长。字体名。
最后:与选定字体相关的属性,具体含义未知。

应答者:服务器

000: 0A 00 0C 04 A9 F4

000 - 000: 0x0A,向群发送消息子命令标识。
001 - 001: 0x00,表示命令成功。
002 - 005: 内部群号。

0x0B 获取在线群成员

发送者:客户端

样本:

000: 0B 0C 04 A9 F4

000 - 000: 0x0B,获取在线群成员子命令标识
001 - 004: 内部群编号。

应答者:服务器

样本:

000: 0B 00 0C 04 A9 F4 3C 00
008: 01 82 90 01 39 A4 76 01
016: 82 5D 90 03 50 1B 3F 04
024: 17 AF 5C

000 - 000: 0x0A,向群发送消息子命令标识。
001 - 001: 0x00,表示命令成功。
002 - 005: 内部群编号。
006 - 006: 0x3C,未知含义。
007 - 不定长: 四字节一组的在线群成员QQ号。

0x0C 获取群成员信息

发送者:客户端

样本:

000: 0C 0C 04 A9 F4 00 01 82
008: 90 00 05 A6 C3 00 06 5D
016: 10 01 39 A4 76 01 82 5D
024: 90 02 90 21 67 03 50 1B
032: 3F 04 17 AF 5C

000 - 000: 0x0C,获取群成员信息子命令标识。
001 - 004: 内部群编号。
005 - 不定长: 四字节一组的需要获取信息的群成员QQ号。

应答者:服务器

样本:

000: 0C 00 0C 04 A9 F4 01 82
008: 5D 90 00 CC 1F 00 09 6A
016: 65 66 66 5F 79 65 63 6E
024: 00 00 00 01 82 90 00 60
032: 1F 00 04 6A 65 66 66 00
040: 00 00 05 A6 C3 00 21 13
048: 01 04 B7 B2 ED FE 02 40
056: 00 06 5D 10 00 6F 00 01
064: 09 20 20 20 8C 57 95 FE
072: A1 E5 02 00 01 39 A4 76
080: 00 57 00 01 02 DE A5 00
088: 00 02 90 21 67 00 7B 20
096: 00 04 44 75 64 65 00 00
104: 03 50 1B 3F 00 AE 00 01
112: 0A CA C4 D1 D4 B2 BB BF
120: C9 D0 C5 00 40 04 17 AF
128: 5C 00 21 03 01 08 D3 EA
136: D6 AE BC BE B9 9D 00 40

000 - 000: 0x0C,获取群成员信息子命令标识。
001 - 001: 0x00,表示命令成功。
002 - 005: 内部群编号。
006 开始:群成员信息。同0x26命令的数据定义。

出错后的应答:

样本:

000: 01 02 C4 FA C3 BB D3 D0
008: C8 A8 CF DE B4 B4 BD A8
016: C8 BA 2C C7 EB CF C8 D7
024: A2 B2 E1 CE AA BB E1 D4
032: B1

000 - 000: 子命令标识
001 - 001: 0x02,表示错误。
002 - 最后: 错误信息。

0x0081,用户状态改变通知

发送方:服务器

样本:

000: 00 01 82 90 01 40 E7 AF
008: 39 0F A0 00 0A 04 05 49
016: F8 16 6A CB 4E FE 26 BA
024: CE BC C6 27 47 50 3E 00
032: 00 01 82 5D 90

000 - 003: 发生状态改变的QQ号码。
004 - 004: 总是 0x01。
005 - 010: IP及端口号。(在离线时为0)。
011 - 012: 新状态:0A 为正常,14 为下线,1E 为离开。
013 - 014: QQ版本的功能特征。
015 - 030: 该QQ号码加上其Session Key后的MD5Digest。
031 - 032: 0。
033 - 036: 自己的QQ号码。

 

 

 

 

http://www.cnpaf.net/Class/OtherAnalysis/200506/4759.html

分享到:
评论

相关推荐

    Modbus协议中文版【完整版】_modbus_

    Modbus协议完整版中文资料,里面详细描述了modbus协议的串口与Tcpf方式传输通信的报文贞格式

    labview tCP

    LABVIEW TCPF发送,自己写的小程序,供大家欣赏,

    技术合作计划

    此实用程序用作故障排除工具,可以检查和分析在TCP系统之间传递的数据。 它从源TCP系统捕获数据,将数据存储到日志文件(TCP_Raw.txt),然后将数据中继到目标TCP系统。 “ CCC”功能流程有什么作用? ESRI ...

    SocketTool.rar

    网络调试助手,支持TCPf服务端和TCP客户端,也支持UDP服务端和客户端,UDP组播和广播功能

    机械设计家用手摇面条机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计家用手摇面条机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计托盘库推车sw12可编辑非常好的设计图纸100%好用.zip

    机械设计托盘库推车sw12可编辑非常好的设计图纸100%好用.zip

    node-v12.18.4-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    YOLOV5 分类实战:7种小麦叶片病害分类

    YOLOV5 实战对小麦叶片病害检测分类数据集,包含代码、数据集、训练好的权重参数,经测试,代码可以直接使用。 【yolov5】项目总大小:300MB 训练了10个epoch,top1准确度分别达到了0.93+。这里仅仅训练了10个epoch,网络还没收敛,加大轮次可以获取更高的网络性能 【如何训练】摆放好datasets数据,即可训练 更多yolov5改进介绍、或者如何训练,请参考: https://blog.csdn.net/qq_44886601/category_12605353.html

    单片机课程实验-秒表实现

    1.了解LED数码管的工作原理,为秒表时钟模块的实现打下基础。 LED数码管是一种常用的数字显示器件,通过控制每个LED的亮灭来显示数字。在秒表时钟模块中,我们需要利用LED数码管的这一特性,通过单片机控制数码管的显示,从而实现时钟的功能。因此,了解LED数码管的工作原理对于实现秒表时钟模块至关重要。 2.掌握51单片机与LED数码管的接口技术,是实现秒表时钟模块的关键。 51单片机是一种常用的微控制器,可以通过接口与外部设备进行通信。在秒表时钟模块中,我们需要通过单片机与LED数码管之间的接口,控制数码管的显示。因此,掌握51单片机与LED数码管的接口技术是实现秒表时钟模块的关键。在实际操作中,我们需要根据接口协议和数据传输方式,编写相应的程序来控制数码管的显示。 3.合理利用定时器/计数器,是实现秒表时钟模块的效率保障。 在秒表时钟模块中,我们需要实现计时功能,这需要使用到定时器/计数器。定时器/计数器可以用来产生计时脉冲,从而控制秒表的计时。通过合理利用定时器/计数器,可以提高秒表时钟模块的计时精度和效率。在实际操作中,我们需要根据具体的应用场景和需求,选择合适的定时器/计数器参

    机械设计2T双轴变位机L型sw12非常好的设计图纸100%好用.zip

    机械设计2T双轴变位机L型sw12非常好的设计图纸100%好用.zip

    node-v10.16.3-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    STM32F4通过串口屏设置ADF4351输出信号频率,HAL库开发

    本项目基于HAL库开发,使用STM32F407作为主控芯片,串口通信过程使用了特殊的帧头帧尾,实现了通过串口触摸屏设置ADF4351输出信号频率。项目包含了陶晶弛串口屏的界面设计。

    金融产品设计报告.docx

    金融产品设计报告.docx

    C++ 实验三 基本图形生成算法

    C++ 实验三 基本图形生成算法

    6金融需求理论.docx

    6金融需求理论.docx

    node-v10.22.1-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    数据结构实验代码行编辑.rar

    数据结构实验代码

    新版广州社区智慧养老解决方案ppt.docx

    新版广州社区智慧养老解决方案ppt

    Python实现Python解释器 优秀课程作业

    python实现python解释器 1.该python解释器是一个模拟堆栈机器的虚拟机 2.基本指令:LOAD_VALUE,将数据压入栈中,STORE_NAME,将栈顶内容存入变量,LOAD_NAME,将变量的内容压入栈中 dis是一个字节码反汇编器 3.LOAD_CONST相当于LOAD_VALUE,STORE_FAST相当于STORE_NAME 4.帧:帧包含了一段代码运行所需要的信息与上下文环境,帧在代码执行时被动态地创建与销毁,每一个帧的创建对应一次函数调用,所以每一个帧都有一个code object与其关联,同时一个code object可以拥有多个帧,因为一个函数可以递归调用自己多次 5.调用栈:每当你在当前函数内调用一次函数就在当前调用栈上压入所调用的函数的帧,在所调用函数返回时再将该帧弹出 数据栈:执行字节码操作时使用的栈 块栈:用于特定的控制流,比如循环与异常处理;每一个帧都拥有自己的数据栈与块栈

    index.vue

    index.vue

Global site tag (gtag.js) - Google Analytics