1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/*
* netsniff-ng - the packet sniffing beast
* Copyright 2009, 2010 Daniel Borkmann.
* Subject to the GPL, version 2.
*/
#include <stdio.h>
#include <stdint.h>
#include <ctype.h>
#include "proto.h"
#include "protos.h"
#include "pkt_buff.h"
void empty(struct pkt_buff *pkt __maybe_unused) {}
void _hex(uint8_t *ptr, size_t len)
{
if (!len)
return;
tprintf(" [ Hex ");
for (; ptr && len-- > 0; ptr++)
tprintf(" %.2x", *ptr);
tprintf(" ]\n");
}
void hex(struct pkt_buff *pkt)
{
size_t len = pkt_len(pkt);
if (!len)
return;
_hex(pkt_pull(pkt, len), len);
tprintf("\n");
}
void _ascii(uint8_t *ptr, size_t len)
{
if (!len)
return;
tprintf(" [ Chr ");
for (; ptr && len-- > 0; ptr++)
tprintf("%c", isprint(*ptr) ? *ptr : '.');
tprintf(" ]\n");
}
void ascii(struct pkt_buff *pkt)
{
size_t len = pkt_len(pkt);
if (!len)
return;
_ascii(pkt_pull(pkt, len), len);
tprintf("\n");
}
void hex_ascii(struct pkt_buff *pkt)
{
size_t len = pkt_len(pkt);
uint8_t *ptr = pkt_pull(pkt, len);
if (len) {
_ascii(ptr, len);
_hex(ptr, len);
}
tprintf("\n");
}
static void none_less(struct pkt_buff *pkt __maybe_unused)
{
tprintf("\n");
}
struct protocol none_ops = {
.key = 0x01,
.print_full = hex_ascii,
.print_less = none_less,
};
|