I'm not sure if this is even possible since this might be handled in hardware, but I need to send some Ethernet frames with errors in them. I'd like to be able to create runts, jabber, misalignment, and bad FCS errors. I'm working in Python.
It can be handled in hardware, but isn't always -- and even if it is, you can turn that off; see the ethtool offload parameters.
With regard to getting full control over the frames you create -- look into PF_PACKET (for one approach) or the tap driver (for another).
Here's an article on using PF_PACKET to send hand-crafted frames from Python.
How do you send an Ethernet frame with a corrupt FCS?