Выше сказали верно — упаковываете не то что распаковали.
Если файл небольшой, то удобнее наверно сразу считать его в массив, обработать, а потом массив записать.
Например так:
data = file('ac.swf','rb').read()
bytearr = unpack('<%db'%len(data), data)
# Process array bytearr: enumerate(bytearr)...
file('aaaa.swf','wb').write(pack('<%db'%len(bytearr), bytearr))
Pyro работает по tcp, поэтому «продырявить» файрвол автоматически не так просто. Если на роутере сделать проброс (NAT) порта, то дальше по документации Pyro behind NAT-router