JSP 如何获得本地硬件信息?(100分)

  • 主题发起人 主题发起人 Yong
  • 开始时间 开始时间
Y

Yong

Unregistered / Unconfirmed
GUEST, unregistred user!
JSP 如何获得本地硬件信息?
比如获得主板的序列号或硬盘的序列号。
 
什么地方用到?想不出那里会有这种需求。没事找事干吧
如果非要用的话JINI调用本地C++库
 
这是不可以的,不符和安全理念.
浏览器可以访问本地信息,还有什么隐私可言?
 
这怎么可能呢?
 
JAVA的书上说,不可能!
 
歪门邪道
 
如果在internet上发布的程序,因为JVM的安全机制,你是无法完成这一点,如果只是在
本地运行一个console,可以用c/c++编写,通过java的native(本地方法)调用机制。
不妨试试看。
 
如果在internet上发布的程序,因为JVM的安全机制,你是无法完成这一点,如果只是在
本地运行一个console,可以用c/c++编写,通过java的native(本地方法)调用机制。
不妨试试看。
 
我想知道为什么顶楼的有这个需求。
说不定我们帮你解决你的需要。
 
首先我觉得这种提法说不对:Jsp在服务器端运行,是绝对不会碰到客户端的硬件的。
你应该说:用网页脚本vbs或js如何得到客户端各种信息。
微软有个插件可以在脚本中访问修改注册表等,可以访问客户端信息。但到非常底层的
硬件一级怕就难了,微软再敢提供这样一个插件非被骂死不可。
 
好象数字签名的applet可以。
呵呵,听说而已。
 
web应该不行吧!
swing和frame好像可以,原来看过一次。
 
你只能得到ip而已。
 
获取主板的工业序列号完全可以实现,注意是硬盘外壳上的序列号,不是格式化后的序列
号,C语言源程序如下(注:该程序由顶尖高手丁凯所写):
#include <windows.h>
#include <stdio.h>
WORD pw[256];
static DWORD idt, int_idt;
static DWORD Base;
static WORD Entry;
#pragma warning (disable:4035)
static int inp(WORD rdx)
{
_asm xor eax, eax
_asm mov dx, rdx
_asm in al, dx
}
static WORD inpw(WORD rdx)
{
_asm xor eax, eax
_asm mov dx, rdx
_asm in ax, dx
}
static void outp(WORD rdx, int ral)
{
_asm mov dx, rdx
_asm mov eax, ral
_asm out dx, al
}
static int WaitIde()
{
int al;
while ((al=inp(0x1F7))>=0x80) ;
return al;
}
static void ReadIDE()
{
int al;
int i;
WaitIde();
outp(0x1F6,0xA0);
al = WaitIde();
if ((al&amp;0x50)!=0x50) return;
outp(0x1F6,0xA0);
outp(0x1F7,0xEC);
al = WaitIde();
if ((al&amp;0x58)!=0x58) return;
for (i=0;i<256;i++) {
pw = inpw(0x1F0);
}
}
static void __declspec( naked ) NowInRing0()
{
_asm {
push ebp
mov ebp,esp
call ReadIDE
cli
mov ebx, int_idt
mov ax, Entry
mov word ptr [ebx-4], ax
mov eax, Base
shr eax, 16
mov [ebx+2], ax
sti
leave
iretd
}
}
void GetIDEInfo()
{
DWORD dwExcept;
dwExcept = (DWORD)NowInRing0;
_asm {
mov eax, fs:[0]
push eax
sidt [esp-02h]
pop ebx
mov idt, ebx
add ebx, 0x1C
mov int_idt, ebx
mov eax, [ebx]
mov [Base], eax
mov ax, [ebx-4]
mov [Entry], ax
cli
mov esi, dwExcept
push esi
mov [ebx-4], si
shr esi, 16
mov [ebx+2], si
pop esi
sti
int 3
}
}
main()
{
char s[80];
register i,j;
GetIDEInfo();
for (i=0,j=0;i<10;i++) {
s[j++]=pw[10+i]>>8;
s[j++]=pw[10+i]&amp;0xFF;
}
s[j] = 0;
printf("Serial=%s/n", s);
return 0;
}
 
wittyboy!!怎么用啊?????
 
>>老人家
你那段代码只能在WIN98下运行,在WINNT下不行
>>Yong
我想你搞错了,JSP是运行在服务器端的,数据是信息的来源,在你提交给服务器的信息中根本
没有包含本地硬件的数据,请问JSP从何得到客户硬盘的信息?即使要实现,也不应通过JSP,而应
通过APPLET或JAVA SCRIPT这些在客户机上运行的小程序或脚本语言,APPLET是从JPanel继承来的,只要Frame能实现的,Applet也可能能
实现,不过为了绕过安全检查,恐怕的用数字签名。
 
多人接受答案了。
 
后退
顶部