Exemple #1
0
 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"))
     
Exemple #3
0
 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)
     
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #9
0
 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)
Exemple #10
0
 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"))
Exemple #12
0
    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)
Exemple #15
0
 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)
Exemple #20
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)
Exemple #21
0
 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)
Exemple #25
0
 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"))
Exemple #29
0
 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"))
Exemple #30
0
    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"))