void addRound(uint8_t * key, PTW_attackstate * state) { int j; uint8_t iv[3]; uint8_t ks[KEYBYTES]; rc4state rc4s; for (j = 0; j < IVBYTES; j++) { key[j] = rand()%n; iv[j] = key[j]; } rc4init(key, KEYBYTES, &rc4s); for (j = 0; j < KEYBYTES; j++) { ks[j] = rc4update(&rc4s); } PTW_addsession(state, iv, ks); return; }
static void add_keystream(struct wstate *ws, struct ieee80211_frame* wh, int rd) { unsigned char clear[1024]; int dlen = rd - sizeof(struct ieee80211_frame) - 4 - 4; int clearsize; unsigned char *body = (unsigned char*) (wh+1); int i, weight[16], k, j; k = known_clear(clear, &clearsize, weight, (void*) wh, dlen); if (clearsize < 16) return; for (j=0; j<k; j++) { for (i = 0; i < clearsize; i++) clear[i+(32*j)] ^= body[4+i]; } PTW_addsession(ws->ws_ptw, body, clear, weight, k); }