Exemplo n.º 1
0
static size_t p0f2str(char *buf, size_t len, const tcp *t, size_t tcplen, const ipv4 *ip, size_t iplen, int mss_star)
{
  size_t bytes = 0;
  p0f_fingerprint p;
  if (build_p0f_fingerprint(t, tcplen, ip, iplen, &p)) {
    char winbuf[16],
         optbuf[256],
         quirkbuf[16];
    u16 mtu = p.mss + 40;
    if (p.mss && 0 == p.win.size % p.mss) {
      snprintf(winbuf, sizeof winbuf, "S%u", p.win.size / p.mss);
    } else if (mtu > 40 && 0 == p.win.size % mtu) {
      snprintf(winbuf, sizeof winbuf, "T%u", p.win.size / mtu);
    } else {
      snprintf(winbuf, sizeof winbuf, "%u", p.win.size);
    }
    opt2str(optbuf, sizeof optbuf, &p, mss_star);
    quirk2str(quirkbuf, sizeof quirkbuf, &p);
    bytes = snprintf(buf, len, "%s:%u:%u:%u:%s:%s",
      winbuf, p.ttl, p.df, p.synsize, optbuf, quirkbuf);
  } else {
    *buf = '\0';
  }
  printf("TCP.SYN.Fingerprint(%u)=%s\n", (unsigned)bytes, buf);
  return bytes;
}
Exemplo n.º 2
0
/* option to string -------------------------------------------------------------
* convert option to string (keyword=value # comment)
* args   : opt_t  *opt      I  option
*          char   *buff     O  option string
* return : length of output string
*-----------------------------------------------------------------------------*/
extern int opt2buf(const opt_t *opt, char *buff)
{
    char *p=buff;
    int n;
    
    trace(3,"opt2buf : name=%s\n",opt->name);
    
    p+=sprintf(p,"%-18s =",opt->name);
    p+=opt2str(opt,p);
    if (*opt->comment) {
        if ((n=(int)(buff+30-p))>0) p+=sprintf(p,"%*s",n,"");
        p+=sprintf(p," # (%s)",opt->comment);
    }
    return (int)(p-buff);
}