From e29593958560110f891be1838d984a05c137669e Mon Sep 17 00:00:00 2001 From: epochqwert Date: Fri, 1 Dec 2017 09:12:03 +0000 Subject: added a couple things I noticed was missing --- src/bin/mcast-raw.c | 21 +++++++++++++++++++++ src/bin/mcast.c | 26 ++++++++++++++++++++++++++ src/bin/supersu.c | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/bin/mcast-raw.c create mode 100644 src/bin/mcast.c create mode 100644 src/bin/supersu.c (limited to 'src/bin') diff --git a/src/bin/mcast-raw.c b/src/bin/mcast-raw.c new file mode 100644 index 0000000..81913d3 --- /dev/null +++ b/src/bin/mcast-raw.c @@ -0,0 +1,21 @@ +#include +#include +#include + +int main(int argc,char *argv[]) { + int s=socket(AF_INET,SOCK_RAW,atoi(argv[2])); + char packet[1501];//mtu of an interface. including headers though. meh. + int n; + struct ip_mreq mreq; + struct sockaddr_in sa; + int one = sizeof(struct sockaddr_in); + setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + mreq.imr_multiaddr.s_addr=inet_addr(argv[1]); + mreq.imr_interface.s_addr=htonl(INADDR_ANY); + setsockopt(s,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); + while((n=recvfrom(s,packet,sizeof(packet),0,(struct sockaddr *)&sa,&one)) > 0) { + printf("%s ",inet_ntoa(sa.sin_addr)); + fflush(stdout); + write(1,packet,n); + } +} diff --git a/src/bin/mcast.c b/src/bin/mcast.c new file mode 100644 index 0000000..e48c504 --- /dev/null +++ b/src/bin/mcast.c @@ -0,0 +1,26 @@ +#include +#include +#include + +int main(int argc,char *argv[]) { + int s=socket(AF_INET,SOCK_DGRAM,0); + char packet[1501];//mtu of an interface. including headers though. meh. + int n; + struct ip_mreq mreq; + struct sockaddr_in sa; + int one = sizeof(struct sockaddr_in); + setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + memset(&sa,0,sizeof(struct sockaddr_in)); + sa.sin_addr.s_addr=htonl(INADDR_ANY); + sa.sin_port=htons(atoi(argv[2])); + sa.sin_family=AF_INET; + bind(s,(struct sockaddr *)&sa,sizeof(struct sockaddr_in)); + mreq.imr_multiaddr.s_addr=inet_addr(argv[1]); + mreq.imr_interface.s_addr=htonl(INADDR_ANY); + setsockopt(s,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); + while((n=recvfrom(s,packet,sizeof(packet),0,(struct sockaddr *)&sa,&one)) > 0) { + printf("%s ",inet_ntoa(sa.sin_addr)); + fflush(stdout); + write(1,packet,n); + } +} diff --git a/src/bin/supersu.c b/src/bin/supersu.c new file mode 100644 index 0000000..d3f7fec --- /dev/null +++ b/src/bin/supersu.c @@ -0,0 +1,35 @@ +#include + +int main(int argc,char *argv[]) { + int i; + if(argc < 4) { + fprintf(stderr,"usage: %s uid gid [secondary_gids] absolute-path-of-executable\n",argv[0]); + return 0; + } + if(getuid() && geteuid()) { + fprintf(stderr,"supersu: uid: %d, euid: %d... I have no idea how this is supposed to work. oh well.\n",getuid(),geteuid()); + } + int groups[argc-2]; + int ngroups=0; + char **name; + int here=0; + for(i=2;i