>
>
> No, it's not based on the type of interface, or the mode of the interface.
>  It's based on whether the 802.11 payload has been decrypted or not; if
> you're capturing in monitor mode most frames are probably encrypted, but if
> you're not capturing in monitor mode and seeing only frames to or from your
> machine, they're probably decrypted.
>
> Got you !

> What the decrypted data (if the frame was encrypted) or the unencrypted
> data (if the frame wasn't encrypted) is then depends on the type and
> subtype fields.
>
> > According to my knowledge, I assume if the control frame bit with
> > Is it an llc header with a general format :
> > struct llc_hdr {
> >  uint8 dsap;
> >  uint8 ssap;
> >  struct {
> >    uint8 ui;
> >    uint8 org_code[3];
> >    uint16 ether_type;
> >  } snap;
> > };
>
> Since I am capturing every frame in monitor mode, I would like to see the
packet type : arp/ip ... and is it tcp/udp type.
But when I do the following, I don't get any output

// f is ieee80211_hdr
 if( subtype== IEEE80211_STYPE_DATA ){
      struct llc_hdr* llc = (struct llc_hdr*)(((uchar*)f) + hdrlen);
      int llc_type = ntohs(llc->snap.ether_type);
      if (llc_type == ETHERTYPE_ARP) {
       printf("ethernet type \n");
      } else if (llc_type == ETHERTYPE_IP) {
        if (jh->caplen_ < hdrlen + sizeof(*llc) + sizeof(struct iphdr))
          return;
       struct  iphdr* ih = (struct iphdr*)(llc+1);
        if (ih->protocol == IPPROTO_TCP)
        printf("tcp \n");
        else if (ih->protocol == IPPROTO_UDP)
        printf("udp \n");
        else if (ih->protocol == IPPROTO_ICMP)
        printf("icmp \n");

   }else if(subtype ==  IEEE80211_STYPE_NULLFUNC ){
        printf("no data\n");
   }




> Well, if the type is a data frame, then the payload, *once it's been
> decrypted if it was encrypted*, begins with an 802.2 LLC header.  That's
> not determined by a single bit, but by a 2-byte type field (and a 4-byte
> subtype field, as some data frames have no data).

As you can notice, I am using a 2 byte field to check the subtype field.


> 802.2 headers don't necessarily have an organization code or protocol ID
> field - that's the case only for SNAP frames, where the DSAP and SSAP are
> 0xAA - and, for SNAP frames, the protocol ID field is an Ethernet type only
> if the organization code is 00:00:00.
>
> Shall i use some other llc struct to find out the data packet is of which
transport layer protocol

Abhinav Narain


> -
> This is the tcpdump-workers list.
> Visit https://cod.sandelman.ca/ to unsubscribe.
>
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to