Ist TCP-Paketfilterung auf mobilen Plattformen möglich?

Ich bin daran interessiert, dass meine mobile App im Hintergrund läuft und TCP-Pakete filtert.

Ich weiß, ich werde Beschränkungen wegen Sandboxing, jedes Betriebssystem Privileg Ebenen und wie iOS Handles Hintergrund Aufgaben, so möchte ich bestätigen, wenn es möglich ist, es auf iOS und Android zu tun.

  • Android: Wie mache ich ein klickbares Kartenbild mit jedem Land, das eine andere Aktion erzeugt?
  • Wie AppBarLayout.ScrollingViewBehavior's Mathe funktioniert?
  • Überprüfen Sie den Fortschritt für Upload & Download (Google Drive API für Android oder Java)
  • Was ist der Lebenszyklus eines Fragments, wenn replace () genannt wird?
  • Wie kann ich HTTP-Anforderungs-Header von einer Android-App ändern?
  • Wie kann ich das Bild vertikale Mitte in einem linearen Layout ausrichten
  • Haben Android und iOS können Sie analysieren und ändern Pakete gehen durch TCP-Ports? Wenn es möglich ist, wie? Könnte ich es tun, während meine App auf dem Hintergrund bleibt?

  • Zugriffskamera über OpenMAX in Android
  • Wie schalte ich die Android-Taschenlampe ein
  • Bitmap aus TextView (getDrawingCache) immer null
  • So erstellen Sie resizable ImageView in Android
  • Undefinierte Referenz Zu 'cv :: initModule_nonfree ()' In Android
  • Raum zwischen Sternen von ratingBar
  • 4 Solutions collect form web for “Ist TCP-Paketfilterung auf mobilen Plattformen möglich?”

    IOS

    Ich glaube nicht, dass es auf iOS möglich ist.

    Ich habe keine öffentliche API für die Netzwerküberwachung / Paketfilterung gefunden. Es gibt eine Möglichkeit, dass diese API existiert, aber es ist versteckt. Aber in diesem Fall Apple App Store Review Richtlinien heißt es:

    2.5 Apps, die nicht-öffentliche APIs verwenden, werden abgelehnt

    Wenn Sie ein spezielles Zitat benötigen, um zu zeigen, dass es nicht möglich ist, können Sie dies verwenden:

    IOS unterstützt keine Paketverfolgung direkt. Allerdings, wenn Sie Ihr iOS-Gerät an einen Mac über USB anschließen …

    Von offiziellen Apple Technical Q & A QA1176 .

    Alternativen

    Die nächste beste Sache ist, einen Proxy-Server manuell in Einstellungen zu konfigurieren und dann den Traffic auf der Serverseite zu filtern. Der Proxy lokal ausführen, auf dem Gerät ist keine Option wegen der Einschränkungen von iOS Hintergrundaufgaben:

    2.16 Multitasking Apps können nur Hintergrunddienste für ihre beabsichtigten Zwecke verwenden: VoIP, Audiowiedergabe, Standort, Taskvervollständigung, lokale Meldungen usw.

    Auch dieser Beitrag schlägt vor, dass es möglich sein könnte, eine VPN-Verbindung programmgesteuert auf iOS 8 einzurichten. Es würde auch verlangen, den Verkehr des Gerätes zu senden, und ich bin mir nicht sicher über die Einhaltung dieser Methode mit Richtlinien.

    Nicht-Alternativen

    Einige Apps bieten Funktionalität, um den Netzwerkverkehr zu messen. Aber sie verwenden dedizierte API für Netzwerk-Statistiken: iPhone Data Usage Tracking / Monitoring .

    Es gibt auch Möglichkeiten, Paket-Trace auf iOS über USB-Kabel beschrieben hier .

    Android

    Auf Android können Sie das Gerät so konfigurieren, dass es Ihre App als VPN-Dienst verwendet . Aber:

    • Es ist erforderlich, dass Sie einen Dialog anzeigen, der die Konsequenzen einer Berechtigung zum VPN-Verhalten beschreibt.
    • Sie müssen eine dauerhafte Benachrichtigung anzeigen, während VPN aktiv ist. Ein Beispiel für eine App, die es tPacketCapture macht .

    Um die Benutzerberechtigung zu bitten, rufen Sie VpnService.prepare :

     public void onClick(View v) { Intent intent = VpnService.prepare(getApplicationContext()); if (intent != null) { startActivityForResult(intent, 0); } else { onActivityResult(0, RESULT_OK, null); } } 

    Und behandle das Ergebnis, beginnst deinen VpnService.

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Intent intent = new Intent(this, MyVpnService.class); startService(intent); } } 

    Ihr VpnService muss public int onStartCommand() implementieren. Der Service wird als Vordergrundservice behandelt und sollte nicht vom Betriebssystem getötet werden.

    Diese Frage: Android VpnService, um Pakete zu erfassen, erfasst keine Pakete und es kommentiert das Licht, das sich mit dem Paket verarbeitet.

    Auf iOS würde ich sagen, dass es davon abhängt, ob Sie es erlauben, dass das Gerät jailbroken als akzeptable Voraussetzung ist. Es gibt einige Hinweise auf PF sowie einen Netzwerk-Sniffer (was ich vermutlich in ähnlicher Weise arbeiten muss) für iOS.

    PF ist Open Source aber leider in C. gebaut.

    Diese Antwort ist nur für Android

    Im Allgemeinen ist es möglich!
    Es gibt aber einige Probleme.

    Hier ist eine Liste, was funktioniert und welche Probleme Sie begegnen werden.

    Filtern über VPN Service

    • Sehr hohe Auswirkung auf Batterie
    • Proxy-Unterstützung funktioniert nicht
    • Ermöglicht die Veränderung des Verkehrs

    Filterung über libpcap

    • Benötigt Wurzel
    • Erlaubt nicht, den Verkehr zu ändern

    Filtern mit IPTables / PFTables / libnetfilter

    • Benötigt Wurzel
    • Benötigt ein Kernelmodul
    • Arbeitet nicht an irgendwelchen Geräten, wo man nicht die Kernelquelle hat oder nicht integriert ist

    Filtern mit Xposed Framework

    • Benötigt Wurzel
    • Arbeitet nur mit Dalvik Systems
    • Funktioniert nicht mit Anwendungen mit NDK zu bauen

    Filterung mit Cydia Substrat

    • Benötigt Wurzel
    • Arbeitet nur mit Dalvik Systems
    • Derzeit im Beta-Staat

    Also ja ist es möglich, aber zu welchen Kosten?
    Wenn Sie es nur für sich selbst brauchen, sind Sie gut mit Cydia Substrate da es 100% der Anwendungen unterstützt, aber es erfordert ein dalvik System.

    Wenn du es in den Store veröffentlichen möchtest, solltest du den VPN Service verwenden. Es könnte möglich sein, den Dienst mit dem NDK zu erstellen, dann hättest du vielleicht die Batterieprobleme gesenkt.

    Ich hoffe ich habe dir in irgendeiner Weise geholfen

    Sie können Apps mit dem Android VPN Service erstellen, die unter anderem interessante Dinge wie Filterpakete machen können. Sie finden ein VPN-Beispiel in "Android Samples for SDK", das im Google Source Code gefunden werden kann .

    Cliff Robinson
    Community Manager
    BackBox

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.