iOS扫描局域网iP并通过libpcap获取对应的mac地址

前提条件:越狱状态下
起因:由于苹果在iOS7以后对sysctlioctl进行了技术处理,无法获取到正确的MAC地址,返回的都是02:00:00:00:00:00


通过查找资料,得知cydia有一款插件可以进行扫描出MAC地址,名称为arp-scan,这款插件在http://repo.hackyouriphone.org/https://mcapollo.githun.io/Public/这2个源都可以下载到

-w480

然后ssh到手机上使用arp-acan -l查看,如下图

-w632

图中就能看到对应IP的MAC地址.


功能是实现了,但是这个要集成到代码里,可不好搞啊,刚开始我是直接提取了deb,一共包括2个deb,一个是arp-scan.deb,一个是libpcap.deb,后面这个是其依赖库!
然后我想的是直接通过代码来安装这2个deb,之后使用命令启动,最后发现要成功安装deb这需要很多的依赖,和我的需求不符.

然后我又想了个办法,自己编译一个支持arm64arp-scan从网络上下载然后放到手机中,将libpcap依赖也从网络下载到手机中,然后使用命令启动,虽然这样好像可以实现,但是麻烦之处在于,需要将编译的二进制文件复制到/usr/local/bin目录下,还有其他的依赖文件,需要手动修复路径,而且通过命令执行出来的结果还需要我手动去提取,也是一件很麻烦的事.而且只能同步等待扫描结果,如果子网很大,那将一直卡主.也只能放弃此方法


最终解决方案

自己将libpcap编译成.a静态库,然后使用源码集成arp-scan,从而就可以实现功能,也不需要使用命令执行了,但这里面也踩了不少坑(主要还是因为对跨平台不熟).

首先去tcpdump下载所需要的依赖libpcap
我下载的是libpcap-1.9.1.tar.gz,然后将其解压,文件为

-w209

然后我们开始编译支持arm64结构的libpcap
由于libpcap支持cmake
所以我们在当前目录下建立一个build文件夹,然后打开终端进入build文件夹执行
cmake .. -G Xcode
-w215

等执行完成后,在build目录下就会自动生成个XCode工程
-w1044

双击pcap.xcodeproj打开工程选择pcap_static
-w598

-w1145

然后将其改为如下图
-w715

然后pcap-bpf.c会报错,将其内容注释即可成功build(但是最后打包出来的有没有功能缺陷暂时未知)因为我后面用了另一种方式获取了静态库.这是使用lipo查看打包出来的架构
-w673

因为对交叉编译不太熟悉,所以我也不知道这个编译出来的库是否可以用,在后面的工作中,我发现了可以直接从手机中导出,所以我直接使用了导出的静态库,以后对交叉编译熟悉了再回过来看这个报错问题.


cydia中可以看到libpcap的目录结构

-w254

直接使用scp或者爱思助手直接将这些文件全部拖出来
-w414

可以直接下载我提取的:下载地址


编译arp-scan

在这里先下载arp-scan的源码
然后使用MonkeyDev建立一个Commond-Line工程,将pacp的静态库和相应头文件拉进去,头文件可以在上面的下载地址里找到

-w270

将arp的这几个文件拖进来
-w244

因为arp-scan也使用了交叉编译,有很多的宏,所以arp-scan.c文件里我自己将宏去掉,然后将一些实现全部移到了.c文件里
-w332

但要注意一点是在get_hardware_address方法实现里,

if (ifm->ifm_type != RTM_IFINFO || (ifm->ifm_addrs & RTA_IFP) == 0)

中的RTM_IFINFORTA_IFP<net/route.h>中的宏定义,iOS里是没有这个宏的,所以我直接将其复制过来

if (ifm->ifm_type != 0xe || (ifm->ifm_addrs & 0x10) == 0)

arp-scan.c中的main函数改个名字

-w281

然后在main.m里调用
-w341

然后打包成二进制到手机上测试
-w536

大功告成!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339