九五皇汉

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 皇汉 汉服 美食
查看: 2903|回复: 0

如何挖掘目标人隐藏的人际关系?

[复制链接]

1008

主题

1046

帖子

9671

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9671
发表于 2020-3-19 15:55 | 显示全部楼层 |阅读模式
  • 介绍一个自动化的情报挖掘工具
再次提醒:请注意这些进攻性知识自带的防御功能 —— 如果你不想被那些恶意者挖掘到隐情,要就要首先知道恶意者是怎么做的,然后有针对性地避免 ……开源情报栏目中介绍的所有工具都应该被这样使用。
Facebook、谷歌这类监视资本主义寡头的服务都是开源情报的金矿。因为他们知道得太多了 + 人们在使用它们的过程中太不小心了。
Facebook 为其用户提供了限制其朋友列表可见性的功能。但是,众所周知,通过利用“共同朋友”功能,可以在某些条件下绕过可见性限制。
本指南将提供一种方法和工具来自动化该过程,以便最大化可以找到的隐藏朋友的数量。
请注意:社交媒体上的人际关系网络是连锅端的基本依据 —— 如果您有重要的敏感的人际关系,切勿令其在社交媒体上可见:
此外,使用相同的工具,你将看到如何构建所发现的人际网络关系图,以直观的方式呈现隐秘的信息。
本指南还将介绍如何使用 Gephi 工具绘制图谱,并提出一种方法来识别图谱中的子社区。
最后,本指南会将该调查过程应用于一个实际的示例场景:检索 Mark Zuckerberg 隐藏的人际关系网络,在图表上绘制这些关系,识别子社区,并以可使用浏览器探索的格式导出最终调查结果。
我们演示过挖掘 Facebook 的政治旋转门,还记得吗?在这里回顾:《深层政治:Facebook金字塔的人形肌理 — — 仅仅依靠开源数据,扒开利维坦的内裤》。
这种方法可以用在任何人身上。
弱者要隐私,强者要透明
免责声明:本指南和相关开源情报文章中提供的所有知识仅用于教育目的。对任何形式的滥用本网不承担任何责任。
下面开始。
重建隐藏的朋友列表
Facebook 允许其用户决定是否在他们的个人资料页面显示他们自己的朋友、以及向谁显示。在设置页面中,它还会显示以下警告:
Remember, your friends control who can see their friendships on their own Timelines. If people can see your friendship on another timeline, they’ll be able to see it in News Feed, search and other places on Facebook. If you set this to Only me, only you will be able to see your full friends list on your timeline. Other people will see only mutual friends.
这是因为 Facebook 还提供“共同朋友”功能,前提是其中至少有一个人的“朋友”列表对当前用户可见。
这个问题多年来一直为人所知,但该公司不关注这个问题。
该功能位于URL:https://www.facebook.com/browse/mutual_friends/?uid=ID1&node=ID2;其中 ID1 和 ID2 是两个 Facebook 帐户的数字ID。稍后我们将介绍如何找到任何用户的 Facebook ID。
请注意,Facebook 返回的结果既不完整也不一致。
从不同位置或帐户调用相同的功能可能会产生不同的结果。
由于“共同朋友”的功能,可以重建目标用户的好友列表的很大一部分:给定一个已知当前用户可以看到他们的朋友列表的帐户,并且,至少有一个与目标用户的共同朋友(称为枢纽用户),从他们的共同朋友开始,可以迭代地应用共同朋友功能,使用在每个步骤中找到的所有“新朋友”作为另一个迭代的输入,直到达到函数的固定点为止。
为了展示这种方法的潜力,Mattia Vinci 编写了一个简单的 Python 工具,它将自动执行上述过程。
请注意,Facebook 服务条款禁止未经许可进行抓取:因此,未经适当授权,您不得使用该工具。
该工具名为 ffff,可以从Github下载
它是用 Python 3 编写的,并使用 selenium 库和 Mozilla geckodriver 来打开浏览器并递归访问共同朋友页面。
它会继续跟踪找到的关系,以便构建关系网络图(稍后会有详细介绍)。
为了不被 Facebook 检测到抓取,该工具在每个请求之间暂停一个随机的秒数;这个间隔可以减少,但如果太少就有被平台阻挡的风险。
在该过程结束时,它会生成一个csv文件,其中包含找到的朋友列表,以及一个包含相关图表的gexf文件。
建立人际关系网络图
在进行上述调查的过程中你还可以保持跟踪目标的朋友之间存在的关系。
如果你发现目标用户T和枢纽用户P有一个共同的朋友C,那么,现在你不仅知道C是目标的朋友,而且P和C都是朋友。
迭代这个过程,你就能够构建一个沿途找到的所有人际关系的网络图,其中节点是用户,连线是现有的关系。
一旦有了图表,就可以在其上运行不同的算法,以便尝试识别网络中的现有社区。例如,在实际情况中,这可能有助于识别工作同事、家人、最亲密朋友等不同的社区。
实际案例:扎克伯格的朋友圈
举个例子,我们将尝试获取一些 Mark Zuckerberg 的 Facebook 朋友,他们肯定知道这种可能性。
请注意,您显然可以使用公共朋友列表构建用户的关系图:在这种情况下,您不需要透视用户;只需使用他/她的 Facebook ID 作为目标和支点。
找到目标的 Facebook ID
首先需要了解 Mark Zuckerberg 的 Facebook ID。为了找到 Facebook 帐户的数字ID,有多种方法:简单的 Google 搜索就可以返回许多相关在线服务。
不过,本指南最喜欢的方法是自主执行:在浏览器中打开目标的 Facebook 个人资料页面(在示例中是 Mark Zuckerberg)并检查HTML源码(Ctrl + U)。
在代码中,搜索(Ctrl + F): fb:// profile /; 应该有两个匹配,后跟相同的整数值:这个数字就是 Facebook 帐户 ID。
在本指南的例子中,由于 Mark Zuckerberg 是该平台的首批用户之一,因此这个数字很小(是 4);普通用户的数字会比较大。
Finding Facebook ID from the source code
寻找枢纽用户
你还需要找到至少一个拥有公开朋友列表的帐户(或对你来说朋友列表可见的账户)、以及至少一个与你的调查目标相关的共同朋友。
通常,一个便捷的方法是查看与目标进行交互的用户,例如通过评论或回应他帖子的人。
还要注意,为了最大化找到的“朋友”的数量,最好让枢纽用户属于不同的社区(例如:工作同事、家庭成员、体育运动伙伴等)越多越好。
Mattia Vinci 编写了一个辅助脚本,可以自动查找与给定的目标进行交互的用户;它被称为 fint.py 就包含在ffff项目的存储库中
它的工作方式与ffff相同,因此本指南将仅提供一个快速示例用法(使用 -h 显示所有可用选项)。
有关更多一般信息,请参阅Github上的项目页面
python fint.py -fu fbuser@mediaservice.net -fp fbpassword -d geckodriver.exe -t 4 -ls 10 -lp 10 -lc 5 -lr 5
上面的命令将刮取最多100条评论(-lc)和最多1000条回应(-lr)的作者,在目标用户 4(-t)的最多10个故事(-ls)和10个照片(-lp)上。
输出是一个名为 4-pivots.txt 的文件,其中包含一个 Facebook ID 列表,可以作为 ffff(选项 -P)的输入。
Finding potential pivots – users who have interacted with Mark Zuckerberg – using fint.py
由于本指南使用的目标是一个公众人物(扎克伯格),并且在 Facebook 方面有些特殊,所以,这里并不真正关心构建他朋友列表的大部分内容,更多关注的是单个枢纽用户。
为了获得这一目标,我们尝试了另一种方式:简单的搜索即可返回一篇文章,其中列出了一些扎克伯格已知的“朋友”
该名单上的第四位,Brian Chesky,目前有一个公开的朋友名单,这使其成为本测试中枢纽用户的完美候选人。
现在需要找到他的 Facebook ID。上面已经展示了一些简单的方法。如果您对使用其中一个方法感到满意,就可以跳到以下部分了。
如果都不满意,这里将提出一种不同的方法来检索最初可能看起来很复杂的用户ID,但是,当您手动浏览 Facebook 网站时,它可能是速度最快的。
方法是这样:如果访问 Brian Chesky 的朋友列表页面,你会看到URL如下所示(对于从配置文件主菜单可以访问的任何页面都是如此,例如“about”,“photos”等):
https://www.facebook.com/brianchesky/friends?lst=100028395012070%3A558259929%3A1557309584&source_ref=pb_friends_t
正如您所看到的,URL包含一个参数“lst”,它包含由字符%3A分隔的三个不同的整数值(只是字符“:”的URL编码)。
第二个整数就是用户ID,在本例中为 558259929。
您可以(并且应该)通过访问 https://www.facebook.com/558259929 仔细检查ID,并注意它重定向到 https://www.facebook.com/brianchesky
Find Facebook ID inside URL
用 ffff.py 找到隐藏的朋友
本文不包括该工具的安装说明;一些信息可以在项目页面上找到。
在以下示例中,该工具在 Windows 上的虚拟环境中运行。从官方的 mozilla项目页面下载了geckodriver.exe(如ffff项目页面上的说明所述),并将其放在与 python 脚本相同的目录中。
现在需要一个有效的 Facebook 帐户来进行抓取。我建议不要使用自己的账号,因为它可能被平台阻止。
最好的是:袜子木偶,创建一个与身份完全无关的测试帐户。更多见《如何建立一个匿名 Facebook 账户以保护个人数据的私密性?
在本示例中,我们将假装该帐户的电子邮件地址为“fbuser@mediaservice.net”,密码为“fbpassword”。
现在拥有所需的所有信息:
  • Facebook帐户邮箱(选项-fu):fbuser@mediaservice.net
  • Facebook帐户密码(选项-fp):fbpassword
  • 目标帐户ID(选项-t):4
  • 枢纽账户ID(选项-p):558259929
选项 -q 用于隐藏浏览器窗口。
python ffff.py -fu fbuser@mediaservice.net -fp fbpassword -d geckodriver.exe -t 4 -p 558259929 -q
要查看所有可用选项,请运行:python ffff.py -h
Starting the program
该程序很可能会在一段时间后遇到问题,例如超时;您可以使用 Ctrl + C 中断程序。这将保存所有结果以及可以恢复的文件:
python ffff.py -fu fbuser@mediaservice.net -fp fbpassword — resume session-4–2019050812320Resuming a session after a time out
程序终止后,所有朋友都显示在屏幕上,并创建三个不同的文件:
  • 4-friends.csv
  • 4-friends.gexf
  • session-4–20190508130137
.csv 文件包含朋友列表(ID、名称、配置文件URL);.gexf 文件包含准备在 Gephi 中打开的图表(稍后将详细介绍);最后,session 文件可用于稍后恢复程序运行,例如,如果找到任何新的枢纽用户的话。
Program termination
绘制社区图表
接下来将使用 Gephi 软件绘制扎克伯格的朋友关系图表,可能以某种方式反映关系网络中存在的子社区的结构。
这里绝不是 Gephi 的指南,也不是进行社区识别的最佳方式。这里只为了演示工具的使用方法。
首先,用 Gephi 打开 .gexf 文件。最初,它看起来像一堆凌乱的黑暗的线条和圆点。
Initial graph
从这里可以应用一些布局算法,这些算法可能有助于更深入地了解被视为社区的图表。
可以从“Overview tab”选项卡的左下窗口中选择布局。每个布局都有不同的参数:我建议都玩一下,看看它们的效果。
本指南先运行 OpenOrd,然后运行 ForceAtlas 2。
对于后者,我将 “Scaling” 值设置为10。结果尚不具有吸引力,但具有不同的形状。
Graph after running ForceAtlas2
现在可以尝试使用 “Modularity” 将节点划分到不同的社区,可以通过屏幕右侧的 “statistics” 部分计算。
在这里,你可以为“resolution”参数提供一个值:值越小,分区越多(即:更多社区)。
Partition nodes by modularity with a resolution of 0.6
现在我们可以为每个”Modularity”分配不同的颜色。
在左上角的“外观”选项卡中,选择“节点”>“分区”,并选择“Modularity Class”作为属性。这是为了更容易看懂。
单击“Palette …”可以配置要使用的颜色。
单击“应用”所有节点将根据你定义的 Modularity Class 进行着色。如果您对找到的社区不满意,可以返回上一步并选择不同的参数。
如果对图表感到满意,请转到顶部菜单中的“预览”选项卡,然后配置最终图形的显示方式。
最后,您可以以您希望的格式导出它。
Some of Mark Zuckerberg’s friendships
(上面的大图在这里
如果你想要一个交互式图表,你可以探索很多很棒的插件,可以以不同的格式导出图形。我喜欢 Sigma Exporter,你也可以试试。
最后的评论
本指南试图找到马克扎克伯格的 Facebook 朋友的一部分,尽管他的名单被隐藏了。
使用上述步骤,最终找到了335位独特的、确认的朋友关系。并且,还能够绘制出所发现的社交关系图谱。Mediaservice.net 的算法给出了令人惊讶的结果。
总之,通过这一演示您可以知道,尽管 Facebook 有所谓的隐私设置,但是,依旧可以找到大多数 Facebook 用户的社交关系中很大一部分; 并且,可以在社交关系图谱中识别不同的社区。
ffff是个有效的工具,自动化调查过程其效果是值得信任的。
如果您是防御者,请避免以任何方式将您的私密社交关系暴露在互联网上。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|九五皇汉网

GMT+8, 2024-5-4 22:25 , Processed in 0.056576 second(s), 20 queries .

九五皇汉 复兴华夏

© 反对对汉文字狱,本站畅快发感想

快速回复 返回顶部 返回列表