1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/usr/bin/env python
import os
import sys
import pwd
import socket
def drop():
uid = os.getuid()
gid = os.getgid()
if uid and gid:
return
for name in [
'nobody',
]:
try:
user = pwd.getpwnam(name)
nuid = int(user.pw_uid)
ngid = int(user.pw_uid)
except KeyError:
pass
if not gid:
os.setgid(ngid)
if not uid:
os.setuid(nuid)
if len(sys.argv) != 4:
print sys.argv[0], '<host> <port> <hex file to create>'
sys.exit(1)
drop()
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect the socket to the port on the server given by the caller
server_address = (sys.argv[1], int(sys.argv[2]))
print >> sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)
with open(sys.argv[3]) as record:
try:
while True:
count = 0
even = False
byte = sock.recv(1)
if byte == '':
break
record.write('%02X' % ord(byte))
count = (count + 1) % 8
if not count:
record.write('\n')
even = False
else:
even != even
if even:
record.write(' ')
finally:
sock.close()
|