CN104079571B - 一种识别Android模拟器的方法及装置 - Google Patents
一种识别Android模拟器的方法及装置 Download PDFInfo
- Publication number
- CN104079571B CN104079571B CN201410301503.2A CN201410301503A CN104079571B CN 104079571 B CN104079571 B CN 104079571B CN 201410301503 A CN201410301503 A CN 201410301503A CN 104079571 B CN104079571 B CN 104079571B
- Authority
- CN
- China
- Prior art keywords
- data bag
- handshake data
- specific field
- information
- terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000006854 communication Effects 0.000 abstract description 10
- 238000004891 communication Methods 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种识别Android模拟器的方法及装置,属于终端技术领域。所述方法包括:接收终端发送的连接请求,获取所述连接请求中的握手数据包;对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息;当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器。本发明实现了服务器侧在接收到终端的连接请求后即可根据该连接请求进行识别Android模拟器的操作,无需进行额外的通信过程,进而不会存在因为额外的通信而造成反馈的用于识别终端的信息不准确的情况,提高了识别终端的效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种识别Android模拟器的方法及装置。
背景技术
Android模拟器是一个能在Windows平台模拟出Android系统的运行环境的应用,使得用户可以在电脑中的Android模拟器上运行Android系统的应用。在使用Android系统的应用时,某些业务需要在服务器侧对终端是否使用Android模拟器登录进行识别,以确认使用Android系统的应用的终端为真实的终端进行登录,或者使用Android模拟器进行登录。
现有技术中对终端识别是否为Android模拟器的方式为:服务器侧使用网络连接端扫描类应用向终端发送不同类型的数据包,终端根据服务器侧发送的不同类型的数据包分别向服务器返回相应的信息,服务器侧将终端返回的信息与预设的结果进行匹配,最终得到识别结果。
发明人发现现有技术至少存在以下问题:
上述方式为服务器侧主动探测的方式,需要主动向终端发送多次不同类型的数据包,需要多个信息发送的往返才能得到最终的识别结果;另外,终端经常处于局域网内部,终端自身没有独立的网络地址,而上述过程中网络连接端扫描类应用发送的数据包最终只能探测到局域网出口的网络设备上,最终返回给服务器侧的信息则为网络设备进行的返回,导致服务器侧收到的信息不准确,进而无法准确得到识别结果。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种识别Android模拟器的方法及装置。所述技术方案如下:
一方面,提供了一种识别Android模拟器的方法,所述方法包括:
接收终端发送的连接请求,获取所述连接请求中的握手数据包;
对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息;
当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器。
优选的,所述对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息,包括:
对所述握手数据包进行解析,获取所述握手数据包的因特网互联协议IP包头中指定字段内的信息,以及获取所述握手数据包的传输控制协议TCP包头中指定字段内的信息。
优选的,所述握手数据包的IP包头中指定字段至少包括生存时间TTL字段;所述握手数据包的TCP包头中指定字段至少包括最大分段长度MSS字段、滑动窗口伸缩因子WS字段、滑动窗口大小WIN字段、发出时间戳TSVAL字段、回显时间戳TSECR字段。
优选的,所述获取所述握手数据包中指定字段内的信息之后,所述方法还包括:
如果所述握手数据包中不存在指定字段,则在获取到的所述握手数据包中创建所述指定字段并将所述指定字段内的信息设置为零。
优选的,所述当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android系统模拟器,包括:
将所述握手数据包中指定字段内的信息与所述指定字段对应的标准特征进行对比;
如果与所述指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出所述终端使用Android系统模拟器。
另一方面,提供了一种识别Android模拟器的装置,所述装置包括:
第一获取模块,用于接收终端发送的连接请求,获取所述连接请求中的握手数据包;
第二获取模块,用于对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息;
识别模块,用于当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器。
优选的,所述第二获取模块具体用于:
对所述握手数据包进行解析,获取所述握手数据包的因特网互联协议IP包头中指定字段内的信息,以及获取所述握手数据包的传输控制协议TCP包头中指定字段内的信息。
优选的,所述握手数据包的IP包头中指定字段至少包括生存时间TTL字段;所述握手数据包的TCP包头中指定字段至少包括最大分段长度MSS字段、滑动窗口伸缩因子WS字段、滑动窗口大小WIN字段、发出时间戳TSVAL字段、回显时间戳TSECR字段。
优选的,所述装置还包括:
创建模块,用于如果所述握手数据包中不存在指定字段,则在获取到的所述握手数据包中创建所述指定字段并将所述指定字段内的信息设置为零。
优选的,所述识别模块,包括:
对比单元,用于将所述握手数据包中指定字段内的信息与所述指定字段对应的标准特征进行对比;
识别单元,用于如果与所述指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出所述终端使用Android系统模拟器。
本发明实施例提供的技术方案带来的有益效果是:
通过在终端发起连接请求时,针对该连接请求中的握手数据包中指定字段内的信息进行比对,如果该指定字段内的信息满足预设条件则确定识别出终端使用了Android模拟器。实现了服务器侧在接收到终端的连接请求后即可根据该连接请求进行识别Android模拟器的操作,无需进行额外的通信过程,进而不会存在因为额外的通信而造成反馈的用于识别终端的信息不准确的情况,提高了识别终端的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的识别Android模拟器的方法流程图;
图2是本发明实施例二提供的识别Android模拟器的方法流程图;
图3是本发明实施例三提供的识别Android模拟器的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种识别Android模拟器的方法,参见图1,方法流程包括:
101:接收终端发送的连接请求,获取连接请求中的握手数据包;
102:对握手数据包进行解析,获取握手数据包中指定字段内的信息;
103:当握手数据包中指定字段内的信息满足预设条件时,则确定识别出终端使用Android模拟器。
本发明实施例通过在终端发起连接请求时,针对该连接请求中的握手数据包中指定字段内的信息进行比对,如果该指定字段内的信息满足预设条件则确定识别出终端使用了Android模拟器。实现了服务器侧在接收到终端的连接请求后即可根据该连接请求进行识别Android模拟器的操作,无需进行额外的通信过程,进而不会存在因为额外的通信而造成反馈的用于识别终端的信息不准确的情况,提高了识别终端的效率。
实施例二
本发明实施例提供了一种识别Android模拟器的方法,参见图2,方法流程包括:
201:服务器接收终端发送的连接请求,获取连接请求中的握手数据包。
安装Android操作系统的终端,在使用的应用需要与服务器进行连接时,会与服务器通过TCP(Transmission Control Protocol,传输控制协议)三次握手机制与服务器建立连接。
其中,三次握手机制的详细过程可以为:
第一次握手:建立连接时,终端发送SYN(Synchronize Sequence Numbers,同步序列编号)(syn=j)包到服务器,其中SYN包为握手数据包,终端此时进入SYN_SENT状态,等待服务器确认;
第二次握手:服务器收到SYN包,必须确认终端的SYN(ack=j+1),同时向终端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:终端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
在本发明实施例中,服务器接收到终端的第一次握手的SYN包,即服务器接收到终端发送的连接请求时,开始进行识别Android模拟器的过程。
其中,服务器接收到终端的连接请求后,首先需要确认连接请求中是否为握手数据包即SYN包。对于确认是否为握手数据包的过程为解析连接请求对应的数据包,查询是否存在SYN包对应的标识信息,如果存在该SYN包对应的标识信息则确认该数据包为握手数据包,即SYN包。
在确认连接请求中的数据包为握手数据包后,通过旁路侦听的方式将该握手数据包进行复制,原有的握手数据包会进行三次握手的过程。而复制的握手数据包则会进行识别Android模拟器的过程。
202:对握手数据包进行解析,获取握手数据包的IP(Internet Protocol,网络之间互连的协议)包头中指定字段内的信息,以及获取握手数据包的TCP包头中指定字段内的信息。
其中,握手数据包的IP包头中指定字段至少包括TTL(time-to-live,生存时间)字段;
握手数据包的TCP包头中指定字段至少包括MSS(Maximum Segment Size,最大分段长度)字段、WS(Window Scale,滑动窗口伸缩因子)字段、WIN(Window Size,滑动窗口大小)字段、TSVAL(Timestamp Value,发出时间戳)字段、TSECR(Timestamp Echo Reply,回显时间戳)字段。
其中,在TCP报文中的字段除滑动窗口大小以外,其他字段为TCP协议中可选字段,因此在握手数据包中有可能不存在上述的部分指定字段。当在握手数据包中的TCP包头中未获取到指定字段内的信息时,执行步骤203。
203:如果握手数据包中不存在指定字段,则在获取到的握手数据包中创建指定字段并将指定字段内的信息设置为零。
204:当握手数据包中指定字段内的信息满足预设条件时,则服务器确定识别出终端使用Android模拟器。
其中,标准的Android设备发送的握手数据包中,上述指定字段内的信息对应的标准特征可以为:
1)TTL<64;
2)MSS=1460;
3)WS!=0;
4)WIN=14600;
5)TSVAL!=0;
6)TSECR=0。
将获取到的握手数据包中每一个指定字段内的信息与该指定字段对应的标准特征进行对比,判断每一个指定字段内的信息是否符合该指定字段对应的标准特征对应的条件。
如果不符合条件的指定字段的个数大于预设个数,那么确定终端使用Android系统模拟器。其中,在本发明实施例中,预设个数可以包括但不限于三个。
其中,步骤204可以进一步的包括步骤2041-步骤2042组成:
2041:将握手数据包中指定字段内的信息与指定字段对应的标准特征进行对比;
2042:如果与指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出终端使用Android系统模拟器。
本发明实施例通过在终端发起连接请求时,针对该连接请求中的握手数据包中指定字段内的信息进行比对,如果该指定字段内的信息满足预设条件则确定识别出终端使用了Android模拟器。实现了服务器侧在接收到终端的连接请求后即可根据该连接请求进行识别Android模拟器的操作,无需进行额外的通信过程,进而不会存在因为额外的通信而造成反馈的用于识别终端的信息不准确的情况,提高了识别终端的效率。
实施例三
本发明实施例提供了一种识别Android模拟器的装置,参见图3,该装置包括:
第一获取模块301,用于接收终端发送的连接请求,获取连接请求中的握手数据包;
第二获取模块302,用于对握手数据包进行解析,获取握手数据包中指定字段内的信息;
识别模块303,用于当握手数据包中指定字段内的信息满足预设条件时,则确定识别出终端使用Android模拟器。
其中,第二获取模块302具体用于:
对握手数据包进行解析,获取握手数据包的因特网互联协议IP包头中指定字段内的信息,以及获取握手数据包的传输控制协议TCP包头中指定字段内的信息。
其中,握手数据包的IP包头中指定字段至少包括生存时间TTL字段;握手数据包的TCP包头中指定字段至少包括最大分段长度MSS字段、滑动窗口伸缩因子WS字段、滑动窗口大小WIN字段、发出时间戳TSVAL字段、回显时间戳TSECR字段。
其中,装置还包括:
创建模块304,用于如果握手数据包中不存在指定字段,则在获取到的握手数据包中创建指定字段并将指定字段内的信息设置为零。
其中,识别模块303,包括:
对比单元,用于将握手数据包中指定字段内的信息与指定字段对应的标准特征进行对比;
识别单元,用于如果与指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出终端使用Android系统模拟器。
本发明实施例通过在终端发起连接请求时,针对该连接请求中的握手数据包中指定字段内的信息进行比对,如果该指定字段内的信息满足预设条件则确定识别出终端使用了Android模拟器。实现了服务器侧在接收到终端的连接请求后即可根据该连接请求进行识别Android模拟器的操作,无需进行额外的通信过程,进而不会存在因为额外的通信而造成反馈的用于识别终端的信息不准确的情况,提高了识别终端的效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种识别Android模拟器的方法,其特征在于,所述方法包括:
接收终端发送的连接请求,获取所述连接请求中的握手数据包;
对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息;
当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器;
所述当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器,包括:
将所述握手数据包中指定字段内的信息与所述指定字段对应的标准特征进行对比;
如果与所述指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出所述终端使用Android模拟器;
所述获取所述握手数据包中指定字段内的信息之后,所述方法还包括:
如果所述握手数据包中不存在指定字段,则在获取到的所述握手数据包中创建所述指定字段并将所述指定字段内的信息设置为零。
2.根据权利要求1所述的方法,其特征在于,所述对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息,包括:
对所述握手数据包进行解析,获取所述握手数据包的因特网互联协议IP包头中指定字段内的信息,以及获取所述握手数据包的传输控制协议TCP包头中指定字段内的信息。
3.根据权利要求2所述的方法,其特征在于,所述握手数据包的IP包头中指定字段至少包括生存时间TTL字段;所述握手数据包的TCP包头中指定字段至少包括最大分段长度MSS字段、滑动窗口伸缩因子WS字段、滑动窗口大小WIN字段、发出时间戳TSVAL字段、回显时间戳TSECR字段。
4.一种识别Android模拟器的装置,其特征在于,所述装置包括:
第一获取模块,用于接收终端发送的连接请求,获取所述连接请求中的握手数据包;
第二获取模块,用于对所述握手数据包进行解析,获取所述握手数据包中指定字段内的信息;
识别模块,用于当所述握手数据包中指定字段内的信息满足预设条件时,则确定识别出所述终端使用Android模拟器;
所述识别模块,包括:
对比单元,用于将所述握手数据包中指定字段内的信息与所述指定字段对应的标准特征进行对比;
识别单元,用于如果与所述指定字段对应的标准特征进行对比后不符合条件的指定字段的个数大于预设个数,则确定识别出所述终端使用Android模拟器;
所述装置还包括:
创建模块,用于如果所述握手数据包中不存在指定字段,则在获取到的所述握手数据包中创建所述指定字段并将所述指定字段内的信息设置为零。
5.根据权利要求4所述的装置,其特征在于,所述第二获取模块具体用于:
对所述握手数据包进行解析,获取所述握手数据包的因特网互联协议IP包头中指定字段内的信息,以及获取所述握手数据包的传输控制协议TCP包头中指定字段内的信息。
6.根据权利要求5所述的装置,其特征在于,所述握手数据包的IP包头中指定字段至少包括生存时间TTL字段;所述握手数据包的TCP包头中指定字段至少包括最大分段长度MSS字段、滑动窗口伸缩因子WS字段、滑动窗口大小WIN字段、发出时间戳TSVAL字段、回显时间戳TSECR字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410301503.2A CN104079571B (zh) | 2014-06-27 | 2014-06-27 | 一种识别Android模拟器的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410301503.2A CN104079571B (zh) | 2014-06-27 | 2014-06-27 | 一种识别Android模拟器的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104079571A CN104079571A (zh) | 2014-10-01 |
CN104079571B true CN104079571B (zh) | 2017-09-01 |
Family
ID=51600614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410301503.2A Active CN104079571B (zh) | 2014-06-27 | 2014-06-27 | 一种识别Android模拟器的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104079571B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815058B (zh) * | 2016-12-08 | 2020-11-03 | 同盾控股有限公司 | 一种模拟器的识别方法和系统 |
CN107741907A (zh) * | 2017-09-30 | 2018-02-27 | 北京梆梆安全科技有限公司 | 结合底层指令和系统信息的模拟器检测方法及装置 |
CN107678834A (zh) * | 2017-09-30 | 2018-02-09 | 北京梆梆安全科技有限公司 | 一种基于硬件配置的安卓模拟器检测方法及装置 |
CN107729121A (zh) * | 2017-09-30 | 2018-02-23 | 北京梆梆安全科技有限公司 | 模拟器检测方法及装置 |
CN107678833A (zh) * | 2017-09-30 | 2018-02-09 | 北京梆梆安全科技有限公司 | 基于操作系统信息的模拟器检测方法及装置 |
CN107526628A (zh) * | 2017-09-30 | 2017-12-29 | 北京梆梆安全科技有限公司 | 结合底层指令和配置信息的模拟器检测方法及装置 |
CN107633170A (zh) * | 2017-09-30 | 2018-01-26 | 北京梆梆安全科技有限公司 | 一种结合硬件特性与传感器的安卓模拟器检测方法及装置 |
CN108052447A (zh) * | 2017-12-11 | 2018-05-18 | 四川新网银行股份有限公司 | 一种基于协议栈指纹的手机模拟器识别方法 |
CN113419907B (zh) * | 2021-05-26 | 2023-05-23 | 杭州安恒信息技术股份有限公司 | 操作系统探测方法、装置、电子装置和计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741644A (zh) * | 2009-12-16 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 流量检测方法及装置 |
CN102223266A (zh) * | 2011-06-17 | 2011-10-19 | 北京星网锐捷网络技术有限公司 | 一种协议代理检测方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101808080A (zh) * | 2009-12-30 | 2010-08-18 | 深圳市同洲电子股份有限公司 | 一种数据发送方法和相关设备 |
-
2014
- 2014-06-27 CN CN201410301503.2A patent/CN104079571B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741644A (zh) * | 2009-12-16 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 流量检测方法及装置 |
CN102223266A (zh) * | 2011-06-17 | 2011-10-19 | 北京星网锐捷网络技术有限公司 | 一种协议代理检测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104079571A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104079571B (zh) | 一种识别Android模拟器的方法及装置 | |
WO2017161760A1 (zh) | 数据传输方法及装置 | |
CA2448426A1 (en) | Remote medical device access | |
CN106789934A (zh) | 一种网络设备识别方法及系统 | |
EP2745467A1 (en) | Method for flow control and for reliable communication in a collaborative environment | |
EP3128713B1 (en) | Page push method and system | |
CN109474718A (zh) | 域名解析方法和装置 | |
CN115514682B (zh) | 一种数据传输方法、装置、设备及存储介质 | |
CN106657206A (zh) | 虚拟桌面web视频重定向的方法 | |
CN104468265A (zh) | 局域网终端在线状态的检测方法和装置 | |
CN104486361A (zh) | 建立网游连接的方法、游戏终端及系统 | |
US7483990B2 (en) | Method, apparatus, and program for informing a client when a server is busy in the transfer control protocol | |
CN114172900A (zh) | 基于单向网闸的文件传输方法及系统 | |
CN108989152A (zh) | 获得网络延时的方法及装置以及计算机存储介质 | |
CN106330607A (zh) | 基于单向监听日志估算tcp连接应用质量的方法和系统 | |
CN105282231B (zh) | 基于应用类型的数据引流方法、装置及系统 | |
CN102957580A (zh) | 一种流量统计方法及设备 | |
CN109286665B (zh) | 实时移动游戏长链接处理方法及装置 | |
CN105991348B (zh) | Tcp连接关闭方法及装置 | |
CN105991641A (zh) | 一种Portal认证方法及装置 | |
CN105939317B (zh) | Ssl握手报文的解析方法及装置 | |
CN105025028B (zh) | 基于流量分析的ip黑洞发现方法 | |
WO2016184079A1 (zh) | 一种处理系统日志报文的方法和装置 | |
CN112118284A (zh) | 一种面向网关设备的http数据请求方法、设备及介质 | |
CN111294382A (zh) | 一种数据实时推送方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 511446 Guangzhou City, Guangdong Province, Panyu District, South Village, Huambo Business District Wanda Plaza, block B1, floor 28 Applicant after: Guangzhou Huaduo Network Technology Co., Ltd. Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08, Applicant before: Guangzhou Huaduo Network Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |