Loading src/main-conf.c +11 −0 Original line number Diff line number Diff line Loading @@ -134,10 +134,15 @@ masscan_echo(struct Masscan *masscan, FILE *fp) case Output_List: fprintf(fp, "output-format = list\n"); break; case Output_XML: fprintf(fp, "output-format = xml\n"); break; default: fprintf(fp, "output-format = unknown(%u)\n", masscan->nmap.format); break; } fprintf(fp, "output-status = %s\n", masscan->nmap.open_only?"open":"all"); fprintf(fp, "output-filename = %s\n", masscan->nmap.filename); if (masscan->nmap.append) fprintf(fp, "output-append = true\n"); Loading Loading @@ -604,6 +609,10 @@ masscan_set_parameter(struct Masscan *masscan, const char *name, const char *val exit(1); } else if (EQUALS("open", name)) { masscan->nmap.open_only = 1; } else if (EQUALS("output-status", name)) { if (EQUALS("open", value)) masscan->nmap.open_only = 1; } else if (EQUALS("osscan-limit", name)) { fprintf(stderr, "nmap(%s): OS scanning unsupported\n", name); exit(1); Loading @@ -615,6 +624,8 @@ masscan_set_parameter(struct Masscan *masscan, const char *name, const char *val masscan->nmap.format = Output_List; else if (EQUALS("interactive", value)) masscan->nmap.format = Output_Interactive; else if (EQUALS("xml", value)) masscan->nmap.format = Output_XML; else { fprintf(stderr, "error: %s=%s\n", name, value); } Loading src/main.c +3 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,9 @@ transmit_thread(void *v) /*aka. scanning_thread() */ ip, port, syn_hash(ip, port), pkt_template); !batch_size, /* flush transmit queue on last packet */ pkt_template ); i++; Loading src/output.c +11 −5 Original line number Diff line number Diff line Loading @@ -424,9 +424,15 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign break; case Port_Closed: out->closed_count++; if (masscan->nmap.open_only) return; break; default: if (masscan->nmap.open_only) return; } if (masscan->nmap.format == Output_List || masscan->nmap.format == Output_All) { fprintf(fp, "%s tcp %u %u.%u.%u.%u %u\n", status_string(status), Loading @@ -441,6 +447,7 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign if (masscan->nmap.format == Output_XML || masscan->nmap.format == Output_All) { char reason_buffer[128]; fprintf(fp, "<host endtime=\"%u\">" "<address addr=\"%u.%u.%u.%u\" addrtype=\"ipv4\"/>" "<ports>" "<port protocol=\"tcp\" portid=\"%u\">" "<state state=\"%s\" reason=\"%s\" reason_ttl=\"%u\"/>" Loading @@ -449,15 +456,14 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign "</host>" "\r\n", (unsigned)global_now, port, status_string(status), reason_string(reason, reason_buffer, sizeof(reason_buffer)), ttl, (ip>>24)&0xFF, (ip>>16)&0xFF, (ip>> 8)&0xFF, (ip>> 0)&0xFF, (unsigned)global_now port, status_string(status), reason_string(reason, reason_buffer, sizeof(reason_buffer)), ttl ); } Loading src/rawsock-arp.c +3 −3 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ int arp_resolve_sync(struct Adapter *adapter, /* * Now loop for a few seconds looking for the response */ rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); start = time(0); i = 0; for (;;) { Loading @@ -138,7 +138,7 @@ int arp_resolve_sync(struct Adapter *adapter, if (time(0) != start) { start = time(0); rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); if (i++ >= 10) break; /* timeout */ } Loading Loading @@ -267,7 +267,7 @@ int arp_response(struct Adapter *adapter, unsigned my_ip, const unsigned char *m /* * Now transmit the packet */ rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); return 0; } src/rawsock.c +11 −4 Original line number Diff line number Diff line Loading @@ -249,6 +249,7 @@ char *adapter_from_index(unsigned index) extern unsigned ip_checksum(struct TcpPacket *pkt); extern unsigned tcp_checksum(struct TcpPacket *pkt); /*************************************************************************** * wrapper for libpcap's sendpacket ***************************************************************************/ Loading @@ -256,14 +257,15 @@ int rawsock_send_packet( struct Adapter *adapter, const unsigned char *packet, unsigned length) unsigned length, unsigned flush) { if (adapter->ring) { int err = PF_RING_ERROR_NO_TX_SLOT_AVAILABLE; while (err == PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { err = PFRING.send(adapter->ring, packet, length, 0); err = PFRING.send(adapter->ring, packet, length, (unsigned char)flush); } if (err < 0) LOG(1, "pfring:xmit: ERROR %d\n", err); Loading @@ -287,6 +289,11 @@ rawsock_send_packet( //exit(1); } else ; //printf("+%u\n", count++); if (flush) { pcap_sendqueue_transmit(adapter->pcap, adapter->sendq, 0); pcap_sendqueue_destroy(adapter->sendq); adapter->sendq = pcap_sendqueue_alloc(65536); } return 0; } else { return pcap_sendpacket(adapter->pcap, packet, length); Loading Loading @@ -353,7 +360,7 @@ int rawsock_recv_packet( void rawsock_send_probe( struct Adapter *adapter, unsigned ip, unsigned port, unsigned seqno, unsigned ip, unsigned port, unsigned seqno, unsigned flush, struct TcpPacket *pkt) { /* Loading @@ -364,7 +371,7 @@ rawsock_send_probe( /* * Send it */ rawsock_send_packet(adapter, pkt->packet, pkt->length); rawsock_send_packet(adapter, pkt->packet, pkt->length, flush); /* * Verify I'm doing the checksum correctly ('cause I ain't, I got Loading Loading
src/main-conf.c +11 −0 Original line number Diff line number Diff line Loading @@ -134,10 +134,15 @@ masscan_echo(struct Masscan *masscan, FILE *fp) case Output_List: fprintf(fp, "output-format = list\n"); break; case Output_XML: fprintf(fp, "output-format = xml\n"); break; default: fprintf(fp, "output-format = unknown(%u)\n", masscan->nmap.format); break; } fprintf(fp, "output-status = %s\n", masscan->nmap.open_only?"open":"all"); fprintf(fp, "output-filename = %s\n", masscan->nmap.filename); if (masscan->nmap.append) fprintf(fp, "output-append = true\n"); Loading Loading @@ -604,6 +609,10 @@ masscan_set_parameter(struct Masscan *masscan, const char *name, const char *val exit(1); } else if (EQUALS("open", name)) { masscan->nmap.open_only = 1; } else if (EQUALS("output-status", name)) { if (EQUALS("open", value)) masscan->nmap.open_only = 1; } else if (EQUALS("osscan-limit", name)) { fprintf(stderr, "nmap(%s): OS scanning unsupported\n", name); exit(1); Loading @@ -615,6 +624,8 @@ masscan_set_parameter(struct Masscan *masscan, const char *name, const char *val masscan->nmap.format = Output_List; else if (EQUALS("interactive", value)) masscan->nmap.format = Output_Interactive; else if (EQUALS("xml", value)) masscan->nmap.format = Output_XML; else { fprintf(stderr, "error: %s=%s\n", name, value); } Loading
src/main.c +3 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,9 @@ transmit_thread(void *v) /*aka. scanning_thread() */ ip, port, syn_hash(ip, port), pkt_template); !batch_size, /* flush transmit queue on last packet */ pkt_template ); i++; Loading
src/output.c +11 −5 Original line number Diff line number Diff line Loading @@ -424,9 +424,15 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign break; case Port_Closed: out->closed_count++; if (masscan->nmap.open_only) return; break; default: if (masscan->nmap.open_only) return; } if (masscan->nmap.format == Output_List || masscan->nmap.format == Output_All) { fprintf(fp, "%s tcp %u %u.%u.%u.%u %u\n", status_string(status), Loading @@ -441,6 +447,7 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign if (masscan->nmap.format == Output_XML || masscan->nmap.format == Output_All) { char reason_buffer[128]; fprintf(fp, "<host endtime=\"%u\">" "<address addr=\"%u.%u.%u.%u\" addrtype=\"ipv4\"/>" "<ports>" "<port protocol=\"tcp\" portid=\"%u\">" "<state state=\"%s\" reason=\"%s\" reason_ttl=\"%u\"/>" Loading @@ -449,15 +456,14 @@ output_report(struct Output *out, int status, unsigned ip, unsigned port, unsign "</host>" "\r\n", (unsigned)global_now, port, status_string(status), reason_string(reason, reason_buffer, sizeof(reason_buffer)), ttl, (ip>>24)&0xFF, (ip>>16)&0xFF, (ip>> 8)&0xFF, (ip>> 0)&0xFF, (unsigned)global_now port, status_string(status), reason_string(reason, reason_buffer, sizeof(reason_buffer)), ttl ); } Loading
src/rawsock-arp.c +3 −3 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ int arp_resolve_sync(struct Adapter *adapter, /* * Now loop for a few seconds looking for the response */ rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); start = time(0); i = 0; for (;;) { Loading @@ -138,7 +138,7 @@ int arp_resolve_sync(struct Adapter *adapter, if (time(0) != start) { start = time(0); rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); if (i++ >= 10) break; /* timeout */ } Loading Loading @@ -267,7 +267,7 @@ int arp_response(struct Adapter *adapter, unsigned my_ip, const unsigned char *m /* * Now transmit the packet */ rawsock_send_packet(adapter, arp_packet, 60); rawsock_send_packet(adapter, arp_packet, 60, 1); return 0; }
src/rawsock.c +11 −4 Original line number Diff line number Diff line Loading @@ -249,6 +249,7 @@ char *adapter_from_index(unsigned index) extern unsigned ip_checksum(struct TcpPacket *pkt); extern unsigned tcp_checksum(struct TcpPacket *pkt); /*************************************************************************** * wrapper for libpcap's sendpacket ***************************************************************************/ Loading @@ -256,14 +257,15 @@ int rawsock_send_packet( struct Adapter *adapter, const unsigned char *packet, unsigned length) unsigned length, unsigned flush) { if (adapter->ring) { int err = PF_RING_ERROR_NO_TX_SLOT_AVAILABLE; while (err == PF_RING_ERROR_NO_TX_SLOT_AVAILABLE) { err = PFRING.send(adapter->ring, packet, length, 0); err = PFRING.send(adapter->ring, packet, length, (unsigned char)flush); } if (err < 0) LOG(1, "pfring:xmit: ERROR %d\n", err); Loading @@ -287,6 +289,11 @@ rawsock_send_packet( //exit(1); } else ; //printf("+%u\n", count++); if (flush) { pcap_sendqueue_transmit(adapter->pcap, adapter->sendq, 0); pcap_sendqueue_destroy(adapter->sendq); adapter->sendq = pcap_sendqueue_alloc(65536); } return 0; } else { return pcap_sendpacket(adapter->pcap, packet, length); Loading Loading @@ -353,7 +360,7 @@ int rawsock_recv_packet( void rawsock_send_probe( struct Adapter *adapter, unsigned ip, unsigned port, unsigned seqno, unsigned ip, unsigned port, unsigned seqno, unsigned flush, struct TcpPacket *pkt) { /* Loading @@ -364,7 +371,7 @@ rawsock_send_probe( /* * Send it */ rawsock_send_packet(adapter, pkt->packet, pkt->length); rawsock_send_packet(adapter, pkt->packet, pkt->length, flush); /* * Verify I'm doing the checksum correctly ('cause I ain't, I got Loading