Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.87 KB | None | 0 0
  1. import socket,struct
  2. msg={
  3.     0:"stay frosty",#client (handshake)
  4.     1:"fool,mad dunks like ya grandma",#server (handshake)
  5.     2:"step off bouta slam yo moms lik a basket swish",#client (unique server name)
  6.     3:"swiiiiiishhhh",#server (accepted)
  7.     4:"dunkie do dick in my ass",#client (client type)
  8.     #CLIENT TYPES
  9.     5:"yo u gay",#server (ok)
  10.     #1 BOT
  11.     #2 SYSTEMS
  12.     #3 ADMIN
  13.     6:"ya my dic",#client (ok,any server options)
  14.     7:"where is it o dat tiny lil thing",#server  (none)
  15.     8:"callin ya on my OWN PHONE dam",#client (done,just chillen till summin to send)
  16.     #OPCODES
  17.     10:"im done with you faggot",
  18.     11:"wtf get out",
  19.     12:"ummmmmm...",
  20.     13:"Faydin you out",
  21.     14:"wattap innanet huxtable"}#PING
  22. class server:
  23.     password = "slamniggadumpsss"
  24.     admin = "nevergivethistoanyone"
  25.     def __init__(self):
  26.         self.serve=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  27.         self.client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  28.         self.serve.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
  29.         #autobind server
  30.         self.serve.bind(('',999999))
  31.         self.online = {}
  32.     def PacketOUT(self,state,statelist,variable):
  33.         return chr(len(variable[:255]))+chr(state)+statelist[:255]+'\x00'+variable[:255]
  34.     def PacketIN(self,packet):
  35.         return ord(packet[0]),ord(packet[1]),packet[2:].split("\x00",1)
  36.     def MakeUser(self,IP,client=False):
  37.         self.online[IP[0]]={'details':IP,'user':self.User(self)}
  38.         if client:
  39.             self.online[IP[0]]['user'].MyState = 0
  40.             self.online[IP[0]]['client']=True
  41.     def ClientSetAddress(self,address):
  42.         self.online["00.00.00.00"]['details']=address
  43.     def Recieve(self,address,packet,incoming):
  44.         if address[0] not in self.online:
  45.             self.MakeUser(address)
  46.         #execute state
  47.         result = self.online[address[0]]['user'].run(packet)
  48.         #respond
  49.         incoming.sendto(result,address)
  50.         #return
  51.         return result
  52.     def Send(self,address,packet):
  53.         if address[0] not in self.online:
  54.             self.MakeUser(address,client=True)
  55.         self.client.sendto(packet,self.online[address[0]]['details'])
  56.     def Execute(self,address,packet,asclient=False):
  57.         if address[0] not in self.online:
  58.             self.MakeUser(address,client=asclient)
  59.         return self.online[address[0]]['user'].run(packet)
  60.     class User:
  61.         def __init__(self,masterinstance):
  62.             self.MasterInstance=masterinstance
  63.             self.MyState=1
  64.             self.Verified=0
  65.         def DecreaseState(self):
  66.             self.MyState -= 1
  67.         def run(self,command):
  68.             if command:
  69.                 length,opcode,data = self.MasterInstance.PacketIN(command)
  70.             if self.MyState == 0:
  71.                 #HANDSHAKE CLIENT
  72.                 self.MyState=2
  73.                 return self.MasterInstance.PacketOUT(0,msg[0],'*')
  74.             elif self.MyState == 1:
  75.                 #HANDSHAKE SERVER
  76.                 if opcode==0 and data[0]==msg[0]:
  77.                     self.MyState=3#SET TO WAIT FOR UNIQUE NAME
  78.                     return self.MasterInstance.PacketOUT(1,msg[1],'*')
  79.             elif self.MyState == 2:
  80.                 #UNIQUE SERVER NAME
  81.                 self.MyState=4
  82.                 return self.MasterInstance.PacketOUT(2,msg[2],'grand p of the ball court, internet huxtables')
  83.             elif self.MyState == 3:
  84.                 #UNIQUE NAME
  85.                 if opcode==2 and data[0]==msg[2]:
  86.                     self.MyState=5#SET TO WAIT FOR USER TYPE
  87.                     return self.MasterInstance.PacketOUT(3,msg[3],'*')
  88.             elif self.MyState == 4:
  89.                 #HANDSHAKE CLIENT
  90.                 self.MyState=6
  91.                 return self.MasterInstance.PacketOUT(4,msg[4],'*')
  92.             elif self.MyState == 5:
  93.                 #USER TYPE
  94.                 if opcode==4 and data[0]==msg[4]:
  95.                     self.MyState=7#SET TO WAIT FOR SERVER OPTION
  96.                     return self.MasterInstance.PacketOUT(5,msg[5],'*')
  97.             elif self.MyState == 6:
  98.                 #HANDSHAKE CLIENT
  99.                 self.MyState=8
  100.                 return self.MasterInstance.PacketOUT(6,msg[6],'*')
  101.             elif self.MyState == 7:
  102.                 #SERVER OPTION
  103.                 if opcode==6 and data[0]==msg[6]:
  104.                     self.MyState=9#SET TO IDLE,OPERATION MODE
  105.                     return self.MasterInstance.PacketOUT(7,msg[7],'*')
  106.             elif self.MyState == 8:
  107.                 #HANDSHAKE CLIENT
  108.                 return self.MasterInstance.PacketOUT(8,msg[8],'*')
  109.             elif self.MyState == 9:
  110.                 #>>>OPERATION MODE<<<
  111.                 if opcode==8 and data[0]==msg[0]:
  112.                     pass
  113.                 return self.MasterInstance.PacketOUT(14,msg[14],'*')
  114.             else:
  115.                 return "woot"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement