Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SlipDecoder:
- buffer = []
- result = []
- state = 1
- def decode_message(self, s):
- #s = bytearray(s, 'ascii')
- for x in s:
- c = ord(x)
- if self.state == 1:
- if c == 0x7e:
- self.state = 2
- elif self.state == 2:
- if c == 0x7c:
- if self.buffer != []:
- self.result += [self.buffer]
- self.buffer = []
- self.state = 1
- elif c == 0x7d:
- self.state = 3
- else:
- self.buffer += [c]
- elif self.state == 3:
- if c ^ 0x20 not in [0x7d, 0x7c, 0x7e]:
- self.state = 1
- self.buffer = []
- else:
- self.buffer += [c ^ 0x20]
- self.state = 2
- returned = [''.join(map(chr, e)) for e in self.result]
- self.result = []
- return returned
- #decoder = SlipDecoder()
- #print(decoder.decode_message('~hell'))
- #print(decoder.decode_message('o|'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement