~alza/proyek-uvt/aircrack-ng

« back to all changes in this revision

Viewing changes to patches/old/rtl8187_1010.0622.patch

  • Committer: Raviyanto Ahmad
  • Date: 2013-09-08 01:01:56 UTC
  • Revision ID: git-v1:b6383050c4f79f8ded5bfbe9ecf393ab24773010
Komit pertama WiFi Crack

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--- rtl8187_linux_26.1010.0622.2006/beta-8187/ieee80211.h       2006-06-06 04:58:02.000000000 +0200
 
2
+++ rtl8187_prismhdr/beta-8187/ieee80211.h      2006-11-29 20:28:16.152853116 +0100
 
3
@@ -156,6 +156,23 @@
 
4
        struct list_head list;
 
5
 };
 
6
 
 
7
+#define LWNG_CAP_DID_BASE   (4 | (1 << 6)) /* section 4, group 1 */
 
8
+#define IW_MODE_MONITOR_PRISM  15
 
9
+/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header
 
10
+ * (from linux-wlan-ng) */
 
11
+struct linux_wlan_ng_val {
 
12
+       u32 did;
 
13
+       u16 status, len;
 
14
+       u32 data;
 
15
+} __attribute__ ((packed));
 
16
+
 
17
+struct linux_wlan_ng_prism_hdr {
 
18
+       u32 msgcode, msglen;
 
19
+       char devname[16];
 
20
+       struct linux_wlan_ng_val hosttime, mactime, channel, rssi, sq, signal,
 
21
+               noise, rate, istx, frmlen;
 
22
+} __attribute__ ((packed));
 
23
+
 
24
 struct ieee80211_hdr {
 
25
        u16 frame_ctl;
 
26
        u16 duration_id;
 
27
--- rtl8187_linux_26.1010.0622.2006/beta-8187/r8187_core.c      2006-06-22 07:43:30.000000000 +0200
 
28
+++ rtl8187_prismhdr/beta-8187/r8187_core.c     2006-12-16 16:44:12.244211046 +0100
 
29
@@ -1112,7 +1112,10 @@
 
30
        struct ieee80211_hdr *h = (struct ieee80211_hdr  *) skb->data;
 
31
 
 
32
        if (le16_to_cpu(h->frame_ctl) & IEEE80211_FCTL_MOREFRAGS)
 
33
-               morefrag = 1;
 
34
+       {
 
35
+               if(priv->ieee80211->iw_mode != IW_MODE_MONITOR || priv->ieee80211->raw_tx != 1)
 
36
+                       morefrag = 1;
 
37
+       }
 
38
 //     DMESG("%x %x", h->frame_ctl, h->seq_ctl);
 
39
        /*
 
40
        * This function doesn't require lock because we make
 
41
@@ -2346,7 +2349,8 @@
 
42
                
 
43
                if( flen <= rx_urb->actual_length){
 
44
                
 
45
-                       stats.signal = (desc[1] & 0x7f00)>>8;
 
46
+//                     stats.signal = (desc[1] & 0x7f00)>>8;
 
47
+                       stats.signal = (desc[1] & 0xff00)>>8;
 
48
                        stats.noise = desc[1] &0xff;
 
49
                        stats.rate = desc[0] >> 20 & 0xf;
 
50
                        stats.mac_time[0] = desc[2];
 
51
@@ -2368,6 +2372,8 @@
 
52
                //      priv->rxskb = skb;
 
53
                //      priv->tempstats = &stats;
 
54
 
 
55
+
 
56
+                       stats.signal -= stats.noise;
 
57
                        if(!ieee80211_rx(priv->ieee80211, 
 
58
                                skb, &stats))
 
59
                        dev_kfree_skb_any(skb);
 
60
--- rtl8187_linux_26.1010.0622.2006/beta-8187/r8187.h   2006-06-06 08:48:10.000000000 +0200
 
61
+++ rtl8187_prismhdr/beta-8187/r8187.h  2006-12-16 16:44:31.418296142 +0100
 
62
@@ -148,7 +148,7 @@
 
63
        u8 challow[15]; //channels from 1 to 14, 0 not used
 
64
        short up;
 
65
        short crcmon; //if 1 allow bad crc frame reception in monitor mode
 
66
-//     short prism_hdr;
 
67
+       short prism_hdr;
 
68
        
 
69
 //     struct timer_list scan_timer;
 
70
        /*short scanpending;
 
71
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211.h       2006-06-06 04:57:56.000000000 +0200
 
72
+++ rtl8187_prismhdr/ieee80211/ieee80211.h      2006-11-29 20:45:25.190415628 +0100
 
73
@@ -156,6 +156,22 @@
 
74
        struct list_head list;
 
75
 };
 
76
 
 
77
+#define LWNG_CAP_DID_BASE   (4 | (1 << 6)) /* section 4, group 1 */
 
78
+/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header
 
79
+ * (from linux-wlan-ng) */
 
80
+struct linux_wlan_ng_val {
 
81
+       u32 did;
 
82
+       u16 status, len;
 
83
+       u32 data;
 
84
+} __attribute__ ((packed));
 
85
+
 
86
+struct linux_wlan_ng_prism_hdr {
 
87
+       u32 msgcode, msglen;
 
88
+       char devname[16];
 
89
+       struct linux_wlan_ng_val hosttime, mactime, channel, rssi, sq, signal,
 
90
+               noise, rate, istx, frmlen;
 
91
+} __attribute__ ((packed));
 
92
+
 
93
 struct ieee80211_hdr {
 
94
        u16 frame_ctl;
 
95
        u16 duration_id;
 
96
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_rx.c    2006-06-06 04:58:00.000000000 +0200
 
97
+++ rtl8187_prismhdr/ieee80211/ieee80211_rx.c   2006-12-14 11:40:23.461865287 +0100
 
98
@@ -49,12 +49,72 @@
 
99
                                        struct sk_buff *skb,
 
100
                                        struct ieee80211_rx_stats *rx_stats)
 
101
 {
 
102
-       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
 
103
-       u16 fc = le16_to_cpu(hdr->frame_ctl);
 
104
+       struct ieee80211_hdr *hdr1 = (struct ieee80211_hdr *)skb->data;
 
105
+       u16 fc = le16_to_cpu(hdr1->frame_ctl);
 
106
+       int prism_header;
 
107
+       int hdrlen, phdrlen, head_need, tail_need;
 
108
+
 
109
+       if (ieee->dev->type == ARPHRD_IEEE80211_PRISM) {
 
110
+               prism_header = 1;
 
111
+               phdrlen = sizeof(struct linux_wlan_ng_prism_hdr);
 
112
+       } else {
 
113
+               prism_header = 0;
 
114
+               phdrlen = 0;
 
115
+       }
 
116
+
 
117
+       hdrlen = ieee80211_get_hdrlen(fc);
 
118
+
 
119
+       /* check if there is enough room for extra data; if not, expand skb
 
120
+        * buffer to be large enough for the changes */
 
121
+       head_need = phdrlen;
 
122
+       tail_need = 0;
 
123
+#ifdef PRISM2_ADD_BOGUS_CRC
 
124
+       tail_need += 4;
 
125
+#endif /* PRISM2_ADD_BOGUS_CRC */
 
126
+
 
127
+       head_need -= skb_headroom(skb);
 
128
+       tail_need -= skb_tailroom(skb);
 
129
+
 
130
+       if (head_need > 0 || tail_need > 0) {
 
131
+               if (pskb_expand_head(skb, head_need > 0 ? head_need : 0,
 
132
+                                    tail_need > 0 ? tail_need : 0,
 
133
+                                    GFP_ATOMIC)) {
 
134
+                       printk(KERN_DEBUG "%s: ieee80211_rx failed to "
 
135
+                              "reallocate skb buffer\n", ieee->dev->name);
 
136
+                       dev_kfree_skb_any(skb);
 
137
+                       return;
 
138
+               }
 
139
+       }
 
140
+
 
141
+       if (prism_header == 1) {
 
142
+               struct linux_wlan_ng_prism_hdr *hdr;
 
143
+               hdr = (struct linux_wlan_ng_prism_hdr *)
 
144
+                       skb_push(skb, phdrlen);
 
145
+               memset(hdr, 0, phdrlen);
 
146
+               hdr->msgcode = LWNG_CAP_DID_BASE;
 
147
+               hdr->msglen = sizeof(*hdr);
 
148
+               memcpy(hdr->devname, ieee->dev->name, sizeof(hdr->devname));
 
149
+#define LWNG_SETVAL(f,i,s,l,d) \
 
150
+hdr->f.did = LWNG_CAP_DID_BASE | (i << 12); \
 
151
+hdr->f.status = s; hdr->f.len = l; hdr->f.data = d
 
152
+               LWNG_SETVAL(hosttime, 1, 0, 4, jiffies);
 
153
+               LWNG_SETVAL(mactime, 2, 0, 4, rx_stats->mac_time);
 
154
+               LWNG_SETVAL(channel, 3, 1 /* no value */, 4, 0);
 
155
+               LWNG_SETVAL(rssi, 4, 1 /* no value */, 4, 0);
 
156
+               LWNG_SETVAL(sq, 5, 1 /* no value */, 4, 0);
 
157
+               LWNG_SETVAL(signal, 6, 0, 4, rx_stats->signal);
 
158
+               LWNG_SETVAL(noise, 7, 0, 4, rx_stats->noise);
 
159
+               LWNG_SETVAL(rate, 8, 0, 4, rx_stats->rate / 5);
 
160
+               LWNG_SETVAL(istx, 9, 0, 4, 0);
 
161
+               LWNG_SETVAL(frmlen, 10, 0, 4, skb->len - phdrlen);
 
162
+#undef LWNG_SETVAL
 
163
+       }
 
164
 
 
165
        skb->dev = ieee->dev;
 
166
        skb->mac.raw = skb->data;
 
167
-       skb_pull(skb, ieee80211_get_hdrlen(fc));
 
168
+       skb_pull(skb, hdrlen);
 
169
+       if (prism_header)
 
170
+               skb_pull(skb, phdrlen);
 
171
        skb->pkt_type = PACKET_OTHERHOST;
 
172
        skb->protocol = __constant_htons(ETH_P_80211_RAW);
 
173
        memset(skb->cb, 0, sizeof(skb->cb));
 
174
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_tx.c    2006-06-06 04:57:54.000000000 +0200
 
175
+++ rtl8187_prismhdr/ieee80211/ieee80211_tx.c   2006-12-16 11:57:57.695139366 +0100
 
176
@@ -458,7 +458,8 @@
 
177
                        ieee->seq_ctrl++;
 
178
                //---
 
179
        }else{
 
180
-               if (unlikely(skb->len < sizeof(struct ieee80211_hdr_3addr))) {
 
181
+//             if (unlikely(skb->len < sizeof(struct ieee80211_hdr_3addr))) {
 
182
+               if (unlikely(skb->len < 14)) {
 
183
                        printk(KERN_WARNING "%s: skb too small (%d).\n",
 
184
                        ieee->dev->name, skb->len);
 
185
                        goto success;
 
186
--- rtl8187_linux_26.1010.0622.2006/ieee80211/ieee80211_softmac_wx.c    2006-06-06 04:57:54.000000000 +0200
 
187
+++ rtl8187_prismhdr/ieee80211/ieee80211_softmac_wx.c   2006-11-29 20:43:49.275996836 +0100
 
188
@@ -245,8 +245,7 @@
 
189
                goto out;
 
190
        
 
191
        if (wrqu->mode == IW_MODE_MONITOR){
 
192
-       
 
193
-               ieee->dev->type = ARPHRD_IEEE80211;
 
194
+               ieee->dev->type = ARPHRD_IEEE80211_PRISM;
 
195
        }else{
 
196
                ieee->dev->type = ARPHRD_ETHER;
 
197
        }