Posts Tagged web

用connection-bytes和connection-rate属性进行包标记的限速

Posted by on 星期六, 14 八月, 2010

  比传统的区分大小包要灵活、准确,浏览网页即使传输大包也会优先处理;下载的话如果是小包也会被限速。IE下载或迅雷下载完全不影响其他小带宽应用,如ping、web、游戏。


  用Mangle链表中的connection-bytes和connection-rate属性做包标记:


  需要分别对tcp和udp进行设置:


  connection-bytes属性是指:匹配指定流量的连接。注意是流量,不是带宽,比如说在192.168.1.1:1847->202.108.22.142:80这条连接上通过了100K的数据,则当connection-bytes=100000时,该连接将匹配该规则。


  connect-rate属性是指:连接的速度。比如192.168.1.1:1847->202.108.22.142:80这条连接进行通信的速率,比如说是60K。


  理解了这两个属性后,我们来看下面的脚本:


/ip firewall mangle
add action=mark-connection chain=prerouting comment="" connection-bytes=\
    500000-0 connection-rate=200k-100M disabled=no new-connection-mark=\
    con_heavy passthrough=yes protocol=tcp
#上面这段脚本,将连接流量在500K,并且连接速率在200K-100M之间的tcp连接标记出来,命名为:con_heavy 

add action=mark-connection chain=prerouting comment="" connection-bytes=\
    400000-0 connection-rate=100k-100M disabled=no new-connection-mark=\
    con_heavy passthrough=yes protocol=udp
#作用与上一段基本一致,只是协议改变为udp

add action=mark-packet chain=prerouting comment="" connection-mark=con_heavy \
    disabled=no dst-address-type=!local in-interface=LAN new-packet-mark=\
    pck_general_up passthrough=no
#将进入LAN口的数据,并且连接标记为con_heavy,同时目的地址不为ros接口IP的包标记为pck_general_up,标记之后数据包不继续向下走,将跳出prerouting链表

 add action=mark-packet chain=prerouting comment="" connection-mark=!con_heavy \
    disabled=no dst-address-type=!local in-interface=LAN new-packet-mark=\
    pck_small_up passthrough=no
#作用与上一段基本一致,只是将非con_heavy的连接标记为pck_small_up

 add action=mark-packet chain=postrouting comment="" connection-mark=con_heavy \
    disabled=no new-packet-mark=pck_general_down out-interface=LAN \
    passthrough=no src-address-type=!local
#将发送出LAN口的数据,连接标记为con_heavy,且源地址不为ros接口IP的数据包标记为pck_general_down,标记之后数据包不继续向下走,将跳出postrouting链表

 add action=mark-packet chain=postrouting comment="" connection-mark=\
    !con_heavy disabled=no new-packet-mark=pck_small_down out-interface=LAN \
    passthrough=no src-address-type=!local
#作用与上一段基本一致,只是将非con_heavy的连接标记为pck_small_down



  最后上个图:





个人研究成果,如有不足或错误之处,恳请原谅并欢迎指正,谢谢。


通过ActiveX在Web上启动应用程序

Posted by on 星期一, 19 七月, 2010

  最近在研究一套B/S系统。 系统中需要在Web启动mstsc.exe程序进行远程桌面连接,但如何通过在web上调用来启动这个mstsc.exe呢?

  如果能随随便便的运行一个程序,那么Web将变得毫无安全性可言了。

  思考中突然看到桌面上的迅雷。突然想到可以通过添加url协议来启动程序,比如迅雷:thunder://QUFodHRwOi8vNjEuMTYzLjkyLjE2Nzo4Mi9kb3duL2RpcmVjdHhfOWNfRGVjMDRzZGtfcmVkaXN0LmV4ZVpa,通过这段url就能启动迅雷并将参数传递到迅雷。

  但这个方法有个弊端,就是提前需要在客户端进行url协议注册。这个注册过程要么通过注册表导入实现,要么通过一个安装包实现,这不能达到我的要求。

  这时又看到了PPS,突然想起也许可以用ActiveX来启动程序,于是打开VB进行调试。

  通过ActiveX DLL工程,我已经成功执行了本地的calc.exe计算器这个程序。只是启动前有一个提示安装“Microsoft Visual Studio”组建的提示,这无所谓了。

  B/S开发完了。突然觉得这个ActiveX很危险,我可以用VB写一个下载者,然后挂到Web上,是不是就可以挂马了?

  下面这个链接会启动本地的计算器,有兴趣的可以试一下。IE安全级别高的,会因为无法验证发行者而运行失败。低一点的,会安装成功并运行本地的计算器。至于提示无法验证发行者,可以通过签名解决。

  后期发出详细教程。

http://www.awolf.net/dhtml/Project1.HTM