Created
June 14, 2020 21:25
-
-
Save lkraider/9530798a695586fc1580d0728966f6f0 to your computer and use it in GitHub Desktop.
X-OVH-SPAMCAUSE decoder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def decode(msg): | |
text = [] | |
for i in range(0, len(msg), 2): | |
text.append(unrot(msg[i: i + 2])) | |
return str.join('', text) | |
def unrot(pair, key=ord('x')): | |
offset = 0 | |
for c in 'cdefgh': | |
if c in pair: | |
offset = (ord('g') - ord(c)) * 16 | |
break | |
return chr(sum(ord(c) for c in pair) - key - offset) | |
if __name__ == '__main__': | |
import sys | |
print(decode(sys.argv[1])) |
Hello,
can you explain me how to use it ?
where i have to put the spamcause string ?
Thanks for your help
The spamcause string is the parameter of the decode function, given as command line parameter in the main.
So in most Python environments, you could use the following:
python spam_decode.py "spamcause string"
(but without the quotes)
Hello and thanks for your answer
you mean
python spam_decode.py my_very_long_string ?
yes thanks a lot it works fine !
Just to know, is it normal that the result is truncated
Thanks again
Can you provide an example? In principle, the entire spamcause string is parsed and decoded.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The offset characters (c..g) are alternatingly appended and prepended. So instead of just checking if one of them is in the pair, it is necessary to differentiate between, e.g., fh and hf, by keeping track of even or odd pairs. Check my fork for an update.