AppleConnect is a small Swift wrapper around a Network TCP stream on the local network (using Bonjour for discovery).
Even though the transport is two-way, the API is built around a “service” that is offered by a single server and to which many clients can connect.
Setup for servers differs a little bit from that for clients. Once a connection is established, the channel is identical from both ends. All connections are encrypted using TLS-PSK derived from a shared key of your choosing.
For security, you should generate the shared key using cryptographically appropriate random data. Sharing this key should be done out-of-band and is out of scope for AppleConnect.
For user-facing applications, one way you might do this is by generating a code on one device and asking the user to confirm it on the second one.
A typical server should advertise its availability using Connection.advertise(forServiceType:name:key:)
. Attempts by clients to connect will show up as NWConnection
objects, which you can pass to Connection.init(connection:)
to complete the connection process.
A client should browse for servers it wants to connect to. Connection.endpoints(forServiceType:)
will asynchronously stream a list of available NWEndpoint
s, and once you’ve found an endpoint that you’d like to connect to, call Connection.init(endpoint:key:)
to establish the connection using the shared encryption key.
Both clients and servers can send data to each other using Connection.send(data:)
, and receive data by watching Connection.data
.
SeamlessPass is a specialized tool designed to leverage on-premises Active Directory Kerberos tickets to obtain…
PPLBlade is a powerful Protected Process Dumper designed to capture memory from target processes, hide…
HikPwn: Comprehensive Guide to Scanning Hikvision Devices for Vulnerabilities If you’re searching for an efficient…
What Are Bash Comments? Comments in Bash scripts, are notes in your code that the…
When you write a Bash script in Linux, you want it to run correctly every…
Introduction If you’re new to Bash scripting, one of the first skills you’ll need is…