void print_attack_info(struct iface_data *idata){ puts( "jumbo6: Security assessment tool for attack vectors based on IPv6 Jumbo Payloads\n"); if(idata->hsrcaddr_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s\n", plinkaddr); } else{ if(idata->dstaddr_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s%s\n", plinkaddr, \ ((idata->srcprefix_f)?" (randomized)":" (automatically selected)")); } else puts("Ethernet Source Address: Automatically selected for each packet"); } /* Ethernet Destination Address only used if a IPv6 Destination Address or an Ethernet Destination Address were specified. */ if(idata->dstaddr_f){ if(ether_ntop(&(idata->hdstaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Destination Address: %s%s\n", plinkaddr, \ ((!idata->hdstaddr_f)?" (automatically selected)":"")); } if(inet_ntop(AF_INET6, &(idata->srcaddr), psrcaddr, sizeof(psrcaddr)) == NULL){ puts("inet_ntop(): Error converting IPv6 Source Address to presentation format"); exit(EXIT_FAILURE); } if(idata->dstaddr_f){ printf("IPv6 Source Address: %s%s\n", psrcaddr, ((idata->srcprefix_f)?" (randomized)":"")); } if(idata->dstaddr_f){ if(inet_ntop(AF_INET6, &(idata->dstaddr), pdstaddr, sizeof(pdstaddr)) == NULL){ puts("inet_ntop(): Error converting IPv6 Destination Address to presentation format"); exit(EXIT_FAILURE); } printf("IPv6 Destination Address: %s\n", pdstaddr); } printf("IPv6 Hop Limit: %u%s\n", hoplimit, (hoplimit_f)?"":" (randomized)"); for(i=0; i<ndstoptuhdr; i++) printf("Destination Options Header (Unfragmentable part): %u bytes\n", dstoptuhdrlen[i]); for(i=0; i<nhbhopthdr; i++) printf("Hop by Hop Options Header: %u bytes\n", hbhopthdrlen[i]); for(i=0; i<ndstopthdr; i++) printf("Destination Options Header: %u bytes\n", dstopthdrlen[i]); if(fragh_f) printf("Sending each packet in fragments of %u bytes (plus the Unfragmentable part)\n", nfrags); }
void print_attack_info(struct iface_data *idata){ if(floods_f) printf("Flooding the target from %u different IPv6 Source Addresses\n", nsources); if(floodt_f) printf("Flooding the target with %u ND Target Addresses\n", ntargets); if(!floods_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s%s\n", plinkaddr, ((!idata->hsrcaddr_f)?" (automatically-selected)":"")); } else{ if(idata->hsrcaddr_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s\n", plinkaddr); } else puts("Ethernet Source Address: automatically-selected"); } /* Ethernet Destination Address only used if a IPv6 Destination Address or an Ethernet Destination Address were specified. */ if(idata->dstaddr_f || idata->hdstaddr_f){ if(ether_ntop(&(idata->hdstaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Destination Address: %s%s\n", plinkaddr, \ ((!idata->hdstaddr_f)?" (all-nodes multicast)":"")); } if(inet_ntop(AF_INET6, &(idata->srcaddr), psrcaddr, sizeof(psrcaddr)) == NULL){ puts("inet_ntop(): Error converting IPv6 Source Address to presentation format"); exit(EXIT_FAILURE); } if(!floods_f && !(idata->srcprefix_f)){ printf("IPv6 Source Address: %s%s\n", psrcaddr, ((!idata->srcaddr_f)?" (automatically-selected)":"")); } else{ printf("IPv6 Source Address: randomized, from the %s/%u prefix%s\n", psrcaddr, idata->srcpreflen, \ (!idata->srcprefix_f)?" (default)":""); } /* IPv6 Destination Address is only used if a target IPv6 address or a target Ethernet * address were specified */ if(idata->dstaddr_f || idata->hdstaddr_f){ if(inet_ntop(AF_INET6, &(idata->dstaddr), pdstaddr, sizeof(pdstaddr)) == NULL){ puts("inet_ntop(): Error converting IPv6 Destination Address to presentation format"); exit(EXIT_FAILURE); } printf("IPv6 Destination Address: %s%s\n", pdstaddr, \ ((!idata->dstaddr_f)?" (all-nodes link-local multicast)":"")); } printf("IPv6 Hop Limit: %u%s\n", hoplimit, (hoplimit_f)?"":" (default)"); for(i=0; i<ndstoptuhdr; i++) printf("Destination Options Header (Unfragmentable part): %u bytes\n", dstoptuhdrlen[i]); for(i=0; i<nhbhopthdr; i++) printf("Hop by Hop Options Header: %u bytes\n", hbhopthdrlen[i]); for(i=0; i<ndstopthdr; i++) printf("Destination Options Header: %u bytes\n", dstopthdrlen[i]); if(idata->fragh_f) printf("Sending each packet in fragments of %u bytes (plus the Unfragmentable part)\n", nfrags); if(!floodt_f){ if(targetaddr_f){ if(inet_ntop(AF_INET6, &targetaddr, pv6addr, sizeof(pv6addr)) == NULL){ puts("inet_ntop(): Error converting ND IPv6 Target Address to presentation format"); exit(EXIT_FAILURE); } printf("ND Target Address: %s\n", pv6addr); } } else{ if(inet_ntop(AF_INET6, &targetaddr, pv6addr, sizeof(pv6addr)) == NULL){ puts("inet_ntop(): Error converting ND IPv6 Target Address to presentation format"); exit(EXIT_FAILURE); } printf("ND Target Address: randomized, from the %s/%u prefix%s\n", pv6addr, targetpreflen,\ (!targetprefix_f)?" (default)":""); } printf("Flags: %s%s%s%s\n", ((router_f)?"R":""), ((solicited_f)?"S":""), ((override_f)?"O":""),\ ((!router_f && !solicited_f && !override_f)?"none":"")); for(i=0;i<nlinkaddr;i++){ if(ether_ntop(&linkaddr[i], plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Target Link-layer Address option -> Address: %s\n", \ ((floods_f && !tllaopta_f)?"(randomized for each packet)":plinkaddr)); } }
/* * Function: print_attack_info() * * Print attack details (when the verbose ("-v") option is specified). */ void print_attack_info(struct iface_data *idata){ if(floods_f) printf("Flooding the target from %u different IPv6 Source Addresses\n", nsources); if(!floods_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s%s\n", plinkaddr, ((!idata->hsrcaddr_f)?" (randomized)":"")); } else{ if(idata->hsrcaddr_f){ if(ether_ntop(&(idata->hsrcaddr), plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Source Address: %s\n", plinkaddr); } else puts("Ethernet Source Address: randomized for each packet"); } if(ether_ntop(&(idata->hdstaddr), phdstaddr, sizeof(phdstaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Ethernet Destination Address: %s%s\n", phdstaddr, \ ((!idata->hdstaddr_f)?" (all-routers multicast)":"")); if(inet_ntop(AF_INET6, &(idata->srcaddr), psrcaddr, sizeof(psrcaddr)) == NULL){ puts("inet_ntop(): Error converting IPv6 Source Address to presentation format"); exit(EXIT_FAILURE); } if(!floods_f){ printf("IPv6 Source Address: %s%s\n", psrcaddr, ((!idata->srcaddr_f)?" (randomized)":"")); } else{ printf("IPv6 Source Address: randomized, from the %s/%u prefix%s\n", psrcaddr, idata->srcpreflen, \ (!idata->srcprefix_f)?" (default)":""); } if(inet_ntop(AF_INET6, &(idata->dstaddr), pdstaddr, sizeof(pdstaddr)) == NULL){ perror("inet_ntop()"); exit(EXIT_FAILURE); } printf("IPv6 Destination Address: %s%s\n", pdstaddr, \ ((!idata->dstaddr_f)?" (all-routers link-local multicast)":"")); printf("IPv6 Hop Limit: %u%s\n", hoplimit, (hoplimit_f)?"":" (default)"); for(i=0; i<ndstoptuhdr; i++) printf("Destination Options Header (Unfragmentable part): %u bytes\n", dstoptuhdrlen[i]); for(i=0; i<nhbhopthdr; i++) printf("Hop by Hop Options Header: %u bytes\n", hbhopthdrlen[i]); for(i=0; i<ndstopthdr; i++) printf("Destination Options Header: %u bytes\n", dstopthdrlen[i]); if(idata->fragh_f) printf("Sending each packet in fragments of %u bytes (plus the Unfragmentable part)\n", nfrags); for(i=0;i<nlinkaddr;i++){ if(ether_ntop(&linkaddr[i], plinkaddr, sizeof(plinkaddr)) == 0){ puts("ether_ntop(): Error converting address"); exit(EXIT_FAILURE); } printf("Source Link-layer Address option -> Address: %s\n", \ ((floods_f && !sllopta_f)?"(randomized for each packet)":plinkaddr)); } }