You could disable the PID check and examine what mobidedrm expects. After making the changes you have to pass a 8 char PID to the python program:
(Be careful with the indentions)
Code:
def __init__(self, data_file, pid):
### BEGIN NEW CODE ###
# Calculate PID checksum if just the first 8 chars are specified
if len(pid) == 8:
pid = checksumPid(pid)
print "Full PID is %s" % pid
### END NEW CODE ###
if checksumPid(pid[0:-2]) != pid:
raise DrmException("invalid PID checksum")
pid = pid[0:-2]
Does it work for you?
If the decrypted result is garbage then your PID is not correct.
-Red Dragon