【电子数据取证】如何快速在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模块,可以方便地读取和处理表格数据,并进行数据清洗和预处理。在提取表格数据时,需要注意数据类型和格式的一致性、编码格式的一致性、数据缺失和异常值的处理、数据安全性等问题。同时,使用正则表达式提取表格数据时,需要注意正则表达式的语法、数据格式的一致性、正则表达式的效率和可读性等问题。通过注意这些问题,可以确保提取的表格数据准确、可靠、安全,并为后续的数据分析和处理提供便利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成熟制程新周期:华虹半导体股价飙升,大摩超配背后的逻辑是何?

半导体全线异动,新周期确定已到? 今年以来,在众多利好消息驱动下,华虹半导体(01347.HK)、中芯国际(00981.HK)、复旦微电(01385.HK)等港股芯片概念标的&#…

分享一个自己写的PC版的Ai指令保存工具

今天给大家分享下我用非常古老的VB写的一个小工具。纯粹是每次电脑使用指令太麻烦了,所以写了一个小工具。这个工具支持5条指令,作为一般的应该够用了。使用场景:比如你要经常使用指令,但是觉得复制指令麻烦,那么你可以…

Thinkphp校园新闻发布系统源码 毕业设计项目实例

Thinkphp校园新闻发布系统源码 毕业设计项目实例 校园新闻发布系统模块: 用户模块:注册,登陆,查看个人信息,修改个人信息,站内搜索,新闻浏览等功能, 后台管理员模块:会员…

月薪没到20K,必啃的WebGIS系统技术栈,你练到哪一步了?

WebGIS(网络地理信息系统)是目前地理信息系统(GIS)开发的主流,它利用互联网技术来发布、共享和交互地理空间数据。 一个完整的WebGIS项目通常涉及以下几个主要环节:具备一定的理论知识,数据生产…

Spring是如何设计IOC容器的?BeanFactory ApplicationContext

BeanFactory是Spring框架中最底层的接口,用于实例化、配置和管理bean。它使用控制反转(IOC)模式,将对象的创建、管理和装配的职责从应用程序代码中转移给Spring容器。这样,应用程序代码就无需关心对象如何创建和装配&a…

【区块链】POS(Proof of Stake)权益证明算法深度解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 POS(Proof of Stake)权益证明算法深度解析引言1. POS基本…

基于Matlab的细胞计数图像处理系统(GUI界面有报告) 【含Matlab源码 MX_003期】

简介: 本文旨在解决生物血细胞数目统计的挑战,提出了基于图像处理的综合方案。通过MATLAB平台,我们设计并实现了一套完整的细胞图像处理与分析流程。在预处理阶段,采用图像增强和阈值分割等方法,有效地提高了细胞图像的…

Linux---rpm/yum包管理器

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.RPM概述 RPM(Red Hat Package Manager)是Linux中的一种软件包管理格式也可以称为软件包管理器;它可以将软件包以二进制形式打包,并提供工具来安…

Conmi的正确答案——Vue默认加载方式设置为Yarn后怎么修改

Vue版本:3 1和2主要是搜索文件所在位置,Windows的这个文件一般在“C:\Users\{当前用户}”下,linux的非root情况下一般在“/home/{当前用户}”下。 1、打开“Everything”; 2、搜索“vuerc”; 3、打开“.vuerc”&#…

vue 和 js写屏幕自适应

实现屏幕自适应的方式有很多种,可以通过插件本身提供的方法,可以通过flex布局等,今天我们来写写通过js实现屏幕自适应。 以下是在vue中实现的屏幕自适应 首先在data中定义一下屏幕的默认大小和缩放比例 然后在mounted中获取窗口的内置宽高&a…

jrt从量变到质变

又是一个加班的周末,上周把台式机代码和数据库环境弄好了,这周进行大数据测试,直接把标本、标本医嘱、报告、报告结果、药敏结果等数据插入到1亿的规模,跑了一天一夜插入了5000多万个标本,后面接着补剩下的到一亿。 演…

生命在于学习——Python人工智能原理(3.5)

三、深度学习 9、常见神经网络 常见的神经网络有卷积神经网络(AlexNet、VGGNet)、循环神经网络(RNN) 长短时记忆网络(LSTM)。 (1)AlexNet AlexNet于2012年由Hinton学生Alex提出&a…

shell脚本编程(概念、编程和语句)

一、shell脚本概述 1、shell脚本概念 Shell 脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能。 2、Shell 脚…

使用vscode插件du-i18n处理前端项目国际化翻译多语言

前段时间我写了一篇关于项目国际化使用I18n组件的文章,Vue3 TS 使用国际化组件I18n,那个时候还没真正在项目中使用,需求排期还没有定,相当于是预研。 当时就看了一下大概怎么用,改了一个简单的页面,最近需…

嵌入式实训day6

1、 from machine import Pin from neopixel import NeoPixel import timeif __name__"__main__"#创建RBG灯带控制对象,包含5个像素(5个RGB LED)rgb_led NeoPixel(Pin(4,Pin.OUT),5)#定义RGB颜色RED(255,0,0)GREEN(0,2…

SOLIDWORKS 2024正版软件:新增功能介绍

随着科技的飞速发展,计算机辅助设计(CAD)软件在工业设计领域扮演着越来越重要的角色。SOLIDWORKS作为3D CAD软件提供商,其每一次版本更新都带来了一系列创新功能和改进,旨在为用户提供更有效、更智能、更协同的设计体验…

传输层udp和tcp协议格式

UDP协议 UDP协议端格式 udp的前八个字节是报头,后面部分就是有效载荷。而目的端口号就保证了udp向应用层交付的问题。 而针对于报头和有效载荷分离是根据固定八字结的报头长度。数据的长度就是取决于报头中udp长度字段的大小来确定udp报文长度,因此也可…

006 spring事务支持

文章目录 事务回顾事务介绍事务并发问题(隔离性导致)事务隔离级别 Spring框架事务管理相关接口Spring框架事务管理的分类编程式事务管理(了解)声明式事务管理(重点) 事务管理之XML方式业务层持久层单元测试代码配置事务管理的AOP 事务管理之混合方式事务管理之基于AspectJ的纯注…

【分布式事务】分布式事务其他解决方案——2PC

目录 2PC解释例子分析回到IT系统中 XA 方案执行流程DTP 模型交互模式 总结 2PC 解释 2PC 即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),…

PyMuPDF 操作手册 - 01 从PDF中提取文本

文章目录 一、打开文件二、从 PDF 中提取文本2.1 文本基础操作2.2 文本进阶操作2.2.1 从任何文档中提取文本2.2.2 如何将文本提取为 Markdown2.2.3 如何从页面中提取键值对2.2.4 如何从矩形中提取文本2.2.5 如何以自然阅读顺序提取文本2.2.6 如何从文档中提取表格内容2.2.6.1 提…