Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Tkinter
- import socket
- #task1
- class log():
- def __init__(self,root):
- self.lab1=Tkinter.Label(root1,text="Username",relief=Tkinter.FLAT)
- self.lab1.pack()
- self.window=root
- self.tusername = Tkinter.Entry(root1,bd=2,width=20)
- self.tusername.pack()
- self.lab2 = Tkinter.Label(root1,text="Password",relief=Tkinter.FLAT)
- self.lab2.pack()
- self.tpassword = Tkinter.Entry(root1,bd=2,width=20,show="*")
- self.tpassword.pack()
- self.b1 = Tkinter.Button(root1,text="OK",command=self.login)
- self.b1.pack()
- self.M=[0]*16
- self.username =""
- self.password =""
- self.logresult=""
- self.socket=None
- def getstr(self):
- self.username = self.tusername.get()
- self.password = self.tpassword.get()
- def StartConnection (self,IPAddress,PortNumber):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.connect((IPAddress,PortNumber))
- return s
- def process(self,M):
- #the input M is from the block
- si=[0]*64
- K=[0]*64
- si[0:16]=[7,12,17,22]*4
- si[16:32]=[5,9,14,20]*4
- si[32:48]=[4,11,16,23]*4
- si[48:64]=[6,10,15,21]*4
- K[0:4]=[0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee]
- K[4:8]=[0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501]
- K[8:12]=[0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be]
- K[12:16]=[0x6b901122,0xfd987193,0xa679438e,0x49b40821]
- K[16:20]=[0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa]
- K[20:24]=[0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8]
- K[24:28]=[0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed]
- K[28:32]=[0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a]
- K[32:36]=[0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c]
- K[36:40]=[0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70]
- K[40:44]=[0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05]
- K[44:48]=[0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665]
- K[48:52]=[0xf4292244,0x432aff97,0xab9423a7,0xfc93a039]
- K[52:56]=[0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1]
- K[56:60]=[0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1]
- K[60:64]=[0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391]
- a0=0x67452301
- b0=0xefcdab89
- c0=0x98badcfe
- d0=0x10325476
- A=a0
- B=b0
- C=c0
- D=d0
- for i in range(64):
- if 0<= i<= 15:
- F=(B&C)|((~B)&D)
- F=F&0xFFFFFFFF
- g=i
- elif 16 <= i<= 31:
- F=(D&B)|((~D)&C)
- F=F&0xFFFFFFFF
- g=(5*i+1)%16
- elif 32 <= i <= 47:
- F=B^C^D
- F=F&0xFFFFFFFF
- g=(3*i+5)%16
- elif 48 <= i <= 63:
- F=C^(B|(~D))
- F=F&0xFFFFFFFF
- g=(7*i)%16
- dTemp=D
- D=C
- C=B
- tuple1=(A + F + K[i] + M[g])
- tuple2=si[i]
- B+=((tuple1<< tuple2)&0xFFFFFFFF)|((tuple1>> (32-tuple2)&0x7FFFFFFF>>(32-tuple2)))
- B=B & 0xFFFFFFFF
- A=dTemp
- a0= (a0 + A) & 0xFFFFFFFF
- b0= (b0 + B) & 0xFFFFFFFF
- c0= (c0 + C) & 0xFFFFFFFF
- d0= (d0 + D) & 0xFFFFFFFF
- return str(a0)+str(b0)+str(c0)+str(d0)
- def login (self):
- self.socket=self.StartConnection("86.36.35.17", 15112)
- self.getstr()
- socket=self.socket
- socket.send("LOGIN "+self.username+"\n" )
- words=socket.recv(512)
- cha=words[7+len(self.username):]
- cha=cha.strip()
- message=self.password+cha
- lastdig=str(len(message))
- block=message+"1"+"0"*(511-len(self.password)-len(cha)-len(lastdig))+lastdig
- for i in range(16):
- for j in range(i*32,(i+1)*32):
- self.M[i]+=ord(block[j])
- messagedigit=self.process(self.M)
- socket.send("LOGIN "+self.username+" "+messagedigit+"\n" )
- reply=socket.recv(512)
- reply=reply.strip()
- if reply=="Login Successful":
- self.logresult="ok"
- self.window.destroy()
- else:
- self.logresult="not"
- self.window.destroy()
- #task2
- class Client():
- def __init__(self,root,parent):
- self.lab1=Tkinter.Label(root,text="All Users",anchor="w")
- self.lab1.grid(row=0,column=0)
- self.tusers = Tkinter.Listbox(root,bd=1,width=20,height=12)
- self.tusers.grid(row=1,column=0)
- self.bre = Tkinter.Button(root,text="Send Request",command=self.sendFriendRequest)#
- self.bre.grid(row=2,column=0)
- self.lab2=Tkinter.Label(root,text="Your Friends")
- self.lab2.grid(row=0,column=1)
- self.tfriends = Tkinter.Listbox(root,bd=1,width=20,height=12)
- self.tfriends.grid(row=1,column=1)
- self.bcha = Tkinter.Button(root,text="Start Chat",command=self.startchat)#
- self.bcha.grid(row=2,column=1)
- self.lab3=Tkinter.Label(root,text="Pending Requests",anchor="e")
- self.lab3.grid(row=0,column=2)
- self.trequests = Tkinter.Listbox(root,bd=1,width=20,height=12)
- self.trequests.grid(row=1,column=2)
- self.bace= Tkinter.Button(root,text="Accept Request",command=self.acceptFriendRequest)#
- self.bace.grid(row=2,column=2)
- self.s=parent.socket
- self.chat=False
- self.start=False
- self.getchatfriend=""
- self.msgfriend=""
- self.lst=[]
- self.userlist()
- self.getfriends()
- self.getRequests()
- self.root=root
- def userlist(self):#how to actively updates
- self.s.send("@users")
- cot=self.s.recv(512)
- a=cot.split("@")
- size=int(a[1])
- time=size/512
- if time>1:
- for i in range(time-1):
- cot+=self.s.recv(512)
- cot=cot.strip()
- lst=cot.split("@")
- lst=lst[3:]
- for j in lst:
- x=0
- self.tusers.insert(x,j)
- x+=1
- self.tusers.after(3000,self.userlist)
- def getfriends(self):
- self.s.send("@friends")
- reply=self.s.recv(512)
- a=reply.split("@")
- lst=[]
- for i in range(3,len(a)):
- a[i]=(a[i]).strip()
- lst.append(a[i])
- for j in lst:
- x=0
- self.tfriends.insert(x,j)
- x+=1
- self.tfriends.after(3000,self.getfriends)
- def getRequests(self):
- self.s.send("@rxrqst")
- reply=self.s.recv(512)
- a=reply.split("@")
- lst=[]
- for i in range(2,len(a)):
- lst.append(a[i])
- for j in lst:
- self.trequests.insert(j)
- self.trequests.after(3000,self.getRequests)
- def sendFriendRequest(self):#comd1
- friend=self.tusers.get(Tkinter.ACTIVE)
- print friend, "friend"
- si=len("@request@friend@"+friend)
- a=5-len(str(si+6))
- self.s.send("@"+"0"*a+str(si+6)+"@request@friend@"+friend)
- reply=self.s.recv(512)
- root=self.root
- if "@ok" in reply:
- w = Tkinter.Message(root, text="Succefully sent!")
- w.pack()
- else:
- w = Tkinter.Message(root, text="Unsuccefully request!")
- w.pack()
- def acceptFriendRequest(self):#cmd3
- friend=self.trequests.get(Tkinter.ACTIVE)
- si=len("@accept@friend@"+friend)
- self.s.send("@"+"0"*(5-len(str(si+6)))+str(si+6)+"@accept@friend@"+friend)
- reply=self.s.recv(512)
- if "@ok" in reply:
- w = Tkinter.Message(self.root, text="Succefully accept")
- w.pack()
- def startchat(self):#cmd2#######
- self.getchatfriend=self.tfriends.get(Tkinter.ACTIVE)
- self.chat=True
- def getMail(self):
- self.s.send("@rxmsg")
- cot=self.s.recv(512)
- a=cot.split("@")
- size=int(a[1])
- n=int(a[2])
- time=size/512
- if time>1:
- for i in range(time-1):
- cot+=self.s.recv(512)
- cot=cot.strip()
- a=cot.split("@")
- if n>0:
- for j in range(3,len(a),3):
- if a[j]=="msg":
- self.lst.append((a[j+1],a[j+2]))
- if self.lst!=[]:
- for (u,m) in self.lst:
- self.msgfriend=u
- self.start=True
- class chat():
- def __init__(self,root,parent,username):
- self.chaw=Tkinter.Text(root,bd=2,width=74,height=20)
- self.chaw.grid(row=0)
- self.test="hi"
- self.chat=Tkinter.Text(root,bd=2,width=56,height=3)
- self.chat.grid(row=1,column=0,sticky="w")
- self.bsd=Tkinter.Button(root,text="Send",bd=3,width=14,height=3,command=self.sendMessage)
- self.bsd.grid(row=1,sticky="e")
- self.friend=parent.getchatfriend
- self.s=parent.s
- self.getMail()
- self.username=username
- self.root=root
- def sendMessage(self):
- friend=self.friend
- username=self.username
- message=self.chat.get("1.0",Tkinter.END)
- si=len("@sendmsg@"+friend+"@"+message)
- self.s.send("@"+"0"*(5-len(str(si+6)))+str(si+6)+"@sendmsg@"+friend+"@"+message)
- reply=self.s.recv(512)
- if "@ok" in reply:
- self.chaw.insert(Tkinter.END,username+": "+message)
- self.chat.delete('1.0', Tkinter.END)
- else:
- w = Tkinter.Message(self.root, text="failed!"+reply)
- w.pack()
- def getMail(self):
- self.s.send("@rxmsg")
- cot=self.s.recv(512)
- a=cot.split("@")
- size=int(a[1])
- n=int(a[2])
- time=size/512
- if time>1:
- for i in range(time-1):
- cot+=self.s.recv(512)
- cot=cot.strip()
- a=cot.split("@")
- lst=[]
- if n>0:
- for j in range(3,len(a),3):
- if a[j]=="msg":
- lst.append((a[j+1],a[j+2]))
- if lst!=[]:
- for (u, m) in lst:
- if u==self.friend:
- self.chaw.insert(Tkinter.END,u+": "+m)
- self.chaw.after(1000,self.getMail)
- ######main#######
- root1= Tkinter.Tk()
- root1.title("tk")
- root1.geometry("300x200")
- mylog=log(root1)
- root1.mainloop()
- username=mylog.username
- logresult=mylog.logresult
- if logresult=="ok":
- root2= Tkinter.Tk()
- root2.title("Chat Client")
- root2.geometry("550x260")
- myClient=Client(root2,mylog)
- myClient.getMail()
- chatfriend=myClient.getchatfriend
- msglst=myClient.lst
- print myClient.chat
- print myClient.start
- ############here is my problem that I found when I clicked the "Start Chat" button
- #the myClient.chat would not upadte by the event.
- #could you help on it?
- while myClient.chat==True:
- root3= Tkinter.Toplevel()
- root3.title("Chat with "+chatfriend)
- root3.geometry("597x383")
- mychat=chat(root3,myClient,username)
- myClient.chat=False
- print "root3(1)"#
- if myClient.start==True:
- for (u,m) in msglst:
- if u!=chatfriend:
- root= Tkinter.Toplevel()
- root.title("Chat with "+u)
- root.geometry("597x383")
- mychat=chat(root,myClient,username)
- mychat.chaw.insert(Tkinter.END,u+": "+m)
- root2.mainloop()
- root3.mainloop()
- root.mainloop()
Add Comment
Please, Sign In to add comment