From my understanding, ChopChop attack against WEP, which goal is to decrypt one packet without need to know the WEP key, goes like this:
First, the attacker takes one ciphertext message from the RF stream, addressed to the target AP. Next, he/she "chops-off" the last byte of the message, right before the ICV (which is also encrypted in the packet), and replace it with random value in range of 01 to FA. Then, the attacker finds this one changed byte position in the ICV, and calculates it to be right (because it's linear CRC-32), so the modified packet will have correct ICV checksum when it is checked by the AP during the decryption process.
The packets now is injected in the AP. The attacker listen for broadcast traffic in order to see if the packet (ARP-request, in most cases) is retransmitted again.
I can't understand, if the checksum is always correct (the attacker computes it to match to the changed with plaintext byte in the ciphertext right before packet injection in the AP), how the AP knows that the modified byte is actually wrong and doesn't match to the plaintext?
The AP will decrypt the packet (the last byte in plaintext will be ignored by the decryption algorithm, it's already in plaintext), then will compute the checksum of the plaintext, and will see if it match to the decrypted ICV value. And it will always match, because the attacker computes it right before the packet injection in the AP. So, the AP will never reject the packet?
How our AP determines that the packet with the flipped byte is corrupt?