[Oisf-devel] Decoding Problem [ One byte Missing ]
Anoop Saldanha
anoopsaldanha at gmail.com
Fri Aug 3 05:04:44 UTC 2012
Hi Prabhakaran,
On Thu, Jul 26, 2012 at 9:17 PM, Prabhakaran Kasinathan
<prabhakaran1989 at gmail.com> wrote:
> Hi Anoop Saldanha,
>
> Thanks for your help. I understood the second method and it worked
> perfectly. printf prints to console normally :). Now i have the basic
> decoding, which gives me the src and dst address + some other data required
> for time being.
>
> In-order to write the Detection module. Which files to Look up?
>
>
> My Idea is to detect an flooding intially. Such that a signature should
> match the src and dest address and the rate of incoming packet's.
Have a look at thresholding - detect-engine-threshold.[ch].
What are you planning to implement in detection? If it's the flooding
thing, I doubt you'd have to write anything new as such in detection,
since most of the infrastructure's already in place.
>
> Could you give me a high level overview of where to start and look after
> could be very helpful :)
>
> Thank you!.
>
>
> On Wed, Jul 25, 2012 at 6:37 PM, Anoop Saldanha <anoopsaldanha at gmail.com>
> wrote:
>>
>> On Wed, Jul 25, 2012 at 4:48 PM, Prabhakaran Kasinathan
>> <prabhakaran1989 at gmail.com> wrote:
>> > Dear Developer's,
>> >
>> > I have been working in decoding the IEEE802154 packets and 6LoWPAN
>> > packets.
>> > It took some time to understand the decoding functionality. Pls Help!
>> >
>> > Now my problem is,
>> >
>> > One byte is missing when i try to separate the structure like ( uint16_t
>> > ,
>> > uint8_t,here next 8 bit is missing, uint16_t ...) it jumps to the next
>> > 16
>> > bit and next 16 bit and soo on! What is the problem here?
>> >
>> > whereas it works correctly either if i use ( uint16_t , uint8_t
>> > ,uint8_t,uint16_t ,uint16_t , and so.... ) or ( uint16_t ,uint16_t
>> > ,uint16_t
>> > ,uint16_t , ... ) . I couldn't understand this.
>> >
>> > Details :
>> >
>> > The current Header of IEEE802154 packet.
>> >
>> > octects 2 1 2 2 2
>> > | FCF | Seq no | Dst Pan | Dst Add | Src Add | remaining data
>> >
>> >
>> > Hex : 61 88 d9 22 00 01 00 64 00 e0 ... Data... [ the byte 22 is
>> > missing when i print the hole order ]
>> >
>> > My Structure Declarations
>> >
>> > typedef struct Ieee802154Hdr_ {
>> > uint16_t ieee802154_fcf;
>> > uint8_t ieee802154_seq;
>> > uint16_t ieee802154_dstpan;
>> > uint16_t ieee802154_dstadd;
>> > uint16_t ieee802154_srcadd;
>> > } Ieee802154Hdr;
>> >
>> > SCLogInfo("\n Length %d ieee FCF: %x | ieee seq %x | DstPan %04x |
>> > Dstadd %04X | SrcAdd
>> >
>> > %04x",len,ntohs(p->ieeeh->ieee802154_fcf),ntohs(p->ieeeh->ieee802154_seq),ntohs(p->ieeeh->ieee802154_dstpan),ntohs(p->ieeeh->ieee802154_dstadd),ntohs(p->ieeeh->ieee802154_srcadd));
>> >
>> >
>> > Output is:
>> >
>> > Length 26 ieee FCF: 6188 | ieee seq d9 | DstPan 0001 | Dstadd 0064 |
>> > SrcAdd 00e0
>> >
>> > it
>> > should
>> > be 0022 0001 0064
>> >
>> > Note: If I use the (uint16_t) continuously, I get the bytes correctly.
>> > How
>> > to overcome this problem.
>> >
>>
>> This is a gcc alignment issue. Can't think of any portable solutions as
>> such.
>>
>> One way would be use a uint8_t array to point to the packet byte
>> array, and use macros to dereference the various fields from this
>> array.
>>
>> #DEFINE GET_IEEE802145_DSTPAN(array) (*((uint16_t *)((uint8_t *)array +
>> 3))
>>
>> --
>>
>> Another solution would be to define the struct as
>>
>> {
>> uint16_t a;
>> uint8_t b;
>> uint8_t c1;
>> uint8_t c2;
>> ...
>> }
>>
>> So c1 + c2 in your case would be ieee802154_dstpan. You can hide the
>> retrieval of the value from c1 + c2 using some macros.
>>
>> Let me know if you have a better solution.
>>
>> > Question 2:
>> >
>> > How to use the SCLogDebug and Printf lines to get printed in console?
>> > Since
>> > I couldn't find that. I started using SCLogInfo to print and debug the
>> > error's.
>> >
>> > --
>> > Best Regards,
>> > Prabhakaran Kasinathan
>> > +39 3279720502
>> >
>> >
>> > _______________________________________________
>> > Oisf-devel mailing list
>> > Oisf-devel at openinfosecfoundation.org
>> > http://lists.openinfosecfoundation.org/mailman/listinfo/oisf-devel
>>
>> doesn't printf print to the console? SCLogDebug needs --enable-debug
>> while configuring and requires you to set the log-level in the conf
>> to debug.
>>
>> --
>> Anoop Saldanha
>
>
>
>
> --
> Best Regards,
> Prabhakaran Kasinathan
> +39 3279720502
>
--
Anoop Saldanha
More information about the Oisf-devel
mailing list