window系统和Linux系统查看磁盘序列号

在Windows10中,可以通过Win+R打开命令提示符,然后使用wmicdiskdrivegetserialnumber命令来获取磁盘序列号。而在Linux系统中,用户需打开终端,利用lsblk-n-oserial/dev/sda命令查看,这里的/sda需替换为实际的磁盘设备名。

window10 系统查看磁盘序列号步骤

1.  按 win + r 组合键打开命令终端。

2. 执行如下命令查看磁盘序列号

 wmic diskdrive get serialnumber

linux 系统查看磁盘序列号步骤

1.打开命令行终端

2.执行如下命令查看磁盘序列号

 lsblk  -n  -o serial /dev/sda    // sda代表磁盘盘符,根据需要查看(执行ls /dev/sd* )

<think> 由于安全限制,现代浏览器中直接获取MAC地址设备识别码通常不可行,但可以通过其他方式获取部分设备信息。以下是几种合法获取设备信息的方法: ### 1. 获取操作系统类型 ```javascript // 通过用户代理字符串判断操作系统 function getOS() { const userAgent = navigator.userAgent; if (userAgent.includes('Win')) return 'Windows'; if (userAgent.includes('Mac')) return 'MacOS'; if (userAgent.includes('Linux')) return 'Linux'; if (userAgent.includes('Android')) return 'Android'; if (userAgent.includes('iOS')) return 'iOS'; return 'Unknown'; } console.log('操作系统:', getOS()); ``` ### 2. 获取浏览器信息 ```javascript console.log('浏览器名称:', navigator.userAgentData.brand || navigator.appName); console.log('浏览器版本:', navigator.userAgentData.version || navigator.appVersion); ``` ### 3. 获取设备类型(移动/桌面) ```javascript function getDeviceType() { return /Mobi|Android/i.test(navigator.userAgent) ? 'Mobile' : 'Desktop'; } ``` ### 4. 获取屏幕信息 ```javascript const screenInfo = { resolution: `${screen.width}x${screen.height}`, colorDepth: `${screen.colorDepth}位`, availableSize: `${screen.availWidth}x${screen.availHeight}` }; ``` ### 5. 获取网络状态 ```javascript const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection; if (connection) { console.log('网络类型:', connection.type); console.log('网络速度:', connection.downlink + 'Mb/s'); } ``` ### 6. 获取时区语言 ```javascript console.log('时区:', Intl.DateTimeFormat().resolvedOptions().timeZone); console.log('语言:', navigator.language || navigator.userLanguage); ``` ### 7. 设备识别码的替代方案(指纹生成) ```javascript // 使用FingerprintJS库生成设备指纹 import FingerprintJS from '@fingerprintjs/fingerprintjs'; (async () => { const fp = await FingerprintJS.load(); const result = await fp.get(); console.log('设备指纹:', result.visitorId); })(); ``` ### 重要限制说明: 1. **MAC地址**:由于隐私安全原因,浏览器禁止获取MAC地址 2. **设备序列号**:浏览器环境下无法获取 3. **精确硬件信息**(如CPU型号、内存大小):无法直接获取 ### 替代方案: - **企业环境**:使用ActiveX控件(仅IE)或Chrome扩展程序 - **原生应用**:通过Electron、React Native等框架调用原生API - **后台配合**:通过Java/Python等后台语言获取后传给前端 ### Electron示例(桌面应用) ```javascript // 主进程 const { app, systemPreferences } = require('electron'); const os = require('os'); app.whenReady().then(() => { const mac = os.networkInterfaces().en0.find(i => i.mac !== '00:00:00:00:00:00').mac; const serial = systemPreferences.getMediaAccessStatus('serial'); // 发送到渲染进程 mainWindow.webContents.send('device-info', { os: os.type(), mac, serial }); }); ``` §§相关问题§§ 1. 如何在移动端浏览器中获取更多设备信息(如电池状态、传感器数据)? 2. 使用设备指纹技术生成唯一标识符时如何平衡用户隐私识别准确性? 3. 在哪些场景下可以通过Web Bluetooth API获取设备硬件信息? 4. 如何通过WebAssembly提升设备指纹的生成效率唯一性? 5. 企业级应用中如何安全地实现设备绑定(如MAC地址绑定)的前后端验证? </think>### 获取本机设备信息的完整指南 #### 浏览器环境下获取设备信息(前端JavaScript) ```javascript // 获取操作系统浏览器信息 const deviceInfo = { // 操作系统 os: { name: (() => { const ua = navigator.userAgent; if (/Windows/.test(ua)) return "Windows"; if (/Macintosh|Mac OS X/.test(ua)) return "macOS"; if (/Linux/.test(ua)) return "Linux"; if (/Android/.test(ua)) return "Android"; if (/iPhone|iPad|iPod/.test(ua)) return "iOS"; return "Unknown OS"; })(), version: navigator.platform, architecture: navigator.cpuClass || "Unknown" }, // 浏览器信息 browser: { name: navigator.appName, version: navigator.appVersion, userAgent: navigator.userAgent }, // 屏幕信息 screen: { resolution: `${screen.width}x${screen.height}`, colorDepth: `${screen.colorDepth}-bit`, orientation: screen.orientation ? screen.orientation.type : "Unknown" }, // 设备类型 deviceType: /Mobi|Android/i.test(navigator.userAgent) ? "Mobile" : "Desktop", // 网络信息 network: navigator.connection ? { type: navigator.connection.effectiveType, downlink: navigator.connection.downlink + " Mbps", rtt: navigator.connection.rtt + " ms" } : null, // 位置信息(需要用户授权) async getLocation() { if (!navigator.geolocation) return null; return new Promise((resolve) => { navigator.geolocation.getCurrentPosition( position => resolve({ latitude: position.coords.latitude, longitude: position.coords.longitude }), error => resolve(`位置获取失败: ${error.message}`) ); }); }, // 设备指纹(近似唯一标识) async getFingerprint() { const components = { canvas: (() => { const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); ctx.textBaseline = 'top'; ctx.font = '14px Arial'; ctx.fillText('BrowserFingerprint', 2, 2); return canvas.toDataURL(); })(), plugins: Array.from(navigator.plugins).map(p => p.name).join(','), fonts: (() => { const fonts = new Set(); for (const font of document.fonts) fonts.add(font.family); return Array.from(fonts).join(','); })(), hardwareConcurrency: navigator.hardwareConcurrency || "Unknown" }; // 生成哈希指纹 const data = JSON.stringify(components); const buffer = new TextEncoder().encode(data); const hash = await crypto.subtle.digest('SHA-256', buffer); return Array.from(new Uint8Array(hash)) .map(b => b.toString(16).padStart(2, '0')) .join(''); } }; // 使用示例 (async () => { console.log("操作系统:", deviceInfo.os.name); console.log("设备类型:", deviceInfo.deviceType); console.log("设备指纹:", await deviceInfo.getFingerprint()); })(); ``` #### 桌面应用获取完整设备信息(Node.js/Electron) ```javascript const os = require('os'); const si = require('systeminformation'); // 需安装: npm install systeminformation async function getFullDeviceInfo() { return { // 操作系统信息 os: { platform: os.platform(), release: os.release(), arch: os.arch(), hostname: os.hostname() }, // CPU信息 cpu: await si.cpu(), // 内存信息 memory: { total: os.totalmem(), free: os.freemem(), usage: `${(1 - os.freemem()/os.totalmem()) * 100}%` }, // 磁盘信息 disks: await si.diskLayout(), // 网络信息 network: { interfaces: os.networkInterfaces(), mac: Object.values(os.networkInterfaces()) .flat() .find(i => i.mac && i.mac !== '00:00:00:00:00:00')?.mac || "Unknown" }, // 系统序列号(需要管理员权限) systemSerial: await (async () => { try { const { system } = await si.get({system: 'serial'}); return system.serial; } catch { return "Permission Denied"; } })(), // 电池信息(笔记本) battery: await si.battery().catch(() => null), // 图形信息 graphics: await si.graphics() }; } // 使用示例 getFullDeviceInfo().then(console.log); ``` #### 移动端原生获取设备信息(React Native示例) ```javascript import { Platform, NativeModules } from 'react-native'; // 获取设备唯一ID import DeviceInfo from 'react-native-device-info'; // npm install react-native-device-info async function getMobileDeviceInfo() { return { deviceId: DeviceInfo.getUniqueId(), brand: DeviceInfo.getBrand(), model: DeviceInfo.getModel(), os: Platform.OS, osVersion: Platform.Version, isEmulator: await DeviceInfo.isEmulator(), macAddress: await DeviceInfo.getMacAddress().catch(() => "Permission Denied"), ipAddress: DeviceInfo.getIpAddress(), deviceName: DeviceInfo.getDeviceName(), batteryLevel: DeviceInfo.getBatteryLevelSync(), isTablet: DeviceInfo.isTablet(), memory: DeviceInfo.getTotalMemory() / 1024 / 1024 + " MB" }; } ``` #### 重要注意事项 1. **隐私限制**:浏览器中无法直接获取MAC地址、序列号等敏感信息 2. **权限要求**: - 位置信息需要用户授权 - 完整硬件信息需要应用获得系统权限 3. **跨平台差异**: - Windows:使用`wmic csproduct get uuid`获取序列号 - macOS:`system_profiler SPHardwareDataType` - Linux:`sudo dmidecode -s system-serial-number` 4. **设备指纹替代方案**: - 组合Canvas指纹、WebGL指纹、字体列表等 - 使用`navigator.deviceMemory`获取内存大小 - `navigator.hardwareConcurrency`获取CPU核心数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值