Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. class SlipDecoder:
  2. buffer = []
  3. result = []
  4. state = 1
  5.  
  6. def decode_message(self, s):
  7. #s = bytearray(s, 'ascii')
  8. for x in s:
  9. c = ord(x)
  10. if self.state == 1:
  11. if c == 0x7e:
  12. self.state = 2
  13. elif self.state == 2:
  14. if c == 0x7c:
  15. if self.buffer != []:
  16. self.result += [self.buffer]
  17. self.buffer = []
  18. self.state = 1
  19. elif c == 0x7d:
  20. self.state = 3
  21. else:
  22. self.buffer += [c]
  23. elif self.state == 3:
  24. if c ^ 0x20 not in [0x7d, 0x7c, 0x7e]:
  25. self.state = 1
  26. self.buffer = []
  27. else:
  28. self.buffer += [c ^ 0x20]
  29. self.state = 2
  30.  
  31. returned = [''.join(map(chr, e)) for e in self.result]
  32. self.result = []
  33. return returned
  34.  
  35. #decoder = SlipDecoder()
  36. #print(decoder.decode_message('~hell'))
  37. #print(decoder.decode_message('o|'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement