fsockopen真好用,PHP的高级别网络函数!

今天用Burp工具分析了一个网站的大致功能后打算写程序把该网站我感兴趣的内容全抓下来。 一开始用java写了一小段,但哥对Java不熟悉哇,而且哥觉得Java的那么多流的类,如果仅仅操作文本文件,就显得封装的太厚了。又想,用C/C++写。虽然用C/C++写的最多代码,但事实上C/C++的字符串操作一想起来就嫌烦,而且正则式也烂得可以,数组不支持用字符串索引也真够麻烦,虽然可用C++的std::map容器。最后决定用PHP写…PHP真是太好用了~~~犹赞超强大的正则式,同perl的正则式有得一拼啊。如果换用标准C字符串函数和GNU的一个超难用的C正则式库,那要写死人啊~~~ 最开始的思维定势就是要先开一个socket(N多参数要填入), 省略bind(操作系统自已选一个本地端口绑定),第二步 connect 到主机,第三步往 socket 里写东西… 虽然只几个简单函数,但要填的几个参数也真够难记的。嘿,偶像发现事实上PHP提供了high-level的socket函数 fsockopen()。哇,太方便了。 fsockopen() returns a file pointer which may be used together with the other file functions (such as fgets(), fgetss(), fwrite(), fclose(), and feof()) fsocketopen返回一个文件指针,然后就可以用常用的文件函数操作它啦!!!和操作文本一件一样~~~ 比 Java 的 java.io.socket 类还要方便~~虽然java也抽象的不错,但我就是嫌流对象封装太厚了。人生苦短,何必自找麻烦呢。 用完以后用 fclose 把它fsockopen返回的文件指针关掉! 看个例程: <?php $fp = fsockopen(“udp://127.0.0.1”, 13, $errno, $errstr); if (!$fp) { echo “ERROR: $errno – $errstr \n”; } else { fwrite($fp, “\n”); echo fread($fp, 26); fclose($fp); } ?> 上面的例程从本机的UDP时间服务器里读取当时的时间和日期。如果你本机开了标准的时间服务的话~~~ ...

November 1, 2010 · 1 min · kamus

阿崩吹箫,嘥声坏气

#歇后语。 http://ykyi.net 广州话俗语 阿崩吹箫,嘥声坏气 阿崩:豁嘴或缺门牙的人。 嘥:浪费。 缺门牙的人吹箫,又费气力又吹不好。形容说话没有结果,白费唇舌。 %例句: 讲咁多佢一句都听唔入,真系阿崩吹箫,嘥声坏气咯。(说了那么多,他一句也没听进去,真是白说了。)

November 1, 2010 · 1 min · kamus

tcpdump基础教程

英文原文出自: A tcpdump Tutorial and Primer 翻译: ykyi.net Tcpdump是信息安全专业人士最重要的一个网络分析工具。对这个工具有一个深入的理解对于每一个喜欢透彻理解tcp/ip协议栈的人来话都是必须的。但很多人选择一个更高级别的工级,比如Ethereal Wireshark,但是我认为这是一个错误! 不应该机械的反复记忆概念而应该做到真正的理解,因为对tcp/ip协议簇保持清醒的认知非常的重要。如果对该协议簇能够完全精通,那你调试网络的能力则能比同行们高出几个档次。但是,要学精神tcp/ip协议簇,只有不够的实践剖析它们才能做到。 当你使用某种工具来显示网络中的原始流量信息时,人类,而不是机器,就要承担起分析这些流量的重任了。用这种方法就可以不断地加深对tcp/ip的理解。并且,用这种学习方法的时候,我在任何可能的情况下都强烈主张使用tcpdump而不是其它工具。 选项 下面将列出一些用例子的选项,这样可以在你使用这个工具时对你有很大的帮助。这些选项很容易淡忘或与其它类型的滤镜(Filter,笔者认为这里的滤镜实际上指的是其它网络工具)混淆。比如, ethereal。所以,希望这篇文章可以作为一个参考文档,我就是这样使用它的。 首先,我要先介绍几个我认为很方便的tcpdump的选项。第一个是 -n, 这样的话域名就不会被解析了,而是用数字IP的形式显示地址(译者注: 同netstat的-n是一样的喔)。第二个是 -X, 这样就会同时把包的内容以ASCII码和十六制的形式显示。最后一个是 -S, 它个选项会显示绝对序号而不是相对序号。因为当包被隐藏起来的话,你也不会看到奇怪的序号。请谨记,tcpdump较之其它工具的优势之一就是可以与包(packets)手工交互。 值得注意的是,tcpdump默认只会从packet中取出前96个字节。如果你想要多一些的话,那就需要需要把 -s xxxx 加上。这里的xxxx是你确切想要抓取的总字节数。如果我使用这个选项的话,我通常会把这个数字设定为1514而得到所有的数据。下面是一个简短的列表列出我经常使用的选项。 -i any: 监听所有的介面。这样你就知道是不是有流量产生。 -n: 不要解决主机名,以IP数字形式显示主机。 -nn: 不要解析主机名或端口名字。 -A: 以ASCII字符显示包的数据。 -X: 同时以十六进制和ASCII字符显示包的数据。 -XX: 同-X,但也会显示 Ethernet头部。 -v, -vv, -vvv: 详细,更详细,再详细些! 冗余输出得到的包信息。 -c: 抓取 x 个包后就停下。 -S: 打印绝对序号。 -e: 同时得到Ethernet头部。 -q: 显示少一点协议信息。 -E: 用提供的密钥解密 IPSEC 流量。 -s: 设置显示前多少个字节的包内容(snaplength)。 tcpdump 4.0的snaplength的长度从68字节改成了96字节,这样你就可以看到多些内容了。但仍然看不到所有的内容,指定 -s 1514 得到包的所有内容。 http://ykyi.net 一些基本的应用 根据我要查看的不同流量,我使用不同的选项组合,如下: 1.Basic communication // see the basics without many options tcpdump -nS ...

October 31, 2010 · 4 min · kamus

Burp套件教程(Burp Suite)

原文来自http://portswigger.net/burp/ ykyi.net 翻译 使用Burp套件(Burp Suite) 当启动Burp Suite以后,Burp的代理服务器就在本地的loopback介面上的8080端口上开始运行啦!通过设定浏览器使用这个Burp代理服务器,所有的WEB流量就可以被截获,窥视,修改。默认设置下,对非媒体资源(non-media)的请求将被截获而且显示出来(默认的设置可以在Burp Proxy的OPTION选项里修改)。所有的穿过Burp代理服务器的WEB流量将被自动分析并添加到站点地图里,这样就可以知道访问过的网站的内容和功能了。对于Burp的收费Professional版,默认情况下,所有的请求还会自动被Burp Scanner分析从而确定易受攻击的部分。 在你就要刻苦大干一场之前,你需要完美地定义出你的工作的Target Scope(Burp的术语名词,不译出)。最简单的办法就是先浏览目标网站,然后定位相关主机和目录,再使用context菜单项把URL们添加到Target Scope里。中央范围配置(Central Scope Configuration)可以用来配置各个Burp工具。 当你浏览目录WEB网站或程序的时候,你就能对截获的请求和响应进行手工编辑,或者你也可以完全关闭拦截功能。在拦截功能被关闭的情况下,每一条请求和响应仍然被记在历史记录里,所有的WEB内容也会被添加到站点地图里。 除了可以用代理修改拦截下面的讯息,你也可以把迅息发送到其它Burp工具。这样就可以完成各种各样的不同的功能,比如: 》你可以通过把请求发给Repeater来手动调节对WEB程序的测试,也可以不断地重发每个请求。 》对于Professional版,可以把请求发给Scanner,就可以完成主动和被动漏洞扫描。 》你可以把请求发给Intruder,就可以发起一个用户自定义的自动测试来确定一些常见的漏洞。 》如果你发现响应中有会话令牌或者其它本应该是不可预测的ID号,你就可以把这个响应发给Sequencer来测试这个令牌的随机性。 》可以把请求或响应中被模糊化处理的数据发给Decoder来尝试自动解析出明文。 》对于Professional版,你可以使用各种Engagement工具来提高你的工作效率。 对于代理的历史记录,站点地图中的主机·目录·文件 以及Burp工具的任何显示请求和响应的地方 你都可以执行以上任何操作。 中央日志功能(central logging function)记录下来每个Burp工具的所有的响应和请求。每个Burp工具都可以在单独的窗口中运行也可以在TAB WINDOW下运行。每个工具和整个套件的配置可以被保存下来重复使用。对于Professional版,你还可以保存每个工具的状态,这样你就可以随心所欲的重新载入之前保存的状态。 copyright ykyi.net

October 28, 2010 · 1 min · kamus

怎么学粤语

经常有人问怎么才能学好粤语,也经常听到很多人说:听多D讲多D就识啦~ 其实不是这样的,最多只能说部分正确。下面以我的经验告诉你怎么学好粤语。 我来广东之前也不会讲广东话,更要命的我还以为自己唱的几首粤语歌很准,现在回想真是太可怕了。07年到广州没有正式学,一年下来还是什么都不会,大部分听不懂。后来我去了珠海。因为有一次同几个Friend吃饭,其它人都讲白话(白话在广东省指粤语),我不懂啊,觉得不好意思大家迁就我改讲普通话。于是我那次以后开始正式决心学粤语啦!!!事实上用了三个月就基本上能够沟通了,就有人第一次赞我’讲得唔错’啦。 错误的学习方法: 对于大多数人,特别是母语不是客家话,潮汕话,闽南话的年龄在十岁以上的朋友要想仅仅靠“听多点就自然会”几乎是不可能的!只有小孩子有只靠听就能学会语言的‘人类的特有能力’。遗憾的是你不是小孩子了,你的大脑收到声音讯号就在你已经会的语言里找发音相同或相近的,但普通话同粤语的发音相差太大了,粤语还有N多自已独有的词汇。有些词或句子,如果没有人指导你,你就是听一万遍,听十万遍,你也听不懂。到了广州生活工作了十年以上还只能听懂简单粤语的人大把大把就是这个原因。还有些人说找个人教教你就会了。很难!首先找个愿意花大把时间教你的人不容易,更致命的是他们不会教。他们只会不断的告诉你,错了,不对,唔正,点解你发音好怪!但他们不知道怎样才能教会你发正确读音。几个回合下来,你和你的老师全部都精神崩溃了。老师报怨教你不会,你报怨粤语太难。你的老师于是就安慰你了:听多D讲多D就识啦!于是你再过一个星期放弃了。即使是会客家话,潮汕话,闽南话的,这几种方言的发音系统同粤语很接近,也仅仅让你容易学习很多,但这部分人中很多发音也很不正,大把人不分前后鼻音, l 和 n。 实践检验正确的学习方法: 自我经验证明行之有效的学习方法包括四个方面: 1.熟悉粤语拼音. 2.熟悉粤语基本词汇. 3.粤语歌影视做为补充. 4.有一位会纯正粤语的朋友鉴定你的发音。 1. 粤语拼音方案: http://ykyi.net/school/jyutping_crashcourse.php 首先你必须理解普通话拼音,毕竟都是汉语语系,普通话和广东话大部分声母和一半韵母是相同的。另外会英文国际音标是极好的补充!粤语里有两个英文里常用的元音,分别是æ(apple中a的发音)和 ʌ (cup中u的发音),但普通话里没有这两个元音,有些人听到ʌ这个元音就把它当成普通话拼音里的e,有些人把它当成a。另外粤语里的入声同英文里的短元音有点类似,比如book,shit。只是类似,学到粤语入声时可以参考下。闽南语也完整保留入声系统,会闽南语的可以无视入声.会客家话和潮汕话的也基本上可以无视。还有粤语里的 该 字的发音基本上就是英文单词boy的发音把声母由b改成g。再之,粤语有m,n,ng三种韵尾,普通话里没有m韵尾,所以大部分学习者都把粤语里的心sam1读成身san1。歌手易欣有首粤语歌。易欣就是把‘心’唱成‘身’了。要解决这个方音问题,参考一下英语单词的gun(枪),和gum(口香糖)就豁然开朗啦!你能区分gun和gum吗? 然后你就要开始学粤语拼音啦!很多人觉得拼音很难,想跳过这一步,我还是劝你学点粤拼先,磨刀不误砍柴刀,只学了六七成也能让你学粤语时效率提高数十倍。学粤语拼音是为了学习粤语的发音系统,如果你不熟悉粤语的发声系统,很多字的读音,你就总是用自己母语或者普通话的发音系统去理解,这时候虽然你自己听起来一样,但其实读错了。比如不懂粤拼的学习者,一百个有九十八个以为粤语的‘点dim2’和‘典din2’发音是一样的。还有时还很搞笑。比如:说‘阿伯baak3’可能说成‘阿爸baa1’。言归正传,一开始你只需要了解一些粤语拼音,学会使用这个拼音工具来帮助自己理解发音和纠正发音。 2. 熟悉粤语基本词汇 这个是必须的,但也非常容易。比第一项要求要容易很多,估计只需要花你几个小时的时间。你可以买一两本粤语书教程,一般的教程基本上都讲了粤语用的日常词汇。http://ykyi.net/toubou/promote.php 这里有介绍的书中有几本我用过有些人连粤语的基本词汇都不知道就冲到QQ群里叫人教粤语。拜托,谁有那么多时间啊。点解,点样,唔该,得佐,冇,先,添 这些很日常的词汇看看就会了。语法的话,虽然粤语有句式有小小不同,但基本上和普通话一样,可以无视的。大话西游里的台词"给个理由先"就是广东话的句式。 3. 粤语歌和影视,新闻媒体 听唱粤语歌和看粤语发音的影视可以让你在娱乐中培养你的听觉系统把某些发音同各个汉字建立联系。因为普通话的发音同粤语话相去甚远,你需要听唱N多粤语歌和影视或者新闻来建立这个声音到字的条件反射。在这个过程中,之前你学过的一粤语拼音就要派上用场了。你听到发音的时候去想这个字的粤语拼音,在实践中理解那些你之前不懂的发音,比如 oe 是什么(实际上是国际音标中的æ);p,t,k入声字怎么读,以及粤语的各个不同的声调等等任何你之前不理解的粤语拼音在实践中不断体会。 4. 有一个粤语老师。 这个非常重要,基本上和第一条一样重要。实际上第二,第三条你都可以略去,但第一和第四条太重要了。如果缺了第一条,仅有老师,他极有可能像此文刚开始提到的那样教不会你;如果缺了第四条,你不知道自己的发音有没有发对。比如律师的律字注音为 leot6 , 用国际音标可以注为 læt, 这个字读粤语的第六声。假如这个字你没有把握,你就去问你的老师自己发音有没有读对,然后不断的参照拼音调整自己的口腔的吐气声调,直到你的老师肯定你的发音。如果没有粤拼,你很痛苦的,你的老师也更痛苦,一个不知道哪里读错了,一个不知道怎么才让你读对。比如粤语的六个音调,你就可以选夫(fu1), 苦(fu2), 富(fu3), 扶(fu4), 妇(fu5), 父(fu6) 这六个字在同你老师交流中体会学习。韵母a, aa亦然,粤拼里的a实际上是英语音标中的ʌ,aa才是普拼和音标中的a. 以粤拼为工具在和你的老师交流过程中学习吧! 以上四个条件,互相促进!!!如果你按照这个方法做了。学会用粤语基本沟通是很容易的事情,我就是用这个方法学的,不过用了三个月的时间而已。学会唱粤语歌更加是小菜一碟了!

October 25, 2010 · 1 min · kamus