如何知道网站利用JS通过WMI获取客户端哪些硬件的信息

如何知道网站利用JS通过WMI获取客户端哪些硬件的信息,第1张

你觉得wmi不安全的话,可以把它关了,但是要知道别人获取你的什么信息那就难了。

一个可行的方式是定义相应的规则截获相应的数据封包,然后再查看封包的内容。这方面的规则你可就得好好研究研究windows体系结构了,估计在这里很难有人能回答你

winform可以,webform几乎就不可能除非写插件,

这是在winform下的。客户端

using SystemRuntimeInteropServices;

using SystemManagement;

using System;

public class HardwareInfo

{

//取机器名

public string GetHostName()

{

return SystemNetDnsGetHostName();

}

//取CPU编号

public String GetCpuID()

{

try

{

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mcGetInstances();

String strCpuID = null ;

foreach( ManagementObject mo in moc )

{

strCpuID = moProperties["ProcessorId"]ValueToString();

break;

}

return strCpuID;

}

catch

{

return "";

}

}//end method

//取第一块硬盘编号

public String GetHardDiskID()

{

try

{

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT FROM Win32_PhysicalMedia");

String strHardDiskID = null ;

foreach(ManagementObject mo in searcherGet())

{

strHardDiskID = mo["SerialNumber"]ToString()Trim();

break;

}

return strHardDiskID ;

}

catch

{

return "";

}

}//end

public enum NCBCONST

{

NCBNAMSZ =16, /////// absolute length of a net name /

MAX_LANA =254, /////// lana's in range 0 to MAX_LANA inclusive /

NCBENUM =0x37, /////// NCB ENUMERATE LANA NUMBERS /

NRC_GOODRET =0x00, /////// good return /

NCBRESET =0x32, /////// NCB RESET /

NCBASTAT =0x33, /////// NCB ADAPTER STATUS /

NUM_NAMEBUF =30, /////// Number of NAME's BUFFER /

}

[StructLayout(LayoutKindSequential)]

public struct ADAPTER_STATUS

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst=6)]

public byte[] adapter_address;

public byte rev_major;

public byte reserved0;

public byte adapter_type;

public byte rev_minor;

public ushort duration;

public ushort frmr_recv;

public ushort frmr_xmit;

public ushort iframe_recv_err;

public ushort xmit_aborts;

public uint xmit_success;

public uint recv_success;

public ushort iframe_xmit_err;

public ushort recv_buff_unavail;

public ushort t1_timeouts;

public ushort ti_timeouts;

public uint reserved1;

public ushort free_ncbs;

public ushort max_cfg_ncbs;

public ushort max_ncbs;

public ushort xmit_buf_unavail;

public ushort max_dgram_size;

public ushort pending_sess;

public ushort max_cfg_sess;

public ushort max_sess;

public ushort max_sess_pkt_size;

public ushort name_count;

}

[StructLayout(LayoutKindSequential)]

public struct NAME_BUFFER

{

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] name;

public byte name_num;

public byte name_flags;

}

[StructLayout(LayoutKindSequential)]

public struct NCB

{

public byte ncb_command;

public byte ncb_retcode;

public byte ncb_lsn;

public byte ncb_num;

public IntPtr ncb_buffer;

public ushort ncb_length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_callname;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNCBNAMSZ)]

public byte[] ncb_name;

public byte ncb_rto;

public byte ncb_sto;

public IntPtr ncb_post;

public byte ncb_lana_num;

public byte ncb_cmd_cplt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=10)]

public byte[] ncb_reserve;

public IntPtr ncb_event;

}

[StructLayout(LayoutKindSequential)]

public struct LANA_ENUM

{

public byte length;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTMAX_LANA)]

public byte[] lana;

}

[StructLayout(LayoutKindAuto)]

public struct ASTAT

{

public ADAPTER_STATUS adapt;

[MarshalAs(UnmanagedTypeByValArray, SizeConst=(int)NCBCONSTNUM_NAMEBUF)]

public NAME_BUFFER[] NameBuff;

}

public class Win32API

{

[DllImport("NETAPI32DLL")]

public static extern char Netbios(ref NCB ncb);

}

//取网卡mac

public string GetMacAddress()

{

string addr="";

try

{

int cb;

ASTAT adapter;

NCB Ncb=new NCB();

char uRetCode;

LANA_ENUM lenum;

Ncbncb_command = (byte)NCBCONSTNCBENUM;

cb = MarshalSizeOf(typeof(LANA_ENUM));

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

lenum = (LANA_ENUM)MarshalPtrToStructure(Ncbncb_buffer, typeof(LANA_ENUM));

MarshalFreeHGlobal(Ncbncb_buffer);

if(uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

for(int i=0; i < lenumlength ;i++)

{

Ncbncb_command = (byte)NCBCONSTNCBRESET;

Ncbncb_lana_num = lenumlana[i];

uRetCode = Win32APINetbios(ref Ncb);

if(uRetCode != (short)NCBCONSTNRC_GOODRET)

return "";

Ncbncb_command = (byte)NCBCONSTNCBASTAT;

Ncbncb_lana_num = lenumlana[i];

Ncbncb_callname[0]=(byte)'';

cb = MarshalSizeOf(typeof(ADAPTER_STATUS)) + MarshalSizeOf(typeof(NAME_BUFFER))(int)NCBCONSTNUM_NAMEBUF;

Ncbncb_buffer = MarshalAllocHGlobal(cb);

Ncbncb_length = (ushort)cb;

uRetCode = Win32APINetbios(ref Ncb);

adapteradapt = (ADAPTER_STATUS)MarshalPtrToStructure(Ncbncb_buffer, typeof(ADAPTER_STATUS));

MarshalFreeHGlobal(Ncbncb_buffer);

if (uRetCode == (short)NCBCONSTNRC_GOODRET)

{

if(i>0)

addr += ":";

addr = stringFormat("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}",

adapteradaptadapter_address[0],

adapteradaptadapter_address[1],

adapteradaptadapter_address[2],

adapteradaptadapter_address[3],

adapteradaptadapter_address[4],

adapteradaptadapter_address[5]);

}

}

}

catch

{

}

return addrReplace(' ', '0');

}

}

以上就是关于如何知道网站利用JS通过WMI获取客户端哪些硬件的信息全部的内容,包括:如何知道网站利用JS通过WMI获取客户端哪些硬件的信息、C#如何获取客户端CPU,硬盘,MAC序列号、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9329684.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存