免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
跟我把Kali Nethunter編譯至任意手機(jī)
Kali Nethunter是一款用于安全研究的手機(jī)固件包,可以使Android設(shè)備增加“無(wú)線(xiàn)破解”、“HID攻擊”、“偽造光驅(qū)”等的硬件功能以及metasploit等軟件工具,目前官方只支持少量的Android手機(jī),然而,通過(guò)重新編譯Kali Nethunter源代碼,可以將其編譯到其他型號(hào)的手機(jī)上

本文將以O(shè)neplus one為例講解Kali Nethunter代碼的移植方式,同時(shí)也在三星的i9100g手機(jī)上測(cè)試成功

0x00 Kali Nethunter架構(gòu)分析


Kali Nethunter大體分為三個(gè)部分

  1. 定制過(guò)的手機(jī)內(nèi)核:由于需要使用OTG外接usb網(wǎng)卡、用手機(jī)模擬HID設(shè)備、用手機(jī)模擬CDROM光驅(qū),必須對(duì)手機(jī)內(nèi)核進(jìn)行修改添加對(duì)應(yīng)的驅(qū)動(dòng),以及patch相關(guān)的代碼,如果沒(méi)有這一部分修改過(guò)的內(nèi)核,Kali Nethunter將無(wú)法使用與硬件相關(guān)的所有功能

  2. chroot環(huán)境的文件系統(tǒng):所有相關(guān)的軟件程序以ARM架構(gòu)的Kali為基礎(chǔ)集成在一個(gè)文件系統(tǒng)內(nèi),通過(guò)linux的chroot功能可以在Android中跳轉(zhuǎn)至Kali文件系統(tǒng),然后把內(nèi)核相關(guān)的東西mount進(jìn)kali的文件系統(tǒng),之后就可以在這個(gè)chroot后的Kali中執(zhí)行對(duì)應(yīng)的命令了

  3. 用于提供界面的APK手機(jī)APP,僅僅是作為UI界面起展示作用,實(shí)際是通過(guò)調(diào)用chroot的Kali中的命令來(lái)實(shí)現(xiàn)所有功能的,當(dāng)然這些APP也提供了一鍵掛載并啟用Kali chroot的功能

其中修改內(nèi)核要求手機(jī)內(nèi)核代碼必須開(kāi)源,盡管內(nèi)核代碼根據(jù)GPL協(xié)議必須開(kāi)源,國(guó)內(nèi)某些手機(jī)仍然不公開(kāi)其內(nèi)核源代碼,這也是Kali Nethunter僅支持Oneplus、三星和谷歌Nexus的原因

0x01 準(zhǔn)備CM 12.1源碼以及相關(guān)環(huán)境


首先,我們?yōu)榱撕?jiǎn)化修改內(nèi)核的過(guò)程,可以直接編譯一份CyanogenMod 12.1的代碼,其中就包括了對(duì)應(yīng)機(jī)型(Oneplus one、三星i9100g)的內(nèi)核代碼。而且鑒于Kali Nethunter本身采用的就是CM 12.1的ROM,為了避免其他ROM中可能存在的兼容性問(wèn)題,建議選擇CyanogenMod支持的手機(jī)來(lái)進(jìn)行移植

你可以參考CyanogenMod官方wiki上對(duì)應(yīng)機(jī)型的編譯說(shuō)明,這里在Ubuntu上以O(shè)neplus和i9100g為例演示編譯過(guò)程

親測(cè)編譯時(shí)硬盤(pán)至少需要100G可用空間,虛擬機(jī)至少需要4GB內(nèi)存,不要問(wèn)我如果達(dá)不到要求會(huì)發(fā)生什么……全是眼淚啊

在開(kāi)始配置環(huán)境之前,先提示大家后文會(huì)有簡(jiǎn)化的環(huán)境配置方式,不過(guò)建議大家還是按部就班地用“官方”方式配置,因?yàn)閷?lái)CM可能會(huì)有新的版本出現(xiàn),而官方配置方式可以獲取到最新的代碼

比如對(duì)于Oneplus one的官方示范:http://wiki.cyanogenmod.org/w/Build_for_bacon

sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

然后64位系統(tǒng)還需要:

sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

如果遇到軟件包不存在,可以apt-cache search一下包名,看看是不是改名字了

之后同步Android代碼(代碼從google上拿,該怎么訪(fǎng)問(wèn)google是你自己要解決的問(wèn)題,下同,不再提示)

$ mkdir -p ~/bin$ mkdir -p ~/android/system$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+x ~/bin/repo

然后把~/bin加進(jìn)PATH中:

添加到~/.profile中

# set PATH so it includes user's private bin if it existsif [ -d '$HOME/bin' ] ; then    PATH='$HOME/bin:$PATH'fi

然后配置repo

$ cd ~/android/system/$ repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1

然后有兩種方式可以獲取特定設(shè)備(Oneplus One)的相關(guān)代碼文件,一種是按照CyanogenMod Wiki上的做,另一種可以去百度(來(lái)自一加社區(qū)的《玩機(jī)組出品,CyanogenMod12編譯教程》),請(qǐng)自行百度自己設(shè)備的代碼獲取方式

mkdir ~/android/cm/.repo/local_manifestsgedit ~/android/cm/.repo/local_manifests/local_manifests.xml

添加

<?xml version='1.0' encoding='UTF-8'?><manifest><project name='CyanogenMod/android_device_oneplus_bacon' path='device/oneplus/bacon' remote='github' /><project name='CyanogenMod/android_device_qcom_common' path='device/qcom/common' remote='github' /><project name='CyanogenMod/android_device_oppo_msm8974-common' path='device/oppo/msm8974-common' remote='github' /><project name='CyanogenMod/android_device_oppo_common' path='device/oppo/common' remote='github' revision='cm-12.0' /><project name='CyanogenMod/android_kernel_oneplus_msm8974' path='kernel/oneplus/msm8974' remote='github' /><project name='TheMuppets/proprietary_vendor_oppo' path='vendor/oppo' remote='github' /><project name='TheMuppets/proprietary_vendor_oneplus' path='vendor/oneplus' remote='github' /><project name='CyanogenMod/android_frameworks_opt_connectivity' path='frameworks/opt/connectivity' remote='github' revision='cm-11.0' /></manifest>

之后就可以開(kāi)始同步Android代碼了

$ repo sync

注意,到這步之后不需要再get prebuilt了,因?yàn)槲覀冇玫氖荂M 12.1,老版本的CM才需要get prebuilt

之后就是編譯了(先不要修改內(nèi)核,確保能夠編譯成功),進(jìn)入android/system文件夾

source build/envsetup.sh

使用CCACHE可以加快編譯速度,但會(huì)吃掉硬盤(pán)空間,為了速度推薦設(shè)置為50G到100G之間,非必須

export USE_CCACHE=1prebuilts/misc/linux-x86/ccache/ccache -M 50G

之后就可以開(kāi)始編譯了,bacon是設(shè)備名

$ croot$ brunch bacon

編譯成功后將會(huì)生成cm-12.1-20151127-UNOFFICIAL-bacon.zip,這個(gè)就是ROM的刷機(jī)包了

0x02 簡(jiǎn)易的CM 12.1編譯環(huán)境及代碼


所有環(huán)境配置問(wèn)題都可以用Woobuntu系統(tǒng)來(lái)解決,直接安裝Woobuntu后內(nèi)部已經(jīng)集成了Android編譯環(huán)境(包括adb)

代碼我給大家打包好了,27個(gè)G,解壓縮就好(已經(jīng)把內(nèi)核patch過(guò)了),在Woobuntu中編譯命令如下:

tar -jxvf cm12_bacon_source.tar.bz2cd android/system/sudo su rootsource build/envsetup.shexport USE_CCACHE=1prebuilts/misc/linux-x86/ccache/ccache -M 20Gcrootbrunch bacon

簡(jiǎn)單解釋一下,由于壓縮檔的文件屬主是我,而不是你,部分文件權(quán)限會(huì)有問(wèn)題,所以建議直接root權(quán)限編譯(其實(shí)更優(yōu)雅的方式是chown -R,只不過(guò)27個(gè)G代碼都來(lái)chown一遍實(shí)在受不了),sudo時(shí)會(huì)要求輸入你的密碼,而我CCACHE只用了20G是因?yàn)槲业挠脖P(pán)實(shí)在太小,我最后親自從安裝Woobuntu開(kāi)始測(cè)試了一遍,確認(rèn)可以編譯成功。

簡(jiǎn)而言之,這個(gè)簡(jiǎn)化版本只需要你自己處理設(shè)備相關(guān)代碼就好了,比如說(shuō)i9100g就只需要重新按照wiki設(shè)置breakfast i9100g和extract-files(如果網(wǎng)上能搜到更簡(jiǎn)單的方式更好),之后brunch i9100g即可

0x03 修改Android內(nèi)核


在修改Android內(nèi)核時(shí),我們需要交叉編譯ARM架構(gòu)的代碼

cd到對(duì)應(yīng)機(jī)型的kernel文件夾下,例如演示的oneplus內(nèi)核目錄為 [email protected]:~/android/system/kernel/oneplus/msm8974

export ARCH=arm

之后在arch/arm/configs文件夾里面找到cm所用的defconfig,然后如下所示

make cyanogenmod_bacon_defconfig

之后就可以make menuconfig了

make menuconfig

然后就是根據(jù)Nethunter的github WIKI上的說(shuō)明自由選擇驅(qū)動(dòng)程序了,不過(guò)我只需要ATH9K的芯片驅(qū)動(dòng),所以直接在Device drivers -> Network device supports -> Wireless lan 里面選中Atheros Wireless Cards ,如果你使用其他芯片的無(wú)線(xiàn)網(wǎng)卡,請(qǐng)自己去選中對(duì)應(yīng)的驅(qū)動(dòng)程序

然后在networking support -> Wireless 里面把Generic IEEE 802.11 Networking Stack (mac80211) 選中

由于Oneplus自己默認(rèn)選中了OTG驅(qū)動(dòng),如果您為別的機(jī)型編譯,請(qǐng)檢查device driver里面usb的otg選項(xiàng)有沒(méi)有選中

設(shè)置完畢后保存退出

make savedefconfigcp defconfig arch/arm/configs/cyanogenmod_bacon_defconfigmake mrproper

您如果是第一次嘗試,可以重新編譯一遍CM看看有無(wú)錯(cuò)誤,然后我們就可以開(kāi)始patch內(nèi)核了

wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patchpatch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch

然后到https://github.com/pelya/android-keyboard-gadget里面尋找自己內(nèi)核版本的patch,這里是3.4內(nèi)核

wget https://raw.githubusercontent.com/pelya/android-keyboard-gadget/master/kernel-3.4.patchpatch -p1 < kernel-3.4.patch

如果不出意外的話(huà),這個(gè)patch一定會(huì)報(bào)錯(cuò),因?yàn)閗ernel代碼是不斷更新著的,不過(guò)別擔(dān)心,我們可以手動(dòng)去patch

報(bào)錯(cuò):

[email protected]:~/android/system/kernel/oneplus/msm8974$ patch -p1 < kernel-3.4.patchpatching file drivers/usb/gadget/Makefilepatching file drivers/usb/gadget/android.cHunk #1 succeeded at 75 (offset 1 line).Hunk #2 succeeded at 2192 with fuzz 2 (offset 101 lines).Hunk #3 FAILED at 2156.Hunk #4 FAILED at 2481.2 out of 4 hunks FAILED -- saving rejects to file drivers/usb/gadget/android.c.rejpatching file drivers/usb/gadget/f_hid.cHunk #7 succeeded at 403 (offset -9 lines).Hunk #8 succeeded at 422 (offset -9 lines).Hunk #10 succeeded at 594 (offset -4 lines).Hunk #11 succeeded at 614 (offset -6 lines).Hunk #12 succeeded at 662 (offset -8 lines).Hunk #13 succeeded at 713 (offset -8 lines).patching file drivers/usb/gadget/f_hid.hpatching file drivers/usb/gadget/f_hid_android_keyboard.cpatching file drivers/usb/gadget/f_hid_android_mouse.c[email protected]:~/android/system/kernel/oneplus/msm8974$

可以看到是android.c第3和第4處patch失敗,我們?nèi)ナ謩?dòng)patch

前兩處都已經(jīng)patch成功了,所以跳過(guò)就好了

解釋一下:左邊是patch代碼,右邊是目前的android.c,patch的意思是要在&uasp_function,下面加一個(gè)&hid_function,,第四處也去找一下用大腦找到位置敲上代碼即可

然后就是重新編譯CM,然后生成的刷機(jī)包就是Nethunter超強(qiáng)定制內(nèi)核的CM 12.1了

i9100g編譯時(shí)直接成功,而Oneplus則會(huì)報(bào)個(gè)錯(cuò),是跟usb驅(qū)動(dòng)有關(guān)的,找到報(bào)錯(cuò)位置代碼,然后發(fā)現(xiàn)是一個(gè)結(jié)構(gòu)體還有一個(gè)函數(shù)在使用前沒(méi)有定義,于是我無(wú)比瀟灑地把這個(gè)調(diào)用函數(shù)的代碼!刪!掉!了!,經(jīng)測(cè)試刪掉該代碼不影響手機(jī)正常功能,Nethunter功能也經(jīng)過(guò)測(cè)試非常穩(wěn)定

0x04 編譯Kali Nethunter的rootfs


在Kali Nethunter的github頁(yè)面內(nèi)有詳細(xì)的說(shuō)明,強(qiáng)烈建議在Kali中進(jìn)行Nethunter的編譯

mkdir ~/arm-stuffcd ~/arm-stuffgit clone https://github.com/offensive-security/gcc-arm-linux-gnueabihf-4.7export PATH=${PATH}:/root/arm-stuff/gcc-arm-linux-gnueabihf-4.7/bingit clone https://github.com/offensive-security/kali-nethuntercd ~/arm-stuff/kali-nethunter./build-deps.sh./androidmenu.sh

在編譯時(shí)選擇僅編譯rootfs(因?yàn)槲覀円约翰傩膬?nèi)核的事情了)

0x05 刷機(jī)測(cè)試


如果你不會(huì)刷機(jī),請(qǐng)先百度一下如何正常刷機(jī),比如unlock bootloader啦,TWRP啦,這些百度去吧

刷機(jī)順序?yàn)椋合人yanogenMod,再刷Kali Nethunter的rootfs

下圖是在測(cè)試HID攻擊的i9100g

檢查各項(xiàng)功能:

  1. 檢查DriveDroid能否模擬USB光驅(qū)

  2. 檢查UsbKeyboard能否偽造鼠標(biāo)和鍵盤(pán)設(shè)備

  3. 插上OTG和USB無(wú)線(xiàn)網(wǎng)卡,看看能不能使用Wifite破解無(wú)線(xiàn)密碼

0x06 可能遇到的問(wèn)題


在移植至三星i9100g手機(jī)時(shí),由于手機(jī)內(nèi)存儲(chǔ)空間不夠大(Kali Nethunter刷機(jī)方式要求至少有2GB的可用空間),因此一直刷機(jī)失敗,當(dāng)終于定位到問(wèn)題所在后,最終決定采用其他的方式加載Kali Nethunter的rootfs。首先把kali nethunter的rootfs編譯出來(lái),然后做成一個(gè)img磁盤(pán)鏡像文件,之后把這個(gè)img文件放在sd卡中,動(dòng)態(tài)掛載到/data/local/kali-armhf中,這樣就解決了內(nèi)存儲(chǔ)空間不夠的問(wèn)題

如果編譯內(nèi)核出錯(cuò),您在debug的時(shí)候可以只編譯內(nèi)核,toolchains在prebuilt文件夾里面,自己設(shè)置cross_compile變量吧(常見(jiàn)是把亂選的驅(qū)動(dòng)清除掉,能解決絕大部分報(bào)錯(cuò))

0x07 后話(huà)


以后我們就可以開(kāi)始玩耍Nethunter了,比如把整個(gè)WooyunWifi都移植到手機(jī)上,再做上離線(xiàn)劫持釣魚(yú)的功能……不過(guò)這些都是編譯完Nethunter之后的事情了

結(jié)尾圖片:在手機(jī)上的WooyunWifi,開(kāi)啟了熱點(diǎn)用于釣魚(yú)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
推薦12款安卓手機(jī)Wi
安卓手機(jī)刷入Kali Nethunter流程
科普·如何用手機(jī)黑掉別人
搭建自己的Android源碼倉(cāng)庫(kù) | 飛熊在天
在Android設(shè)備上安裝kali的最佳方案與Linux下如何刷機(jī)
黑客工具Kali Linux發(fā)布新版本2022.4
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服