簡體   English   中英

可以使用VpnService實現來捕獲和發送數據包嗎?

[英]Possible to use VpnService implementation to capture and send packets?

我正在考慮使用新的android(4.0)VpnService接口來實現簡單的數據包捕獲和分析的可能性。 有誰知道是否可以在VpnService實現中獲取您收到的數據包並將其寫入活動/默認網絡設備? 當然,要接收數據,我必須能夠從網絡設備中讀取數據。 如果可能,可以使用哪些API寫入網絡設備?

tPacketCapture為遠程計算機創建第二個套接字以轉發數據包。 我使用adb shell netstat查看了tPacketCapture

Proto Recv-Q Send-Q Local Address              Foreign Address            State 
tcp        0      0 192.168.1.126:49828        97.74.42.79:80             ESTABLISHED
tcp6       0      0 ::ffff:127.0.0.1:5000      :::*                       LISTEN
tcp6       0    522 ::ffff:10.8.0.1:50294      ::ffff:97.74.42.79:80      ESTABLISHED
tcp6       0      0 ::ffff:192.168.1.126:34210 ::ffff:74.125.141.188:5228 ESTABLISHED
tcp6       0      1 ::ffff:192.168.1.126:43379 ::ffff:74.125.224.174:80   CLOSE_WAIT
tcp6       0      1 ::ffff:192.168.1.126:60217 ::ffff:74.125.239.14:443   CLOSE_WAIT

注意97.74.42.79:80兩次。

猜猜我必須做同樣的事情,除非有人有更好的主意。

我使用過VPN API。 您有一個tun設備,您可以在其中指定路由。 但閱讀完之后,你需要自己處理這些數據包。 通常這意味着將它們交給VPN服務器。 Android SDK提供了一個簡單的ToyVPNServer示例。

但是,如果沒有實現VPN,很難實現簡單的pcap接口(如果可能的話)。

可以解析TCP / UDP標頭創建一個具有相同src / dest端口/ IP的自己的套接字,在此套接字上使用protect(),以便它不通過tun0路由。 由於tPacketCapture僅支持udp / tcp而不支持icmp,因此他們可能會使用此方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM