Skip to content

Instantly share code, notes, and snippets.

@DoubleYouEl
Forked from lkraider/spam_decode.py
Last active November 2, 2024 07:24
Show Gist options
  • Save DoubleYouEl/e3de97293ce3d5452b3be7a336a06ad7 to your computer and use it in GitHub Desktop.
Save DoubleYouEl/e3de97293ce3d5452b3be7a336a06ad7 to your computer and use it in GitHub Desktop.
X-OVH-SPAMCAUSE decoder
def decode(msg):
text = ""
for i in range(0, len(msg), 2):
text += unrot(msg[i: i + 2], i // 2) # add position as extra parameter
return text
def unrot(pair, pos, key=ord('x')):
if pos % 2 == 0: # "even" position => 2nd char is offset
pair = pair[1] + pair[0] # swap letters in pair
offset = (ord('g') - ord(pair[0])) * 16 # treat 1st char as offset
return chr(sum(ord(c) for c in pair) - key - offset) # map to original character
if __name__ == '__main__':
import sys
print(decode(sys.argv[1]))
@danpietro
Copy link

Hello. I need to decode a SPAMCAUSE looong string . How can i do this ?

@DoubleYouEl
Copy link
Author

Hello. I need to decode a SPAMCAUSE looong string . How can i do this ?

It depends: how long is this long string? You could copy-paste it into the python code and use it as value to assign to a variable (instead of passing it as an argument).

@danpietro
Copy link

danpietro commented Nov 17, 2022 via email

@DoubleYouEl
Copy link
Author

You could just use this main program, instead of using the sys.argv-approach:

spamcause = <your very long string between quotes>
print(decode(spamcause))

@mqu
Copy link

mqu commented Mar 24, 2023

an other way to use this script:

  • feed spamcause header in a file whithout "X-VR-SPAMCAUSE: "
  • then run
python3 ./ovh-spam-cause.py $(cat /tmp/temp-file) | sed -e "s/;/\n/g"

@revolunet
Copy link

Here's an online version : https://f3hj7s.csb.app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment