Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. #!/usr/bin/python
  3. ## Sandman
  4. # DOC: Fri, Mar 27, 13:05:00
  5. # CS 1.6 UDP Client System
  6. #TODO: Modify parser for 1.6
  7.  
  8. import sys
  9. import socket
  10. from socket import *
  11. if len(sys.argv) < 2 :
  12.     print "|:| Usage: "+sys.argv[0]+" "
  13.     print "|:| Arguments: -r -v -q -p [NOT WORKING]"
  14.     print "|:| ./udpClnt.py 172.16.X"
  15.     sys.exit()
  16.  
  17. # Set the socket parameters
  18. quiet = 1
  19. pckDump = 1
  20. delm = 0
  21. parse = 0
  22. sbsString = ""
  23. port = 27015    #Set Default Dest. Port
  24. arg=1
  25. if "-q" in sys.argv:
  26.     if len(sys.argv) < 3:
  27.         print "|!| Error: address missing!"
  28.         sys.exit()
  29.     quiet = 0
  30.  
  31. if "-v" in sys.argv:
  32.     print "|:| CS 1.6 UDP Scan Client, Version: 1.1 >>[sand|MAN]"
  33.     sys.exit()
  34.    
  35. if "-r" in sys.argv:
  36.     if len(sys.argv) < 4:
  37.         print "|!| Error: address missing!"
  38.         sys.exit()
  39.     arg=3
  40.     port=int(sys.argv[2])
  41.    
  42.    
  43.    
  44. if "-p" in sys.argv:
  45.     if len(sys.argv) < 3:
  46.         print "|!| Error: address missing!"
  47.         sys.exit()
  48.     parse = 1
  49.  
  50. bcast = sys.argv[arg]         #Set Sender Addr.
  51. bindHost = "172.16.49.143"    #Set Host Addr.    HardCoded Data
  52. locPort = 27005            #Set Local Listen Port.
  53. buf = 1024            #Buffer Size
  54. local = (bindHost,locPort)    #Group Localhost & Port (27005).
  55. startNum = 1
  56.  
  57. # Create Socket, Bind to Port: 27005.
  58. UDPSock = socket(AF_INET,SOCK_DGRAM)    #IPV4 UDP Socket Def.
  59. UDPSock.bind((local))            #Bind Client to local group.
  60. UDPSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) #Enable Broadcast
  61. UDPSock.settimeout(3)            #Set Timeout to 3s.
  62.  
  63. print "|:| Using port:", sys.argv[2]
  64.  
  65. # Prep Infostrings. "TSourceEngineQuery"
  66. data = chr(255) + chr(255) + chr(255) + chr(255) + "TSource Engine Query" + chr(0)
  67.  
  68. while startNum < 256 :                #INIT WHILE LOOP FOR 1-255
  69.     bcast2 = bcast + "." + str(startNum)
  70.     addr = (bcast2,port)
  71.    
  72.     UDPSock.sendto(data,addr)        #Send UDP Packet
  73.     if quiet == 1:
  74.         print "|+| Sending Packet To: ", bcast2
  75.    
  76.     startNum = startNum + 1
  77.  
  78. if quiet == 1:
  79.     print "|-| Received Packets:"
  80. print "|-| Servers:"
  81.  
  82. try:
  83.     while True:
  84.         data,addr = UDPSock.recvfrom(buf)
  85.         if quiet == 1:
  86.             print "|-| Received packet with payload data:"
  87.             print "", data
  88.         pckDump = pckDump + 1
  89.         packLen = len(data)
  90.         if quiet == 1:
  91.             if parse == 1:
  92.                 print "|:| Packet payload parser initialized"
  93.         if parse == 1:
  94.             for i in range(packLen):      
  95.                 if data[i] == "\\":
  96.                     x = i
  97.                     sbsString = ""
  98.                     if x < packLen:
  99.                         x = x + 1
  100.                     while data[x] != "\\":    #Packet Data Parser Start
  101.                                sbsString = sbsString + data[x]
  102.                                x = x + 1
  103.                     if sbsString == "address":
  104.                         sbsString = ""
  105.                         x = x + 1
  106.                         while data[x] != "\\":
  107.                                                       sbsString = sbsString + data[x]
  108.                                                    x = x + 1
  109.                                               print "Address: ", sbsString
  110.                     if sbsString == "players":
  111.                                                sbsString = ""
  112.                                                x = x + 1
  113.                                                while data[x] != "\\":
  114.                                                        sbsString = sbsString + data[x]
  115.                                                        x = x + 1
  116.                                                print "Players: ", sbsString
  117.                     if sbsString == "bots":
  118.                                                sbsString = ""
  119.                                                x = x + 1
  120.                                                while data[x] != "\\":
  121.                                                        sbsString = sbsString + data[x]
  122.                                                        x = x + 1
  123.                                                print "Bots: ", sbsString
  124.                     if sbsString == "gamedir":
  125.                                                sbsString = ""
  126.                                                x = x + 1
  127.                                                while data[x] != "\\":
  128.                                                        sbsString = sbsString + data[x]
  129.                                                        x = x + 1
  130.                                                print "Game: ", sbsString
  131.                     if sbsString == "description":
  132.                                                sbsString = ""
  133.                                                x = x + 1
  134.                                                while data[x] != "\\":
  135.                                                        sbsString = sbsString + data[x]
  136.                                                        x = x + 1
  137.                                                print "Description: ", sbsString
  138.                     if sbsString == "hostname":
  139.                                                sbsString = ""
  140.                                                x = x + 1
  141.                                                while data[x] != "\\":
  142.                                                        sbsString = sbsString + data[x]
  143.                                                        x = x + 1
  144.                                                print "HostName: ", sbsString
  145.                     if sbsString == "map":
  146.                                                sbsString = ""
  147.                                                x = x + 1
  148.                                                while data[x] != "\\":
  149.                                                        sbsString = sbsString + data[x]
  150.                                                        x = x + 1
  151.                                                print "Map: ", sbsString
  152.                     if sbsString == "password":
  153.                                                sbsString = ""
  154.                                                x = x + 1
  155.                                                while data[x] != "\\":
  156.                                                        sbsString = sbsString + data[x]
  157.                                                        x = x + 1
  158.                                                print "Password: ", sbsString
  159.                     if sbsString == "secure":
  160.                                                sbsString = ""
  161.                                                x = x + 1
  162.                                                while data[x] != "\\":
  163.                                                        sbsString = sbsString + data[x]
  164.                                                        x = x + 1
  165.                                                print "Secure: ", sbsString
  166.                         break
  167. except:                        #Catch Recieve Timeout.
  168.     print "|-| End Of Received List."
  169.  
  170. # Close socket
  171. UDPSock.close()