add a -b option to allow sending to broadcast addresses
This commit is contained in:
parent
5236e1513f
commit
3c58093fdc
13
netcat.c
13
netcat.c
@ -169,6 +169,7 @@ unsigned char * stage = NULL; /* hexdump line buffer */
|
|||||||
|
|
||||||
/* global cmd flags: */
|
/* global cmd flags: */
|
||||||
USHORT o_alla = 0;
|
USHORT o_alla = 0;
|
||||||
|
USHORT o_allowbroad = 0;
|
||||||
unsigned int o_interval = 0;
|
unsigned int o_interval = 0;
|
||||||
USHORT o_listen = 0;
|
USHORT o_listen = 0;
|
||||||
USHORT o_nflag = 0;
|
USHORT o_nflag = 0;
|
||||||
@ -663,6 +664,13 @@ newskt:
|
|||||||
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEADDR, &x, sizeof (x));
|
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEADDR, &x, sizeof (x));
|
||||||
if (rr == -1)
|
if (rr == -1)
|
||||||
holler ("nnetfd reuseaddr failed"); /* ??? */
|
holler ("nnetfd reuseaddr failed"); /* ??? */
|
||||||
|
#ifdef SO_BROADCAST
|
||||||
|
if (o_allowbroad) {
|
||||||
|
rr = setsockopt (nnetfd, SOL_SOCKET, SO_BROADCAST, &x, sizeof (x));
|
||||||
|
if (rr == -1)
|
||||||
|
holler ("nnetfd reuseaddr failed"); /* ??? */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifdef SO_REUSEPORT /* doesnt exist everywhere... */
|
#ifdef SO_REUSEPORT /* doesnt exist everywhere... */
|
||||||
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEPORT, &x, sizeof (x));
|
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEPORT, &x, sizeof (x));
|
||||||
if (rr == -1)
|
if (rr == -1)
|
||||||
@ -1356,6 +1364,7 @@ options:");
|
|||||||
-e filename program to exec after connect [dangerous!!]");
|
-e filename program to exec after connect [dangerous!!]");
|
||||||
#endif
|
#endif
|
||||||
holler ("\
|
holler ("\
|
||||||
|
-b allow broadcasts\n\
|
||||||
-g gateway source-routing hop point[s], up to 8\n\
|
-g gateway source-routing hop point[s], up to 8\n\
|
||||||
-G num source-routing pointer: 4, 8, 12, ...\n\
|
-G num source-routing pointer: 4, 8, 12, ...\n\
|
||||||
-h this cruft\n\
|
-h this cruft\n\
|
||||||
@ -1480,12 +1489,14 @@ main (argc, argv)
|
|||||||
|
|
||||||
/* If your shitbox doesn't have getopt, step into the nineties already. */
|
/* If your shitbox doesn't have getopt, step into the nineties already. */
|
||||||
/* optarg, optind = next-argv-component [i.e. flag arg]; optopt = last-char */
|
/* optarg, optind = next-argv-component [i.e. flag arg]; optopt = last-char */
|
||||||
while ((x = getopt (argc, argv, "ac:e:g:G:hi:lno:p:rs:tuvw:z")) != EOF) {
|
while ((x = getopt (argc, argv, "abc:e:g:G:hi:lno:p:rs:tuvw:z")) != EOF) {
|
||||||
/* Debug (("in go: x now %c, optarg %x optind %d", x, optarg, optind)) */
|
/* Debug (("in go: x now %c, optarg %x optind %d", x, optarg, optind)) */
|
||||||
switch (x) {
|
switch (x) {
|
||||||
case 'a':
|
case 'a':
|
||||||
bail ("all-A-records NIY");
|
bail ("all-A-records NIY");
|
||||||
o_alla++; break;
|
o_alla++; break;
|
||||||
|
case 'b':
|
||||||
|
o_allowbroad++; break;
|
||||||
#ifdef GAPING_SECURITY_HOLE
|
#ifdef GAPING_SECURITY_HOLE
|
||||||
case 'c': /* shell commands to exec */
|
case 'c': /* shell commands to exec */
|
||||||
pr00gie = optarg;
|
pr00gie = optarg;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user