Guest User

Untitled

a guest
Nov 3rd, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.60 KB | None | 0 0
  1. import Tkinter
  2. import socket
  3. #task1
  4. class log():
  5. def __init__(self,root):
  6. self.lab1=Tkinter.Label(root1,text="Username",relief=Tkinter.FLAT)
  7. self.lab1.pack()
  8. self.window=root
  9. self.tusername = Tkinter.Entry(root1,bd=2,width=20)
  10. self.tusername.pack()
  11. self.lab2 = Tkinter.Label(root1,text="Password",relief=Tkinter.FLAT)
  12. self.lab2.pack()
  13. self.tpassword = Tkinter.Entry(root1,bd=2,width=20,show="*")
  14. self.tpassword.pack()
  15. self.b1 = Tkinter.Button(root1,text="OK",command=self.login)
  16. self.b1.pack()
  17. self.M=[0]*16
  18. self.username =""
  19. self.password =""
  20. self.logresult=""
  21. self.socket=None
  22.  
  23. def getstr(self):
  24. self.username = self.tusername.get()
  25. self.password = self.tpassword.get()
  26. def StartConnection (self,IPAddress,PortNumber):
  27. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  28. s.connect((IPAddress,PortNumber))
  29. return s
  30. def process(self,M):
  31. #the input M is from the block
  32. si=[0]*64
  33. K=[0]*64
  34. si[0:16]=[7,12,17,22]*4
  35. si[16:32]=[5,9,14,20]*4
  36. si[32:48]=[4,11,16,23]*4
  37. si[48:64]=[6,10,15,21]*4
  38. K[0:4]=[0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee]
  39. K[4:8]=[0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501]
  40. K[8:12]=[0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be]
  41. K[12:16]=[0x6b901122,0xfd987193,0xa679438e,0x49b40821]
  42. K[16:20]=[0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa]
  43. K[20:24]=[0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8]
  44. K[24:28]=[0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed]
  45. K[28:32]=[0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a]
  46. K[32:36]=[0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c]
  47. K[36:40]=[0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70]
  48. K[40:44]=[0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05]
  49. K[44:48]=[0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665]
  50. K[48:52]=[0xf4292244,0x432aff97,0xab9423a7,0xfc93a039]
  51. K[52:56]=[0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1]
  52. K[56:60]=[0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1]
  53. K[60:64]=[0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391]
  54. a0=0x67452301
  55. b0=0xefcdab89
  56. c0=0x98badcfe
  57. d0=0x10325476
  58. A=a0
  59. B=b0
  60. C=c0
  61. D=d0
  62. for i in range(64):
  63. if 0<= i<= 15:
  64. F=(B&C)|((~B)&D)
  65. F=F&0xFFFFFFFF
  66. g=i
  67. elif 16 <= i<= 31:
  68. F=(D&B)|((~D)&C)
  69. F=F&0xFFFFFFFF
  70. g=(5*i+1)%16
  71. elif 32 <= i <= 47:
  72. F=B^C^D
  73. F=F&0xFFFFFFFF
  74. g=(3*i+5)%16
  75. elif 48 <= i <= 63:
  76. F=C^(B|(~D))
  77. F=F&0xFFFFFFFF
  78. g=(7*i)%16
  79. dTemp=D
  80. D=C
  81. C=B
  82. tuple1=(A + F + K[i] + M[g])
  83. tuple2=si[i]
  84. B+=((tuple1<< tuple2)&0xFFFFFFFF)|((tuple1>> (32-tuple2)&0x7FFFFFFF>>(32-tuple2)))
  85. B=B & 0xFFFFFFFF
  86. A=dTemp
  87. a0= (a0 + A) & 0xFFFFFFFF
  88. b0= (b0 + B) & 0xFFFFFFFF
  89. c0= (c0 + C) & 0xFFFFFFFF
  90. d0= (d0 + D) & 0xFFFFFFFF
  91. return str(a0)+str(b0)+str(c0)+str(d0)
  92. def login (self):
  93. self.socket=self.StartConnection("86.36.35.17", 15112)
  94. self.getstr()
  95. socket=self.socket
  96. socket.send("LOGIN "+self.username+"\n" )
  97. words=socket.recv(512)
  98. cha=words[7+len(self.username):]
  99. cha=cha.strip()
  100. message=self.password+cha
  101. lastdig=str(len(message))
  102. block=message+"1"+"0"*(511-len(self.password)-len(cha)-len(lastdig))+lastdig
  103. for i in range(16):
  104. for j in range(i*32,(i+1)*32):
  105. self.M[i]+=ord(block[j])
  106. messagedigit=self.process(self.M)
  107. socket.send("LOGIN "+self.username+" "+messagedigit+"\n" )
  108. reply=socket.recv(512)
  109. reply=reply.strip()
  110. if reply=="Login Successful":
  111. self.logresult="ok"
  112. self.window.destroy()
  113. else:
  114. self.logresult="not"
  115. self.window.destroy()
  116. #task2
  117. class Client():
  118. def __init__(self,root,parent):
  119. self.lab1=Tkinter.Label(root,text="All Users",anchor="w")
  120. self.lab1.grid(row=0,column=0)
  121. self.tusers = Tkinter.Listbox(root,bd=1,width=20,height=12)
  122. self.tusers.grid(row=1,column=0)
  123. self.bre = Tkinter.Button(root,text="Send Request",command=self.sendFriendRequest)#
  124. self.bre.grid(row=2,column=0)
  125.  
  126. self.lab2=Tkinter.Label(root,text="Your Friends")
  127. self.lab2.grid(row=0,column=1)
  128. self.tfriends = Tkinter.Listbox(root,bd=1,width=20,height=12)
  129. self.tfriends.grid(row=1,column=1)
  130. self.bcha = Tkinter.Button(root,text="Start Chat",command=self.startchat)#
  131. self.bcha.grid(row=2,column=1)
  132.  
  133. self.lab3=Tkinter.Label(root,text="Pending Requests",anchor="e")
  134. self.lab3.grid(row=0,column=2)
  135. self.trequests = Tkinter.Listbox(root,bd=1,width=20,height=12)
  136. self.trequests.grid(row=1,column=2)
  137. self.bace= Tkinter.Button(root,text="Accept Request",command=self.acceptFriendRequest)#
  138. self.bace.grid(row=2,column=2)
  139. self.s=parent.socket
  140. self.chat=False
  141. self.start=False
  142. self.getchatfriend=""
  143. self.msgfriend=""
  144. self.lst=[]
  145. self.userlist()
  146. self.getfriends()
  147. self.getRequests()
  148. self.root=root
  149. def userlist(self):#how to actively updates
  150. self.s.send("@users")
  151. cot=self.s.recv(512)
  152. a=cot.split("@")
  153. size=int(a[1])
  154. time=size/512
  155. if time>1:
  156. for i in range(time-1):
  157. cot+=self.s.recv(512)
  158. cot=cot.strip()
  159. lst=cot.split("@")
  160. lst=lst[3:]
  161. for j in lst:
  162. x=0
  163. self.tusers.insert(x,j)
  164. x+=1
  165. self.tusers.after(3000,self.userlist)
  166. def getfriends(self):
  167. self.s.send("@friends")
  168. reply=self.s.recv(512)
  169. a=reply.split("@")
  170. lst=[]
  171. for i in range(3,len(a)):
  172. a[i]=(a[i]).strip()
  173. lst.append(a[i])
  174. for j in lst:
  175. x=0
  176. self.tfriends.insert(x,j)
  177. x+=1
  178. self.tfriends.after(3000,self.getfriends)
  179.  
  180. def getRequests(self):
  181. self.s.send("@rxrqst")
  182. reply=self.s.recv(512)
  183. a=reply.split("@")
  184. lst=[]
  185. for i in range(2,len(a)):
  186. lst.append(a[i])
  187. for j in lst:
  188. self.trequests.insert(j)
  189. self.trequests.after(3000,self.getRequests)
  190. def sendFriendRequest(self):#comd1
  191. friend=self.tusers.get(Tkinter.ACTIVE)
  192. print friend, "friend"
  193. si=len("@request@friend@"+friend)
  194. a=5-len(str(si+6))
  195. self.s.send("@"+"0"*a+str(si+6)+"@request@friend@"+friend)
  196. reply=self.s.recv(512)
  197. root=self.root
  198. if "@ok" in reply:
  199. w = Tkinter.Message(root, text="Succefully sent!")
  200. w.pack()
  201. else:
  202. w = Tkinter.Message(root, text="Unsuccefully request!")
  203. w.pack()
  204. def acceptFriendRequest(self):#cmd3
  205. friend=self.trequests.get(Tkinter.ACTIVE)
  206. si=len("@accept@friend@"+friend)
  207. self.s.send("@"+"0"*(5-len(str(si+6)))+str(si+6)+"@accept@friend@"+friend)
  208. reply=self.s.recv(512)
  209. if "@ok" in reply:
  210. w = Tkinter.Message(self.root, text="Succefully accept")
  211. w.pack()
  212. def startchat(self):#cmd2#######
  213. self.getchatfriend=self.tfriends.get(Tkinter.ACTIVE)
  214. self.chat=True
  215. def getMail(self):
  216. self.s.send("@rxmsg")
  217. cot=self.s.recv(512)
  218. a=cot.split("@")
  219. size=int(a[1])
  220. n=int(a[2])
  221. time=size/512
  222. if time>1:
  223. for i in range(time-1):
  224. cot+=self.s.recv(512)
  225. cot=cot.strip()
  226. a=cot.split("@")
  227. if n>0:
  228. for j in range(3,len(a),3):
  229. if a[j]=="msg":
  230. self.lst.append((a[j+1],a[j+2]))
  231. if self.lst!=[]:
  232. for (u,m) in self.lst:
  233. self.msgfriend=u
  234. self.start=True
  235.  
  236.  
  237. class chat():
  238. def __init__(self,root,parent,username):
  239. self.chaw=Tkinter.Text(root,bd=2,width=74,height=20)
  240. self.chaw.grid(row=0)
  241. self.test="hi"
  242. self.chat=Tkinter.Text(root,bd=2,width=56,height=3)
  243. self.chat.grid(row=1,column=0,sticky="w")
  244.  
  245. self.bsd=Tkinter.Button(root,text="Send",bd=3,width=14,height=3,command=self.sendMessage)
  246. self.bsd.grid(row=1,sticky="e")
  247. self.friend=parent.getchatfriend
  248. self.s=parent.s
  249. self.getMail()
  250. self.username=username
  251. self.root=root
  252.  
  253. def sendMessage(self):
  254. friend=self.friend
  255. username=self.username
  256. message=self.chat.get("1.0",Tkinter.END)
  257. si=len("@sendmsg@"+friend+"@"+message)
  258. self.s.send("@"+"0"*(5-len(str(si+6)))+str(si+6)+"@sendmsg@"+friend+"@"+message)
  259. reply=self.s.recv(512)
  260. if "@ok" in reply:
  261. self.chaw.insert(Tkinter.END,username+": "+message)
  262. self.chat.delete('1.0', Tkinter.END)
  263. else:
  264. w = Tkinter.Message(self.root, text="failed!"+reply)
  265. w.pack()
  266. def getMail(self):
  267. self.s.send("@rxmsg")
  268. cot=self.s.recv(512)
  269. a=cot.split("@")
  270. size=int(a[1])
  271. n=int(a[2])
  272. time=size/512
  273. if time>1:
  274. for i in range(time-1):
  275. cot+=self.s.recv(512)
  276. cot=cot.strip()
  277. a=cot.split("@")
  278. lst=[]
  279. if n>0:
  280. for j in range(3,len(a),3):
  281. if a[j]=="msg":
  282. lst.append((a[j+1],a[j+2]))
  283. if lst!=[]:
  284. for (u, m) in lst:
  285. if u==self.friend:
  286. self.chaw.insert(Tkinter.END,u+": "+m)
  287. self.chaw.after(1000,self.getMail)
  288. ######main#######
  289. root1= Tkinter.Tk()
  290. root1.title("tk")
  291. root1.geometry("300x200")
  292. mylog=log(root1)
  293. root1.mainloop()
  294. username=mylog.username
  295. logresult=mylog.logresult
  296. if logresult=="ok":
  297. root2= Tkinter.Tk()
  298. root2.title("Chat Client")
  299. root2.geometry("550x260")
  300. myClient=Client(root2,mylog)
  301. myClient.getMail()
  302. chatfriend=myClient.getchatfriend
  303. msglst=myClient.lst
  304. print myClient.chat
  305. print myClient.start
  306. ############here is my problem that I found when I clicked the "Start Chat" button
  307. #the myClient.chat would not upadte by the event.
  308. #could you help on it?
  309. while myClient.chat==True:
  310. root3= Tkinter.Toplevel()
  311. root3.title("Chat with "+chatfriend)
  312. root3.geometry("597x383")
  313. mychat=chat(root3,myClient,username)
  314. myClient.chat=False
  315. print "root3(1)"#
  316. if myClient.start==True:
  317. for (u,m) in msglst:
  318. if u!=chatfriend:
  319. root= Tkinter.Toplevel()
  320. root.title("Chat with "+u)
  321. root.geometry("597x383")
  322. mychat=chat(root,myClient,username)
  323. mychat.chaw.insert(Tkinter.END,u+": "+m)
  324.  
  325.  
  326. root2.mainloop()
  327. root3.mainloop()
  328. root.mainloop()
Add Comment
Please, Sign In to add comment