import sys,random,struct,socket,lib
from random import *
from lib import *
from socket import *

if len(sys.argv)<=1:	
 sys.exit('Give me an IP Dude')

host = sys.argv[1],445

print "Dummy Example"

packetnego = [chr(int(a, 16)) for a in """
ff 53 4d 42 72 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 d5 15 00 00 81 0b
00 77 00 02 50 43 20 4e 45 54 57 4f 52 4b 20 50
52 4f 47 52 41 4d 20 31 2e 30 00 02 4d 49 43 52
4f 53 4f 46 54 20 4e 45 54 57 4f 52 4b 53 20 33
2e 30 00 02 44 4f 53 20 4c 4d 31 2e 32 58 30 30
32 00 02 44 4f 53 20 4c 41 4e 4d 41 4e 32 2e 31
00 02 57 69 6e 64 6f 77 73 20 66 6f 72 20 57 6f
72 6b 67 72 6f 75 70 73 20 33 2e 31 61 00 02 4e
54 20 4c 4d 20 30 2e 31 32 00""".split()]

packetsession1 = [chr(int(a, 16)) for a in """
ff 53 4d 42 73 00 00 00 00 18 07 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff fe 00 00 04 00
0d 75 00 54 00 68 0b 02 00 00 00 04 06 03 80 01
00 01 00 00 00 00 00 d4 00 00 00 17 00 00 00 57
69 6e 64 6f 77 73 20 37 20 50 72 6f 00 57 49 4e
37 00 00 00 04 ff 00 91 00 08 00 18 00 32 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 5c 5c 31 39 32 2e 31 36 38
2e 31 2e 38 36 5c 49 50 43 24 00 3f 3f 3f 3f 3f
00""".split()]

def longueur(payload):
    length = struct.pack(">i", len(''.join(payload)))
    return length

def handle(data):

    ##Session Setup AndX Request, tree ipc;
    if data[8:10] == "\x72\x00":
       print "Session Query fuzzed sended\n"
       packet0 = ''.join(randfunc(packetsession1)) ### ---> randfunc used ... 
       buffer0 = longueur(packet0)+packet0          
       print "complete packet %s\n\n" % (buffer0.encode("hex"))
       return buffer0
    ## no uid/tid/mid/etc care here, this is not a fuzzer release, just an example of using this lib...
    ## put here the Rest of tha RFC/Specs.  

##starting prog   
def run():
    s = socket(AF_INET, SOCK_STREAM)
    s.connect(host)  
    s.settimeout(0.1) 
    packet0 = ''.join(randfunc(packetnego)) ### ---> randfunc used ...
    print "Nego fuzzing"
    buffer0 = longueur(packet0)+packet0
    print "complete packet nego %s\n\n" % (buffer0.encode("hex"))
    s.send(buffer0)
    try:
      while True:
        data = s.recv(1024)
        s.send(handle(data)) 
    except Exception:
        pass 
        s.close()

while True:
   run()