def verifyMsgSign(self, msg, sign, session): "如果验证成功则发送成功消息,否则发送验证失败并关闭该线程" _cfg = ConfigData.ConfigData() _rsa = Rsa.Rsa(_cfg.GetKeyPath()) if _rsa.VerifyByPubkey(msg, sign, session.peername) == False: msghead = self.packetMsg(MagicNum.MsgTypec.IDENTITYVERIFYFAILED, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead) session.stop() showmsg = "签名验证失败" else: #生成自己的会话密钥 from CryptoAlgorithms import HashBySha1 _hbs = HashBySha1.HashBySha1() session.sessionkey = _hbs.GetHash( str(session.dhkey.getKey(string.atol(msg))), MagicNum.HashBySha1c.HEXADECIMAL) if session.threadtype == CommonData.ThreadType.CONNECTAP: msghead = self.packetMsg(MagicNum.MsgTypec.AUDITDHGENERATE, 0) else: msghead = self.packetMsg( MagicNum.MsgTypec.AUDITRETURNDHGENERATE, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead) showmsg = "生成会话密钥:" + session.sessionkey self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True)
def HandleMsg(self,bufsize,fddata,th): if not fddata.GetData("currentbytes") and fddata.threadtype != CommonData.ThreadType.CONNECTAP: _cfg = ConfigData.ConfigData() _dir = _cfg.GetMediaPath() + "/auditserver/" recvbuffer = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"),bufsize) fddata.SetData("control.filename",_dir + NetSocketFun.NetUnPackMsgBody(recvbuffer)[0]) if not fddata.GetData("currentbytes"): self.handleFileBegin(bufsize, fddata) _filebuffer = fddata.GetData("file").read(CommonData.MsgHandlec.FILEBLOCKSIZE) fddata.SetData("currentbytes",fddata.GetData("currentbytes") + len(_filebuffer)) msgbody = NetSocketFun.NetPackMsgBody([_filebuffer]) if fddata.GetData("currentbytes") == fddata.totalbytes: msghead = self.packetMsg(MagicNum.MsgTypec.SENDFILEOVER,len(msgbody)) fddata.GetData("file").close() fddata.SetData("currentbytes",0) _filename = fddata.GetData("filename")[-fddata.GetData("filename")[::-1].index("/"):].encode("utf-8") filesize = float(fddata.GetData("totalbytes")) / (1024 * 1024) showmsg = "文件发送完毕:\n(1)文件名:" + _filename + "\n(2)文件大小(MB):" + str(filesize) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT,showmsg,True) else: msghead = self.packetMsg(MagicNum.MsgTypec.SENDFILEBUFFER,len(msgbody)) fddata.SetData("outdata", msghead + msgbody) th.ModifyInToOut(fddata.GetData("sockfd"))
def handleParam(self, sampling): "将列表转化为字符串" _aparam = NetSocketFun.NetPackMsgBody(sampling[0]) _ahash = NetSocketFun.NetPackMsgBody(sampling[1]) _bparam = NetSocketFun.NetPackMsgBody(sampling[2]) _bhash = NetSocketFun.NetPackMsgBody(sampling[3]) return _aparam, _ahash, _bparam, _bhash
def packMsgBody(self, fddata): "将会话密钥与A组参数用公钥加密,将采样hash用私钥加密(签名)" if fddata.GetData("threadtype") == CommonData.ThreadType.CONNECTAP: _agroup = self.APgetAgroupHashAndParam(fddata) elif fddata.GetData("threadtype") == CommonData.ThreadType.ACCETPNO: _agroup = self.NOgetAgroupHashAndParam(fddata) self.deltempFile(fddata) _cfd = ConfigData.ConfigData() _rsa = Rsa.Rsa(_cfd.GetKeyPath()) msglist = (str(fddata.GetData("fddatakey")), ) + _agroup[0] _plaintext = NetSocketFun.NetPackMsgBody(msglist) _pubkeyMsg = _rsa.EncryptByPubkey(_plaintext.encode("ascii"), fddata.GetData("peername")) _hbs = HashBySha1.HashBySha1() _sign = _rsa.SignByPrikey( _hbs.GetHash(_agroup[1].encode("ascii"), MagicNum.HashBySha1c.HEXADECIMAL)) msglist = [_pubkeyMsg, _sign, _agroup[1].encode("ascii")] _msgbody = NetSocketFun.NetPackMsgBody(msglist) showmsg = "发送采样结果:\n(1)A组参数:\n(帧总数,分组参数,帧间隔位数,混沌初值,分支参数)\n(".decode("utf8") + \ ",".join(_agroup[0]) + ")\n(2)A组采样:".decode("utf8") + \ CommonData.MsgHandlec.SHOWPADDING.join(NetSocketFun.NetUnPackMsgBody(_agroup[1])) \ + "\n(3)A组采样签名:".decode("utf8") + _sign showmsg += "\nCP用AP的公钥加密采样参数A" showmsg += "\nCP用其私钥加密比特串承诺值" showmsg += "\nCP发送加密的A组参数和加密的比特串承诺值,以及公钥加密TID发送给AP" showmsg += "\n等待文件验证..." self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) return _msgbody
def HandleMsg(self,bufsize,session): "接受对方传来的dh参数及公钥并生成自己的dh公钥" recvmsg = NetSocketFun.NetSocketRecv(session.sockfd,bufsize) dhmsg = NetSocketFun.NetUnPackMsgBody(recvmsg) #参数p:公钥:签名 self.verifyMsgSign(dhmsg[:2], dhmsg[2:], session)
def ReqConnect(self, name, psw): "请求登录" msglist = [MagicNum.UserTypec.CPUSER, name, psw] _msgbody = NetSocketFun.NetPackMsgBody(msglist) _msghead = struct.pack(CommonData.MsgHandlec.MSGHEADTYPE, MagicNum.MsgTypec.REQLOGINMSG, len(_msgbody)) NetSocketFun.NetSocketSend(self.__Sockfd, _msghead + _msgbody)
def HandleMsg(self,bufsize,session): "发送迪菲参数p和公钥,及该消息的签名" msglist = self.getDhpAndga(session) msgbody = NetSocketFun.NetPackMsgBody(msglist) msghead = self.packetMsg(MagicNum.MsgTypec.SENDDHPANDPUBKEY ,len(msgbody)) NetSocketFun.NetSocketSend(session.sockfd,msghead + msgbody) if not session.peername: session.peername = "auditserver"
def HandleMsg(self, bufsize, fddata, th): recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) recvbuffer = NetSocketFun.NetUnPackMsgBody(recvmsg)[0] from CryptoAlgorithms import RsaKeyExchange _rke = RsaKeyExchange.RsaKeyExchange() _rke.WritePubkeyStr("auditserver", recvbuffer) wx.CallAfter(Publisher().sendMessage, CommonData.ViewPublisherc.REGISTER_SWITCH, MagicNum.CPUserTablec.UNACCEPT)
def HandleMsg(self, bufsize, session): if not session.currentbytes: self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, "开始接收文件(" + session.filename + ") ...") recvmsg = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) recvbuffer = NetSocketFun.NetUnPackMsgBody(recvmsg)[0] session.currentbytes += len(recvbuffer) session.file.write(recvbuffer) msghead = self.packetMsg(MagicNum.MsgTypec.REQFILEBUFFER, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead)
def ReqRegister(self, name, psw, ip, port): "请求注册" _rke = RsaKeyExchange.RsaKeyExchange() _rke.GenerateRsaKey() _pkeystr = _rke.GetPubkeyStr("own") msglist = [name, psw, ip, port, _pkeystr] _msgbody = NetSocketFun.NetPackMsgBody(msglist) _msghead = struct.pack(CommonData.MsgHandlec.MSGHEADTYPE, MagicNum.MsgTypec.REQREGISTERMSG, len(_msgbody)) NetSocketFun.NetSocketSend( self.__Sockfd, _msghead + _msgbody.decode('gbk').encode("utf-8"))
def HandleMsg(self, bufsize, fddata, th): if not fddata.GetData("currentbytes"): self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, "开始接收文件(" + fddata.GetData("filename") + ")") recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) recvbuffer = NetSocketFun.NetUnPackMsgBody(recvmsg)[0] fddata.SetData("currentbytes", fddata.GetData("currentbytes") + len(recvbuffer)) fddata.GetData("file").write(recvbuffer) msghead = self.packetMsg(MagicNum.MsgTypec.REQFILEBUFFER, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd"))
def ReqAudit(self, filename): "请求审核" self.filename = filename _filename = filename[-filename[::-1].index("/"):].encode("utf-8") _msgbody = NetSocketFun.NetPackMsgBody([_filename]) _msghead = struct.pack(CommonData.MsgHandlec.MSGHEADTYPE, MagicNum.MsgTypec.REQAUDITMSG, len(_msgbody)) NetSocketFun.NetSocketSend(self.__Sockfd, _msghead + _msgbody) import wx from wx.lib.pubsub import Publisher wx.CallAfter(Publisher().sendMessage, CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, ["请求审核文件(" + _filename + ")".encode("utf8"), False])
def HandleMsg(self, bufsize, fddata, th): "接收文件名,保存文件名" recvbuffer = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) fddata.SetData("threadtype", CommonData.ThreadType.ACCETPNO) msglist = NetSocketFun.NetUnPackMsgBody(recvbuffer.encode("utf-8")) fddata.SetData("filename", self.__mediapath + "/auditserver/" + msglist[0]) showmsg = "开始为 " + msglist[1] + " 分发文件(" + msglist[0] + ")" fddata.SetData("peername", msglist[1]) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg.encode("utf-8"), True) import SendDhPAndPubkey _sdh = SendDhPAndPubkey.SendDhPAndPubkey() _sdh.HandleMsg(0, fddata)
def HandleMsg(self, bufsize, session): "接收文件名,保存文件名" recvbuffer = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) session.threadtype = CommonData.ThreadType.ACCETPNO msglist = NetSocketFun.NetUnPackMsgBody(recvbuffer.encode("utf-8")) session.filename = self.__mediapath + "/auditserver/" + msglist[0] showmsg = "开始为 " + msglist[1] + " 分发文件(" + msglist[0] + ")" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_REFRESHSTATIC, [msglist[0], "正在分发文件"]) session.peername = msglist[1] self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg.encode("utf-8"), True) import SendDhPAndPubkey _sdh = SendDhPAndPubkey.SendDhPAndPubkey() _sdh.HandleMsg(0, session)
def verifyMsgSign(self, msg, sign, fddata, th): "如果验证成功则发送公钥,否则发送验证失败并关闭该线程" _cfg = ConfigData.ConfigData() _rsa = Rsa.Rsa(_cfg.GetKeyPath()) if self.verify(_rsa, msg[0], sign[0], fddata) == False or self.verify( _rsa, msg[1], sign[1], fddata) == False: msghead = self.packetMsg(MagicNum.MsgTypec.IDENTITYVERIFYFAILED, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd")) else: #生成自己的会话密钥 _dhkey = DiffieHellman.DiffieHellman(string.atol(msg[0])) from CryptoAlgorithms import HashBySha1 _hbs = HashBySha1.HashBySha1() fddata.SetData( "fddatakey", _hbs.GetHash(str(_dhkey.getKey(string.atol(msg[1]))), MagicNum.HashBySha1c.HEXADECIMAL)) _dhpubkey = str(_dhkey.getPubkey()) msglist = [_dhpubkey, _rsa.SignByPrikey(_dhpubkey)] msgbody = NetSocketFun.NetPackMsgBody(msglist) msghead = self.packetMsg(MagicNum.MsgTypec.SENDDHPUBKEY, len(msgbody)) fddata.SetData("outdata", msghead + msgbody) th.ModifyInToOut(fddata.GetData("sockfd"))
def APgetAgroupHashAndParam(self, fddata): "得到数据库中存放的A组参数和hash" _db = MediaTable.MediaTable() _db.Connect() _dir = fddata.GetData("filename") _filename = _dir[-_dir[::-1].index("/"):] _res = _db.searchMedia(_filename) return NetSocketFun.NetUnPackMsgBody(_res[0][1]), _res[0][2]
def HandleMsg(self, bufsize, session): recvmsg = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) recvbuffer = NetSocketFun.NetUnPackMsgBody(recvmsg)[0] session.file.write(recvbuffer) session.file.close() if session.threadtype == CommonData.ThreadType.ACCETPNO: msghead = self.packetMsg(MagicNum.MsgTypec.REQAGROUP, 0) elif session.threadtype == CommonData.ThreadType.ACCEPTAP: msghead = self.packetMsg(MagicNum.MsgTypec.REQCGROUP, 0) filesize = float((session.currentbytes + bufsize)) / (1024 * 1024) showmsg = "文件接收完毕:\n(1)文件名:" + session.filename + "\n(2)文件大小(MB):" + str( filesize) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) NetSocketFun.NetSocketSend(session.sockfd, msghead) session.currentbytes = 0
def verifySign(self, session): import string _hashlist = [] _bparam = NetSocketFun.NetUnPackMsgBody(self.__bparam) showmsg = "正在特征提取 ..." self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) _meidaPath = self.__mediapath + "/" + session.peername + "/" + session.filename _efm = ExecuteFfmpeg.ExecuteFfmpeg(_meidaPath) _efm.Run() _efm.WaitForProcess() # import os # filesize = float(os.path.getsize(_meidaPath)) / (1024 * 1024) # showmsg = "特征提取完成:\n(1)I帧总数:" + self.getFrameNum(session.filename) + \ # "\n(2)文件大小(MB):" + str(filesize) # self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg,True) showmsg = ["B组特征提取过程:", "C组特征提取过程:"] for _param in [_bparam, self.__cparam]: _argum = [string.atoi(s) for s in _param[:3]] _argum += [string.atof(s) for s in _param[3:]] self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg[len(_hashlist)], True) _hashlist.append(self.computeSingleSampling(session, _argum)) import os filesize = float(os.path.getsize(_meidaPath)) / (1024 * 1024) showmsg = "特征提取完成:\n(1)I帧总数:" + self.getFrameNum(session.filename) + \ "\n(2)文件大小(MB):" + str(filesize) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) self.deltempFile(session) if not self.verifySignleSign(_hashlist[1], self.__csign, session): self.compareSamplingHash(_hashlist[1], self.__chash) showmsg = "签名验证失败,该文件在传输过程中被篡改" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) return False elif self.__bhash != _hashlist[0]: self.compareSamplingHash(_hashlist[0], self.__bhash) showmsg = "文件验证失败,该文件已被审核部门修改" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) return False else: self.compareSamplingHash(_hashlist[1], self.__chash, title="C组") showmsg = "签名验证成功,该文件在传输过程中未被篡改" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) self.compareSamplingHash(_hashlist[0], self.__bhash, title="B组") showmsg = "文件验证成功,该文件未被审核部门修改" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) return True
def HandleMsg(self, bufsize, session): recvbuffer = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) _msglist = NetSocketFun.NetUnPackMsgBody(recvbuffer) if self.handleDhkeyAndCgroupParam(_msglist, session) == True: # try: self.getBgroupSignAndParam(session) showmsg = "解密获取参数及特征提取结果:\n(1)B组参数:\n(帧总数,分组参数,帧间隔位数,混沌初值,分支参数)\n(" + \ ",".join(NetSocketFun.NetUnPackMsgBody(self.__bparam)) + ")\n(2)B组特征提取签名:" + _msglist[1] showmsg += "\n(3)C组参数:\n(帧总数,分组参数,帧间隔位数,混沌初值,分支参数)\n(" + \ ",".join(self.__cparam) + ")\n(4)C组特征提取签名:" + self.__csign self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) # except Exception ,e: # print e # import wx # wx.MessageBox("该文件不存在","错误",wx.ICON_ERROR|wx.YES_DEFAULT) # return if self.verifySign(session) == True: # showmsg = "收到特征提取结果:\n(1)B组参数:" + ",".join(self.__bparam.split(CommonData.MsgHandlec.PADDING)) + "\n(2)B组特征提取签名:" + _msglist[1] # showmsg += "\n(3)C组参数:" + ",".join(self.__cparam) + "\n(4)C组特征提取签名:" + self.__csign + "\n审核返回成功" # self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT,showmsg,True) showmsg = "审核返回成功" self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) msghead = self.packetMsg(MagicNum.MsgTypec.AUDITRETURNSUCCESS, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead) _db = MediaTable.MediaTable() _db.Connect() _db.AlterMedia("status", MagicNum.MediaTablec.AUDIT, session.filename) _db.CloseCon() self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_REFRESHFILETABLE, "") self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_REFRESHSTATIC, [session.filename, "审核返回成功"]) return self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_REFRESHSTATIC, [session.filename, "审核返回失败"]) msghead = self.packetMsg(MagicNum.MsgTypec.IDENTITYVERIFYFAILED, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead)
def HandleMsg(self, bufsize, session): "返回登录结果,并保存用户名" recvmsg = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) _loginmsg = NetSocketFun.NetUnPackMsgBody(eval(recvmsg))[0] _res = self.verifyUser(_loginmsg[0], _loginmsg[1]) if _res != False: msgbody = NetSocketFun.NetPackMsgBody([str(_res)]) msghead = self.packetMsg(MagicNum.MsgTypec.LOGINSUCCESS, len(msgbody)) NetSocketFun.NetSocketSend(session.sockfd, msghead + msgbody) session.peername = _loginmsg[0] showmsg = session.peername + "登录成功" else: msghead = self.packetMsg(MagicNum.MsgTypec.LOGINFAIL, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead) showmsg = session.peername + "登录失败" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True)
def HandleMsg(self, bufsize, fddata, th): "发送迪菲参数p和公钥,及该消息的签名" msglist = self.getDhpAndga(fddata) msgbody = NetSocketFun.NetPackMsgBody(msglist) msghead = self.packetMsg(MagicNum.MsgTypec.SENDDHPANDPUBKEY, len(msgbody)) fddata.SetData("outdata", msghead + msgbody) th.ModifyInToOut(fddata.GetData("sockfd")) if not fddata.GetData("peername"): fddata.SetData("peername", "auditserver")
def packMsgBody(self, session): "将会话密钥与A组参数用公钥加密,将特征提取hash用私钥加密(签名)" if session.threadtype == CommonData.ThreadType.CONNECTAP: _agroup = self.APgetAgroupHashAndParam(session) elif session.threadtype == CommonData.ThreadType.ACCETPNO: _agroup = self.NOgetAgroupHashAndParam(session) import os _dir = session.filename _meidaPath = self.__mediapath + "/auditserver/" + _dir[-_dir[::-1]. index("/"):] filesize = float(os.path.getsize(_meidaPath)) / (1024 * 1024) showmsg = "特征提取完成:\n(1)I帧总数:" + self.getFrameNum(_dir[-_dir[::-1].index("/"):]) + \ "\n(2)文件大小(MB):" + str(filesize) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) self.deltempFile(session) _cfd = ConfigData.ConfigData() _rsa = Rsa.Rsa(_cfd.GetKeyPath()) msglist = (str(session.sessionkey), ) + _agroup[0] _plaintext = NetSocketFun.NetPackMsgBody(msglist) _pubkeyMsg = _rsa.EncryptByPubkey(_plaintext.encode("ascii"), session.peername) _hbs = HashBySha1.HashBySha1() _sign = _rsa.SignByPrikey( _hbs.GetHash(_agroup[1].encode("ascii"), MagicNum.HashBySha1c.HEXADECIMAL)) msglist = [_pubkeyMsg, _sign, _agroup[1].encode("ascii")] _msgbody = NetSocketFun.NetPackMsgBody(msglist) showmsg = "发送特征提取结果:\n(1)A组参数:\n(帧总数,分组参数,帧间隔位数,混沌初值,分支参数)\n(".decode("utf8") + \ ",".join(_agroup[0]) + ")\n(2)A组特征提取:".decode("utf8") + \ CommonData.MsgHandlec.SHOWPADDING.join(NetSocketFun.NetUnPackMsgBody(_agroup[1])) \ + "\n(3)A组特征提取签名:".decode("utf8") + _sign showmsg += "\nCP用AP的公钥加密特征提取参数A" showmsg += "\nCP用其私钥加密比特串承诺值" showmsg += "\nCP发送加密的A组参数和加密的比特串承诺值,以及公钥加密TID发送给AP" showmsg += "\n等待文件验证..." self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) return _msgbody
def StopNetConnect(self): "发送关闭消息并关闭网络线程" print "send close" _msghead = struct.pack(CommonData.MsgHandlec.MSGHEADTYPE, MagicNum.MsgTypec.REQCLOSEMSG, 0) NetSocketFun.NetSocketSend(self.__Sockfd, _msghead) # self.__netThread.stop() print "netmanage.stop" self.__netManage.stop() print "all close"
def HandleMsg(self, bufsize, fddata, th): "返回登录结果,并保存用户名" recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) _loginmsg = NetSocketFun.NetUnPackMsgBody(eval(recvmsg))[0] _res = self.verifyUser(_loginmsg[0], _loginmsg[1]) if _res != False: msgbody = NetSocketFun.NetPackMsgBody([str(_res)]) msghead = self.packetMsg(MagicNum.MsgTypec.LOGINSUCCESS, len(msgbody)) fddata.SetData("outdata", msghead + msgbody) th.ModifyInToOut(fddata.GetData("sockfd")) fddata.SetData("peername", _loginmsg[0]) showmsg = fddata.GetData("peername") + "登录成功" else: msghead = self.packetMsg(MagicNum.MsgTypec.LOGINFAIL, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd")) showmsg = fddata.GetData("peername") + "登录失败" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True)
def HandleMsg(self,bufsize,session): "接收文件名,并打开文件准备写" recvbuffer = NetSocketFun.NetSocketRecv(session.sockfd,bufsize) self.createMediaDir(session) session.filename = NetSocketFun.NetUnPackMsgBody(recvbuffer)[0] session.filename = session.filename.encode("utf-8") session.threadtype = CommonData.ThreadType.ACCEPTAP _localfilename = self.___ownPath + "/" + session.filename session.file = open(_localfilename,"w") session.currentbytes = 0 showmsg = "开始审核返回文件(" + session.filename + ")" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT,showmsg,True) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_REFRESHSTATIC,[session.filename,"接受审核返回"]) import SendDhPAndPubkey _sdh = SendDhPAndPubkey.SendDhPAndPubkey() _sdh.HandleMsg(0, session)
def HandleMsg(self, bufsize, fddata, th): "接收文件名,并打开文件准备写" recvbuffer = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) self.createMediaDir(fddata) fddata.SetData("filename", NetSocketFun.NetUnPackMsgBody(recvbuffer)[0]) fddata.SetData("filename", fddata.GetData("filename").encode("utf-8")) fddata.SetData("threadtype", CommonData.ThreadType.ACCEPTAP) _localfilename = self.___ownPath + "/" + fddata.GetData("filename") fddata.file = open(_localfilename, "w") fddata.SetData("currentbytes", 0) showmsg = "开始审核返回文件(" + fddata.GetData("filename") + ")" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) import SendDhPAndPubkey _sdh = SendDhPAndPubkey.SendDhPAndPubkey() _sdh.HandleMsg(0, fddata, th)
def NOgetAgroupHashAndParam(self, fddata): "得到数据库中存放的A组参数和hash" _db = MediaTable.MediaTable() _db.Connect() _dir = fddata.GetData("filename") _filename = _dir[-_dir[::-1].index("/"):] _res = _db.searchMedia(_filename) showmsg = "正在采样 ..." self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) from VideoSampling import ExecuteFfmpeg, GetVideoSampling _meidaPath = self.__mediapath + "/auditserver/" + _dir[-_dir[::-1]. index("/"):] _efm = ExecuteFfmpeg.ExecuteFfmpeg(_meidaPath) _efm.Run() _efm.WaitForProcess() import os filesize = float(os.path.getsize(_meidaPath)) / (1024 * 1024) showmsg = "采样完成:\n(1)总帧数:" + self.getFrameNum(_dir[-_dir[::-1].index("/"):]) + \ "\n(2)文件大小(MB):" + str(filesize) self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) _sparam = NetSocketFun.NetUnPackMsgBody(_res[0][1]) import string _iparam = [string.atoi(s) for s in _sparam[:3] ] + [string.atof(s) for s in _sparam[3:]] _cgvs = GetVideoSampling.GetVideoSampling( _filename[:_filename.index(".")], *_iparam) try: self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, "A组采样过程:", True) return NetSocketFun.NetUnPackMsgBody( _res[0][1]), NetSocketFun.NetPackMsgBody(_cgvs.GetSampling()) except: return NetSocketFun.NetUnPackMsgBody(_res[0][1]), ""
def HandleMsg(self, bufsize, session): "返回注册信息并保存用户名" recvmsg = NetSocketFun.NetSocketRecv(session.sockfd, bufsize) _loginmsg = NetSocketFun.NetUnPackMsgBody(recvmsg) + [ MagicNum.CPUserTablec.UNACCEPT ] if self.verifyUser(_loginmsg[0]) == False: restype = MagicNum.MsgTypec.REGISTERFAIL msghead = self.packetMsg(restype, 0) NetSocketFun.NetSocketSend(session.sockfd, msghead) else: restype = MagicNum.MsgTypec.REGISTERSUCCESSMSG self.addNewCPUser(_loginmsg[:-2] + _loginmsg[-1:]) session.name = _loginmsg[0] from CryptoAlgorithms import RsaKeyExchange _rke = RsaKeyExchange.RsaKeyExchange() _rke.WritePubkeyStr(session.name, _loginmsg[-2]) msgbody = NetSocketFun.NetPackMsgBody([_rke.GetPubkeyStr("own")]) msghead = self.packetMsg(restype, len(msgbody)) NetSocketFun.NetSocketSend( session.sockfd, msghead + msgbody.decode('gbk').encode("utf-8"))
def HandleMsg(self, bufsize, fddata, th): "返回注册信息并保存用户名" recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) _loginmsg = NetSocketFun.NetUnPackMsgBody(recvmsg) + [ MagicNum.CPUserTablec.UNACCEPT ] if self.verifyUser(_loginmsg[0]) == False: restype = MagicNum.MsgTypec.REGISTERFAIL msghead = self.packetMsg(restype, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd")) else: restype = MagicNum.MsgTypec.REGISTERSUCCESSMSG self.addNewCPUser(_loginmsg[:-2] + _loginmsg[-1:]) fddata.SetData("peername", _loginmsg[0]) from CryptoAlgorithms import RsaKeyExchange _rke = RsaKeyExchange.RsaKeyExchange() _rke.WritePubkeyStr(fddata.GetData("name"), _loginmsg[-2]) msgbody = NetSocketFun.NetPackMsgBody([_rke.GetPubkeyStr("own")]) msghead = self.packetMsg(restype, len(msgbody)) fddata.SetData("outdata", msghead + msgbody.decode('gbk').encode("utf-8")) th.ModifyInToOut(fddata.GetData("sockfd"))
def HandleMsg(self, bufsize, fddata, th): recvbuffer = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) _msglist = NetSocketFun.NetUnPackMsgBody(recvbuffer) if self.handleDhkeyAndCgroupParam(_msglist, fddata) == True: try: self.getBgroupSignAndParam(fddata) except: import wx wx.MessageBox("该文件不存在", "错误", wx.ICON_ERROR | wx.YES_DEFAULT) return if self.verifySign(fddata) == True: showmsg = "收到采样结果:\n(1)B组参数:" + ",".join( self.__bparam.split(CommonData.MsgHandlec.PADDING) ) + "\n(2)B组采样签名:" + _msglist[1] showmsg += "\n(3)C组参数:" + ",".join( self.__cparam) + "\n(4)C组采样签名:" + self.__csign + "\n审核返回成功" self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) msghead = self.packetMsg(MagicNum.MsgTypec.AUDITRETURNSUCCESS, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd")) _db = MediaTable.MediaTable() _db.Connect() _db.AlterMedia("status", MagicNum.MediaTablec.AUDIT, fddata.GetData("filename")) _db.CloseCon() self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_REFRESHFILETABLE, "") return msghead = self.packetMsg(MagicNum.MsgTypec.IDENTITYVERIFYFAILED, 0) fddata.SetData("outdata", msghead) th.ModifyInToOut(fddata.GetData("sockfd"))