sql注入+密码暴力破解

havij
http://www.itsecteam.com/products/havij-advanced-sql-injection/
里面附带md5识别,破解的,网上工具不少。不过最好都在虚拟机下运行。

网页密码暴力破解工具
http://www.piaodown.com/soft/77532.htm
普通的网页登录,可以用这工具,简单暴力下。

虚拟机运行~

验证码模拟输入相关流程,参考
http://haibin.info/?p=897
密码识别工具,如果2得不轻的验证码,一般自己写个字典识别既可。
http://www.uuwise.com/
不是做广告。

只做安全检测用,一切后果,概不负责。

YII MYSQL 转移至 Oracle

1.字段大小写有所不同,特别注意,mysql不区分在小写,oracle区分大小,如果使用小写需要用“”进行引起。如yii ar 自定义t,在相关使用时,需要用“t”进行表示。

		$criteria->order .= '"t".ID desc';

		$models = AdminLog::model ()->with ( 'admin' )->findAll ( $criteria );

2.逻辑上,分组排序不同于mysql,需要用

		$criteria->select = "ICON,ROW_NUMBER () OVER (
		PARTITION BY ICON
		ORDER BY
			ordernum asc
	)";
		// $criteria->group = "ICON";
		$models = Menu::model ()->findAll ( $criteria );

3.主键自增也有所不同,凡原来涉及insert  null操作相关地方,需要用OracleTools::getNewId()获取id进行替换,现在使用通用序列,后需特殊字段,需要进行特殊处理

	protected function beforeSave() {
		$this->ID = OracleTools::getNewId ();
		if ($this->hasEventHandler ( 'onBeforeSave' )) {
			$event = new CModelEvent ( $this );
			$this->onBeforeSave ( $event );
			return $event->isValid;
		} else
			return true;
	}

 

<?php
/**
 * 
 * 现在简单实现,可以处理成,根据对应的表,生成对应的序列进行生成,主要同步自增id
 *
 */
class OracleTools {
	const TABLE_COMMOON = "seq_common";
	/**
	 * 通过序列获取最新的id
	 */
	public static function getNewId($tablename = "seq_common") {
		$id = sql_fetch ( "SELECT seq_common.nextVal newid FROM dual", 'newid' );
		return $id;
	}
}

 

拼音输入的检查

最近搞个东西需要能处理拼音检查功能,不处理英文检查。。

顺便提供一个拼写检查的工具

http://php.freehostingguru.com/group.php-4.php

不过这边要求比较低,只要检查出拼音是否输入错误。

考虑两个问题需要解决。

一:拼音是否强制代入了空格。

二:拼音是否可以不用输入空格。

实现思路

将以下字符串,循环比对,替换。不过需要注意一个东西,长的优先。否则替换会出问题。(自己手动写个正则处理下, 并按长度排序。)

a   ai   an   ang   ao
ba   bai   ban   bang   bao   bei   ben   beng   bi   bia   biao   bie   bin   bing   bo   bu
ca   cai   can   cang   cao   ce   cen   ceng   cha   chai   chan     chang   chao   che   chen   cheng   chi  chong  chou  chu  chua  chuai  chuan  chuang  chui  chun  chuo  ci  cong  cou  cu  cuan  cui  cun  cuo
da  dai  dan  dang  dao  de  dei  den  deng  di  dia  dian  diao  die  ding  diu  dong  dou  du  duan  dui  dun  duo
e  en  eng  er
fa  fan  fang  fei  fen  feng  fiao  fo  fou  fu
ga  gai  gan  gang  gao  ge  gei  gen  geng  gong  gou  gu  gua  guai  guan  guang  gui  gun  guo
ha  hai  han  hang  hao  he  hei  hen  heng  hong  hou  hu  hua  huai  huan  huang  hui  hun  huo
ji  jia  jian  jiang  jiao  jie  jin  jing  jiong  jiu  ju  juan  jue
ka  kai  kan  kang  kao  ke  ken  keng  kong  kou  ku  kua  kuai  kuan  kuang  kui  kun  kuo
la  lai  lan  lang  lao  le  lei  leng  li  lia  lian  liang  liao  lie  lin  ling  liu  lo  long  lou  lu  luan  lun  luo  lv  lve
ma  mai  man  mang  mao  me  mei  men  meng  mi  mian  miao  mie  min  ming  miu  mo  mou  mu
na  nai  nan  nang  nao  ne  nei  nen  neng  ni  nian  niang  niao  nie  nin  ning  niu  nong  nou  nu  nuan  nun  nuo  nv  nve
o  ou
pa  pai  pan  pang  pao  pei  pen  peng  pi  pian  piao  pie  pin  ping  po  pou  pu
qi  qia  qian  qiang  qiao  qie  qin  qing  qiong  qiu  qu  quan  que  qun
ran  rang  rao  re  ren  reng  ri  rong  rou  ru  rua  ruan  rui  run  ruo
sa  sai  san  sang  sao  se  sen  seng  sha  shai  shan  shang  shao  she  shei  shen  sheng  shi  shou  shu  shua  shuai  shuan  shuang  shui  shun  shuo  si  song  sou  su  suan  sui  sun  suo
ta  tai  tan  tang  tao  te  tei  teng  ti  tian  tiao  tie  ting  tong  tou  tu  tuan  tui  tun  tuo
wa  wai  wan  wang  wei  wen  weng  wo  wu
xi  xia  xian  xiang  xiao  xie  xin  xing  xiong  xiu  xu  xuan  xue  xun
ya  yan  yang  yao  ye  yi  yin  ying  yo  yong  you  yu  yuan  yue  yun
za  zai  zan  zang  zao  ze  zei  zen  zeng  zha  zhai  zhan  zhang  zhao  zhe  zhei  zhen  zheng  zhi  zhong  zhou  zhu  zhua  zhuai  zhuan  zhuang  zhui  zhun  zhuo  zi  zong  zou  zu  zuan  zui  zun  zuo

 

 

json dump 支持打印缺损json格式

/**
 * 将utf-8编码串转成原字符串
 * @param string $str utf-8编码
 * @return string 原字符串
 */
function unicode2utf8($str) {
	if (! $str)
		return $str;
	$decode = json_decode ( $str [0] );
	if ($decode)
		return $decode;
	$str = '["' . $str [0] . '"]';
	$decode = json_decode ( $str );
	if (count ( $decode ) == 1) {
		return $decode [0];
	}
	return $str;
}
/**
 * 将json串格式化成串输出,对于有缺损的json串同样可以进行格式化
 * 例:
 * 
 * {
 * "枯asdf":{
 * "adsf":[
 * "hffe顶替标有"
 * ],
 * "0":"asdf"
 * },
 * "0":"hahakao"
 * }
 *
 * @param string $json        	
 * @return void 
 */
function dumpjson($json) {
	$isnojson = json_decode ( $json, true );
	$json = preg_replace_callback ( "/(\uw{4})/", "unicode2utf8", $json );
	$json = preg_replace ( "/\//", '/', $json );
	$data = indent ( $json );
	return "<pre>{$data}</pre>";
}
function indent($json) {
	$result = '';
	$pos = 0;
	$strLen = mb_strlen ( $json, "utf-8" );
	$indentStr = '	';
	$newLine = "n";
	$prevChar = '';
	$outOfQuotes = true;
	for($i = 0; $i <= $strLen; $i ++) {
		// Grab the next character in the string.
		$char = mb_substr ( $json, $i, 1, "utf-8" );
		// Are we inside a quoted string?
		if ($char == '"' && $prevChar != '') {
			$outOfQuotes = ! $outOfQuotes;
			// If this character is the end of an element,
			// output a new line and indent the next line.
		} else if (($char == '}' || $char == ']') && $outOfQuotes) {
			$result .= $newLine;
			$pos --;
			for($j = 0; $j < $pos; $j ++) {
				$result .= $indentStr;
			}
		}
		// Add the character to the result string.
		$result .= $char;
		// If the last character was the beginning of an element,
		// output a new line and indent the next line.
		if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
			$result .= $newLine;
			if ($char == '{' || $char == '[') {
				$pos ++;
			}
			for($j = 0; $j < $pos; $j ++) {
				$result .= $indentStr;
			}
		}
		$prevChar = $char;
	}
	$result = preg_replace ( '/\\/', '', $result );
	$result = preg_replace ( '/\"/', '"', $result );
	return $result;
}

 

php 数据调试 by debug_backtrace

/**
 * 返回函数操作链表
 *
 * @param int $level
 *        	返回多少级
 * @param int $start
 *        	跳过原来多少级
 * @param boolean $gettree
 *        	是否按树的形式返回
 * @return array
 */
function backtracelist($level = 3, $start = 0, $gettree = false) {
	$backtrace = debug_backtrace ();
	$btlist = array ();
	if ($backtrace) {
		$level = $level + $start;
		foreach ( $backtrace as $i => $bt ) {
			if ($i < $start) {
				continue;
			}
			if ($i >= $level) {
				break;
			}
			$args = '';
			foreach ( $bt ['args'] as $a ) {
				if (! empty ( $args )) {
					$args .= ', ';
				}
				switch (gettype ( $a )) {
					case 'integer' :
					case 'double' :
						$args .= $a;
						break;
					case 'string' :
						$a = htmlspecialchars ( substr ( $a, 0, 64 ) ) . ((strlen ( $a ) > 64) ? '...' : '');
						$args .= ""$a"";
						break;
					case 'array' :
						$args .= 'Array(' . count ( $a ) . ')';
						break;
					case 'object' :
						$args .= 'Object(' . get_class ( $a ) . ')';
						break;
					case 'resource' :
						$args .= 'Resource(' . strstr ( $a, '#' ) . ')';
						break;
					case 'boolean' :
						$args .= $a ? 'True' : 'False';
						break;
					case 'NULL' :
						$args .= 'Null';
						break;
					default :
						$args .= 'Unknown';
				}
			}
			$params = array (
					"line" => $bt ['line'],
					"file" => $bt ['file'],
					"class" => $bt ['class'],
					"type" => $bt ['type'],
					"function" => $bt ['function'],
					"args" => $args,
					"next" => $params 
			);
			$btitem = array (
					'file' => "{$bt['line']} - {$bt['file']}",
					'call' => "{$bt['class']}{$bt['type']}{$bt['function']}($args)" 
			);
			if ($bt ['args']) {
				$btitem ['args'] = $bt ['args'];
			}
			$btlist [] = $btitem;
		}
	}
	if ($gettree) {
		return $params;
	}
	return $btlist;
}

 

 

/**
 * 通过在 $_GET[GDDEBUG_LEVEL]=1
 * 可以动态调整 gddebug 时 backtracelist 打印出来的层数,方便数据调试
 */
defined ( 'GDDEBUG_LEVEL' ) or define ( 'GDDEBUG_LEVEL', 'GDDEBUG_LEVEL' );

 

/**
 *
 * @author caihaibin
 *         数据打印工具,用来打印各种数据进行调试
 *         字符串为 string(1) "a"
 *         数字为 int(1)
 *         NULL 为 NULL
 *         数组为 Array(
 *         'a'=>'test'
 *         )
 *         对像为 Object xxxx
 *        
 *         另补充数据 debug_backtrace 层级调试,可以方便跟踪数据所在位置 ,具体看 backtracelist()
 *         可以通过 $_GET [GDDEBUG_LEVEL] 指定对应显示层级
 *         再将返回结果插入数据库,可以通过数据库进行数据调试
 */
function gddebug() {
	echo "rn<pre>";
	if (isset ( $_GET [GDDEBUG_LEVEL] )) {
		$level = $_GET [GDDEBUG_LEVEL];
	} else {
		$level = 0;
	}
	$btlist = backtracelist ( $level, 1 );
	if (! empty ( $btlist )) {
		echo "backtracelist:rn";
		foreach ( $btlist as &$btitem ) {
			if (isset ( $btitem ['args'] ))
				$btitem ['args'] = preg_replace ( '/n/ms', "n            ", print_r ( $btitem ['args'], true ) );
		}
		echo htmlspecialchars ( print_r ( $btlist, true ) ) . "rn";
	}
	$arrays = func_get_args ();
	echo "args:rn";
	foreach ( $arrays as $value ) {
		if (is_array ( $value ) || is_object ( $value )) {
			echo htmlspecialchars ( print_r ( $value, true ) ) . "rn";
		} elseif (is_string ( $value )) {
			echo "string(" . strlen ( $value ) . ") "" . htmlspecialchars ( $value ) . ""rn";
		} else {
			var_dump ( $value );
		}
	}
	echo "</pre>";
}

 

微信实现视频在线播放

pc端可用在线直播方式 mms

安卓端可用 rtsp 协议.

但是微信页面,即htm5 video 不支持上述协议。即使开启flash(微信内置浏览器不支持flash,在uc下测试)。本身也无效。调整。

苹果ios类支持自己实现的HLS协议,即后缀为 m3u8 协议的格式,具体实现原理看。

http://blog.csdn.net/andy1219111/article/details/8863506

 

后经测试,发现本身android 4.0以上版本就可以支持HLS ,

具体兼容支持图表看。

http://www.jwplayer.com/html5/hls/

 

尝试正常,除个别手机如三星 s4 这类播放时,由于可以高度识别问题。导致屏幕只有宽度,没高度,播放正常等问题。直接设置高度比即可。

微信测试结果。正常。因为微信的内置浏览器新版本基本上相同,主要是浏览器的内置限制。所以本身不用太担心兼容的问题。或者说,只要新版本测试基本上不用担心一些奇怪的限制,虽然微信的限制本身就比较奇怪。

举例,版本以5.3为准:

视频播放。加载时可以触发播放,本身开启属性autoplay也是可以的,但是通过按钮事件触发的全屏可以触发,但是直接js触发又不行。会报dom exception 11的异常。

结:

目前主要的测试平台为android和iphone。因为本身ios支持的,只测试一个就不用担心了,android各有差异,但是暂时没有发现哪部手机不可播放。

 

补充一个比较有意思的实现,仅供参考:

http://blog.segmentfault.com/xingrz/1190000000392586?page=1#c-1190000000392586-1050000000393206

 

 

 

dodgepudding/wechat-php-sdk 添加登录验证码识别

其实有时间优化下,调整代码到 snoopy.class.php 用起来会方便点

Wechatext::getCode

	/**
	 * @添加验证码抓取.
	 */
	public function getCode() {
		$filename = $this->_cookiename;
		if (file_exists ( $filename )) {
			$mtime = filemtime ( $filename );
			if ($mtime < time () - $this->_cookieexpired)
				$data = '';
			else
				$data = file_get_contents ( $filename );
		} else
			$data = '';
		$send_snoopy = new Snoopy ();
		$send_snoopy->rawheaders ['Cookie'] = $data;
		$send_snoopy->maxredirs = 0;
		$url = "https://mp.weixin.qq.com/cgi-bin/verifycode?username=" . $this->_account . "&r=1406270984491";
		$send_snoopy->fetch ( $url );
		$cookie = '';
		foreach ( $send_snoopy->headers as $key => $value ) {
			$value = trim ( $value );
			if (preg_match ( '/^set-cookie:[s]+([^=]+)=([^;]+)/i', $value, $match ))
				$cookie .= $match [1] . '=' . $match [2] . '; ';
		}
		$this->saveCookie ( $this->_cookiename, $cookie );
		header ( 'Content-Type: image/jpeg' );
		echo $send_snoopy->results;
		exit ();
	}

补充验证码自动识别工具(不是做广告….)

http://www.uuwise.com/

注:微信对登录次数太多的ip做登录限制,会导致该ip的公众号无法登录。。慎玩。

修复:phonegap + jquery mobile 1.3.1 ajax local page error

最近优化了下加载,发现在本上测试正常。但是放到手机里面就挂了。

同样是ajax请求本地.

pc正常,mobile端请求不成功

出现如下链接:

file:///android_asset/www/login.html#list.html

一开始以为是链接识别有问题.

因为 pc为file:///c:/这类开头。

替换jquery mobile  1.4.3 正常。但是样式文件全挂。

定位错了问题,以为识别路径有问题

后调整问题方向,为 jquery ajax get local 文件不ok .

查资料,页面加上如下标志

<access origin="*"/>

歪打正着,但是现在紧先上。。下星期切换到新版本jquery mobile

补充页面元素相同里数据处理

if ($('body>div[data-role=page]').length > 1)
									$('body>div[data-role=page][data-external-page!=true]').remove();
								if ($('body>access>div[data-role=page]').length > 1)
								    $('body>access>div[data-role=page][data-external-page!=true]').remove();

 

英语学习总结工具&积累

晃眼过了一年了。。英语稍微提了点点。

晒下这段时间用过的工具:

1.翻译工具

强烈推荐,有道词典。其间用过金山 包括手机和pc端。但是感觉有道比较好玩。

翻译需要利用的地方有

柯林斯(http://www.collinsdictionary.com/)翻译词典,多解释,多理解。用somebody to do something这样的东西来说明意义。容易理解

2.发音

支持全球发音:http://zh.forvo.com/ 这是锻炼发音神器。

通过世界各地的发音来体会音标,爽歪歪~。

需要标准美语发音的,请看:http://www.merriam-webster.com/

推荐李阳疯狂英语的音标课程。手机软件名字为疯狂英语发音宝典(http://www.tingclass.net/list-5968-1.html).本来打算破解他的。。不过最后随便下载了几个软件。得到分后把100个录音给下载了。早起,听学必备。

3.英语语法大全

http://www.wwenglish.com/en/z/grammar/

不过里面有不少地方需要留意,解释上有出入,肥仔说是冷门和一些根本就是错的。比如has seen  break up rules什么的。意思扯蛋,还有

he tall me so friendly 这类东西和 he tall me in the way  friendly 都是可以接收滴。不会有错。

如果有问题,请弹肥仔jj。哥提供qq号。

 

总而言之,做为大钢总览还是ok的,已经粗看了第一遍,知道很多高中完全没看到的东西。。毕竟高考只有20分,基本上就是没看过书,偏科严重的人呐~~ ;现在在细看第二遍中。。。

4.美剧助学

推荐friends

种子随便百度都有.

配合 有道手机词典里面的 应用超市的firends剧本。神组合,谁用谁知道~~~

看了好几十遍,前几集和第二季的n集,现在听声音就知道在说啥,也锻炼了点脆弱得不行的语感

5.背单词

手机有道支持,但是说到有意思 。为词官家独占。可以做题,默写和助记,不过什么都要积分比较烦人。虽然也用过supermemo,不过感觉单词还是多看多想比较实在点。

6.推荐书籍

<像高手一样学语法> 小牛很牛。有道这神具样样都有,帅啊。哈哈。

 

接下来打算.

接下来打算给自己定个计划,一天或者两天学篇小日志。当然前提是不忙或者肥仔那边没事的情况下。嘿嘿。

吾将上下而求索~~