예제 #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)
예제 #2
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)
예제 #3
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, 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)
예제 #5
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)
예제 #6
0
 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 verifyMsgSign(self,msg,sign,session):
     "如果验证成功则发送公钥,否则发送验证失败并关闭该线程"
     _cfg = ConfigData.ConfigData()
     _rsa = Rsa.Rsa(_cfg.GetKeyPath())
     if self.verify(_rsa, msg[0], sign[0], session)== False or self.verify(_rsa, msg[1], sign[1], session)== False:
         msghead = self.packetMsg(MagicNum.MsgTypec.IDENTITYVERIFYFAILED, 0)
         NetSocketFun.NetSocketSend(session.sockfd, msghead )
         session.stop()
     else:
         #生成自己的会话密钥
         _dhkey = DiffieHellman.DiffieHellman(string.atol(msg[0]))
         from CryptoAlgorithms import HashBySha1
         _hbs = HashBySha1.HashBySha1()
         session.sessionkey = _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))
         NetSocketFun.NetSocketSend(session.sockfd, msghead + msgbody ) 
예제 #8
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)
예제 #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"))
 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"))
예제 #11
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])
예제 #12
0
    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):
     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)
     
예제 #14
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)
예제 #15
0
 def StopNetConnect(self):
     "发送关闭消息并关闭网络线程"
     _msghead = struct.pack(CommonData.MsgHandlec.MSGHEADTYPE,
                            MagicNum.MsgTypec.REQCLOSEMSG, 0)
     NetSocketFun.NetSocketSend(self.__Sockfd, _msghead)
     self.__netThread.stop()
 def HandleMsg(self, bufsize, session):
     msgbody = self.packMsgBody(session)
     msghead = self.packetMsg(MagicNum.MsgTypec.SENDAGROUP, len(msgbody))
     NetSocketFun.NetSocketSend(session.sockfd, msghead + msgbody)