25 Feb 2012

华为HG232破解一例

0. 默认超级账户

如果电信没有改过你的猫账户,可以尝试使用下面的信息登陆,如果不可以在进入后面的步骤1和2破解 帐号: telecomadmin 密码:nE7jA%5m (注意大小写)

1. 下载配置文件

猫上插入U盘,下面两种方法都可以,您挑一种吧。

1.1 手工操作—-乐趣

用猫后面印刷的普通用户useradmin登陆,这个用户登陆进去什么高级全选都木有,但是表着急,我这么干的,浏览器用firefox,如果木有就去下载,然后装上firebug,去看隐藏的html元素吧,把样式表的disply:none;都禁止掉,什么 备份配置文件、启动从U盘加载配置、回复出厂值、日志等等都出来了吧,插入U盘,点击备份按钮,文件就下载下来了。

1.2 连接下载—-直接

同时通过分析html和javascript代码,我直接把下载地址找到了,如果你不想或者木有firefox&&firebug,那就直接访问: http://192.168.1.1/html/ehomeclient/cfgUSBRestore.cgi?coverusbpath=usb1_1 这是firebug分析抓包后得到的地址,嘿嘿。 配置文件就能成功被备份出了,在U盘根目录生成的e8_Config_backup文件夹里ctce8_HG232.cfg。

2. 解密配置文件

网上有现成的编译好的工具可以直接用,不过作为技术宅男,当然要做点有挑战性的了,我弄了俩,一个javascript写的,一个ruby写的,开源滴,您用着放心哦

2.1 无ruby环境

将代码库里的decrypt.html另存到本地,然后用浏览器打开,在Source里粘贴用ctce8_HG232.cfg文件的内容, 点击解密按钮,就可进行解密,加密同理。

2.2 有ruby环境

如果有ruby运行环境,则可以使用代码库里的decrypt.rb另存到本地来,把要破解或者加密的文件放入相同目录,在命令行运行 ruby decrypt.rb 按照提示做就可以了

2.3 超级管理员密码

到文本编辑软件打开破解后的文件,查找telecomadmin,找到 Userpassword里面的就是超级管理员的密码了。一般是telecomadmin加串数字。

3. 设置

后面的情况就大同小异了,网上很多介绍,开路由,,自动拨号,开无线,一堆一堆的教程,另外有些设置在管理平台是没有的,比如下面的ftp和telnet设置,如果又必要使用这些相功能,修改配置文件,加密后,登陆后台后启用从usb恢复设备这个功能,然后把配置文件夹自己修改后,再恢复回去,就可以了。

4. 代码

本文提及的代码可以在https://github.com/huobazi/hg232下载到

5. 其他

4个RJ45口理论上都可以设置成接电脑或者itv输出,并不局限于写了itv的那个口。另外,也可以增加一个itv无线网络,在你的机顶盒上加个无线网卡,机顶盒拨入此无线网络,这样就不用拉一堆堆的线了,很适用于前期没有做好布线设计的朋友。

itv 不选择 无线的话 要选VLAN透传,选无线是VLAN修改

另外,网上有现成的改好的配置文件下载,http://email2me.blog.163.com/blog/static/34347033201101094128402/

13 Feb 2012

iOS通过UIActionSheetDelegate来实现警告的方法

有时候需要用户确认一些操作,比如退出,删除数据等等,用UIActionSheetDelegate实现比较友好,实现也很简单,controller实现UIActionSheetDelegate协议就可以了,示例如下:

01 #pragma mark-
02 #pragma mark UIActionSheetDelegate with logOff
03
04 - (void) onLogOffButtonClick:(id)sender{
05     UIActionSheet actionSheet = [[UIActionSheet alloc] initWithTitle:@“确认要退出登录吗?” delegate:self cancelButtonTitle:@“不退出” destructiveButtonTitle:@“退出” otherButtonTitles:nil, nil];
06    
07     [actionSheet showFromTabBar:self.navigationController.tabBarController.tabBar];
08     XX_RELEASE_SAFELY(actionSheet);
09 }
10 - (void)logOff{
11
12     //do logoff
13    
14     [self.navigationController popViewControllerAnimated:YES];
15 }
16
17 - (void)actionSheet:(UIActionSheet
)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex; {
18     switch (buttonIndex) {
19         case 0:
20             [self logOff];
21             break;
22         case 1:
23             [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
24             break;
25         default:
26             break;
27     }
28 }

04 Feb 2012

Ubuntu下设置 Sublime Text 2 显示中文 && 输入中文

Sublime text 2在mac os 下用的很舒服,今天尝试在ubuntu下使用一下,发现汉字显示不了,

后来找到方法:

菜单栏 -> Preferences -> File Settings - User,在配置文件中增加:

// Settings in here override those in "Default/Base File.sublime-settings", and
// are overridden in turn by file type specific settings. Place your settings
// here, to ensure they're preserved when upgrading.
{
    "font_face": "WenQuanYi Micro Hei Mono"
}
就OK了,其中文泉驿是著名的开源字体 http://wenq.org/

然后我们来解决中文输入的问题

sudo apt-get install scim

sudo apt-get install scim-pinyin

在“系统-首选项-scim设置里“

scim设置->全局设置->将预编辑字符串嵌入到客户端中  勾去掉
scim设置->gtk->嵌入式候选词标 勾去掉

下来 在“系统-语言支持”里面选上“scim-bridge”就可以了,记得这些修改完要注销重新登录进来哦。

或者 ,打开终端,输入 pkill scim,然后输入 scim -d,如果不起作用,那还是建议你注销一下

09 Dec 2011

How to,在iOS中点击文本框以外区域,隐藏键盘

当点击文本框以外部分时,隐藏键盘,实现很简单,加个Category就可以了,代码如下:

#import <UIKit/UIKit.h>
@interface UITextField (HideKeyBoard)
-(void)hideKeyBoard:(UIView *)view;
@end

#import "UITextField+HideKeyBoard.h"

@implementation UITextField (HideKeyBoard)
- (void) hideKeyBoard:(UIView*)view{
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(doHideKeyBoard)];
   
    tap.numberOfTapsRequired = 1;
    [view  addGestureRecognizer: tap];
    [tap setCancelsTouchesInView:NO];
    [tap release];
}

- (void)doHideKeyBoard{
    [self resignFirstResponder];
}
@end

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self.txtInput hideKeyBoard:self.view];
}

see also: https://gist.github.com/1450404

09 Nov 2011

AutoGenerateColumns='true'的GridView如何支持htmlencode/htmldecode

我们知道BoundField.HtmlEncode 属性可以设置一个单元格是否能够htmlencode,我今天碰到的问题是:自动生成列的GridView,表头可能是包含html的比如<font color=red>邮件</font>,默认被htmlencode了,而我不希望这样做,所以有了如下的代码:

 

/// <summary>
/// Handles the PreRender event of the gvSource control.
/// </summary>
/// <param name=“sender”>The source of the event.</param>
/// <param name=“e”>The <see cref=“System.EventArgs”/> instance containing the event data.</param>
protected void gvSource_PreRender( object sender , EventArgs e )
{
    GridView gridView = sender as GridView;
    if ( gridView != null && gridView.HeaderRow != null && gridView.HeaderRow.Cells != null )
    {
        for ( int j = 0 ; j < gridView.HeaderRow.Cells.Count ; j++ )
        {
            gridView.HeaderRow.Cells[j].Text = System.Web.HttpUtility.HtmlDecode( gridView.HeaderRow.Cells[j].Text );
        }
    }
}

22 Jun 2011

在Console下输入密码,以星号代替。

如何在Console下输入密码,像*unix系统下那样不显示,或者显示星号,如下代码经过测试:

/// <summary>
/// Gets the console secure password.
/// </summary>
/// <returns></returns>
private static SecureString GetConsoleSecurePassword( )
{
    SecureString pwd = new SecureString( );
    while ( true )
    {
        ConsoleKeyInfo i = Console.ReadKey( true );
        if ( i.Key == ConsoleKey.Enter )
        {
            break;
        }
        else if ( i.Key == ConsoleKey.Backspace )
        {
            pwd.RemoveAt( pwd.Length - 1 );
            Console.Write( "\b \b" );
        }
        else
        {
            pwd.AppendChar( i.KeyChar );
            Console.Write( "*" );
        }
    }
    return pwd;
}

/// <summary>
/// Gets the console password.
/// </summary>
/// <returns></returns>
private static string GetConsolePassword( )
{
    StringBuilder sb = new StringBuilder( );
    while ( true )
    {
        ConsoleKeyInfo cki = Console.ReadKey( true );
        if ( cki.Key == ConsoleKey.Enter )
        {
            Console.WriteLine( );
            break;
        }

        if ( cki.Key == ConsoleKey.Backspace )
        {
            if ( sb.Length > 0 )
            {
                Console.Write( "\b\0\b" );
                sb.Length--;
            }

            continue;
        }

        Console.Write( '*' );
        sb.Append( cki.KeyChar );
    }

    return sb.ToString( );
}

gist:https://gist.github.com/1039424

02 Jun 2010

Google 给几个Javascript Framework提供的CDN地址

Google 给几个Javascript Framework提供的CDN地址:

jquery

<script src=“http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

jquery UI

<script src=“http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>

Chrome Frame

<script src=“http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"></script>

swfobject

<script src=“http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>

mootools

<script src=“http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js"></script>

Yahoo! UI

<script src=“http://ajax.googleapis.com/ajax/libs/yui/2.8.1/build/yuiloader/yuiloader-min.js"></script>

Prototype

<script src=“http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>

Ext.JS

<script src=“http://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"></script>

Dojo

<script src=“http://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js"></script>

Scriptaculous

<script src=“http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js"></script>

21 Jan 2010

使用window.location跳转,在IE中UrlReffer不被记录

使用window.location跳转,在FF中,没问题,下一页面可以取得UrlReffer,但在IE中UrlReffer不被记录

真变态,

让我头痛了半天,弄了个丑陋的办法做了如下实现:

function safeRedirectToCart(url) {
    var isIE = jQuery.browser.msie;
    if (!isIE) {
        window.location = url;
        return;
    }
    $(".btnCart").get(0).click();
}

说明:在页面上render一个连接(可以用样式表控制不显示),判断如果是IE浏览器然则调用其click,嘿嘿,就这个。

09 Dec 2009

使用SQL语句更改数据表的默认值

以前还真没这么干过,都是手工去掉约束,再添加的,今天一边google一边搞啊搞啊的,最终下面这个脚本可以用了

alter table dbo.SOTransaction
    alter column UnitCostWithoutTax decimal(10, 2not null

go

declare @name varchar(1000)
declare @tablename varchar(1000)
declare @fieldname varchar(1000)

set @tablename = ‘SOTransaction’;
set @fieldname = ‘UnitCostWithoutTax’;

select @name = b.name from syscolumns a inner join sysobjects b
    on b.id=a.cdefault
where
    a.id= object_id(@tablename)
    and a.name[email protected]fieldname
    and b.name like ‘DF%’
–print @name

exec(’ alter table SOTransaction drop constraint ‘ + @name);
go
alter table dbo.SOTransaction
    add constraint DF_SOTransaction_UnitCostWithoutTax default (0) for UnitCostWithoutTax

24 Sep 2009

rails中的ActiveRecord真性感!

Rails使用的ActiveRecord真性感啊,see see吧

class User < ActiveRecord::Base  
  has_many :articles  
end  
 
class Article < ActiveRecord::Base
  belongs_to :user  
end

然后执行
>> Article.find(1) 会得到延迟加载user对象的sql语句。如下:

SELECT * FROM articles WHERE (articles.id =1) LIMIT 1

当需要访问user对象时,比如用article.user.name会再生成一个sql语句请求数据库。
如果执行
>> Article.find(1,:include => :user) 会得到一次性加载了user的查询

SELECT
articles.`extended_html` AS t0_r6 articles.`excerpt` AS t0_r7
articles.`keywords` AS t0_r8 articles.`allow_pings` AS t0_r10
articles.`allow_comments` AS t0_r9 users.`id` AS t1_r0
articles.`published` AS t0_r11 users.`login` AS t1_r1
articles.`text_filter` AS t0_r12 articles.`id` AS t0_r0
users.`password` AS t1_r2 articles.`user_id` AS t0_r13
articles.`title` AS t0_r1 users.`name` AS t1_r3
articles.`created_at` AS t0_r14 articles.`author` AS t0_r2
users.`email` AS t1_r4 articles.`updated_at` AS t0_r15
articles.`body` AS t0_r3 articles.`permalink` AS t0_r16
articles.`body_html` AS t0_r4 articles.`guid` AS t0_r17
articles.`extended` AS t0_r5
FROM articles LEFT OUTER JOIN users
ON users.id = articles.user_id
WHERE (articles.id = 1)

是不是很优美,很性感涅?