当前位置: 技术问答>linux和unix
linux 设置 网卡混杂模式
来源: 互联网 发布时间:2015-11-03
本文导语: linux 设置 网卡混杂模式 sock=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL)); while(1) { n=recvfrom(sock,buffer,2048,0,NULL,NULL); ....... } 在linux 下 用C语言 实现了 截获 与本机通信的 IP包 请问 大家 如何 在linux 下 用...
linux 设置 网卡混杂模式
sock=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
while(1)
{
n=recvfrom(sock,buffer,2048,0,NULL,NULL);
.......
}
在linux 下 用C语言 实现了 截获 与本机通信的 IP包
请问 大家 如何 在linux 下 用C语言 设置 网卡 为混杂 模式,谢谢,请详细点
我在网上找了一些,但是,还是不能抓到一个局域网中其他机子的通信数据包,小局域网使用交换机连接起来的。大家知道怎么才能抓到???谢谢,谁能给我一些代码呀?谢谢!!
45.int Set_Promisc(char *interface, int sock ) {
46. struct ifreq ifr;
47. strncpy(ifr.ifr_name, interface,strnlen(interface)+1);
48. if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)) {
/*Could not retrieve flags for the interface*/
49. perror("Could not retrive flags for the interface");
50. exit(0);
51. }
52. printf("The interface is ::: %sn", interface);
53. perror("Retrieved flags from interface successfully");
54. ifr.ifr_flags |= IFF_PROMISC;
55. if (ioctl (sock, SIOCSIFFLAGS, &ifr) == -1 ) {
/*Could not set the flags on the interface */
56. perror("Could not set the PROMISC flag:");
57. exit(0);
58. }
59. printf("Setting interface ::: %s ::: to promisc", interface);
60. return(0);
61. }
sock=socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
while(1)
{
n=recvfrom(sock,buffer,2048,0,NULL,NULL);
.......
}
在linux 下 用C语言 实现了 截获 与本机通信的 IP包
请问 大家 如何 在linux 下 用C语言 设置 网卡 为混杂 模式,谢谢,请详细点
我在网上找了一些,但是,还是不能抓到一个局域网中其他机子的通信数据包,小局域网使用交换机连接起来的。大家知道怎么才能抓到???谢谢,谁能给我一些代码呀?谢谢!!
45.int Set_Promisc(char *interface, int sock ) {
46. struct ifreq ifr;
47. strncpy(ifr.ifr_name, interface,strnlen(interface)+1);
48. if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)) {
/*Could not retrieve flags for the interface*/
49. perror("Could not retrive flags for the interface");
50. exit(0);
51. }
52. printf("The interface is ::: %sn", interface);
53. perror("Retrieved flags from interface successfully");
54. ifr.ifr_flags |= IFF_PROMISC;
55. if (ioctl (sock, SIOCSIFFLAGS, &ifr) == -1 ) {
/*Could not set the flags on the interface */
56. perror("Could not set the PROMISC flag:");
57. exit(0);
58. }
59. printf("Setting interface ::: %s ::: to promisc", interface);
60. return(0);
61. }
|
int open_fd()
{
int f, s;
struct ifreq ifr;
/*建立套接字*/
if ((f = socket(AF_INET, SOCK_PACKET, htons(0x800)))
{
int f, s;
struct ifreq ifr;
/*建立套接字*/
if ((f = socket(AF_INET, SOCK_PACKET, htons(0x800)))