Hands down the easiest way to introduce network issues in applications on Windows is to use Clumsy. There is both a GUI and a command line interface available. The functionalities are as follows:

  1. Drop packets with a % chance
  2. Duplicate packets
  3. Add lag
  4. Make the packets go out of order
  5. Tamper packets

The GUI looks like the gif below but all the above commands are also available via command line interface.

clumsy-demo.gif
https://github.com/jagt/clumsy/blob/master/clumsy-demo.gif

How To Call Clumsy.exe From Terminal/CLI

It’s easy to miss the Wiki on Clumsy’s official Github page: https://github.com/jagt/clumsy/wiki/Command-Line-Arguments

The way to use it in 3 steps:

  1. First filter the and specify which IPs or Ports you want the settings to apply to.
  2. Then enable the different features lag/drop/duplicate… inbound or outbound.
  3. Then for each feature enabled specify the amount for each of them. This can be a number or percentage depending on the feature. For example lag is in number of Milliseconds while drop is in drop percentage chance.

Below is a sample execution of Clumsy.exe to drop all packets inbound or outbound over TCP port 443.

clumsy.exe --filter "tcp and (tcp.DstPort == 443 or tcp.SrcPort == 443)" --drop on --drop-inbound on --drop-outbound on --drop-chance 100.0

The best way to get used to it is to use the GUI version first. Then if you need to automate things use the CLI instead.