System: macOS 14.2 M2
For some app, like the browser, NETransparentProxyProvider can capture all tcp and udp data; but for database app like Navicat Premium[latest trial version 16.3.4], and VNC app like VNC Viewer(7.1.0) , they cannot capture the tcp data from tcp flow.
Below is how I read the data
override func startProxy(options: [String: Any]?, completionHandler: @escaping (Error?) -> Void) {
// My proxy setting
...
NENetworkRule(remoteNetwork: nil, remotePrefix: 0, localNetwork: nil, localPrefix: 0, protocol: .any, direction: .outbound)
settings.includedNetworkRules = [rule]
...
}
override func handleNewFlow(_ flow: NEAppProxyFlow) -> Bool {
....
if app is NavicatPremium {
if let tcpflow = flow as? NEAppProxyTCPFlow {
self.handleTcpFlow(tcpflow)
return true
} else {
... handleUDPFlow ...
return true
}
}
}
func handleTcpFlow(_ tcpFlow: NEAppProxyTCPFlow) {
tcpFlow.open(withLocalEndpoint: nil) { error in
if let error = error {
NSLog("open flow error :\(error)")
}
tcpFlow.readData { data, error in
....
// Here I tried to readData, but didn't get any data or error
....
} // read data
}
}
I don't know why it cannot capture any data there. Is that I do something wrong or NETransparentProxyProvider just does not have the capability for some apps like these?
Post
Replies
Boosts
Views
Activity
I have two System extensions in my application.
App proxy provider ( app-proxy-provider-systemextension)
Endpoint Security (com.apple.developer.endpoint-security.client)
But now, on one of my customer's computer, when it launched app proxy provider, the sysextd process said that /Applications/XXXXXX.app/Contents/Library/SystemExtensions/com.***.AppProxy.systemextension: entitlement com.apple.developer.endpoint-security.client not present or not true. As a network system extension, my app proxy provider was asking for an Endpoint Security entitlement, that is a very strange. I don't know how to debug it. Any ideas and help?