android arp 检测工具,android检测arp攻击

本文分析了腾讯WiFi管家的ARP检测实现,主要通过发送UDP请求遍历局域网子网下所有IP,检查ARP文件内容,判断是否存在多个网关MAC地址,从而检测ARP攻击。在检测过程中,程序首先初始化ARP信息,然后对比刷新后的ARP文件,找出可能的攻击者MAC和IP。
摘要由CSDN通过智能技术生成

前段时间突然和别人讨论到arp检测这块的实现,心血来潮,将腾讯的wifi管家给反编译了一下,看了它如何实现arp检测,下面是分析的结果。

下面是wifi管家检测arp攻击的类,进入的时候会发送一个message,然后执行handleMessage函数

public void handleMessage(Message arg8) {

int v6 = 10001;

boolean v0 = true;

super.handleMessage(arg8);

switch(arg8.what) {

case 10001: {

goto label_7;

}

case 10002: {

goto label_42;

}

}

return;

label_7:

if((bth.a(this.eES)) && (bth.b(this.eES).refresh()) && (bap.a(bth.b(this.eES)))) {

bth.c(this.eES);

if(bth.d(this.eES) == 3) {

bth.e(this.eES);

bth.a(this.eES, 0);

}

bth.b(this.eES).Fu();

try {

v0 = bth.b(this.eES, 10001);

}

catch(Exception v1) {

}

}

if(bth.f(this.eES) == null) {

return;

}

if(!v0) {

return;

}

this.sendEmptyMessageDelayed(v6, bth.g(this.eES));

return;

label_42:

bth.a(this.eES, false);

bth.c(this.eES, 0);

int v2 = 0;

boolean v1_1 = true;

while(v2 != 2) {

try {

if((bth.b(this.eES).refresh()) && (bap.a(bth.b(this.eES)))) {

if(v2 == 0) {

bth.h(this.eES);

}

else {

bth.e(this.eES);

}

bth.b(this.eES).Fu();

v1_1 = bth.b(this.eES, 10002);

if(bth.i(this.eES) != 0) {

break;

}

SystemClock.sleep(700);

}

}

catch(Throwable v2_1) {

break;

}

++v2;

}

if(bth.f(this.eES) != null && (v1_1)) {

this.sendEmptyMessageDelayed(v6, bth.g(this.eES));

}

bth.a(this.eES, true);

}

刚开始执行的时候,runnable的run函数调用handler发送10002,所以label_42是检测的入口函数,bth.h是调用this.Fo函数,首先看一下this.Fo函数:

private void Fo() {

int v1 = this.eGX.Ft();

if(v1 != 0) {

int v0;

for(v0 = 0; v0 != 256; ++v0) {

St

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值