sctplab / SCTP_NKE_HighSierra

A version of the SCTP NKE running on Mac OS X 10.13 (High Sierra)
16 stars 4 forks source link
macos sctp

SCTP NKE for Mac OS X 10.13 (High Sierra)

The sources are based on the SCTP implementation of the FreeBSD kernel modified to work within the Mac OS X kernel infrastructure as a network kernel extension. This allows the dynamic loading and unloading of the module without rebooting the operating system.

Supported Specifications

The FreeBSD kernel stack and the SCTP NKE for Mac OS X supports:

Note about using Unsigned Kernel Extensions

When using Mac OS X 10.13, you can't load unsinged kernel extensions without disabling the System Integrity Protection. See Apple's documentation on how to disable it. I'm currently not providing a signed NKE, since I don't have the necessary certificate.

Installation

Currently there is no installer provided. Therefore the following manual steps are required. You can download a disk image containing all files at SCTP_NKE_HighSierra_02.dmg.

Prerequisites

It is assumed that the comand line tools are installed. This can be done executing

xcode-select --install

Installation of KEXTs

Execute the following commands:

sudo cp -R /Volumes/SCTP_NKE_HighSierra_02/SCTPSupport.kext /Library/Extensions
sudo cp -R /Volumes/SCTP_NKE_HighSierra_02/SCTP.kext /Library/Extensions

The first extension is needed to export additional symbols from the kernel. The second extension contains the SCTP relevant code.

Installation of Support Files

Execute the following commands:

sudo cp /Volumes/SCTP_NKE_HighSierra_02/socket.h /usr/include/sys/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/sctp.h /usr/include/netinet/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/sctp_uio.h /usr/include/netinet/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/libsctp.dylib /usr/lib/

The first command changes an existing file by adding a definition for MSG_NOTIFICATION. The other commands add additional files.

Using the SCTP KEXT

Since the NKE's are not signed, you need the disable the System Integrity Protection as described above.

Loading the SCTP KEXT

You can load the SCTP kext by executing in a shell

sudo kextload /Library/Extensions/SCTP.kext

Unloading the SCTP KEXT

You can unload the SCTP kext by executing in a shell

sudo kextunload /Library/Extensions/SCTP.kext