QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: nihui

想把 mxd2 移植到 KDE4 ...

[复制链接]
 楼主| 发表于 2009-8-21 19:55:30 | 显示全部楼层
拜托 haulm 帮忙改改程序吧。。。

/etc/ppp/pap-secrets 这个文件我看过了,没什么内容,自己现在也不用 adsl 拨号了...
haulm 看一下 loadConfig() 和 saveConfig() 这两个对不对,dns 和网卡设备读取都正常了,用户名和密码(就是 a 和 b)我不知道是什么样子。。。

mxd-20090821.tar.gz
回复

使用道具 举报

发表于 2009-8-22 17:01:54 | 显示全部楼层
不懂nihui是怎么压缩的
tar xvf mxd-20090821.tar.gz -C ./mxd
tar: 从成员名中删除开头的“../../../../../../../../”         
../../../../../../../../home/nihui/mxd/mxd/                 
../../../../../../../../home/nihui/mxd/mxd/mxd21tooltip.png
../../../../../../../../home/nihui/mxd/mxd/images/         
../../../../../../../../home/nihui/mxd/mxd/images/status_both.png
../../../../../../../../home/nihui/mxd/mxd/images/status_tx.png  
../../../../../../../../home/nihui/mxd/mxd/images/status_error.png
../../../../../../../../home/nihui/mxd/mxd/images/status_none.png
../../../../../../../../home/nihui/mxd/mxd/images/status_rx.png   
../../../../../../../../home/nihui/mxd/mxd/images/icon_pci.png   
../../../../../../../../home/nihui/mxd/mxd/CMakeLists.txt         
../../../../../../../../home/nihui/mxd/mxd/src/                  
../../../../../../../../home/nihui/mxd/mxd/src/mxd.desktop
../../../../../../../../home/nihui/mxd/mxd/src/mxd.cpp
../../../../../../../../home/nihui/mxd/mxd/src/mxdtray.cpp
../../../../../../../../home/nihui/mxd/mxd/src/main.cpp
../../../../../../../../home/nihui/mxd/mxd/src/mxd.h
../../../../../../../../home/nihui/mxd/mxd/src/mxdtray.h
../../../../../../../../home/nihui/mxd/mxd/src/CMakeLists.txt

CMakeFiles/mxd.dir/mxdtray.o: In function `MxdSystemTray':                                                                                    
/root/下载/mxd/home/nihui/mxd/mxd/src/mxdtray.cpp:28: undefined reference to `vtable for MxdSystemTray'                                       
/root/下载/mxd/home/nihui/mxd/mxd/src/mxdtray.cpp:28: undefined reference to `vtable for MxdSystemTray'                                       
CMakeFiles/mxd.dir/mxdtray.o: In function `~MxdSystemTray':
/root/下载/mxd/home/nihui/mxd/mxd/src/mxdtray.cpp:77: undefined reference to `vtable for MxdSystemTray'
/root/下载/mxd/home/nihui/mxd/mxd/src/mxdtray.cpp:77: undefined reference to `vtable for MxdSystemTray'
/root/下载/mxd/home/nihui/mxd/mxd/src/mxdtray.cpp:77: undefined reference to `vtable for MxdSystemTray'
collect2: ld 返回 1
make[2]: *** [mxd] 错误 1
make[1]: *** [CMakeFiles/mxd.dir/all] 错误 2
回复

使用道具 举报

发表于 2009-8-22 17:07:38 | 显示全部楼层
我对cmake 的编译设置不是很熟悉,有这方面资料么,而且是KDE程序,我对KDE4编程相当莫生。

[ 本帖最后由 haulm 于 2009-8-22 17:11 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2009-8-22 19:51:41 | 显示全部楼层
在 mxdtray.cpp 最后加上一句
#include "mxdtray.moc"
应该可以通过编译了......

失误....

压缩我是直接右键压缩的,可能是因为里面包含符号链接的文件夹关系吧....
我也是刚刚尝试 kde4 的库...
回复

使用道具 举报

发表于 2009-8-22 21:24:56 | 显示全部楼层
conf.mxd_connect 是普通用户的运行配置,不同的用户会有conf.用户名这样的配置文件,其边上的passwd文件 给出了../chap-secrets 上的文件格式,最后一个字段是网卡设备,不会在chap-secrets 文件中体现。
chap-secrets 存储了所有账号的连接名、用户名和密码,其中root 账号的拔号格式少了连接名
mxd_connect        *        k9171888@fatd1        *        asdfsdf89        *
pppoe.conf 放置了root 用户的配置,当然也会影响普通用户的拔号,密码也存在chap-secrets
/etc/ppp/resolv.conf 存储了DNS,一般系统只会读取/etc/resolv.conf,/etc/resolv.conf是个软链而已
如果pppoe.conf 里有DNS设置,那么resolv.conf 中存储的DNS就会参考pppoe.conf,否则自动获取DNS。
以上的设置是rp-pppoe默认的配置文件,高版本的fedroa 或其它的发行版如EVL基于fedroa也都发生了改变(networkmanager),所以要工作就不能给rp-pppoe打上其它发行版本对网络管理的某些补丁。
pap-secrets 和 chap-secrets 文件是一样的,是拔号不同方式针对的不同的配置文件。
pap是通过验证远端的用户名和密码是否匹配来进行验证,chap则是发送一个挑战包,然后远端通过自己的数据库的用户名和密码利用md5进行计算后返还一个数值,然后在发送方验证这个数值是否和自己计算出来的数值是否一致进行验证。

你了解以上内容可以自己写出界面,不要参照那个C程序代码,我流水帐一样的文本处理连自己都会看得头晕眼花。

[ 本帖最后由 haulm 于 2009-8-22 21:37 编辑 ]
回复

使用道具 举报

发表于 2009-8-22 21:39:20 | 显示全部楼层
1.       在两台路由器上进行pap认证:
如果我们进行单项认证的话配置应该如下
R1为认证的服务器端,需要建立本地口令数据库,并且开始pap认证。
R1(config)#username R2 password gairuhe------------------------建立本地口令数据库
R1(config)#int s1/0
R1(config-if)#ppp authentication pap--------------------------------要求进行PAP认证
   在这样的配置下,我们可以看到链路已经down了:
   R1(config-if)#
*Aug 23 16:45:12.639: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down

R2为认证的客户端,需要发送用户名和密码来匹配服务器端的口令数据库
此时我们在R2上加上如下的配置:

   R2(config)#int s1/0
R2(config-if)#ppp pap sent-username R2 password gairuhe------发送用户名和密码
R2(config-if)#
*Aug 23 16:47:48.635: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up

此时链路已经起来,我们仅在R1上做了认证,而在R2上没有进行认证。这就是pap的单向认证。

Pap的双向认证:

Pap的双向认证其实就是将两端同时都配置为认证服务器端和认证客户端。在上面实验的基础上,我们只要将R2配置成服务器端,将R1配置成客户端即可。

R2(config)#username R1 password  gairuhe   
R2(config)#int s1/0
R2(config-if)#ppp authentication pap
R2(config-if)#
*Aug 23 16:52:29.843: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to down

R1(config-if)#int s1/0
R1(config-if)#ppp pap sen
R1(config-if)#ppp pap sent-username R1 password gairuhe
R1(config-if)#
*Aug 23 16:53:08.343: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up

2.在上面实验的基础上,将R1改为chap认证,而R2不变。
  打开debug ppp authentication信息。在R1上进行如下的改变

R1(config-if)#no ppp authentication pap
R1(config-if)#no ppp pap sent-username R1 password gairuhe
R1(config-if)#ppp authentication chap

我们发现,链路状态并没有改变,而且也没有任何的debug信息产生。这就是说明了在链路已经建立起来后,是无需进行再次的认证的。

我们把R1的是s1/0口shut down 后在no shut down,看看情况
R1(config-if)#shut
R1(config-if)#no shut
R1#
*Aug 23 17:00:19.663: Se1/0 PPP: Authorization required

此时发现链路已经断开,并且要求需要PPP的认证

3.在两台路由器上进行chap认证
首先将R2的pap认证关闭
R2(config-if)#no ppp authen pap
R2(config-if)#no ppp pap sent-username R2 password gairuhe
   我们通过debug信息看到
   R1#  
*Aug 23 17:07:24.031: Se1/0 PPP: Authorization required
*Aug 23 17:07:24.063: Se1/0 CHAP: O CHALLENGE id 42 len 23 from "R1"
*Aug 23 17:07:24.095: Se1/0 CHAP: I RESPONSE id 42 len 23 from "R2"
*Aug 23 17:07:24.099: Se1/0 PPP: Sent CHAP LOGIN Request
*Aug 23 17:07:24.103: Se1/0 PPP: Received LOGIN Response FAIL
*Aug 23 17:07:24.107: Se1/0 CHAP: O FAILURE id 42 len 25 msg is "Authentication failed"

我们看到chap认证是通过发送一个challenge信息来进行认证。在R2上启用chap认证

R2(config)#int s1/0
R2(config-if)#ppp authentication chap
R2(config)#
*Aug 23 17:11:41.839: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
这个时候链路就已经通了。

4.两种认证同时启用
  使用的命令为:
  R2(config-if)#ppp authentication chap pap  或者
R2(config-if)#ppp authentication pap chap
如果同时启用了两种验证协议,则在配置中指定的第一种验证方式在链路协商过程中将被请求。如果另一端设备建议使用第二种验证方法,或者第一种验证方法没有通过,那么两台设备之间就开始尝试第二种验证方法。
这两个认证同时启用是只需要一种认证通过即可建立起链路通信。


总结:
pap是通过发送用户名和密码进行匹配,我们就必须使用sent-username  ** password **这条命令,并且这个用户名和密码可以通过抓包软件抓到,是明文传输的
chap的认证过程(单向认证,R2为服务器端,R1为客户端)
R2首先发一个挑战包给R1,包的内容包括:01(标识符,表示挑战分组)+ID(序列号)+随机数+自己的用户名(R2)
R1接收到这个包后,将挑战包的用户名(R2),随机数,ID和本地数据库的密码gairuhe进行计算,得出MD5的值,然后发送给R2
这个回应的分组包括:02(回应标识符)+ID(和R2的一样)+hash(MD5的计算值)+自己的用户名(R1)
R2收到后,通过ID找到它发送的挑战包,然后把ID,随机数,以及密码(通过本地数据库查找R1对应的密码)进行计算,得出MD5的值
然后验证

因此chap的安全性高于pap
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-26 15:49 , Processed in 0.042843 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表