V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ai0by
V2EX  ›  程序员

PHP /JS 如何获取客户端的 Mac 地址?

  •  
  •   ai0by · 2018-09-20 10:40:28 +08:00 · 6594 次点击
    这是一个创建于 2245 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要做一个验证,想了各种办法都不行。

    老板要求用 PHP 实现,现阶段用 JS 或者 PHP 实现都可以,其他语言也可以,借鉴一下思路...

    要求不使用 AcitiveX 和 IE 有可能吗?

    第 1 条附言  ·  2018-09-20 13:07:34 +08:00
    总结了大家的意见,这事恐怕是很难完成了,感谢大家的回答~
    第 2 条附言  ·  2018-09-20 14:46:02 +08:00
    大家不要吐槽需求什么的,这个我身边的几个朋友也不知道,也确实是我不懂这一块,不然我也不会问了
    有需要的朋友可以看看 lihongjie0209 的答案,或者像 airdge 说的做一个 IP 验证吧
    41 条回复    2018-09-21 09:28:49 +08:00
    ChoateYao
        1
    ChoateYao  
       2018-09-20 10:45:16 +08:00
    没有,不现实,Mac 地址能伪造。
    ligthdawn
        2
    ligthdawn  
       2018-09-20 10:45:21 +08:00
    应该不行吧,如果可以获取也只是获取到网关的 mac 地址。mark 一下,等大神回答
    ashes1122
        3
    ashes1122  
       2018-09-20 10:46:11 +08:00
    弹框,提示用户:请输入您的 Mac 地址。
    VensonEEE
        4
    VensonEEE  
       2018-09-20 10:51:40 +08:00
    让人装 ActiveX 不光可以要 mac 连哪个兜里有啥文件都能搞出来。
    aa514758835
        5
    aa514758835  
       2018-09-20 10:54:47 +08:00
    @ashes1122 真天才
    KuroNekoFan
        6
    KuroNekoFan  
       2018-09-20 11:02:44 +08:00 via iPhone
    java 来说 request 对象有 remoteIp,php/nodejs 自己看文档吧,浏览器端 js 应该是无法获取的
    KuroNekoFan
        7
    KuroNekoFan  
       2018-09-20 11:03:17 +08:00 via iPhone
    哦 mac,当我没说过😅
    fcten
        8
    fcten  
       2018-09-20 11:05:24 +08:00
    如果 php/js 能做到这件事,那不是平时上网啥隐私都被扒干净了?
    whypool
        9
    whypool  
       2018-09-20 11:11:25 +08:00
    不能

    如果要获取,用 nw/el 封一个客户端,里面加 node 的包可以获取 mac 地址
    ai0by
        10
    ai0by  
    OP
       2018-09-20 11:11:34 +08:00
    看来是我想多了😅
    alwayshere
        11
    alwayshere  
       2018-09-20 11:25:52 +08:00
    反正都能伪造,你获取有啥用
    imn1
        12
    imn1  
       2018-09-20 11:27:54 +08:00
    可以获取的话,还有那么多研究 browser fingerprint 的都是傻子?
    respect11
        13
    respect11  
       2018-09-20 11:39:22 +08:00
    刚毕业的时候,老板也有这种要求,然后我走了。。。
    delectate
        14
    delectate  
       2018-09-20 11:47:05 +08:00
    没办法,不可能。
    LuffyGu
        15
    LuffyGu  
       2018-09-20 13:13:13 +08:00
    貌似不容易,其实就是很难
    xenme
        16
    xenme  
       2018-09-20 13:19:21 +08:00 via iPhone
    搞到一个人 0day 就有了
    cqu1980
        17
    cqu1980  
       2018-09-20 13:19:48 +08:00   ❤️ 1
    你们老板不会提需求,应该是:网站可以感应用户的想法,随时提供用户想要的样式和功能。比如用户向购物,立马变成购物网站,用户想搜索,立马变成搜索引擎,用户想下载软件,立马变成软件下载网站。一个网站,可以提供用户全部想想。
    lihongjie0209
        18
    lihongjie0209  
       2018-09-20 13:20:07 +08:00
    @ligthdawn 和网关有什么关系
    lihongjie0209
        19
    lihongjie0209  
       2018-09-20 13:30:13 +08:00   ❤️ 2
    假如 PHP/JS 是服务端, 答案是不可能.
    你需要了解一下网络的下三层是怎么传输的, MAC 地址是二层地址, 在客户端到客户的路由器, 路由器到路由器, 路由器到你们的服务器之间的每一跳都会改变, 哪怕你拦截你服务器的所有二层流量, 那么你拿到的也是把流量转发给你的路由器的 MAC, 更不用说这些高级语言无法拦截二层流量.



    假如你的 JS 是跑在客户的浏览器中的, 答案是不可能.
    浏览器是七层的软件, 下三层传输对于浏览器是完全透明的, 你的浏览器都不知道有 MAC 地址的存在, 更不用说提供一个 API 让你获取 MAC 地址了.


    假如你的 JS 是跑在客户端的 NodeJS 中, 答案是可能的.
    但是看你的提问, 你应该不想开发一个 NodeJS 软件然后给客户安装, 最后只是获取客户的 MAC 地址.
    airdge
        21
    airdge  
       2018-09-20 13:42:14 +08:00   ❤️ 1
    弄 ip 验证不是简单点
    ai0by
        22
    ai0by  
    OP
       2018-09-20 14:33:19 +08:00
    @lihongjie0209 感谢您的回答,我们只是单纯的做个网站的验证,因为内容比较保密所以想到了这个验证方式
    ai0by
        23
    ai0by  
    OP
       2018-09-20 14:34:22 +08:00
    @cqu1980 这个需求其实我一开始认为是可行的,何况老板了,可能我对网络方面不太懂,但是您说的这些有些夸张了吧。。
    ai0by
        24
    ai0by  
    OP
       2018-09-20 14:35:09 +08:00
    @airdge IP 验证已经弄好了,感谢您的回答
    wuhhhh
        25
    wuhhhh  
       2018-09-20 14:48:57 +08:00 via iPhone
    保密用 mac。。。你老板跟艳红可以说互相理解了
    aiyov
        26
    aiyov  
       2018-09-20 14:49:09 +08:00
    用 ie 浏览器获取过 mac 地址
    rabbbit
        27
    rabbbit  
       2018-09-20 14:55:02 +08:00   ❤️ 1
    用不着 mac,收集浏览器 /系统指纹就能定位了

    例如
    系统字体
    GPU 信息
    时区 分辨率 浏览器版本
    Canvas 指纹
    WebGL 指纹
    AudioContext 指纹
    WebRTC
    t6attack
        28
    t6attack  
       2018-09-20 14:59:57 +08:00   ❤️ 1
    先说 mac 地址的问题。这个地址本身就是可以随便改的,在网卡属性里改。这是很常见的操作。
    比如校园里的 dr.com ,你的网费到期了,想借用同学的帐号上网。就需要先把你的网卡 mac 改成他的。
    ai0by
        29
    ai0by  
    OP
       2018-09-20 16:19:42 +08:00
    @wuhhhh 我们也没想那么多,哈哈,就是感觉无线网可以绑定 mac 地址,就让网页也绑定一下,想不到这个问题这么尴尬。
    ai0by
        30
    ai0by  
    OP
       2018-09-20 16:20:29 +08:00
    @t6attack 感谢感谢,现在也是认识到自身的不足了,回去补习去,哈哈
    ai0by
        31
    ai0by  
    OP
       2018-09-20 16:21:17 +08:00
    @rabbbit 感谢,感谢,回头我研究研究
    beastk
        32
    beastk  
       2018-09-20 16:24:57 +08:00 via iPhone
    除非有漏洞,要不然不可能,不然广告联盟不得搞翻天了
    ligthdawn
        33
    ligthdawn  
       2018-09-20 18:03:55 +08:00
    @lihongjie0209 当发送一个 ip 包的时候,通过 ARP 协议获取的 MAC 地址并不是一个真正的远程端的 MAC 地址,而是网关的 MAC 地址,我是这么理解的。有问题的话,请指出
    fox0001
        34
    fox0001  
       2018-09-20 18:36:27 +08:00 via Android
    要不用 cookies。验证成功后,把唯一码写在 cookie 中,没有唯一码或唯一码有误的,要求客户端再次验证
    yingfengi
        35
    yingfengi  
       2018-09-20 18:39:11 +08:00 via Android
    七层模型了解下
    lihongjie0209
        36
    lihongjie0209  
       2018-09-20 19:18:19 +08:00
    @ligthdawn 你的报文传给网关之后, 网关转发给运营商, 运营商内部再转发, 最后到服务器, 每一次转发源 MAC 地址和目的 MAC 地址都会改变, 所以哪怕能获取也获取不到
    x86
        37
    x86  
       2018-09-20 19:22:27 +08:00
    弹框让输入,前 5 次直接返回错误迷惑下他
    BQsummer
        38
    BQsummer  
       2018-09-20 21:49:11 +08:00 via Android
    设备指纹还是比较成熟的,能不能用要看具体需求
    benzzz
        39
    benzzz  
       2018-09-20 21:55:58 +08:00 via iPhone
    chrome 插件不知道可不可以
    githua
        40
    githua  
       2018-09-20 23:09:40 +08:00
    定制一个浏览器,请求你网站的时候,把 mac 附上就行了。
    hermithacker
        41
    hermithacker  
       2018-09-21 09:28:49 +08:00
    挂马?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1054 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.