F.<y> = GF(2, name='y')[]
K.<x> = GF(2**8, name='x', modulus=y^8 + y^4 + y^3 + y + 1)
bin_digits = lambda h: [((int(str(h), 16))//(2^i)) % 2 for i in range(3, -1, -1)]
bin_poly = lambda n : sum([b * x^(3-i) for i,b in enumerate(bin_digits(n))])
b1 = 2
b2 = 'd'
s = x^4 * bin_poly(b1) + bin_poly(b2)
p = (1/s).polynomial().coeffs()
p.reverse()
b = [0]*(8 - len(p)) + p
b.reverse()
c = [1,1,0,0,0,1,1,0]
d = [int((b[i] + b[(i + 4) % 8] + b[(i + 5) % 8] +
b[(i + 6) % 8] + b[(i + 7) % 8] + c[i]).n()) % 2 for i in range(8)]
d.reverse()
s1 = sum([d[i] * 2^(3-i) for i in range(4)])
s2 = sum([d[i+4] * 2^(3-i) for i in range(4)])
print hex(s1), hex(s2)