Exemplo n.º 1
0
int
main(int argc, char *argv[])
{
	struct bpf_program prog;
	parse_args(argc, argv);

	if (pcap_compile_nopcap(snaplen, dlt, &prog, expr, 1, 0))
	{
		fprintf(stderr, "Syntax error in expression\n");
		exit(EX_USAGE);
	}

	switch(format)
	{
	case RAW:
		print_raw(&prog);
		break;
	case HEXSTRING:
		print_hexstring(&prog);
		break;
	case NG_BPF:
		print_ng_bpf(&prog);
		break;
	}

	return EX_OK;
}
Exemplo n.º 2
0
Arquivo: pico.c Projeto: sprowell/pico
void
pico_dump_header(PICO * pico, header_format_t format, FILE * out) {
    if (pico == NULL) return;
    if (out == NULL) return;

    // Python dictionary and JSON are almost exactly the same.  Almost.
    // So is YAML.
    switch (format) {
        case PYTHON_DICT:
        case JSON:
            // Write the header information as either JSON or a Python dict.
            fprintf(out, "{\n");
            fprintf(out, "    \"magic\" : [ ");
            print_array(&magic, sizeof(magic_t), format == PYTHON_DICT, out);
            fprintf(out, " ],\n");

            fprintf(out, "    \"major\" : ");
            print_int(&pico->major, sizeof(major_t), false, out);
            fprintf(out, ",\n");

            fprintf(out, "    \"minor\" : ");
            print_int(&pico->minor, sizeof(minor_t), false, out);
            fprintf(out, ",\n");

            fprintf(out, "    \"offset\" : ");
            print_int(&pico->offset, sizeof(offset_t), format == PYTHON_DICT, out);
            fprintf(out, ",\n");

            fprintf(out, "    \"md5\" : \"");
            print_hexstring(pico->hash, HASH_LEN, out);
            fprintf(out, "\",\n");

            fprintf(out, "    \"key_length\" : ");
            print_int(&pico->key_length, sizeof(keylen_t), false, out);
            fprintf(out, ",\n");

            fprintf(out, "    \"key\" : [ ");
            print_array(pico->key, pico->key_length, format == PYTHON_DICT, out);
            fprintf(out, " ]\n");

            fprintf(out, "}\n");
            break;

        case YAML:
            // Write header as YAML.
            fprintf(out, "    magic : [ ");
            print_array(&magic, sizeof(magic_t), true, out);
            fprintf(out, " ]\n");

            fprintf(out, "    major : ");
            print_int(&pico->major, sizeof(major_t), false, out);
            fprintf(out, "\n");

            fprintf(out, "    minor : ");
            print_int(&pico->minor, sizeof(minor_t), false, out);
            fprintf(out, "\n");

            fprintf(out, "    offset : ");
            print_int(&pico->offset, sizeof(offset_t), true, out);
            fprintf(out, "\n");

            fprintf(out, "    md5 : ");
            print_hexstring(pico->hash, HASH_LEN, out);
            fprintf(out, "\n");

            fprintf(out, "    key_length : ");
            print_int(&pico->key_length, sizeof(keylen_t), false, out);
            fprintf(out, "\n");

            fprintf(out, "    key : [ ");
            print_array(pico->key, pico->key_length, true, out);
            fprintf(out, " ]\n");
            break;

        case XML:
            // Write header as XML.
            fprintf(out, "<pico magic='");
            print_hexstring(&magic, sizeof(magic_t), out);
            fprintf(out, "'\n");

            fprintf(out, "    major='");
            print_int(&pico->major, sizeof(major_t), false, out);
            fprintf(out, "'\n");

            fprintf(out, "    minor='");
            print_int(&pico->minor, sizeof(minor_t), false, out);
            fprintf(out, "'\n");

            fprintf(out, "    offset='");
            print_int(&pico->offset, sizeof(offset_t), false, out);
            fprintf(out, "'\n");

            fprintf(out, "    md5='");
            print_hexstring(pico->hash, HASH_LEN, out);
            fprintf(out, "'\n");

            fprintf(out, "    key_length='");
            print_int(&pico->key_length, sizeof(keylen_t), false, out);
            fprintf(out, "'\n");

            fprintf(out, "    key='");
            print_hexstring(pico->key, pico->key_length, out);
            fprintf(out, "' />\n");
            break;

        default:
            // Do nothing.
            break;
    }
}