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 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 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 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 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, 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 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 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 compareSamplingHash(self, localhash, recvhash, title=""): "分组验证" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, title + "分组进行比对:", True) difList = [] localhash = NetSocketFun.NetUnPackMsgBody(localhash) recvlist = NetSocketFun.NetUnPackMsgBody(recvhash) for i in range(len(recvlist)): try: if localhash[i] != recvlist[i]: difList.append(i) showmsg = "第" + str(i) + "组验证失败" else: showmsg = "第" + str(i) + "组验证成功" self.sendViewMsg( CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg) except: difList += [index for index in range(i, len(recvlist))] break import string _bparam = NetSocketFun.NetUnPackMsgBody(self.__bparam) _fnum = string.atoi(_bparam[0]) _gt = string.atoi(_bparam[1]) _groupborder = [x * (_fnum / _gt) for x in range(_gt)] + [_fnum] if len(difList) == 0: showmsg = "结果:特征提取验证成功,该文件未被篡改" else: showmsg = "结果:特征提取验证失败,该文件被篡改,其中" for _dif in difList: showmsg += "\n第" + str(_dif) + "组存在篡改,篡改帧区间为:" + str( _groupborder[_dif]) + "-" + str(_groupborder[_dif + 1]) + "帧" self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg)
def handleDhkeyAndCgroupParam(self, msglist, session): "验证接收到的会话密钥是否相同,如果相同则获取C组参数和hash" _cfd = ConfigData.ConfigData() _rsa = Rsa.Rsa(_cfd.GetKeyPath()) _plaintext = _rsa.DecryptByPrikey(msglist[0]) _plist = NetSocketFun.NetUnPackMsgBody(_plaintext) if session.sessionkey == _plist[0]: self.__cparam = _plist[1:] self.__csign = msglist[1] self.__chash = msglist[2] return True else: showmsg = "会话密钥验证失败:会话密钥:" + session.sessionkey self.sendViewMsg(CommonData.ViewPublisherc.MAINFRAME_APPENDTEXT, showmsg, True) return False
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 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): 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 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 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 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): "返回登录结果,并保存用户名" 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, 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 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"))
def HandleMsg(self,bufsize,session): if not session.currentbytes and session.threadtype != CommonData.ThreadType.CONNECTAP: _cfg = ConfigData.ConfigData() _dir = _cfg.GetMediaPath() + "/auditserver/" recvbuffer = NetSocketFun.NetSocketRecv(session.sockfd,bufsize) session.control.filename = _dir + NetSocketFun.NetUnPackMsgBody(recvbuffer)[0] if not session.currentbytes: self.handleFileBegin(bufsize, session) _filebuffer = session.file.read(CommonData.MsgHandlec.FILEBLOCKSIZE) session.currentbytes += len(_filebuffer) msgbody = NetSocketFun.NetPackMsgBody([_filebuffer]) if session.currentbytes == session.totalbytes: msghead = self.packetMsg(MagicNum.MsgTypec.SENDFILEOVER,len(msgbody)) session.file.close() session.currentbytes = 0 _filename = session.filename[-session.filename[::-1].index("/"):].encode("utf-8") filesize = float(session.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)) NetSocketFun.NetSocketSend(session.sockfd, msghead + msgbody)
def HandleMsg(self, bufsize, fddata, th): recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) recvlist = NetSocketFun.NetUnPackMsgBody(recvmsg) wx.CallAfter(Publisher().sendMessage, CommonData.ViewPublisherc.LOGIN_SWITCH, recvlist)
def HandleMsg(self, bufsize, fddata, th): "接受对方传来的dh参数及公钥并生成自己的dh公钥" recvmsg = NetSocketFun.NetSocketRecv(fddata.GetData("sockfd"), bufsize) dhmsg = NetSocketFun.NetUnPackMsgBody(recvmsg) #参数p:公钥:签名 self.verifyMsgSign(dhmsg[0], dhmsg[1], fddata, th)