恶意刷取手机短信的日志分析

日志初筛

一般来讲,日志文件都是存在linux服务器,所以,第一步的数据提取操作其实可以由linux平台上的文本分析小钢炮grep, sed, awk完成。

例如,我们需要提取[手机号: 18811112222, ...这样的字段手机号码,我们可以使用以下脚本实现:

less catalina.out | grep '\[手机号' | sed 's/^.*手机号://g' | sed 's/,.*$//g'

sed部分可以多提一点:

  • 通过sed 's/^.*str1//g'筛掉str1前的内容
  • 通过sed 's/str2.*$//g'筛掉str2后的内容。

这样,在把筛到的手机号保存到文件里就ok了:

less catalina.out | grep '\[手机号' | sed 's/^.*手机号://g' | sed 's/,.*$//g' > mobile.txt

号码频率的统计

接下来,需要统计mobile.txt文件中各个号码出现的次数。

最简单的实现方式当然是使用一个dictionary去存储每一个关键字,然后在出现的时候做累加。这很容易实现。

这里在提供另外一种使用pandas现成模块的方法:

import pandas as pd

# import data
data = pd.read_csv('mobile.txt', sep=" ", header=None)

# check statistical feature
data.describe()
len(data)
len(data.drop_duplicates())

# get each item's counting, and export to mobileRes.txt file
data.groupby(data.columns.tolist(),as_index=False, sort=False).size().sort_values(ascending=False).to_csv("mobileRes.txt", sep='\t', encoding='utf-8')

这样,你便能得到一个两列的数据,第一列为手机号码,第二列为对应的频数。

有了它们后,便可以画出手机频率分布图,继续使用Python或者Excel都可以简单实现。

你可能感兴趣的:(恶意刷取手机短信的日志分析)