In a large mixing bowl, combine the buttermilk, salt, black pepper, garlic powder, onion powder, paprika, and cayenne pepper. Whisk together until well mixed.
Add the chicken pieces to the buttermilk mixture and ensure they are fully submerged. Cover the bowl and marinate in the refrigerator for at least 2 hours, or overnight for best results.
Remove the chicken from the buttermilk marinade and allow the excess to drip off. In a shallow dish, place the flour.
Coat each piece of marinated chicken in the flour, pressing down gently to adhere the flour well. Shake off any excess flour.
In a large frying pan or deep fryer, heat oil over medium-high heat. The oil should reach around 350°F (175°C).
Carefully add the coated chicken pieces to the hot oil, taking care not to overcrowd the pan. Fry in batches if necessary.
Cook the chicken for about 15-20 minutes, turning halfway through, until golden brown and internal temperature reaches 165°F (75°C).
Once cooked, remove the chicken from the oil using tongs and place it on paper towels to drain excess oil.
Let the chicken rest for a few minutes before serving.