diff --git a/sip/torture.py b/sip/torture.py
new file mode 100644
index 0000000..6ba16ee
--- /dev/null
+++ b/sip/torture.py
@@ -0,0 +1,19 @@
+# RFC4475 Torture Message String Literal Encoder
+
+import re
+import sys
+import textwrap
+
+hexsub = lambda m: re.sub(r'(..)', r'\x\1', m.group(1))
+repeatsub = lambda m: m.group(2) * int(m.group(1))
+allonelinesub = lambda m: m.group(1).replace('\n', '')
+
+message = sys.stdin.read()
+message = textwrap.dedent(message)
+message = re.sub(r'(.+?)', allonelinesub, message, 0, re.S)
+message = re.sub(r'(.*?)', repeatsub, message, 0, re.S)
+message = message.replace('\\', '\\\\')
+message = re.sub(r'(.*?)', hexsub, message, 0, re.S)
+message = message.replace('"', '\\"')
+message = '"' + message.replace('\n', '\\r\\n" +\n"') + '"'
+print message