CN105515877B - 一种高效提取安卓系统日志缓冲区中基站信息的方法 - Google Patents

一种高效提取安卓系统日志缓冲区中基站信息的方法 Download PDF

Info

Publication number
CN105515877B
CN105515877B CN201511032202.5A CN201511032202A CN105515877B CN 105515877 B CN105515877 B CN 105515877B CN 201511032202 A CN201511032202 A CN 201511032202A CN 105515877 B CN105515877 B CN 105515877B
Authority
CN
China
Prior art keywords
base station
data
execute
executes
information
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
Application number
CN201511032202.5A
Other languages
English (en)
Other versions
CN105515877A (zh
Inventor
黄旭
李森
聂学良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XLY SALVATIONDATA TECHNOLOGY Inc.
Original Assignee
SICHUAN MWH INFORMATION SAFETY TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SICHUAN MWH INFORMATION SAFETY TECHNOLOGY Co Ltd filed Critical SICHUAN MWH INFORMATION SAFETY TECHNOLOGY Co Ltd
Priority to CN201511032202.5A priority Critical patent/CN105515877B/zh
Publication of CN105515877A publication Critical patent/CN105515877A/zh
Application granted granted Critical
Publication of CN105515877B publication Critical patent/CN105515877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • H04W24/02Arrangements for optimising operational condition

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种高效提取安卓系统日志缓冲区中基站信息的方法,属于电子数据取证领域,包括以下步骤:S1获取系统日志缓冲区数据文件;S2解析文件,获取其中基站信息;S3逆解析基站信息;S4数据展示。采用本发明的方法可以达到以下效果:1、系统日志的获取不需Root,任意手机均可提取;2、提取的系统日志中的基站数据是智能手机与最近基站的交互数据,具有极高的准确性。3、系统日志中的基站数据存储格式统一,只受系统框架的更改而影响,具有通用性。4、扩展了智能手机定位痕迹的取证方式,使得取证结果更加的全面、完整和有效。

Description

一种高效提取安卓系统日志缓冲区中基站信息的方法
技术领域
本发明涉及电子取证领域,特别涉及一种高效提取安卓系统日志缓冲区中基站信息的方法。
背景技术
目前对定位痕迹数据的提取主要是挖掘数据分区中应用所记录保存的定位痕迹信息,而对忽视系统本身所含有的日志信息中含有的基站信息的提取,必然会引起证据的缺失,使得证据的完整性被破坏,以下总结目前定位痕迹取证技术中包含的缺点。
1、缺失对系统日志缓冲区基站数据的提取会破坏电子取证的完整性;
2、对内置分区数据的提取,具有需要root权限的前置条件,这样对定位痕迹的提取便有了一定的制约性;
3、数据很有可能记录周边定位信息,数据的准确性需要严格校正,不能直接使用;
4、数据具有极大的易变性,极容易受到应用产生数据的接口的影响。
发明内容
本发明针对现有技术的不足,提供一种高效提取安卓系统日志缓冲区中基站信息的方法,能够有效解决缺失对系统日志缓冲区基站数据的提取破坏电子取证完整性的问题。
为解决以上问题,本发明采用的技术方案如下:一种高效提取安卓系统日志缓冲区中基站信息的方法,包括如下步骤:
S1获取系统日志缓冲区数据文件;S2解析文件,获取其中基站信息;S3逆解析基站信息;S4数据展示。
作为优选,S1具体如下:
1.1执行bugreport指令获取日志信息,获取的日志信息包含安卓启动过程的log,以及启动后的系统状态,包括进程列表、内存信息和VM信息;
1.2判断目标文件是否输出,若是则执行S2,若否则执行1.3;
1.3执行logcat指令获取日志信息,对获取的日志指定缓冲区,并且指定日志信息的输出格式;
1.4指定输出日志的循环缓冲区,指定radio射频缓冲区;
1.5指定输出日志的输出格式,输出的日志格式应当包含基本的数据格式,至少应当包含基站数据产生时间,完整的基站数据日志;
1.6判断目标文件是否输出,若是则执行S2,若否则执行1.7;
1.7目标文件获取失败,结束安卓系统日志缓冲区基站数据解析。
作为优选,S2具体如下:
2.1网络类型获取
2.1.1执行系统API获取网络类型,并记录网络类型为N;
2.1.2根据网络类型关键字key,在文件中检索网络类型,若获取网络类型成功,则将N赋值为新的网络类型,并执行2.2,若否则执行2.1.3;
2.1.3网络类型获取失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.2定位基站数据位置
2.2.1启动标记R,R起始值为0,代表文件开始。
2.2.2按行读取系统日志文件,根据基站数据关键词key2,匹配读取行的内容,若匹配成功,将该行的偏移数值赋值给标记R,并执行2.3操作,否则执行2.2.3操作;
2.2.3获取系统日志文件总共的行数,与R2作等值比较,若等值执行2.2.4操作,否则执行2.2.2操作。
2.2.4定位失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.3获取基站数据字符串
根据定位到的行,用特殊标志flag1,截取字符串数据,记录数据为D1,判断D1是否为空字符串,若是则执行2.2操作,否者执行2.4操作;
2.4基站数据存储格式分析
2.4.1基站类型
2.4.1.1电信基站,包含属性BID、SID、NID,其中,BID基站编号;SID系统识别码,每个地级市只有唯一一个码;NID网络识别码,由各本地网管理,可以有多个;
2.4.1.2移动、联通基站,包含属性MNC、LAC、CID,其中,MNC网络类型识别码,1、5、7代表移动,0、2、4、6代表联通,3代表是电信;LAC位置区域码;CID基站编号;
2.4.2基站在D1中的存储格式
2.4.2.1电信基站偏移5,类型BID;偏移9,类型SID;偏移10,类型NID;
2.4.2.2移动、联通基站偏移2,类型LAC;偏移3,类型CID;偏移4,类型MNC;
2.4.3获取基站数据
2.4.3.1根据已经判定的网络类型,执行基站格式解析;
2.4.3.2根据各字段在D1中的偏移,执行基站数据获取;
2.4.3.3判断各字段是否获取到数值,即判断是否为空字符串,若是执行2.4.3.4,若否执行2.5;
2.4.3.4判断各字段的数值是否在标准范围之间,若是执行2.4.3.5,若否执行2.5;
2.4.3.5保存基站数据,并标注基站类型;
2.5重复执行2.2操作,循环解析基站数据;
2.6基站数据获取解析,返回结果集DS1。
作为优选,S3具体如下:
3.1判断DS1结果集是否为空或者数据长度为0,若是执行3.6,否则表示DS1结果集中包含有效数据,执行3.2;
3.2访问网络,判断网络是否联通,若是执行3.3,若否执行3.6;
3.3执行基站地址逆向解析,获取实际地址;
3.4判断实际地址是否获取成功,即返回的经纬度是否定位到一个真实的地理位置,若成功执行3.5,若不成功,执行3.1;
3.5存储返回数据,执行3.1操作;
3.6结束基站数据逆向解析,并返回结果集DS2。
作为优选,S4具体如下:判断DS2结果集是否为空或长度为0,若是提示安卓缓存日志中不包含基站数据,若否则展示DS2中包含的基站数据。
本发明的方法可以达到以下效果:
1、系统日志的获取不需Root,任意手机均可提取;2、提取的系统日志中的基站数据是智能手机与最近基站的交互数据,具有极高的准确性。3、系统日志中的基站数据存储格式统一,只受系统框架的更改而影响,具有通用性。4、扩展了智能手机定位痕迹的取证方式,使得取证结果更加的全面、完整和有效。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照实施例,对本发明做进一步详细说明。
一种高效提取安卓系统日志缓冲区中基站信息的方法,包括以下步骤:
S1:获取系统日志缓冲区数据文件;S2:解析文件,获取其中基站信息;S3:逆解析基站信息;S4:数据展示。
进一步地,S1具体如下:
安卓系统拥有高效完整的日志管理功能,在运行的过程中,系统会将手机中各种动作信息记录下来,并通过分类向各自不同的日志缓冲区不断的写入这些记录。
1.1日志类型介绍
安卓系统日志主要包含main、radio、events等日志类型,它们以循环缓冲区的形式不断记录系统日志。
1.1.1main类型日志:默认缓冲区,主要记录应用程序打印输出的日志。
1.1.2radio类型日志:主要包含射频相关的日志,主要包含SIM卡信息,STK信息,无线,通话等信息。
1.1.3events类型日志:主要记录系统事件相关的信息,比如说触屏事件。
1.2日志获取
安卓系统日志缓冲区数据主要是通过执行linux指令获取。
1.2.1执行bugreport指令获取日志信息
获取的日志信息包含安卓启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等等。
1.2.2判断目标文件是否输出,若是则执行步骤2,若否则执行1.2.3。
1.2.3执行logcat指令获取日志信息
获取的日志需要自己指定缓冲区,否者只会获取默认的main缓冲区信息,并且需要指定日志信息的输出格式。
1.2.4指定输出日志的循环缓冲区,这里指定radio射频缓冲区。
1.2.5指定输出日志的输出格式,这里输出的日志格式应当包含基本的数据格式,至少应当包含基站数据产生时间,完整的基站数据日志。
1.2.6判断目标文件是否输出,若是则执行步骤2,若否则执行1.2.7。
1.2.7目标文件获取失败,结束安卓系统日志缓冲区基站数据解析。
进一步地,S2具体如下:
2.1网络类型获取
不同类型的网络类型,会有不同的基站数据格式,所以在获取基站信息之前,必须要获取网络类型信息。
2.1.1执行系统API获取网络类型,并记录网络类型为N。
2.1.2根据网络类型关键字key,在文件中检索网络类型,若获取网络类型成功,则将N赋值为新的网络类型,并执行2.2,若否则执行2.1.3。
2.1.3网络类型获取失败,结束安卓系统日志缓冲区基站数据解析,执行2.6。
2.2定位基站数据位置
2.2.1启动标记R,R起始值为0,代表文件开始。
2.2.2按行读取系统日志文件,根据基站数据关键词key2,匹配读取行的内容,若匹配成功,将该行的偏移数值赋值给标记R,并执行2.3操作,否则执行2.2.3操作;
2.2.3获取系统日志文件总共的行数,与R2作等值比较,若等值执行2.2.4操作,否则执行2.2.2操作。
2.2.4定位失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.3获取基站数据字符串
根据定位到的行,用特殊标志flag1,截取字符串数据,记录数据为D1,判断D1是否为空字符串,若是则执行2.2操作,否者执行2.4操作;2.4基站数据存储格式分析
2.4.1基站类型
由于运营商的不同,基站数据存储格式会有一定的变化,这里以国内的基站为列,国内基站分为三种,移动,联通,电信。其中移动、联通格式一致,而电信则不同。
2.4.1.1电信基站
包含属性BID、SID、NID。
2.4.1.1.1BID基站编号
2.4.1.1.2SID系统识别码,每个地级市只有唯一一个码。
2.4.1.1.3NID网络识别码,由各本地网管理,可以有多个。
2.4.1.2移动、联通基站
包含属性MNC、LAC、CID。
2.4.1.2.1MNC网络类型识别码
1、5、7代表移动,0、2、4、6代表联通,3代表是电信。
2.4.1.2.2LAC位置区域码
2.4.1.2.3CID基站编号
2.4.2基站在D1中的存储格式
2.4.2.1电信基站
2.4.2.2移动、联通基站
2.4.3获取基站数据
2.4.3.1根据已经判定的网络类型,执行基站格式解析。
2.4.3.2根据各字段在D1中的偏移,执行基站数据获取。
2.4.3.3判断各字段是否获取到数值,若是执行2.4.3.4,若否执行2.5。
2.4.3.4判断各字段的数值是否在标准范围之间,若是执行2.4.3.5,若否执行2.5;
基于各网络模式下取值与标志不同,以下以国际通用标志为具体示例。
2.4.3.4.1MCC的标准范围000-999
2.4.3.4.2MNC的标准范围00-99
2.4.3.5保存基站数据,并标注基站类型;
2.5重复执行2.2操作,循环解析基站数据;
2.6基站数据获取解析,返回结果集DS1。
进一步地,S3具体如下:
3.1判断DS1结果集是否为空或者数据长度为0,若是执行3.6,否则表示DS1结果集中包含有效数据,执行3.2。
3.2访问网络,判断网络是否联通,若是执行3.3,若否执行3.6。
3.3执行基站地址逆向解析,获取实际地址。
3.4判断实际地址是否获取成功,若成功执行3.5,若不成功,执行3.1。
3.5存储返回数据,执行3.1操作。
3.6结束基站数据逆向解析,并返回结果集DS2。
进一步地,S4具体如下:
判断DS2结果集是否为空或长度为0,若是提示安卓缓存日志中不包含基站数据,若否则展示DS2中包含的基站数据。。

Claims (4)

1.一种高效提取安卓系统日志缓冲区中基站信息的方法,其特征在于,包括如下步骤:S1获取系统日志缓冲区数据文件;S2解析文件,获取其中基站信息;S3逆解析基站信息;S4数据展示;
所述S2具体如下:
2.1网络类型获取
2.1.1执行系统API获取网络类型,并记录网络类型为N;
2.1.2根据网络类型关键字key,在文件中检索网络类型,若获取网络类型成功,则将N赋值为新的网络类型,并执行2.2,若否则执行2.1.3;
2.1.3网络类型获取失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.2定位基站数据位置
2.2.1启动标记R,R起始值为0,代表文件开始;
2.2.2按行读取系统日志文件,根据基站数据关键词key2,匹配读取行的内容,若匹配成功,将该行的偏移数值赋值给标记R,并执行2.3操作,否则执行2.2.3操作;
2.2.3获取系统日志文件总共的行数,与R2作等值比较,若等值执行2.2.4操作,否则执行2.2.2操作;
2.2.4定位失败,结束安卓系统日志缓冲区基站数据解析,执行2.6;
2.3获取基站数据字符串
根据定位到的行,用特殊标志flag1,截取字符串数据,记录数据为D1,判断D1是否为空字符串,若是则执行2.2操作,否者执行2.4操作;
2.4基站数据存储格式分析
2.4.1基站类型
2.4.1.1电信基站,包含属性BID、SID、NID,其中,BID基站编号;SID系统识别码,每个地级市只有唯一一个码;NID网络识别码,由各本地网管理,可以有多个;
2.4.1.2移动、联通基站,包含属性MNC、LAC、CID,其中,MNC网络类型识别码,1、5、7代表移动,0、2、4、6代表联通,3代表是电信;LAC位置区域码;CID基站编号;
2.4.2基站在D1中的存储格式
2.4.2.1电信基站偏移5,类型BID;偏移9,类型SID;偏移10,类型NID;
2.4.2.2移动、联通基站偏移2,类型LAC;偏移3,类型CID;偏移4,类型MNC;
2.4.3获取基站数据
2.4.3.1根据已经判定的网络类型,执行基站格式解析;
2.4.3.2根据各字段在D1中的偏移,执行基站数据获取;
2.4.3.3判断各字段是否获取到数值,即判断是否为空字符串,若是执行2.4.3.4,若否执行2.5;
2.4.3.4判断各字段的数值是否在标准范围之间,若是执行2.4.3.5,若否执行2.5;
2.4.3.5保存基站数据,并标注基站类型;
2.5重复执行2.2操作,循环解析基站数据;
2.6基站数据获取解析,返回结果集DS1。
2.根据权利要求1所述的高效提取安卓系统日志缓冲区中基站信息的方法,其特征在于,S1具体如下:
1.1执行bugreport指令获取日志信息,获取的日志信息包含安卓启动过程的log,以及启动后的系统状态,包括进程列表、内存信息和VM信息;
1.2判断目标文件是否输出,若是则执行S2,若否则执行1.3;
1.3执行logcat指令获取日志信息,对获取的日志指定缓冲区,并且指定日志信息的输出格式;
1.4指定输出日志的循环缓冲区,指定radio射频缓冲区;
1.5指定输出日志的输出格式,输出的日志格式应当包含基本的数据格式,至少应当包含基站数据产生时间,完整的基站数据日志;
1.6判断目标文件是否输出,若是则执行S2,若否则执行1.7;
1.7目标文件获取失败,结束安卓系统日志缓冲区基站数据解析。
3.根据权利要求1或2所述的高效提取安卓系统日志缓冲区中基站信息的方法,其特征在于,S3具体如下:
3.1判断DS1结果集是否为空或者数据长度为0,若是执行3.6,否则表示DS1结果集中包含有效数据,执行3.2;
3.2访问网络,判断网络是否联通,若是执行3.3,若否执行3.6;
3.3执行基站地址逆向解析,获取实际地址;
3.4判断实际地址是否获取成功,即返回的经纬度是否定位到一个真实的地理位置,若成功执行3.5,若不成功,执行3.1;
3.5存储返回数据,执行3.1操作;
3.6结束基站数据逆向解析,并返回结果集DS2。
4.根据权利要求3所述的高效提取安卓系统日志缓冲区中基站信息的方法,其特征在于,S4具体如下:判断DS2结果集是否为空或长度为0,若是提示安卓缓存日志中不包含基站数据,若否则展示DS2中包含的基站数据。
CN201511032202.5A 2015-12-31 2015-12-31 一种高效提取安卓系统日志缓冲区中基站信息的方法 Active CN105515877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511032202.5A CN105515877B (zh) 2015-12-31 2015-12-31 一种高效提取安卓系统日志缓冲区中基站信息的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511032202.5A CN105515877B (zh) 2015-12-31 2015-12-31 一种高效提取安卓系统日志缓冲区中基站信息的方法

Publications (2)

Publication Number Publication Date
CN105515877A CN105515877A (zh) 2016-04-20
CN105515877B true CN105515877B (zh) 2019-04-19

Family

ID=55723536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511032202.5A Active CN105515877B (zh) 2015-12-31 2015-12-31 一种高效提取安卓系统日志缓冲区中基站信息的方法

Country Status (1)

Country Link
CN (1) CN105515877B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055651B (zh) * 2016-05-31 2019-07-12 四川秘无痕科技有限责任公司 一种针对高德接口缓存加密痕迹数据的提取方法
CN110413481A (zh) * 2019-07-25 2019-11-05 厦门市美亚柏科信息股份有限公司 用于日志取证分析的方法、装置及计算机可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461891A (zh) * 2014-12-11 2015-03-25 百度在线网络技术(北京)有限公司 用于测试涉及定位的应用的方法及装置
CN104486722A (zh) * 2014-12-11 2015-04-01 百度在线网络技术(北京)有限公司 定位结果的评估方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070207800A1 (en) * 2006-02-17 2007-09-06 Daley Robert C Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461891A (zh) * 2014-12-11 2015-03-25 百度在线网络技术(北京)有限公司 用于测试涉及定位的应用的方法及装置
CN104486722A (zh) * 2014-12-11 2015-04-01 百度在线网络技术(北京)有限公司 定位结果的评估方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Android系统日志存储和查看工具的设计与实现;安立君;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20130215;第2.2.2、3.4.1-3.5.7节

Also Published As

Publication number Publication date
CN105515877A (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
CN109084795B (zh) 基于地图服务的搜索服务设施的方法及装置
CN104717743B (zh) 基于信令分析的移动终端追踪方法及系统
CN105515877B (zh) 一种高效提取安卓系统日志缓冲区中基站信息的方法
CN104581884B (zh) 一种移动终端搜索网络的方法及移动终端
EP2688323B1 (en) Method and system for calculating call charge of terminal
CN109982257B (zh) 确定移动用户归属区域的方法、装置、系统
CN109688094B (zh) 基于网络安全的可疑ip配置方法、装置、设备及存储介质
CN103823852B (zh) 数据库服务器日志的处理方法和装置
CN105246157A (zh) 一种移动终端的定位方法和定位系统
CN104363629A (zh) 接入运营商网络的系统、方法及识别卡
CN110662212A (zh) 一种基于大数据的手机终端识别方法
CN108491209B (zh) 一种html页面中公共代码的提取方法及装置
CN106060847A (zh) 信号盲区的确定方法及系统
CN112347129B (zh) 一种通知消息的处理方法、装置和智能穿戴设备
CN110191176A (zh) 一种快速电子取证方法及系统
CN105426417A (zh) 一种快速查找智能手机中地理位置信息的方法
CN106503197B (zh) 一种提取Android系统百度地图基站数据的方法
US20190208471A1 (en) Smart card control method and device, terminal device and smart card
CN107402951A (zh) 一种快速提取Android微信朋友圈数据的方法
CN105912453A (zh) 记录网络设备启动和重启时间的方法及装置
CN108668340A (zh) 网络搜索方法及终端设备、计算机可读存储介质
CN112953786B (zh) 信息处理方法、装置、系统和计算机可读存储介质
CN111148212B (zh) 网络注册方法和装置
CN106294632B (zh) 一种针对iPhone百度地图导航路径的提取方法
CN105763370A (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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: No. 183 Songshan Road, Neijiang, Sichuan, Sichuan

Patentee after: Sichuan Miwu Traceless Science and Technology Co.,Ltd.

Address before: No. 183 Songshan Road, Neijiang, Sichuan, Sichuan

Patentee before: SICHUAN MWH INFORMATION SECURITY TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211019

Address after: 641100 No.1 Hanyu Avenue, Shizhong District, Neijiang City, Sichuan Province

Patentee after: XLY SALVATIONDATA TECHNOLOGY Inc.

Address before: No. 183 Songshan Road, Neijiang, Sichuan, Sichuan

Patentee before: Sichuan Miwu Traceless Science and Technology Co.,Ltd.