问题标签 [fingerprinting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4683 浏览

android - 设备指纹识别(Android 和 iOS)

即使在我的应用程序被卸载并再次安装后,我也需要一种唯一识别 android 和 iOS 设备的方法。ANDROID_ID 和 UUID 都不起作用。也许有一些专门用于此任务的库?

0 投票
0 回答
239 浏览

javascript - 在发送到服务器之前编辑数据(特别是浏览器指纹)?

我一直在研究浏览器指纹识别并获得了该领域的一些知识。浏览器指纹的演示可以在panopticlick.eff.org找到。然而,我担心的一个问题是它们是多么容易被操纵,或者我认为是这样。据我了解,有两种方法可以操纵它们。

1. 直接操作它们

这是给定的,要更改指纹,您只需在浏览器中欺骗此类指纹脚本收集的值。例如,您可以欺骗:

a) 其他标头中的用户代理字符串。

b) JS-Elements-and-API's通过使用 ObjectDefineProperty 来编辑它们的值

c)更具体的指纹识别方法,例如通过安装操作指纹的扩展程序进行 Canvas 指纹识别

等等......

然而,这种方法对诸如WebGL 指纹之类的主动指纹识别方法不是很有效,因为它们不容易被欺骗。

但第二种方法更有趣一些,令人失望的是,关于它是否合理的信息并不多。

2. 在发送到服务器之前编辑数据

所以基本上,在脚本收集了所有信息之后,它(我在这里猜测)创建一个哈希然后将其发送到服务器,或者它将数据发送到服务器并在那里创建一个哈希。现在,如果出于恶意目的,我决心在特定站点上破坏浏览器指纹识别,我所要做的就是启动像Fiddler这样的应用程序,找到(可能)通过其将数据发送到服务器的 POST,然后编辑数据。对于那些不知道 Fiddler 是什么的人,它是一个应用程序,可以路由从代理通过您的网络发出的所有请求和响应,因此您可以在将任何请求发送到浏览器/服务器之前查看和编辑任何请求。似乎很容易。

我的问题

现在,因为我对所有请求-响应的东西都没有太多了解,这让我怀疑我的方法 2。所以最后我想问的是:

1)我对如何将浏览器指纹发送到服务器的了解是否正确?即,通过 POST。我相信应该是因为这是将数据传输到服务器的唯一方法?

2)如果可能,那么站点可以实施(或已经实施)什么样的对策来确保数据在发送到服务器之前没有被更改,或者至少,使它更难要完成吗?

3)是否有可靠的方法来捕捉这些方法?

0 投票
1 回答
2024 浏览

ssl - 在 ESP8266 (Arduino IDE) 上使用 BearSSL 进行指纹验证

我正在使用 Arduino 提供的库中的 BearSSL,即 WiFiSecureClient 类。我采用参考实现来获得一个简单的 Python 实现服务器和作为客户端的 ESP8266 板之间的安全 TCP 连接。

我使用 OpenSSL 导出了密钥和证书,并使用它们来提供 Python 套接字 SSL 包装器。一切正常,可以交换消息,但是 WifiSecureClient 无法验证证书。这里是节点的部分代码:

如前所述,我可以发送和接收消息(我不知道它们是加密的还是未加密的回退)但是步骤

总是失败。指纹是使用 OpenSSL 作为 SHA1 密钥导出的。我通过用另一台 PC 连接到服务器、获取证书并重新计算其指纹来仔细检查了这一点。如果我尝试联系 api.github.com 之类的公共服务器(在示例中是默认设置),则代码可以正常工作。如您所见,我已经通过调用 BearSSL 的适当 API 方法来允许使用自签名证书。

有什么我错过的吗,例如我是否必须拥有一个完整的钥匙链或其他东西?

提前致谢!

0 投票
0 回答
131 浏览

firefox - 为什么我的浏览器会共享已安装的字体?

浏览器不共享 http 请求中的字体。不过,可以通过 javascript 分析字体。

是否可以阻止 javascript 分析我安装的字体?


老问题:

访问网站时,从我的浏览器发送到服务器的请求包含我系统上安装的字体。

为什么会这样?为什么浏览器会为第三方请求(如图像或脚本)共享已安装的字体?

Afaik 许多网站只会从互联网上下载任何字体以正确显示网站。所以服务器没有必要知道本地安装的字体。此外,我怀疑任何基于可用字体的设计个性化(我错了吗?)。

是否有可能阻止这些数据的广播,例如防止指纹识别?

0 投票
1 回答
146 浏览

php - 用 libsodium 散列信用卡

我需要存储我用户的信用卡哈希(指纹)以供将来识别,以便始终轻松显示他们的订单,而无需通过我的支付提供商的卡查找。

我需要一个非常短的 PHP 算法,但sodium_crypto_shorthash它不是抗碰撞的,这让我怀疑它。

是否有任何安全的无冲突PHP 7哈希算法可以在 bin2hex 之后输出最大 12 长度?

0 投票
2 回答
3590 浏览

android - 如何验证 APK 上的签名证书是否与 SHA256 指纹匹配?

在此处输入图像描述

请参考截图。

如果我得到了 APK 文件,如何验证 APK 上的签名证书是否与提到的 SHA256 指纹匹配?

0 投票
1 回答
46 浏览

cordova - 使指纹独一无二的一件或多件事情?

我有一个用科尔多瓦写的应用程序。我想用用户数据制作指纹以跟踪安装。单击时,我们进行哈希处理。如果此哈希值与安装中的哈希值相等.. 没关系,安装时计数 + 1。我尝试使用 ip...lat..lng...,但 ip 正在从移动网络更改,并且单击的哈希值与安装的哈希值不相等。我也尝试使用客户端 js(但用户代理不同,因为我在使用 WebView 的 cordova InAppBrowser 插件中使用)。有时分辨率会有所不同..取决于我认为使用的浏览器。

我可以用什么来使指纹独一无二?

0 投票
1 回答
474 浏览

javascript - 绕过给定网站上的指纹2.js

我不是在互联网上被跟踪和指纹.js 的最大粉丝,请参阅这里https://github.com/Valve/fingerprintjs2,不幸的是这样做做得很好。我已经在谷歌上搜索了很长时间,但我没有找到一个好的解决方案,这就是我在这里写的原因。

因为只是禁用 JavaScript 不是一个选项,因为它或多或少会破坏我试图研究如何混淆指纹的所有内容,以便我可以在需要时更改 I,因此我可以在它之后挂钩到网站的 JavaScript已经完成了fingerprint2.js,但在它被发送回服务器之前?不幸的是,我对这个领域并不精通,所以我不完全确定我的建议是否可行。

任何其他有效规避这一点的方式也将受到高度赞赏。

编辑:或者是否可以覆盖部分算法?

0 投票
1 回答
74 浏览

java - Android - 怀疑没有传感器的指纹

我做了很多研究,找不到我需要的东西。
我需要使用没有指纹传感器的设备制作指纹,例如三星 S5摩托罗拉 G3等旧设备......没有生物识别传感器的设备。

我想知道我是否有触摸屏或相机......
有什么办法可以做到吗?
或者你可以指出一些图书馆?

0 投票
0 回答
39 浏览

data-structures - 快速结构识别

我想知道一种聪明而有效的方法来区分另一个数据结构。

如果我们假设数据结构以 JSON 树的形式存储在一个数组中,那么问题可以总结如下:

我想出的可能解决方案包括:

  1. 手工制作的硬编码规则,例如if 'another_key' in data,但是当数据条目的数量和不同类型的数量增加时,维护起来会很繁重。
  2. 结构指纹:对除叶子之外的整个树进行散列,并使用散列来识别唯一的数据结构。"data" : [ ... ]如果条目的数量是固定的,这将是一个很好的解决方案。
  3. Schemas ( JSON Schema , XML Schema , ...),但我觉得这对于所讨论的问题来说有点“过度设计”。

您是否知道解决此问题和类似问题的更好方法?


编辑:更多示例

想象一下,有一个(损坏的)序列化 aBook[] books没有关于它是什么类型的书并且需要恢复原始格式(或等效的东西)的信息。

另外,为了简单起见,我使用了 C#,这是一个普遍的问题。