# chrysocome.net

## Windows network protocol binder

This is a command line tool which can show and alter protocol bindings. This is useful if you want to alter your network configuration from a script. The MS loopback adapter, vmware bridging protocol and OpenVPN TAP adapter are the sorts of things you might want to alter with this tool. You can use it on your normal ethernet adapter but being a physical adapter, it becomes difficult to automate the installation of it.

proto 0.1 Binary .zip Windows proto-0.1.zip
proto 0.1 Source .zip C++ proto-0.1-src.zip

### Example --list

proto --list adapter=*msloop not bound to protocol=ms_netbios->ms_netbt->ms_tcpip6->ROOT\NET\0000 bound to protocol=ms_netbios->ms_netbt->ms_tcpip->ROOT\NET\0000 not bound to protocol=ms_server->ms_netbt->ms_tcpip6->ROOT\NET\0000 not bound to protocol=ms_server->ms_netbt->ms_tcpip->ROOT\NET\0000 bound to protocol=vmware_bridge->ROOT\NET\0000 not bound to protocol=ms_msclient->ms_netbt->ms_tcpip6->ROOT\NET\0000 not bound to protocol=ms_msclient->ms_netbt->ms_tcpip->ROOT\NET\0000 bound to protocol=ms_tcpip->ROOT\NET\0000 bound to protocol=ms_ndisuio->ROOT\NET\0000 bound to protocol=ms_pppoe->ROOT\NET\0000 not bound to protocol=ms_netbt->ms_tcpip6->ROOT\NET\0000 bound to protocol=ms_netbt->ms_tcpip->ROOT\NET\0000 not bound to protocol=ms_tcpip6->ROOT\NET\0000 adapter=pci\ven_14e4&dev_1677 bound to protocol=ms_netbios->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbios->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_server->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_server->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_psched->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=vmware_bridge->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_msclient->ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_msclient->ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_ndisuio->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_pppoe->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbt->ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_netbt->ms_tcpip->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5 bound to protocol=ms_tcpip6->PCI\VEN_14E4&DEV_1677&SUBSYS_01AE1028&REV_01\4&22443A69&0&00E5

There is a lot of information there so you can filter it with the --adapter and --protocol parameters

will only list the *msloop adapter.

Filtering on protocol is probably the most useful. This example shows the adapters using IPv6. Note the use of % as a wild card.

### Altering bindings

--bind and --unbind work in the same way. You must specify a protocol to operate on but it may be a wildcard. Before you alter the bindings you should use --list and test your --adapter and --protocol values. Lets assume I want to unbind vmware_bridging from my loopback adapter

proto --list --adapter=*msloop --protocol=vmware_bridge% Windows protocol binder version 0.1 Written by John Newbigin <jn@it.swin.edu.au> adapter=*msloop bound to protocol=vmware_bridge->ROOT\NET\0000

That looks good so I can go ahead and use --unbind

proto --unbind --adapter=*msloop --protocol=vmware_bridge% proto --list --adapter=*msloop --protocol=vmware_bridge% Windows protocol binder version 0.1 Written by John Newbigin <jn@it.swin.edu.au> adapter=*msloop not bound to protocol=vmware_bridge->ROOT\NET\0000

Binding it back is the same, just use --bind.

If you want a protocol bound to all but a single adapter, first unbind it from all adapters, and then bind on a specific adapter

### Configuring the protocol

You should be able to use netsh to alter settings like IP addresses and DHCP etc. You will have to check the MS docs on how to do that.