导出短信.xml,提取信息

如何将Android联系人导出为 Excel 格式(CSV 或 XLS) 这篇文章主要讨论了如何从 Android 导出联系人并将其以 Excel 格式保存到 PC 的可行方法。正如您所看到的,强大的数据管理工具 - Coolmuster Android Assistant 使该过程更快、更简单。它支持不同的格式,使您能够有效地管理联系人。此外,它还具有许多其他有用的功能,包括将 .vcf 文件的联系人导入 Android 手机、一键恢复联系人备份、从 Outlook 导入等。 阅读详情

       本博文介绍下如何通过C++文件流方式,把从手机导出的.xml格式的短信信息进行处理后存放到磁盘文件

中。对.xml进行的处理包括:

     提取发信者姓名、发信时间、短信内容。最后统计下各方发信的条数,以及各方发信的字数。

 

一、提取出的.xml文件格式如下:

 

二、处理后的结果如下:

 

三、处理方法简要介绍如下:

       通过对.xml文件分析可以发现,我们需要的信息包括在:

       1.<Address>发信者姓名</Address>

       2.<Date>发信时间</Date>

       3.<Body>短信内容</Body>

        所以可以用输入流每次读入一行,并且判断是否是相应标签。若是,则可以做处理;否则,抛弃。对于

统计信息包括各方发送的短信条数、各方发送的短信字数则可以通过设置全局的变量来记录。到底是记录谁

的信息则是通过<Address></Address>标签内的发送者决定。

 

四、代码如下:

#include<iostream>
#include<iomanip>
#include<fstream>

using namespace std;

#define N 1024
#define nameSize 32

int main()
{
	ifstream infile("d:\\a.txt");
	ofstream outfile("d:\\b.txt");
	
	if(!infile)
	{
		cout<<"open source.xml error!"<<endl;
		exit(1);
	}

	if(!outfile)
	{
		cout<<"open result.txt error!"<<endl;
		exit(1);
	}

	int i;
	int sum=0;      //短信总条数
	int countM=0;   //男孩发的短信条数
	int countF=0;   //女孩发的短信条数
	int sumW=0;     //短信总字数
	int countMW=0;  //男孩发的字数
	int countFW=0;  //女孩发的字数
	char temp;
	char buffer[N]; //按行读取的缓冲区
	char nameM[nameSize]="陆XX";
	char nameF[nameSize]="梁XX";

	while(!infile.eof())
	{
		memset(buffer,0,N);

		infile.getline(buffer,N);  //按行读取
		
		//操作数据,提取出发信者姓名、发信时间、内容

		switch(buffer[1])
		{
		case 'A':
			if(buffer[9]=='+')
			{
				outfile<<nameF<<endl;
				countF++;
				sum++;
				outfile<<countF<<endl;
				temp='f';
			}
			else
			{
				outfile<<nameM<<endl;
				countM++;
				sum++;
				outfile<<countM<<endl;
				temp='m';
			}
			break;
		case 'D':
			for(i=6;i<=24;i++)
			{
				outfile<<buffer[i];
			}
			outfile<<endl;
			break;
		case 'B':
			string str=buffer;
			
			sumW+=(str.length()-25);
			if(temp=='f') countFW+=(str.length()-25);
			else countMW+=(str.length()-25);

			for(i=15;i<str.length()-10;i++)
			{
				outfile<<buffer[i];
			}
			outfile<<endl<<endl;
			break;
		}
	}

	//对短信条数进行统计输出
	outfile<<endl<<endl<<nameF<<"发的条数: "<<countF<<endl;
	outfile<<nameM<<"发的条数: "<<countM<<endl;
	outfile<<"总条数: "<<sum<<endl;

	//对短信字数进行统计
	outfile<<endl<<nameF<<"发的字数: "<<countFW/2<<endl;
	outfile<<nameM<<"发的字数: "<<countMW/2<<endl;
	outfile<<"总字数: "<<sumW/2<<endl;

	return 0;
}

 

以下内容更新于0:59 2013/7/6

五、代码改进

        四中给出的源代码的输入输出文件名及路径是固定的。通过改进使得可以通过命令行参数来更方便的实时

确定路径及文件名。其中 -s 后紧接输入文件路径及名称;-d 后紧接输出文件路径及名称。

1、改进后的代码

#include<iostream>
#include<iomanip>
#include<fstream>

using namespace std;

#define N 1024
#define nameSize 32
#define timeSize 20

/*******************************改进部分***********************************/
int main(int argc,char *argv[])
{
	int souIndex=0,destIndex=0;    //源文件地址和目的文件地址的下标
	for(int index=1;index<argc;index++)
	{
		if(argv[index][0]=='-' && argv[index][1]=='s')
		{
			index++;
			souIndex=index;
		}
		else if(argv[index][0]=='-' && argv[index][1]=='d')
		{
			index++;
			destIndex=index;
		}
	}
/****************************************************************************/

	ifstream infile(argv[souIndex]);     //打开源文件
	ofstream outfile(argv[destIndex]);   //打开目的文件
	
	if(!infile)
	{
		cout<<"open source.xml error!"<<endl;
		exit(1);
	}

	if(!outfile)
	{
		cout<<"open result.txt error!"<<endl;
		exit(1);
	}

	int i;
	int sum=0;      //短信总条数
	int countM=0;   //男孩发的短信条数
	int countF=0;   //女孩发的短信条数
	int sumW=0;     //短信总字数
	int countMW=0;  //男孩发的字数
	int countFW=0;  //女孩发的字数
	char temp;
	char buffer[N]; //按行读取的缓冲区
	char nameM[nameSize]="陆XX";
	char nameF[nameSize]="梁XX";
	char timeSave[timeSize];   //记录最后一条短信发送的时间

	while(!infile.eof())
	{
		memset(buffer,0,N);

		infile.getline(buffer,N);  //按行读取
		
		//操作数据,提取出发信者姓名、发信时间、内容
		switch(buffer[1])
		{
		case 'A':
			if(buffer[9]=='+')
			{
				outfile<<nameF<<endl;
				countF++;
				sum++;
				outfile<<countF<<endl;
				temp='f';
			}
			else
			{
				outfile<<nameM<<endl;
				countM++;
				sum++;
				outfile<<countM<<endl;
				temp='m';
			}
			break;
		case 'D':
			for(i=6;i<=24;i++)
			{
				outfile<<buffer[i];
				timeSave[i-6]=buffer[i];
			}
			outfile<<endl;
			break;
		case 'B':
			string str=buffer;
			
			sumW+=(str.length()-25);
			if(temp=='f') countFW+=(str.length()-25);
			else countMW+=(str.length()-25);

			for(i=15;i<str.length()-10;i++)
			{
				outfile<<buffer[i];
			}
			outfile<<endl<<endl;
			break;
		}
	}

	//截止日期
	outfile<<endl<<endl<<"短信截止时间: "<<endl;
	for(i=0;i<19;i++)
	{
		outfile<<timeSave[i];
	}

	//对短信条数进行统计输出
	outfile<<endl<<endl<<nameF<<"发的条数: "<<countF<<endl;
	outfile<<nameM<<"发的条数: "<<countM<<endl;
	outfile<<"总条数: "<<sum<<endl;

	//对短信字数进行统计
	outfile<<endl<<nameF<<"发的字数: "<<countFW/2<<endl;
	outfile<<nameM<<"发的字数: "<<countMW/2<<endl;
	outfile<<"总字数: "<<sumW/2<<endl;

	return 0;
}

2、改进后的运行格式


逆向工程剖析:短信验证码防泄漏机制与客户端安全攻防实战 短信验证码作为身份核验的核心环节,其安全性依赖于客户端与服务器之间的协同防护。从技术原理上看,它涉及数据加密、权限控制、运行时保护等多个层面。在客户端,通过系统层隔离、内存保护、UI防窃取及传输混淆等技术,旨在防止验证码被恶意截获。这些机制的技术价值在于构建纵深防御体系,显著提升自动化攻击和恶意软件窃取的成本。典型的应用场景包括金融支付、社交登录等高安全要求业务。本文通过逆向工程,深入解析了验证码防泄漏的整体架构,并利用Frida动态Hook、内存扫描等实战手段,揭示了客户端防护的实现细节与潜在绕过点,为移 阅读详情

相关推荐

手把手教你解决COLMAP编译中的Ceres CUDA支持问题(附详细配置步骤)

本文详细解析了COLMAP编译中Ceres CUDA支持问题的完整解决方案,包括环境准备、Ceres Solver的CUDA编译配置、COLMAP的CUDA集成配置等关键步骤。通过优化CMake参数和解决常见错误,帮助技术人员充分利用GPU加速优势,提升三维重建效率。

vodka的博客 862

转换xml格式的短信记录

转换xml格式的短信记录

qq_43678748的博客 985

gd32 spi 发送&中断接收例程

【代码】gd32 spi 发送&中断接收例程。

weixin_43026921的博客 1653

使用xml文件备份短信

使用xml文件备份短信,主要讲解了xml文件的生成以及信息的多属性存储

千里之行-始于足下 1257

MOOS-ivp 实验三 MOOS简介(3)

MOOS-ivp 实验三 MOOS简介(3) 继上一篇文章继续对实验进行记录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录MOOS-ivp 实验三 MOOS简介(3)六、A Simple Example with pXRelay1.pXRelay基本使用2.pXRelay简单例子3.pXRelay实验七、First Experiments in Modifying MOOS App Code1.下载一个MOOS模板文件2.打开MOOS模板文件总结 六、A Simple E

weixin_44151170的博客 2535

关于DHCP Option60的认识

<br />       最近在网络建设过程中,必须面对一个实际存在的问题:当只有一根线入户时,该如何解决CATV和宽带业务的共存呢?这时就要考虑用到DHCP Option60了,那么DHCP Option60到底是如何来实现业务区分的呢?<br />首先先来看下DHCP协议,在DHCP协议中,定义了一个option字段,该字段主要是用来扩展DHCP协议的,Option 60 (Vendor class identifier)是DHCP报文中的一个选项字段,code为60,可以标识终端类型,根据不同的终

luoyingchuan的专栏 7940

Android读取并备份用户短信(xml方式)

清单文件中需要加入两个权限: MainActivity实现: package com.mth.readMessage; import java.io.File; import java.io.FileOutputStream; import org.xmlpull.v1.XmlSerializer; import android.app.Activity; import

Enjoy life,Enjoy coding!! 2447

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2486

模仿短信模式的显示消息数目的xml布局 和 cmd查看手机短信步骤

刚开始xml文件直接     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@null" >              android:id="@+id/mess_image"     android:layout_widt

zyp009的专栏 778

手把手教你学Simulink——基础电机控制场景实例:基于Simulink的永磁同步发电机温度场耦合仿真

摘要:本文详细介绍了基于Simulink的永磁同步发电机(PMSG)电-热耦合仿真方法。通过Simscape Electrical搭建含热端口的PMSG模型,结合集总参数热网络(LPTN)实现损耗计算与温度反馈,分析了过载工况下温升对电阻和永磁体性能的影响。仿真结果表明:150%过载20秒会导致绕组温升132°C,电阻增加42%,磁链衰减10.5%。文章还提供了自然冷却与强迫风冷的对比数据,并建议通过多物理场耦合仿真预防实机过热问题。该方法可有效支撑高功率密度电机热设计,避免永磁体退磁风险。

MHD0815的博客 252

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1916

ajax获取信息发送短信,javascript ajax获取信息功能代码

Client端代码如下:Enter the setup then get the info:→ how many once:→ begin num :→ end num :功能可以改进,改进以后防止网络拥堵导致的获取信息失败而造成的不连续,可以改进成实现很多功能的工具,比如刷票...自己发挥,我只提供思路~...

weixin_30935961的博客 356

华为OD技术面八股文_C++_01

汇总华为OD技术面C++方向八股文真题,并提供详细解答。

qq_45776114的博客 1889

红米手机短信导出到电脑的5种实用方法,不用再折腾

在日常使用安卓手机时,短信数据的本地留存与归档是不少用户关心的问题。无论是换机迁移、工作留痕还是凭证存档,都需要将手机里的短信内容安全地转移到电脑上。围绕数据备份这一基础需求,我们首先需要理解短信在手机系统中的存储机制,再借助云同步、专用备份工具或系统级备份功能,将结构化数据提取为可读文件。这类操作的技术价值在于既能保留时间戳、号码等元信息,又能实现跨设备的长久保存。从实际应用场景看,红米手机用户可以通过小米云服务网页端导出文本,或使用SMS Backup & Restore生成XML/HTML文件,也可以

weixin_29174385的博客 130

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

三星手机短信导出到电脑的4种实用方法:从备份到查看全搞定

在移动办公与数据资产管理日益重要的今天,短信作为一种轻量但高价值的通讯记录,其跨设备迁移与归档需求愈发常见。安卓系统将短信统一存储于系统数据库,普通用户难以直接访问,因此借助系统权限或备份工具实现标准化导出成为主流思路。通过第三方备份应用可生成XML或CSV等通用格式,便于检索与长期保存;而官方Smart Switch则适合整机容灾备份,Windows“手机连接”则满足实时查看与回复的轻量化场景。针对三星手机用户,从日常留档到紧急迁移,均可按需选择合适方案。围绕三星手机短信导出到电脑的实操路径,上述方案覆盖

weixin_29168393的博客 233

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

三星手机短信导出电脑实操指南:四种备份方案对比与踩坑解决

数据备份是数字时代每个人都无法回避的基础需求,而短信作为一种看似传统却承载着验证码、交易提醒和工作记录的高价值数据,其可移植性长期被忽视。短信数据在手机系统中以数据库形式存储,系统层面并不提供通用的导出接口,因此需要借助官方套件、第三方备份工具或系统集成功能来实现迁移。从技术原理上看,短信导出本质上是对系统数据库的读取、序列化和格式转换,常见的导出格式包括XML和私有备份格式,前者具备跨平台可读性,后者更适合整机恢复。这一操作的核心价值不仅在于释放手机存储空间,更在于将分散在移动设备中的数据资产集中归档,满

weixin_30800615的博客 193

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

signal-back核心功能解析:从加密备份中提取短信、图片和视频的完整指南

signal-back是一款强大的开源工具,专为解密Signal加密备份文件设计,让用户能够在应用外部轻松访问备份中的短信、图片和视频等重要数据。无论是需要迁移数据、保存珍贵回忆,还是进行数据管理,signal-back都能提供简单高效的解决方案。 ## 为什么选择signal-back?解密Signal备份的终极方案 🚀 自Signal Android应用4.17.5版本引入加密备份功能以

gitblog_00269的博客 301

如何轻松将三星短信导出为 PDF

本文总结了 5 种将三星短信导出为 PDF 的可行有效方法,涵盖了从简单的屏幕截图到专业软件解决方案。如果您需要可靠、完整且支持批量处理的方法, Coolmuster Android Assistant仍然是最佳选择。对于快速或偶尔使用的情况,屏幕截图或 Google Messages for Web 也是不错的选择。

TheNextByte1的博客 219

探秘SMS Tools:统一管理你的短信历史的利器

探秘SMS Tools:统一管理你的短信历史的利器 去发现同类优质开源项目:https://gitcode.com/ 如果你是一位热衷于数据管理的科技爱好者,或者频繁更换设备,那么你一定遇到过这样一个问题:如何妥善地保存和迁移你的短信记录?现在,有了SMS Tools,这个问题迎刃而解。这是一个功能强大的短信导入、导出和合并工具,支持多种操作系统平台,并且是完全开源的。 项目介绍 SMS Tool...

gitblog_00071的博客 783

LG手机打印短信的四种实用方法:从截图备份到ADB提取全解析

在安卓系统中,短信作为重要的沟通记录,常需被转化为可打印的文档。对于LG手机用户而言,系统缺乏直接打印短信的入口,通常需要先借助备份工具将短信导出为图片、PDF或文档,再完成打印。这一过程的核心原理涉及短信数据的提取与格式化,技术价值在于既满足法律证据对完整性的要求,又兼顾家庭纪念的排版需要。常见的应用场景包括法律举证、客户沟通存档、个人回忆整理等。针对不同规模的需求,从快速截图、官方备份、第三方应用到ADB命令行提取,均有对应方案。其中ADB可直接读取SQLite数据库,确保数据完整度最高。本文围绕LG手

weixin_29195615的博客 271

6 种素材全支持:前任.skill 数据来源准备指南(微信 / iMessage / 短信 / 照片 / 社交媒体)

想把回忆蒸馏成 **前任.skill**,第一步不是写代码,而是准备好**数据来源**。这篇指南帮你把 6 种素材一次备齐:微信聊天记录、iMessage、短信、照片、社交媒体导出,外加文件上传和直接粘贴两种方式——每种素材说明怎么导出、选什么格式、文件放哪里,新手照着做 10 分钟就能完成素材收集。 ## 📋 支持的数据来源一览 | 来源 | 类型 | 推荐格式 | 解析工具 | |---

gitblog_01061的博客 231

如何将Android联系人导出为 Excel 格式

本文主要讨论了从Android导出联系人的四种可行方法。正如您所见,功能强大的数据管理工具——Coolmuster Android Assistant可以让这个过程更加快捷方便。它支持多种格式,让您能够高效地管理联系人。此外,它还具有许多其他实用功能,包括将联系人通过 .vcf 文件导入Android手机、一键恢复联系人备份、从 Outlook 导入等。

TheNextByte1的博客 1256

Android短信导出PDF的5种专业方案与技术解析

短信数据归档是移动开发中常见的需求,PDF格式因其跨平台和不可篡改特性成为首选。通过解析Android短信数据库或使用专业工具链,开发者可以实现格式保留、批量导出等高级功能。本文涉及的Coolmuster工具链和ADB命令方案,既能满足法律取证对格式完整性的严苛要求,也能通过Python脚本实现自动化处理。这些技术在金融存证、司法取证等场景具有重要价值,特别是结合OCR识别和区块链存证等扩展应用时,能构建更完整的数据归档解决方案。

weixin_26886855的博客 263

中兴F50短信转发到微信:ADB+PushPlus保姆级教程

随身WiFi作为长期在线的网络设备,常被用来收发短信,但验证码和通知往往滞留在设备后台,成为信息盲区。通过ADB(Android Debug Bridge)这一安卓系统级调试通道,可以绕过复杂的App安装流程,直接访问系统短信数据库。结合PushPlus公众号推送服务,将短信内容实时转发到个人微信,实现低成本的自动化通知链路。该方案适用于车载WiFi、副卡验证码接收、设备状态监控等场景,无需刷机,仅需一台可运行Python脚本的电脑或NAS即可长期稳定运行。本文从ADB环境搭建、设备无线连接、短信读取验证,

weixin_33868027的博客 409

从Android打印通话记录的 3 种简单方法

从Android手机打印通话记录并不像看起来那么困难。正如我们所看到的,有几种有效的方法可以完成此任务,无论您是喜欢使用Coolmuster Android Assistant等软件进行详细控制,还是选择更简单的手动解决方案(例如屏幕截图和备份应用程序)。我们推荐Coolmuster Android Assistant以获得无缝且专业的解决方案。它提供了用户友好的界面,适用于各种Android设备,并支持各种格式的打印。如果您想快速导出详细的通话记录并轻松打印,此方法是完美的。

TheNextByte1的博客 229
上一篇: VGA接口之显示彩色条
下一篇: 第十一篇 BCD码调整
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值