【电子数据取证】如何快速在CSV中找到涉案手机号码

文章关键词:电子数据取证、聊天记录恢复、数据恢复、手机取证、介质取证

一、 前言

在最近的取证工作中,我们遇到很多需要从大量的聊天记录数据中提取特定的信息,例如手机号码,银行号码,交易码。由于数据通常以数据库或表格的形式存在,手动复制粘贴并筛选是低效且耗时的。本文将介绍如何利用 Python 高效地从数据库或表格中提取手机号码。

二、案件背景

在这个案件中,目标人通过微信在几十个微信群中进行活动。其中一个微信群引起了关注,因为该群的成员命名方式是"姓名+手机号码",而这些成员每天都在该群中发布他人的手机号码。目前,目标人已经被抓获,调查员使用LX-A200手机取证系统成功固定了他的微信聊天记录,并将其导出为Excel表格。现在,警方希望通过分析这些聊天记录来确定是否存在突破口,并统计群员发送手机号码的情况。

为了高效提取数据,调查员对导出的Excel表格进行了分析。他们发现在聊天内容中直接提取手机号码是困难的,手动复制粘贴并筛选是低效且耗时的工作。因此,需要编写一个Python脚本来实现自动化的数据提取。该脚本将帮助他们快速从聊天记录中提取相关信息,以便进一步分析和调查。

三、Python安装&调试

在开始高效提取数据之前,我们需要确保已经安装了 Python 编程环境,并安装了所需的库和模块。我们推荐使用 Pycharm 作为开发环境,因为它具有智能化的代码提示和调试功能,可以提高开发效率。

我们将使用 Pandas 库来处理表格数据,使用正则表达式模块 re 来匹配手机号码和地址。在 Pycharm 中,我们可以使用 Pandas 库的交互式界面来轻松地导入和清理数据,使用正则表达式模块来匹配手机号码和地址,从而提高数据提取的效率和准确性。

要安装 Pandas 库re 模块 ,请运行以下命令:

pip install pandas

pip install re

安装完成后,可以使用以下代码来检查是否已经安装成功:

import pandas

import re

print("pandas版本号:" + pandas.version)

print("re模块版本号 :" + re.version)

如果成功安装,则会出现图1的界面,这里可以看出我的pandas版本是1.5.3,re模块版本号是2.2.1。

图1 安装成功样式

四、数据分析

在编写代码之前,我们需要对处理的表格进行预处理

4.1、预处理:

步骤1: 我们需要复制一份表格(以防操作失误,还可以还原)。

步骤2: 我们可以删除不需要的列,使数据更加精确且处理时间更快。

步骤3: 需要找到所需处理的数据在哪一列,并记住该列的数字,以便后续编写代码时使用。

步骤4: 我们需要分析该列中的数据。如果存在以"http://"、"url."等网址开头的数据,则这些数据是无效的,可以选择将这些行删除。对于其他有效数据,我们需要确认数据的格式,并检查是否存在包含两个手机号码的数据。完成这些预处理工作后,我们就可以开始编写代码了。

4.2、代码编写:

在处理大量数据时,我们需要让计算机知道要提取哪些数据?例如下图2中,我们需要把手机号码提取出来。

图2 手机号码样本

我们可以使用前面安装的re模块来匹配数据。re模块 是一个正则表达式模块,可以用来匹配字符串中的数据。

在正则表达式中,^表示匹配字符串的开头,表示匹配字符串的结尾。由于手机号码是以1开头,后面跟着10个数字,因此可以使用正则表达式r'\^1\\d{10}'来匹配手机号码。但是,这样会匹配出一些无效的手机号码,因为手机号码的第二位是3-9。因此,我们可以改进正则表达式,使用r'^1[3-9]\d{9}$'来匹配以1开头,第二位是3-9之间的数字,后面跟着9个数字的字符串。这样,我们就可以准确地匹配中国大陆的手机号码了。

完成整个代码最核心的内容后,只需用pandas识别表格内容在加一点判断即可,代码如下图3所示:

图3 代码编写

这里需要提取的数据是在第三列,所以代码中"if len(df.columns) > 2"我写的是2(计算机从0开始计数,即0是1),如果需要提取的数据在第四列,只需2改成3。

4.3、数据结果

代码编写完成后,我们运行下看看结果,如下图4所示:

图4 结图对比

可以看出将有效的手机号码都匹配处理了,不论手机号码在什么位置,或者前面加了什么字符,都是能匹配出来。

五、正则表达式运用

在本次Python取证实战中,我们使用了re模块来编写正则表达式,用于从Excel和CSV表格中提取手机号码。但是这时候需要提取的数据是身份证号码,我们只需要将修改下正则表达式,下面给大家列举一些常用的正则表达式。

  1. 匹配手机号码:r'^1[3-9]\d{9}$'
  2. 匹配邮箱地址:r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$'
  3. 匹配身份证号码:r'^\d{17}[\dXx]$'
  4. 匹配URL地址:r'^https?://[\w-]+(.[\w-]+)+([\w.,@?^=%&:/+#-]*[\w@?^=%&/+#-])?$'
  5. 匹配地址: IPr'^((25[0-5]|2[0-4]\d|[01]?\d\d?).){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$'
  6. 匹配日期格式:r'^\d{4}-\d{2}-\d{2}$'
  7. 匹配时间格式:r'^\d{2}:\d{2}:\d{2}$'
  8. 匹配中文字符:r'[\u4e00-\u9fa5]'
  9. 匹配英文字符:r'[a-zA-Z]'

10.匹配数字:r'\d'

正则表达式是一个强大的工具,可以用于匹配字符串中的特定模式,从而提取出所需的信息。通过修改正则表达式,我们可以轻松地匹配出不同格式的数据,大大提高数据处理和文本处理的效率和准确性。

六、总结

使用Python高效提取Excel和CSV表格数据是数据分析和处理的重要步骤。通过使用Pandas库和re模块,可以方便地读取和处理表格数据,并进行数据清洗和预处理。在提取表格数据时,需要注意数据类型和格式的一致性、编码格式的一致性、数据缺失和异常值的处理、数据安全性等问题。同时,使用正则表达式提取表格数据时,需要注意正则表达式的语法、数据格式的一致性、正则表达式的效率和可读性等问题。通过注意这些问题,可以确保提取的表格数据准确、可靠、安全,并为后续的数据分析和处理提供便利。

相关推荐
学习溢出19 分钟前
深入了解 net user 命令:上一次是谁登录的?
windows·网络安全·系统安全
CyberMuse12 小时前
网络安全cybersecurity的几个新领域
网络安全
HEX9CF13 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
kuber090913 小时前
APISIX 联动雷池 WAF 实现 Web 安全防护
网络安全
计算机科研之友(Friend)1 天前
物联网(一)——CMC特刊推荐
开发语言·人工智能·深度学习·物联网·计算机视觉·网络安全
sleepywin2 天前
【BUUCTF N1BOOK】[第一章 web入门]
web安全·网络安全
newxtc2 天前
【社保通-注册安全分析报告-滑动验证加载不正常导致安全隐患】
安全·web安全·网络安全·安全威胁分析
一个无名之辈的杂记本2 天前
利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)
网络安全