论坛: 编程破解 标题: 在*BSD上得到硬盘硬件序列号的方法 复制本贴地址    
作者: NetDemon [netdemon]    ADMIN   登录
读了一天多的原码,跑了不少弯路,终于找到方法了,苦啊~~~ 

a.out 0 0 得到第一个ide的主盘的信息 a.out 0 1 得到副盘的信息
a.out 1 0 得到第二个ide的主盘的信息 a.out 1 1 得到副盘的信息

以次类推

代码:

/* get atadisk serial.no for *BSD
* Copyright (C) 20CN Security Group 2005.
* By NetDemon <netdemon@20cn.net>
* http://www.20cn.net/
*/

#include <sys/types.h>
#include <sys/ata.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
main(int argc, char **argv)
{
struct ata_cmd iocmd;
int fd ,dev;

if ((fd = open("/dev/ata", O_RDWR)) < 0){
printf("device not found \n" );
exit(1);
}

if (argc < 3){
printf("usage: %s channel device \n", argv[0]);
exit(1);
}

bzero(&iocmd, sizeof(struct ata_cmd));
dev = atoi(argv[2]);
iocmd.channel = atoi(argv[1]);
iocmd.device = dev;
iocmd.cmd = ATAGPARM;
if (ioctl(fd, IOCATA, &iocmd) < 0){
printf("IO error \n");
exit(1);
}

printf("device model          %.40s\n", iocmd.u.param.params[dev].model);
printf("serial number        %.20s\n", iocmd.u.param.params[dev].serial);
printf("firmware revision    %.8s\n", iocmd.u.param.params[dev].revision);

}





[此贴被 NetDemon(netdemon) 在 04月13日03时59分 编辑过]

地主 发表时间: 05-04-13 03:56

回复: TecZm [teczm]   版主   登录
ATA? PATA? SATA和SCSI也同样么?

B1层 发表时间: 05-04-13 09:00

回复: NetDemon [netdemon]   ADMIN   登录
和SCSI不一样,SCSI是另外的方法了

B2层 发表时间: 05-04-13 17:33

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号