# iOS UIActivity Sharing {{#include ../../banners/hacktricks-training.md}} # UIActivity Sharing Simplified Kuanzia iOS 6, programu za upande wa tatu zimewezeshwa **kushiriki data** kama maandiko, URLs, au picha kwa kutumia mitambo kama AirDrop, kama ilivyoelezwa katika [mwongozo wa Mawasiliano Kati ya Programu za Apple](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3). Kipengele hiki kinaonekana kupitia _karatasi ya shughuli ya kushiriki_ inayojitokeza unaposhughulika na kitufe cha "Share". Orodha kamili ya chaguzi zote za kushiriki zilizojengwa ndani inapatikana katika [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Wataalamu wa maendeleo wanaweza kuchagua kutengwa kwa chaguzi maalum za kushiriki ikiwa wanaona hazifai kwa programu yao. ## **Jinsi ya Kushiriki Data** Umakini unapaswa kuelekezwa kwa: - Aina ya data inayoshirikiwa. - Kuongeza shughuli za kawaida. - Kutengwa kwa aina fulani za shughuli. Kushiriki kunarahisishwa kupitia uundaji wa `UIActivityViewController`, ambapo vitu vinavyokusudiwa kushirikiwa vinapitishwa. Hii inafanywa kwa kuita: ```bash $ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems 0x1000df034 45 44 initWithActivityItems:applicationActivities: ``` Wak developers wanapaswa kuchunguza `UIActivityViewController` kwa shughuli na shughuli za kawaida ambazo imeanzishwa nazo, pamoja na aina zozote za `excludedActivityTypes` zilizotajwa. ## **Jinsi ya Kupokea Data** Vipengele vifuatavyo ni muhimu unapopokea data: - Tamko la **aina za hati za kawaida**. - Mwelekeo wa **aina za hati ambazo programu inaweza kufungua**. - Uthibitishaji wa **uaminifu wa data iliyopokelewa**. Bila ufikiaji wa msimbo wa chanzo, mtu anaweza bado kuchunguza `Info.plist` kwa funguo kama `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations`, na `CFBundleDocumentTypes` ili kuelewa aina za hati ambazo programu inaweza kushughulikia na kutangaza. Mwongozo mfupi juu ya funguo hizi upatikana kwenye [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), ukisisitiza umuhimu wa kufafanua na kuingiza UTIs kwa kutambuliwa kwa mfumo mzima na kuunganisha aina za hati na programu yako kwa ushirikiano katika mazungumzo ya "Fungua na". ## Mbinu ya Kujaribu ya Kijadi Ili kujaribu **kutuma shughuli**, mtu anaweza: - Kuunganisha kwenye njia `init(activityItems:applicationActivities:)` ili kukamata vitu na shughuli zinazoshirikiwa. - Kutambua shughuli zilizotengwa kwa kukamata mali ya `excludedActivityTypes`. Kwa **kupokea vitu**, inahusisha: - Kushiriki faili na programu kutoka chanzo kingine (mfano, AirDrop, barua pepe) inayochochea mazungumzo ya "Fungua na...". - Kuunganisha `application:openURL:options:` kati ya mbinu nyingine zilizotambuliwa wakati wa uchambuzi wa statiki ili kuona majibu ya programu. - Kutumia faili zisizo sahihi au mbinu za fuzzing ili kutathmini uimara wa programu. ## Marejeo - [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction) {{#include ../../banners/hacktricks-training.md}}