我必须用wifi适配器发送数据包到另一台计算机,而不连接到任何网络,目标是Windows 7和更高版本。首先,ad(据我理解)不适合我的需要,因为它需要连接。
我有两个想法:
我使用的是: C#和一台Win7 PC和一台Win7笔记本电脑来测试程序。SharpPcap发送数据包。去检查他们是否到了。
我尝试了第二种方法:
static void Main(string[] args)
{
WinPcapDeviceList devs = WinPcapDeviceList.Instance;
foreach (WinPcapDevice wdev in devs)
{
System.Console.Write("Device: ");
System.Console.WriteLine(wdev.Description);
foreach (var addr in wdev.Addresses)
System.Console.WriteLine(addr.Addr);
System.Console.WriteLine("--------------");
}
System.Console.Write("Select device: #");
int selected = int.Parse(System.Console.ReadLine());
var dev = devs[selected]; //yes, no checking for oob...
dev.Open();
while (true)
{
byte[] physBroad = new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
EthernetPacket etherPacket = new EthernetPacket(
dev.MacAddress,
new PhysicalAddress(physBroad),
EthernetPacketType.IpV4);
IPv4Packet ip4Packet = new IPv4Packet(
new IPAddress(0),
IPAddress.Broadcast);
ip4Packet.Protocol = IPProtocolType.UDP;
etherPacket.PayloadPacket = ip4Packet;
UdpPacket udpPacket = new UdpPacket(
80, //tried with different port setups
80);
udpPacket.PayloadData = Encoding.UTF8.GetBytes("test packet");
ip4Packet.PayloadPacket = udpPacket;
dev.SendPacket(etherPacket);
}
}如果不连接到同一个网络,它们就会被丢弃(不能到达Wireshark)。只有在同一个网络上,我才能看到数据包。
对于第一个,我知道IEEE 802.11,但我找不到任何关于如何制作和发送这些包。在没有像AirPcap这样的专用硬件的情况下能够做到这一点吗?如果没有必要的话,我也想避免给司机写信。
ps:我的个人电脑里有一个Edimax无线局域网卡,我的笔记本电脑里有一个Mediatek MT763E 802.11bgn Wifi适配器。我在它们上安装了相同版本的Wireshark,但是我不能打开监视器模式,并且不能将链接层类型设置为IEEE-802.11,只能设置为以太网和DOCSIS类型。
发布于 2014-09-03 10:35:33
将WiFi SSID更改为消息:-)

或者这个:

https://stackoverflow.com/questions/25631060
复制相似问题