Redsn0w

redsn0w was originally called QuickPwn but due to the theft and exploitation of the name, QuickPWN by quickpwn.com, as of iOS 3.0, QuickPwn was discontinued and redsn0w (at the time, version 0.7) was converted into a jailbreaking tool for all current devices as well as providing unlock support the iPhone 2G. As of version 0.8, the iPhone 3GS can also be jailbroken through redsn0w.

Version 0.9 beta 3 was released for Windows and Mac OS X, and it allows iOS 3.0 through 3.1.2 to be jailbroken. It includes support for all devices except the iPod touch 3G, and supports a tethered jailbreak on iPhone 3GS units and iPod touch 2G units with new bootroms. In addition, this version supports custom boot and recovery mode logos, as well as verbose mode on bootup.

Version 0.9.2 supports jailbreaking of all iDevices (at the time) with iOS 3.0 through 3.1.2 on Windows and Mac OS X, as well as 3.1.3 on S5L8900 devices. Version 0.9.3 adds support of internet tethering IPCC hack on those devices and 0.9.4 allows jailbreaking of early iPod touch 2G with iOS 3.1.3.

Version 0.9.5b5-5 supports jailbreaking the iPhone 3G and iPod touch 2G (old bootrom) with iOS 4.0 on Windows and Mac OS X.

Version 0.9.6b6 supports jailbreaking iOS 3.2.2, 4.1, and 4.2.1 for every device that supports those versions (except Apple TV 2G), on Windows and Mac OS X.

Version 0.9.10b1 adds support for iOS 4.2.6 through 5.0.1 (though iOS 4.2.9, 4.2.10, 4.3.4, 4.3.5, and 5.0 are tethered on devices invulnerable to the 0x24000 Segment Overflow). The current build of redsn0w is not capable of jailbreaking S5L8940 devices.

Credit
iPhone Dev Team

Exploits used
For iPhone, iPod touch, and iPhone 3G:
 * Pwnage
 * Pwnage 2.0

For iPod touch 2G:
 * 0x24000 Segment Overflow
 * ARM7 Go - used to upload the oversized LLB required to utilize the 0x24000 Segment Overflow.
 * usb_control_msg(0xA1, 1) Exploit - used (in redsn0w 0.9.6 beta 1) to upload the oversized LLB to utilize the 0x24000 Segment Overflow, as well as a tethered jailbreak on units with the new bootrom.

For iPhone 3GS:
 * 0x24000 Segment Overflow
 * iBoot Environment Variable Overflow - Exploit has a different implementation from geohot's implementation in purplera1n.
 * usb_control_msg(0x21, 2) Exploit
 * limera1n exploit

For iPod touch 3G:
 * usb_control_msg(0x21, 2) Exploit
 * limera1n exploit

For iPhone 4, iPod touch 4G, iPad and Apple TV 2G:
 * limera1n exploit