描述:有的设备在局域网通信的时候构造的包源IP目的IP都是0.0.0.1,这样的包是不可路由的,完全通过接入交换机或路由器后寻找对应的MAC地址来通信,路由和交换机都提供端口与MAC地址绑定(内部维护一个MAC地址和端口的对应关系表),它们会把包发给特定MAC地址绑定的端口上接入的设备
这里比如有两台设备MAC地址分别为M1和M2,它们在局域网通信,分别接入交换机的Port-1和Port-2,而我的PC机(MAC地址M3)接入交换机的Port-3,请问我的PC机如何能截获到M1和M2之间的数据包呢?
即时是混杂模式,但由于交换机的MAC端口绑定,包根本就不会由交换机的Port-3经过PC机的网卡,所以完全截获不到。
曾构想过MAC地址欺骗,由PC机构造源为M2的包发送给向交换机,让交换机误认为Port-3上绑定的是M2,这样可以暂时收到M1发给M2的包,但是当还有一个M4也接入变成M1/M2/M4三设备通信的时候,PC机每次只能伪装成其中一个去监听别人的回复,无法很流畅的截获到三设备之间通信的所有包
这个问题困扰我很久了,向高手请教一下!
12 个解决方案
#1
不懂,帮顶...
#2
先顶一个!
#3
晕,呵呵!后来发现不用那么麻烦,还是先谢谢这两位仁兄了
#4
散分了~~~
#5
顶!!!
#6
解决了就把主要细节给公布下哈
#7
最简单的方法是执行arping(Linux)命令,通过IP地址获取MAC地址的相应信息。
但是,前提是在同一个子网下,否则无法得到MAC地址。
本地MAC地址可如下获取:
但是,前提是在同一个子网下,否则无法得到MAC地址。
本地MAC地址可如下获取:
Enumeration<NetworkInterface> nic = NetworkInterface.getNetworkInterfaces();
for (; nic.hasMoreElements(); ) {
NetworkInterface n = nic.nextElement();
System.out.println(n.getName() + " : " + java.util.Arrays.toString(n.getHardwareAddress()));
}
#8
楼主能不能透露一下自己的思路???
#9
接分来
#10
截分。。呵呵
#11
我感觉不大可能实现,就像你说的,你同一时间只能用一个mac地址,也就是说你每次只能伪装成一个同网内机器去接受他的数据,不可能同时接受3台机器的。
不过我好像记得是交换机每次都会把数据包同时发到每台机器上,然后由各自终端机来判断是否是本机的包,并进行读取。如果是这样的话,你可以一直监测本机接收的包,并根据包不断改变本机mac地址,这样理论可以接受局域网内的所有数据包。(提醒一下,如果真的能这样做的话,你的机器会非常卡的,而且,需要你有一个足够大的硬盘)
不过我好像记得是交换机每次都会把数据包同时发到每台机器上,然后由各自终端机来判断是否是本机的包,并进行读取。如果是这样的话,你可以一直监测本机接收的包,并根据包不断改变本机mac地址,这样理论可以接受局域网内的所有数据包。(提醒一下,如果真的能这样做的话,你的机器会非常卡的,而且,需要你有一个足够大的硬盘)
#12
不懂,接分了
呵呵
呵呵
#1
不懂,帮顶...
#2
先顶一个!
#3
晕,呵呵!后来发现不用那么麻烦,还是先谢谢这两位仁兄了
#4
散分了~~~
#5
顶!!!
#6
解决了就把主要细节给公布下哈
#7
最简单的方法是执行arping(Linux)命令,通过IP地址获取MAC地址的相应信息。
但是,前提是在同一个子网下,否则无法得到MAC地址。
本地MAC地址可如下获取:
但是,前提是在同一个子网下,否则无法得到MAC地址。
本地MAC地址可如下获取:
Enumeration<NetworkInterface> nic = NetworkInterface.getNetworkInterfaces();
for (; nic.hasMoreElements(); ) {
NetworkInterface n = nic.nextElement();
System.out.println(n.getName() + " : " + java.util.Arrays.toString(n.getHardwareAddress()));
}
#8
楼主能不能透露一下自己的思路???
#9
接分来
#10
截分。。呵呵
#11
我感觉不大可能实现,就像你说的,你同一时间只能用一个mac地址,也就是说你每次只能伪装成一个同网内机器去接受他的数据,不可能同时接受3台机器的。
不过我好像记得是交换机每次都会把数据包同时发到每台机器上,然后由各自终端机来判断是否是本机的包,并进行读取。如果是这样的话,你可以一直监测本机接收的包,并根据包不断改变本机mac地址,这样理论可以接受局域网内的所有数据包。(提醒一下,如果真的能这样做的话,你的机器会非常卡的,而且,需要你有一个足够大的硬盘)
不过我好像记得是交换机每次都会把数据包同时发到每台机器上,然后由各自终端机来判断是否是本机的包,并进行读取。如果是这样的话,你可以一直监测本机接收的包,并根据包不断改变本机mac地址,这样理论可以接受局域网内的所有数据包。(提醒一下,如果真的能这样做的话,你的机器会非常卡的,而且,需要你有一个足够大的硬盘)
#12
不懂,接分了
呵呵
呵呵