nexmon – Rev 1

Subversion Repositories:
Rev:
#include <stdio.h>

#include "debug.h"


void print_packet(unsigned char *h80211, int caplen)
{
        int i,j;

        printf( "        Size: %d, FromDS: %d, ToDS: %d",
                caplen, ( h80211[1] & 2 ) >> 1, ( h80211[1] & 1 ) );

        if( ( h80211[0] & 0x0C ) == 8 && ( h80211[1] & 0x40 ) != 0 )
        {
        if( ( h80211[27] & 0x20 ) == 0 )
                printf( " (WEP)" );
        else
                printf( " (WPA)" );
        }

        for( i = 0; i < caplen; i++ )
        {
        if( ( i & 15 ) == 0 )
        {
                if( i == 224 )
                {
                printf( "\n        --- CUT ---" );
                break;
                }

                printf( "\n        0x%04x:  ", i );
        }

        printf( "%02x", h80211[i] );

        if( ( i & 1 ) != 0 )
                printf( " " );

        if( i == caplen - 1 && ( ( i + 1 ) & 15 ) != 0 )
        {
                for( j = ( ( i + 1 ) & 15 ); j < 16; j++ )
                {
                printf( "  " );
                if( ( j & 1 ) != 0 )
                        printf( " " );
                }

                printf( " " );

                for( j = 16 - ( ( i + 1 ) & 15 ); j < 16; j++ )
                printf( "%c", ( h80211[i - 15 + j] <  32 ||
                                h80211[i - 15 + j] > 126 )
                                ? '.' : h80211[i - 15 + j] );
        }

        if( i > 0 && ( ( i + 1 ) & 15 ) == 0 )
        {
                printf( " " );

                for( j = 0; j < 16; j++ )
                printf( "%c", ( h80211[i - 15 + j] <  32 ||
                                h80211[i - 15 + j] > 127 )
                                ? '.' : h80211[i - 15 + j] );
        }
        }
        printf("\n");
}