📄 453.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="320.htm">上一层</a>][<a href="454.htm">下一篇</a>]
<hr><p align="left"><small>发信人: guru ( Darkness), 信区: UNP <br>
标 题: 查看本机是否为混杂模式 <br>
发信站: UNIX编程 (2001年07月12日09:48:38 星期四), 站内信件 <br>
<br>
>转贴者注:相关内容请看UNP16章 ioctl部分。 <br>
>自己刚看了这本分,可惜没环境编译。:(以后了。:) <br>
/* <br>
察看本机interface是否被设为混杂模式的小程序 <br>
在redhat6.2,freebsd4.3均通过测试。 <br>
solaris下这样编译: <br>
gcc -o checkpromiscuous checkpromiscuous -lsocket <br>
by e4gle<e4gle@hackermail.com> from e4gle.org <br>
*/ <br>
#include <stdio.h> <br>
#include <sys/types.h> <br>
#include <sys/uio.h> <br>
#include <sys/ioctl.h> <br>
#include <sys/socket.h> <br>
#include <net/if.h> <br>
#define MAXINTERFACES 16 <br>
#ifndef MLEN <br>
#define MLEN 128 /* needed for slcompress.h */ <br>
#endif <br>
#endif <br>
#ifndef _SYS_MAP_H <br>
#define _SYS_MAP_H <br>
#pragma ident "@(#)map.h 1.26 99/09/13 SMI" <br>
#ifdef __cplusplus <br>
extern "C" { <br>
#endif <br>
struct map; <br>
#ifdef _KERNEL <br>
extern void rmfree(void *, size_t, ulong_t); <br>
extern ulong_t rmalloc(void *, size_t); <br>
extern ulong_t rmalloc_wait(void *, size_t); <br>
extern ulong_t rmalloc_locked(void *, size_t); <br>
extern void *rmallocmap(size_t); <br>
extern void *rmallocmap_wait(size_t); <br>
extern void rmfreemap(void *); <br>
#endif /* KERNEL */ <br>
#ifdef __cplusplus <br>
} <br>
#endif <br>
#endif /* _SYS_MAP_H */ <br>
#define SIOCGIFCONF 0x8912 <br>
#define SIOCGIFFLAGS 0x8913 <br>
main (argc, argv) <br>
register int argc; <br>
register char *argv[]; <br>
{ <br>
register int fd, intrface, nr_promiscuous_devices = 0; <br>
struct ifreq buf[MAXINTERFACES]; <br>
struct ifconf ifc; <br>
printf("***************************************************************** <br>
**************\n"); <br>
printf("*The program is which to see the interface have being promiscuous <br>
mode or not.*\n"); <br>
printf("* code&upgrade by e4gle<e4gle@ha <br>
ckermail.com>*\n"); <br>
printf("***************************************************************** <br>
**************\n"); <br>
printf("\n"); <br>
if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0) { <br>
ifc.ifc_len = sizeof buf; <br>
ifc.ifc_buf = (caddr_t) buf; <br>
if (!(ioctl (fd, SIOCGIFCONF, (char *) &ifc))) { <br>
intrface = ifc.ifc_len / sizeof (struct ifreq); <br>
if (!intrface) { <br>
(void)fprintf(stderr, "checkpromiscuous: Not found the network inter <br>
fa <br>
ces.\n"); <br>
(void)exit(0); <br>
} <br>
(void)fprintf(stderr, "%d network interfaces found:\n", intrface); <br>
while (intrface-- > 0) { <br>
(void)fprintf (stderr, " %s: ", buf[intrface].ifr_name); <br>
if (!(ioctl(fd, SIOCGIFFLAGS, (char *) &buf[intrface]))) { <br>
if (buf[intrface].ifr_flags & IFF_PROMISC) { <br>
(void)fprintf (stderr, "*** IN PROMISCUOUS MODE ***\n"); <br>
nr_promiscuous_devices++; <br>
} else { <br>
(void)fprintf (stderr, "Normal\n"); <br>
} <br>
} else { <br>
char str[256]; <br>
(void)sprintf (str, "checkpromiscuous: ioctl device %s", buf[intrfac <br>
e].if <br>
r_name); <br>
perror(str); <br>
} <br>
} <br>
} else <br>
perror ("checkpromiscuous: ioctl"); <br>
} else <br>
perror ("checkpromiscuous: socket"); <br>
(void)close (fd); <br>
(void)fprintf (stderr, "%d of them %s in promiscuous mode.\n", <br>
nr_promiscuous_devices, nr_promiscuous_devices==1 ? "is" : "are"); <br>
return nr_promiscuous_devices; <br>
} <br>
<br>
<br>
-- <br>
telnet apue.dhs.org 2323 or http://apue.dhs.org <br>
APUE:UNIX环境编程 <br>
UNP:UNIX网络编程 <br>
UKP:UNIX内核编程 <br>
BIBLE:高手传经 <br>
FTPDOC:资源共享 <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.36.177] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="320.htm">上一层</a>][<a href="454.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -