OpenVAS Libraries  8.0.3
Data Structures | Macros | Functions
nasl_builtin_synscan.c File Reference
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <string.h>
#include <netinet/tcp.h>
#include <netinet/ip.h>
#include "../misc/arglists.h"
#include "../misc/bpf_share.h"
#include "nvt_categories.h"
#include "../misc/pcap_openvas.h"
#include "../misc/plugutils.h"
#include "../misc/openvas_logging.h"
#include "../misc/prefs.h"
#include "network.h"
#include "nasl_lex_ctxt.h"

Data Structures

struct  pseudohdr
 
struct  list
 

Macros

#define _BSD_SOURCE   1
 
#define _DEFAULT_SOURCE   1
 
#define NUM_RETRIES   2
 

Functions

unsigned long maketime ()
 
struct timeval timeval (unsigned long val)
 
unsigned long compute_rtt (unsigned long then)
 
int packetdead (unsigned long then, unsigned long rtt)
 
int rawsocket (int family)
 Opens and returns a raw socket. More...
 
int openbpf (struct in_addr dst, struct in_addr *src, int magic)
 Opens a packet filter, grabs packets from dst to port magic. More...
 
int v6_openbpf (struct in6_addr *dst, struct in6_addr *src, int magic)
 
struct listget_packet (struct list *l, unsigned short dport)
 
struct listadd_packet (struct list *l, unsigned short dport, unsigned long ack)
 If no packet with dport is in list, prepends a "packet" to the. More...
 
struct listrm_packet (struct list *l, unsigned short dport)
 
struct listrm_dead_packets (struct list *l, unsigned long rtt, int *retry)
 
struct tcphdr * extracttcp (char *pkt, int len)
 
struct tcphdr * v6_extracttcp (char *pkt, int len)
 
unsigned long extractack (char *pkt, int len, int family)
 
unsigned short extractsport (char *pkt, int len, int family)
 
int issynack (char *pkt, int len, int family)
 
char * mktcp (struct in_addr src, int sport, struct in_addr dst, int dport, unsigned long th_ack, unsigned char flag)
 
char * mktcpv6 (struct in6_addr *src, int sport, struct in6_addr *dst, int dport, unsigned long th_ack, unsigned char flag)
 
struct listsendpacket (int soc, int bpf, int skip, struct in_addr dst, struct in_addr src, int dport, int magic, struct list *packets, unsigned long *rtt, int sniff, struct arglist *env)
 
struct listv6_sendpacket (int soc, int bpf, int skip, struct in6_addr *dst, struct in6_addr *src, int dport, int magic, struct list *packets, unsigned long *rtt, int sniff, struct arglist *env)
 
int scan (struct arglist *env, char *hostname, char *portrange, struct in6_addr *dst6, unsigned long rtt)
 
tree_cellplugin_run_synscan (lex_ctxt *lexic)
 

Macro Definition Documentation

#define _BSD_SOURCE   1
#define _DEFAULT_SOURCE   1
#define NUM_RETRIES   2

Function Documentation

struct list* add_packet ( struct list l,
unsigned short  dport,
unsigned long  ack 
)

If no packet with dport is in list, prepends a "packet" to the.

list l.

unsigned long compute_rtt ( unsigned long  then)
unsigned long extractack ( char *  pkt,
int  len,
int  family 
)
unsigned short extractsport ( char *  pkt,
int  len,
int  family 
)
struct tcphdr* extracttcp ( char *  pkt,
int  len 
)
struct list* get_packet ( struct list l,
unsigned short  dport 
)
Returns
First pointer to list in l with the given dport , NULL if no such list item could be found.
int issynack ( char *  pkt,
int  len,
int  family 
)
unsigned long maketime ( )
char* mktcp ( struct in_addr  src,
int  sport,
struct in_addr  dst,
int  dport,
unsigned long  th_ack,
unsigned char  flag 
)
char* mktcpv6 ( struct in6_addr *  src,
int  sport,
struct in6_addr *  dst,
int  dport,
unsigned long  th_ack,
unsigned char  flag 
)
int openbpf ( struct in_addr  dst,
struct in_addr *  src,
int  magic 
)

Opens a packet filter, grabs packets from dst to port magic.

Parameters
[out]srcin_addr of source.
[in]dstDestination.
[in]magicDestination port on src to listen to.
Returns
A bpf that listens to tcp packets coming from dst to port magic.
int packetdead ( unsigned long  then,
unsigned long  rtt 
)
tree_cell* plugin_run_synscan ( lex_ctxt lexic)
int rawsocket ( int  family)

Opens and returns a raw socket.

struct list* rm_dead_packets ( struct list l,
unsigned long  rtt,
int *  retry 
)
struct list* rm_packet ( struct list l,
unsigned short  dport 
)
int scan ( struct arglist env,
char *  hostname,
char *  portrange,
struct in6_addr *  dst6,
unsigned long  rtt 
)
Returns
-1 if the socket could not be opened (error), 0 otherwise.

This will send packets to ports not in ports list, will it?

Todo:
How to do this for ipv6? This causes much scan delay for IPv6.
struct list* sendpacket ( int  soc,
int  bpf,
int  skip,
struct in_addr  dst,
struct in_addr  src,
int  dport,
int  magic,
struct list packets,
unsigned long *  rtt,
int  sniff,
struct arglist env 
)
Parameters
sniffIf != 0, "sniff" (listen to incoming packages), else just add packet.
struct timeval timeval ( unsigned long  val)
struct tcphdr* v6_extracttcp ( char *  pkt,
int  len 
)
int v6_openbpf ( struct in6_addr *  dst,
struct in6_addr *  src,
int  magic 
)
struct list* v6_sendpacket ( int  soc,
int  bpf,
int  skip,
struct in6_addr *  dst,
struct in6_addr *  src,
int  dport,
int  magic,
struct list packets,
unsigned long *  rtt,
int  sniff,
struct arglist env 
)