Esempio n. 1
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
Esempio n. 3
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 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"))
     
Esempio n. 5
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)
Esempio n. 6
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 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
Esempio n. 8
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")
Esempio n. 9
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"))
Esempio n. 10
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])
Esempio n. 11
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 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 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"))
Esempio n. 15
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"))
 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)
     
Esempio n. 17
0
    def computeSingleSampling(self, fddata, param):
        _filename = fddata.GetData(
            "filename")[:fddata.GetData("filename").index(".")]
        _gvs = GetVideoSampling.GetVideoSampling(_filename, *param)

        return NetSocketFun.NetPackMsgBody(_gvs.GetSampling())
Esempio n. 18
0
 def HandleMsg(self, bufsize, session):
     _permission = self.getUserPermission(session.peername)
     msgbody = NetSocketFun.NetPackMsgBody([str(_permission)])
     msghead = self.packetMsg(MagicNum.MsgTypec.LOGINSUCCESS, len(msgbody))
     NetSocketFun.NetSocketSend(session.sockfd, msghead + msgbody)
    def computeSingleSampling(self, session, param):
        _filename = session.filename[:session.filename.index(".")]
        _gvs = GetVideoSampling.GetVideoSampling(_filename, *param)

        return NetSocketFun.NetPackMsgBody(_gvs.GetSampling())
 def HandleMsg(self, bufsize, fddata, th):
     _permission = self.getUserPermission(fddata.GetData("peername"))
     msgbody = NetSocketFun.NetPackMsgBody([str(_permission)])
     msghead = self.packetMsg(MagicNum.MsgTypec.LOGINSUCCESS, len(msgbody))
     fddata.SetData("outdata", msghead + msgbody)