Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <sys/socket.h>
- #include <errno.h>
- /* Supported address families: (https://github.com/torvalds/linux/blob/master/include/linux/socket.h) */
- char *af[47] = {
- [ 0] = "AF_UNSPEC",
- [ 1] = "AF_UNIX", /* Unix domain sockets */
- [ 2] = "AF_INET", /* Internet IP Protocol */
- [ 3] = "AF_AX25", /* Amateur Radio AX.25 */
- [ 4] = "AF_IPX", /* Novell IPX */
- [ 5] = "AF_APPLETALK", /* AppleTalk DDP */
- [ 6] = "AF_NETROM", /* Amateur Radio NET/ROM */
- [ 7] = "AF_BRIDGE", /* Multiprotocol bridge */
- [ 8] = "AF_ATMPVC", /* ATM PVCs */
- [ 9] = "AF_X25", /* Reserved for X.25 project */
- [10] = "AF_INET6", /* IP version 6 */
- [11] = "AF_ROSE", /* Amateur Radio X.25 PLP */
- [12] = "AF_DECnet", /* Reserved for DECnet project */
- [13] = "AF_NETBEUI", /* Reserved for 802.2LLC project*/
- [14] = "AF_SECURITY", /* Security callback pseudo AF */
- [15] = "AF_KEY", /* PF_KEY key management API */
- [16] = "AF_NETLINK",
- [17] = "AF_PACKET", /* Packet family */
- [18] = "AF_ASH", /* Ash */
- [19] = "AF_ECONET", /* Acorn Econet */
- [20] = "AF_ATMSVC", /* ATM SVCs */
- [21] = "AF_RDS", /* RDS sockets */
- [22] = "AF_SNA", /* Linux SNA Project (nutters!) */
- [23] = "AF_IRDA", /* IRDA sockets */
- [24] = "AF_PPPOX", /* PPPoX sockets */
- [25] = "AF_WANPIPE", /* Wanpipe API Sockets */
- [26] = "AF_LLC", /* Linux LLC */
- [27] = "AF_IB", /* Native InfiniBand address */
- [28] = "AF_MPLS", /* MPLS */
- [29] = "AF_CAN", /* Controller Area Network */
- [30] = "AF_TIPC", /* TIPC sockets */
- [31] = "AF_BLUETOOTH", /* Bluetooth sockets */
- [32] = "AF_IUCV", /* IUCV sockets */
- [33] = "AF_RXRPC", /* RxRPC sockets */
- [34] = "AF_ISDN", /* mISDN sockets */
- [35] = "AF_PHONET", /* Phonet sockets */
- [36] = "AF_IEEE802154", /* IEEE802154 sockets */
- [37] = "AF_CAIF", /* CAIF sockets */
- [38] = "AF_ALG", /* Algorithm sockets */
- [39] = "AF_NFC", /* NFC sockets */
- [40] = "AF_VSOCK", /* vSockets */
- [41] = "AF_KCM", /* Kernel Connection Multiplexor*/
- [42] = "AF_QIPCRTR", /* Qualcomm IPC Router */
- [43] = "AF_SMC", /* smc sockets: reserve number for PF_SMC protocol family that reuses AF_INET address family */
- [44] = "AF_XDP", /* XDP sockets */
- [45] = "AF_MCTP", /* Management component transport protocol */
- [46] = "AF_MAX", /* For now.. */
- };
- #define af_name(X) ( (X < ( sizeof(af) / sizeof(af[1] )) ) ? af[X] : "err: AF_MAX exceeded" )
- #define FG_RED "\x1b[31m"
- #define FG_GREEN "\x1b[32m"
- #define FG_DEF "\x1b[39m"
- char no_acc[] = FG_GREEN "This user does not have access to this socket." FG_DEF;
- char has_acc[] = FG_RED "This user has access to this socket." FG_DEF;
- char msg[] = "socket(%02i) [%-13s] -> %03i: %s\n";
- int main()
- {
- for (unsigned int i = 0; i <= 256; i++) {
- errno = 0;
- int s = socket(i, 0, 0);
- if (s == -1) {
- if (errno == 97) {
- continue;
- }
- if (errno == 1) {
- printf(msg, i, af_name(i), errno, no_acc);
- continue;
- }
- }
- printf(msg, i, af_name(i), errno, has_acc);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment