学习编程技术,还是一边学习一边实践来感觉更容易,近来学习QT,发现积极性不是很大,后来索性就想做一个什么实际的东西出来把,细想了一下,现在教育网 很多用户都用锐捷认证,官方的版本限制太多,没有考虑我们广大用户的利益,所以Windows下面有一Meto锐捷的东西,Linux下面也有相应的官方 认证软件supplicant,但是这个不好用,所以后来就有人写了mystar。但是一直没有一个GUI的,虽然使用Linux的高手云集,命令行可以 搞定一切,貌似没有人准备为他写一个GUI,毕竟Linux的推广于普及最终还是要让普通的来百姓能够使用,而他们迫切的需要图形界面的支持。 我一想,这个还不错,既学习Qt,巩固C++,又可以学习网络编程,当然少不了特定平台的系统调用,最后还可将学习Qt在BSD,windows,嵌入式等上面的移植,那个想法是相当的不错阿.说感就干。 首先分析Mystar的源代码,核心应该是参考Meto的,都是使用了libpcap库来实现网络抓包。libnet实现发帧。大概花了一上午的时间,将 mystar封装成类,然后开始学习QT,其实学习QT也挺快的,首先了解程序框架,然后了解各种文件用法,编译连接过程,然后根据doc/html下面 的帮助文档就可以了,不懂的地方Google一定能找到答案。 编写这个Kstar(名字瞎起的),用了RSA的MD5函数,读取配置文件还使用了专用的库CIniFile,为了在X11中使用系统托盘,使用了第三方 的TrayIcon类(Qt3中没有TrayIcon的相关类,哎),最后弄得这个可执行文件足有1M大小,真是惭愧.....尽管libcap使用的是 共享... 下面是ldd的结果 [root@localhost bin]# ldd kstar linux-gate.so.1 => (0x00110000) libpcap.so.0.9 => /usr/lib/libpcap.so.0.9 (0x00d2e000) libqt-mt.so.3 => /usr/lib/qt-3.3/lib/libqt-mt.so.3 (0x02000000) libXext.so.6 => /usr/lib/libXext.so.6 (0x00d5d000) libX11.so.6 => /usr/lib/libX11.so.6 (0x00111000) libstdc .so.6 => /usr/lib/libstdc .so.6 (0x003f7000) libm.so.6 => /lib/libm.so.6 (0x00ccc000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x002b2000) libc.so.6 => /lib/libc.so.6 (0x00b71000) libmng.so.1 => /usr/lib/libmng.so.1 (0x007b7000) libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x003d3000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00253000) libz.so.1 => /lib/libz.so.1 (0x00d19000) libXi.so.6 => /usr/lib/libXi.so.6 (0x0027b000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00286000) libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x0029d000) libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00291000) libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x002a6000) libXft.so.2 => /usr/lib/libXft.so.2 (0x007a2000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00d6f000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00222000) libSM.so.6 => /usr/lib/libSM.so.6 (0x003ac000) libICE.so.6 => /usr/lib/libICE.so.6 (0x003b7000) libdl.so.2 => /lib/libdl.so.2 (0x00cf7000) libpthread.so.0 => /lib/libpthread.so.0 (0x00cfe000) libXau.so.6 => /usr/lib/libXau.so.6 (0x0020d000) libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0x00210000) libxcb.so.1 => /usr/lib/libxcb.so.1 (0x002be000) /lib/ld-linux.so.2 (0x00b52000) liblcms.so.1 => /usr/lib/liblcms.so.1 (0x0076a000) libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x002ab000) libexpat.so.1 => /lib/libexpat.so.1 (0x002da000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00212000) 整个工程使用Kdevelop开发,用Qmake处理pro文件,源码如下: kstar-src-1.0.tar.gz 在 Fedoro Core 8下面的编译的二进制包: kstar-bin-1.0.tar.gz 使用截图说明: screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://lh4.ggpht.com/daneyn/SLyuhTBaF4I/AAAAAAAAGWw/Ebo-p-rQrSk/s800/Kstar-1.jpeg');}" onmousewheel="return imgzoom(this);" alt="" /> screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://lh3.ggpht.com/daneyn/SLyuhfIFzOI/AAAAAAAAGW4/gb5Hc30Ux5A/s800/Kstar2.jpeg');}" onmousewheel="return imgzoom(this);" alt="" /> screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://lh4.ggpht.com/daneyn/SLyuhXZywHI/AAAAAAAAGXA/KA7R-Aiqva4/s800/Kstar3.jpeg');}" onmousewheel="return imgzoom(this);" alt="" /> |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 15:28 , Processed in 0.133142 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.