简介:IBM i2 Analyst's Notebook 8.91 是一份面向情报分析人员、调查人员及安全从业者的专业数据可视化与关联分析工具包,能够从海量异构数据中识别模式、趋势与隐藏关联,常用于犯罪调查、金融欺诈检测、网络安全分析及企业内部审计等专业领域。压缩包共包含 42 个文件,以 exe、msu、msi 安装程序为核心,配合 htm 安装引导、pdf/doc 使用文档、xml/ini/config 配置项等,整体约 443.77MB;内附无需加密狗的 i2forfree 安装组件,并预置 .NET Framework、Visual C++ 等依赖环境,部署更为方便。目前已有 4600 余人学习或浏览。资源额外提供官方培训教材、快速入门指南与发布说明,覆盖环境搭建、数据导入、关联分析、图表可视化等完整流程与操作示例,读者可对照练习并直接用于实际分析任务,尤其适合希望系统掌握情报分析工具的中初级分析师与安全团队。
1. 情报分析系统软件:拆解一套能直接落地的 i2 分析环境
如果你接触过调查取证、反欺诈或者安全事件研判,一定听过 ibm i2 Analyst's Notebook。这套情报分析系统软件在关联分析和可视化研判领域几乎是事实标准,而 8.91 是当前比较稳妥的版本线。网络检索里大量用户反馈排查的其实不是软件本身的分析能力,而是安装部署、数据导入和图表导出的细节坑。
我拆这套资源时重点关注三件事:它凭什么把海量线索变成可读的关联图、隐蔽的时间轴分析怎么做、以及部署后在真实案件场景里最常翻车的点在哪。适合正在做情报研判、合规调查或威胁狩猎的从业者——无论你是刚接手分析任务的新手,还是需要评估这套环境是否值得引入的熟手,这篇文章都会覆盖从安装到实战出图的完整路径。
2. 部署与数据接入:从空白环境到能喂数据的分析底座
2.1 部署前必须确认的软硬件边界
i2 Analyst's Notebook 8.91 是 Windows 桌面客户端,但在真实业务网环境里部署时,最容易被忽略的是它和数据库中间件、许可证服务的配合关系。资源包里常见的拓扑是客户端 + i2 数据库服务端 + 安全认证组件三件套,而不是单机装完就能用。
安装前置条件我一般会这样核对:
- 操作系统:Windows 10 专业版或 Windows Server 2016/2019,注意家庭版容易缺组策略组件
- 数据库:IBM DB2 或 SQL Server,版本要和 8.91 的驱动匹配,很多翻车案例是用了过高版本的 SQL Server 导致 ODBC 驱动不识别
- 内存:分析大图(超过 5 万实体)时 16GB 是底线,8GB 会频繁卡顿
- 许可证:网络浮动许可需要单独配置 License Server,单机版则绑定加密狗
常见做法是先在隔离虚拟机里完成一次完整部署,记录所有默认路径和端口,再推广到工作机。我一般会额外检查C:\Program Files\i2\Analyst's Notebook目录的读写权限,因为后续自定义分析模板和图表样式都要往这里写文件。
2.2 数据导入的四种通道与字段映射逻辑
8.91 支持从 Excel、CSV、数据库表、文本文件四类来源导入数据。但很多人导入后图里全是孤立节点——问题几乎都出在字段映射环节,而不是数据本身。
操作路径是:文件 > 导入 > 导入数据,选择数据源后进入映射界面。这里的核心是把每条记录映射成三类对象之一:
- 实体(Entity):人、组织、地点、事件等基础要素,对应图中的节点
- 链接(Link):两个实体之间的关系,对应图中的连线
- 时间属性(Datetime):描述事件发生的时间点或时间段,用于后续时间轴分析
我从实践里总结的理念是:导入前先在 Excel 里完成字段清洗,把日期统一成YYYY-MM-DD HH:MM:SS,把姓名/公司名等关键字段做过去重和去空格,否则导入后关联图里会出现大量"同一个人的不同写法"节点。
下面是一段我在预处理阶段常用的 Python 清洗逻辑,应对从业务系统导出的混乱数据:
import pandas as pd df = pd.read_excel("raw_data.xlsx", dtype=str) # 统一去空格与大小写,避免同一实体在图中被拆成多个节点 df["name"] = df["name"].str.strip().str.upper() df["company"] = df["company"].str.strip().str.upper() # 日期字段统一格式,i2 对时间格式非常敏感 df["event_time"] = pd.to_datetime(df["event_time"], errors="coerce") df["event_time"] = df["event_time"].dt.strftime("%Y-%m-%d %H:%M:%S") # 丢弃时间解析失败的行,这些行导入后会被识别为无时间数据 df = df.dropna(subset=["event_time"]) # 按业务主键去重,保留信息最全的一条 df = df.sort_values("detail_length", ascending=False).drop_duplicates("case_id") df.to_csv("cleaned_data.csv", index=False, encoding="utf-8-sig") print(f"清洗完成,共 {len(df)} 条有效记录")这段逻辑的核心是四个动作:strip清除首尾空格、upper统一大小写规避匹配歧义、pd.to_datetime强制转换时间格式、drop_duplicates按案件编号去重。参数说明:errors="coerce"表示无法解析的时间被置为 NaT 而不是报错中断;subset="case_id"是按案件维度去重,保留detail_length最长的那条记录,因为通常信息越全越有价值。
清洗完的数据直接导入 i2,映射界面里把name拖到实体名称,company作为实体属性,event_time挂到时间属性,就能生成带时间信息的关联图了。
2.3 导入后必做的三类数据质量检查
数据进图不等于数据可用。我每次处理完导入,都会强制自己走一遍下面三个检查:
- 孤立节点数检查:选中所有实体,看属性面板里"链接数"为 0 的占比。超过 20% 说明要么映射关系漏了,要么源数据本身关联性弱。常见做法是回到导入映射界面,检查是否有"参与者"或"关联案件号"这类字段没有被映射成链接。
- 时间字段抽查:随机点开 10 个节点的时间属性,确认年份没有变成 0019 这种格式——这通常说明 Excel 里日期被识别成了自定义格式,导入时被错误解析。
- 重复实体抽样:用图表工具栏的"查找重复项"功能,对比姓名+证件号的组合。8.91 的重复检测是基于字符串相似度的,阈值默认 80%,实际使用中我会调到 90% 以上,否则"张三"和"张三丰"会被误并。
这一步完成,数据底座才算是稳了。接下来才能进入真正的分析环节——这也是 i2 相比普通绘图工具的核心差异所在。
3. 关联图分析与实体建模:把零散线索变成立体关系网
3.1 实体类型体系与条件格式的搭配逻辑
i2 的关联图分析能力建立在实体类型 + 链接类型 + 条件格式三层结构上。默认模板里预置了人、组织、地点、车辆、电话、银行账户等几十种实体类型,但实际业务里这些永远不够用。
我处理过的某跨平台系统项目中,需要额外建模"IP 地址""数字货币地址""社交账号"三类实体,并在它们之间建立"控制关系""资金流向"两种链接类型。操作位置在工具 > 模式 > 新建模式,新建的实体类型需要指定图标、颜色和默认属性字段。
条件格式是我特别推荐新手优先掌握的功能——它允许你按属性值动态改变实体的显示样式,不用手动一个个改节点颜色。比如把所有风险等级为"高"的实体自动涂红、把关联案件数大于 5 的实体加粗边框:
条件格式规则配置: - 规则名称: 高风险红色高亮 - 应用范围: 实体 - 条件: [Risk Level] 等于 "High" - 显示效果: 填充色 #C00000,字体白色,边框加粗 2px - 优先级: 1(高于其他规则)参数说明:条件格式是自上而下逐条匹配的,命中第一条规则后就不再往下走,所以优先级设置很关键。"High" 是属性面板里“风险等级”字段的枚举值,字段名必须和导入时的映射完全一致,大小写都不能差。这个功能能让百人规模的团伙结构一眼看出核心节点。
3.2 链接分析与中心度判断:找到关联网络的关键枢纽
画完关联图不是终点,重点是从图中读出业务结论。8.91 自带的分析工具栏提供了关联分析、时间序列分析、网络流分析三类手段。实操中最常用的是"关联分析"里的中心度计算——它会自动统计每个实体的链接数、中间中心度、紧密中心度三个指标。
链接数直观反映活跃度;中间中心度衡量的是"这个节点在多少最短路径上",体现的是信息枢纽地位。这类节点往往对应的就是团伙中的中间人角色,即使它自身直接关联的交易不多。
我用一个真实案例来说明判断逻辑:某个调查里,A 账户和 B 账户之间交易频繁,但 C 账户只和 A、D、E 各有一次交易。单纯看交易次数,C 并不显眼;但算中间中心度时,C 出现在 A 到 D、A 到 E 的所有最短路径上,明显是资金流转的必经节点。后续调取 C 的流水果然发现它是壳公司的归集账户。
这背后的分析理念是:交易金额可以被隐藏,但结构位置藏不住。中心度计算不需要额外配置,导入数据后点击"分析 > 关联分析 > 中心度"即可,计算耗时随实体数量增长,5 万实体以内一般 3 秒内出结果。
3.3 从混乱图中梳理团伙层级的常用手法
拿到一张几百个节点的关联图,第一反应往往是眼花。我一般会按以下顺序逐层收敛:
- 按实体类型分割视图:先用条件格式把所有"资金账户"类型改成蓝色、"通讯工具"改成绿色,颜色分区后视觉上立刻清晰
- 隐藏低关联节点:选中链接数小于 2 的节点,右键"隐藏",图上只保留有交叉关联的核心成员
- 使用布局算法:菜单栏里
布局 > 圆形布局适合展示层级关系,布局 > 网格布局适合展示资金链,布局 > 有机布局适合展示团伙聚簇结构 - 手工微调:自动布局完成后,把关键节点拖到图上中心区域,把干系较小的节点推向边缘
这里有个翻车提醒:布局算法不等于分析结论。圆形布局看起来像金字塔,但它的半径由系统按链接数分配,不是按业务层级分配。某次我把"网格布局"生成的图误当成组织架构图汇报,被复盘时指出图中平级关系的判断依据不足。从那以后我每次解读布局前,都会先确认它是基于哪种算法生成的,再做业务解释——软件给出的"视觉层级"只能作为参考,不能直接等同于管理层级。
4. 时间序列分析与资金流向追踪:从静态网络到动态还原
4.1 时间轴与时间条的双视图联动
关联图是静态的关系快照,而调查对象的行为是动态推进的。8.91 在时间维度上提供了两个工具:时间轴视图和时间条视图。前者把实体按生命周期横向铺开,后者把链接按发生时间在竖直时间线上展开。
使用方式是先选中一批实体和链接,然后点击工具栏的"显示时间轴"。时间轴视图会根据实体属性里的Datetime字段把节点放在对应位置。批量分析时我会把"首次出现时间"和"最后出现时间"作为实体的生命周期起点和终点,把每条链接的发生时间作为线段的中间节点。
一个常用的操作组合是:时间轴上拖动选择一个时间段,关联图里会自动只显示发生在该时间段内的链接。这个时间筛选联动对还原某个关键月份的资金动向非常有效。例如某模拟项目中,通过把时间轴收窄到 3 ~ 4 月,原本看起来稀松平常的关联图突然浮现出资金集中流向某新设账户的清晰脉络。
4.2 资金流向追踪的三个实战参数
使用链接分析中的"流向追踪"功能时,有三个参数值得精细调整:
- 步长:从种子节点开始向外扩展的层数,默认 3 层。追资金链时我一般从 5 层开始,因为真实资金归集往往要通过 4~5 个中间账户才到最终沉淀账户
- 金额阈值:只显示金额超过该值的流向。第一次全量跑,观察资金分布后再设阈值,避免一开始就把小额干扰项带入分析
- 方向约束:只追踪"流入"还是"流入+流出"。追非法资金去向时用"流入+流出"更容易看到资金在多个账户间的跳跃路径
下面是用 Python 做流向预分析时的过滤逻辑,帮你先筛掉明显低价值的交易再导入 i2:
import pandas as pd tx = pd.read_csv("transactions.csv", parse_dates=["tx_time"]) # 计算每个账户的累计流入、流出 inflow = tx.groupby("to_account")["amount"].sum().rename("total_inflow") outflow = tx.groupby("from_account")["amount"].sum().rename("total_outflow") accounts = pd.concat([inflow, outflow], axis=1).fillna(0) # 过滤:只看双向流量都不低于5万的账户,降低图复杂度 active = accounts[(accounts["total_inflow"] >= 50000) & (accounts["total_outflow"] >= 50000)] # 只保留与活跃账户有关的交易 mask = tx["to_account"].isin(active.index) | tx["from_account"].isin(active.index) filtered = tx[mask] filtered.to_csv("filtered_tx.csv", index=False) print(f"过滤后交易 {len(filtered)} 条,涉及 {len(active)} 个活跃账户")这段逻辑里groupby按收付款账户分别汇总,fillna(0)处理从未出现过流入或流出的账户避免空值,isin判断交易双方是否为活跃账户。5 万这个阈值不是固定的——某些案件中单笔金额都在百万级,阈值就要上调;而部分案件里 2 万就值得关注。过滤的目的不是删数据,而是降低导入 i2 后的视觉噪声,真正的小额试探性交易有时反而隐藏着重要关联,所以过滤后的 CSV 一定要保留一份全量备份。
4.3 从时间线到行为模式:周期性分析的用途
回头查看多起案件的规律后我发现,时间维度上最出活的是周期检测。比如某个人员链路上的资金行为总是集中在每周二和周五凌晨出现,这个规律在关联图里完全看不出,但切到时间轴视图后,条形图上的峰谷一眼就能注意到。
8.91 自带的时间分析图可以按日、周、月聚合事件频次。操作是选中目标链接后,点击分析 > 时间序列分析 > 时间分布,选择聚合粒度。我的习惯是先按月看整体,发现峰值月份后再按周细看,最后按小时看具体时点。
这一步的意义在于把"嫌疑人上午活跃还是凌晨活跃"这类抽象问题变成可核查的证据链条。某次业务复盘就是从"每周三凌晨三点固定产生一条交易"这个维度切入,最终定位到一台只在固定时段开机的终端——这是从资金流到人物再到物理设备的一条完整证据链。时间维度不是辅助分析,它常常是决定案件走向的突破口。
5. 常见问题与排查:部署 8.91 时最容易翻车的五个细节
5.1 安装后无法启动,报错提示缺少许可证组件
现象:程序安装完成,双击图标后弹出 "License is not available" 或 "Cannot connect to license server",界面闪退。
原因:这套资源默认指向网络浮动许可模式,而目标机器没有配置 License Server 地址。部分环境安装包里的许可证组件版本和 8.91 主程序不匹配,导致认证握手失败。
解决:检查C:\Program Files\i2\License Manager目录下的配置文件,确认SERVER行指向正确的服务器 IP 和端口。如果是单机使用,需要将资源包里的单机许可文件拷贝到安装目录并运行许可管理工具导入。我通常在全新部署时先配置许可后装主程序,可以少走一次完整卸载重装的弯路。
5.2 Excel 导入后时间字段全部变成 0019 年
现象:CSV 或 Excel 中的日期列导入后,实体属性里的时间显示为0019-01-15之类的错误年份,时间轴完全错乱。
原因:Excel 在编辑时把2019-1-15自动转成了01/15/19这种格式,i2 的 CSV 解析器默认按YYYY-MM-DD读取,两种格式混在一起时部分被错误归到了 0019 年。
解决:导入前用文本编辑器打开 CSV 确认时间列的实际格式;更稳妥的做法是用 Python 或 Excel 函数统一转成YYYY-MM-DD HH:MM:SS。我在前一章给过具体的 pandas 代码,errors="coerce"排除了解析异常的时间行,这样可以防止脏数据直接进入关联图。这类问题最隐蔽的地方在于它不影响导入成功率,只影响分析准确性,一旦发现时往往已经基于错乱时间做了多轮关联判断。
5.3 导入数据量太大导致图表加载卡顿
现象:导入超过 10 万条记录后,每次拖动图都卡,属性面板点选响应延迟明显,甚至直接无响应。
原因:8.91 的桌面端架构里关联图在内存中全量展开,实体和链接数达到一定规模后渲染性能急剧下降。此时不是每条记录都必须展示在图上,未参与关联的孤立数据也在占用资源。
解决:导入前用 Python 做去孤岛预处理,把没有任何链接的节点过滤掉;或导入后先按实体类型隐藏非关键类别。4.2 节的代码就是典型的预过滤方案——从几十万行全量交易里筛出核心活跃账户,把导入量降到两万以内。更大的数据量建议拆成多张图分主题分析,而不是试图在一个视图中呈现全部要素。
5.4 链接类型和实体类型在图表中不显示自定义图标
现象:新建的自定义实体类型在属性面板里有,但拖入关联图后显示成默认问号图标,重复设置多次仍然无效。
原因:新建实体类型时选择的图标文件路径包含中文字符或特殊符号,8.91 的图标加载逻辑不支持这类路径;另一个高频原因是没有关闭"使用默认图表样式"选项,导致自定义图标被全局样式覆盖。
解决:把图标文件放到纯英文路径下,例如D:\i2_icons\suspect.bmp,然后在新建实体类型时从该路径选择。同时检查工具 > 选项 > 显示 > 图表样式,确认没有勾选"始终使用默认样式"。遇到过开发环境的同学可能还记得,当初折腾这个问题耗时最久的环节就是没意识到默认样式优先级高于自定义图标。
5.5 关联图导出到 PDF 后中文乱码
现象:关联图上中文标签显示正常,但导出 PDF 后所有文字变成方块或乱码。
原因:8.91 导出 PDF 时使用系统字体库渲染文字,目标机器如果缺少中文字体映射,或者系统默认字体在 i2 的导出模块里被错误映射为 Latin 字符集,就会产生乱码。
解决:安装完整中文语言包并确保系统区域设置正确;导出时选择"将字体嵌入 PDF"选项(该选项在导出对话框的高级设置里)。如果条件允许,更推荐先导出高分辨率 PNG 再在报告里插入图片——绕过 PDF 字体渲染链路,效果更可控。这个坑在各类上报材料场景里几乎必现,提前做好预案能省下不少返工时间。
6. 从关联图到研判报告:导出验证与自定义模板落地
关联图做得再完整,最终还是要落到有人能看懂的产出上。复盘时我发现,图表排版往往比分析本身更能影响决策者的判断质量。8.91 的图表导出功能里,PNG 分辨率设置到 300 DPI 以上,节点标签清晰度才能真正保证——低于这个值,打印成 A3 时文字会糊成一片。
我长期使用的一套导出流程是:
- 先切换到"选择工具",框选主要分析区域
- 点击
文件 > 导出 > 图表,格式选 PNG,分辨率设为 300 DPI - 在导出设置里勾选"仅导出所选区域",避免无关节点混入成品图
- 用系统自带的截图工具做二次裁剪前,先确认图上没有叠加中的待处理标注
报告呈现层面,8.91 的分析模板可以把一套标准的分析流程固化下来。实操路径是工具 > 模式 > 新建模式,将常用的实体类型、条件格式、图表样式打包成.pat文件。后续新案件导入数据后,一键套用这套模板就能统一图表的视觉风格和字段口径。从效率角度看,这套模板帮我把每份报告的图表制作时间压缩了一半以上。
关于验证分析结论,我始终保留一个习惯:先把图导出,再在图上数节点条数——关联图的布局可能产生视觉误导,通过计数能确认真正的关联规模。某次我自以为完成了全量资金追踪,导出后手工统计才发现漏掉了 4 张关键账户卡片,因为它们被区域折叠功能隐藏了。从那以后我每次分析完毕,都会强制走一遍"取消全部折叠、按类型顺序显示实体"的完整检查,再决定是否定稿。这一步虽然花时间,但避免了把不完整的分析结论交给下一个环节。
希望这篇拆解能帮你在自己的业务场景里把这套情报分析系统软件用起来,少踩几个我已经替你踩过的坑。
免责声明:本文内容仅代表作者个人经验分享,所述软件及资源的使用方式、操作步骤等均基于通用技术实践,不构成对任何特定产品或服务的推荐、保证或背书。读者在下载、安装、使用相关软件时,应自觉遵守所在国家或地区的法律法规,确保拥有合法的软件使用授权,尊重知识产权,不将相关技术用于任何违法或不当用途。因使用本文信息而产生的任何直接或间接后果,均由使用者自行承担。
本文还有配套的精品资源,点击获取