精华内容
下载资源
问答
  • 16 21 ! @ # $ % ^ & * ( ) _ + - = { } [ ] | \ < ; : > , . ? / ' "   我遇到的密码的hash值是: hash值: 91 228 94 125 65 ...

          为了弄个国外的SSH主机,通过搜索引擎找到了一个提供免费SSH主机的网站,有点BT的事弄了一堆不知所云的题目来挑战申请人的忍耐极限。不过也是啊,既然是免费的,申请人肯定多如牛毛,不设点门槛,估计这公司不关门都不行,特别是被我天朝战士知道,估计三五天就把他的服务器给撑爆了。

          刚开始,我想自己挑战一下,过了第一关(从页面源码里找密码),下面就进行不下去了,主要是英文太菜,没完全弄明白挑战项目的玩法。后来,在网上搜了一下,找到了一些网站,有前辈已经把路走通了。

    下面这些网站都有,只是不知道哪个是李逵,哪些是李鬼,不过这也是中国特色,把别人的文章剪刀加浆糊弄过来之后,也不写个出处,就当自己原创。


    http://blog.leeku.cn/tags/%25E5%2585%258D%25E8%25B4%25B9ssh%25E5%25B8%2590%25E5%258F%25B7/  (这位老兄好象是原创)

    http://www.macfans.com.cn/thread-204927-1-1.html

     

     

    按照这些网站的说明一步一步走下来,

    第一关:

    就按上面网址的做法,很容易就得到密码: warmup1lolcopter

     

    第二关:

    新开一个命令行窗口,输入

    telnet www.fbi.gov 22  <回车>

    出现:

    SSH-1.99-Server-VII

    就是答案了。

     

     

    第三关:

    按照上面网址的文章指引,在当前浏览器地址栏输入:

    http://hax.tor.hu/warmup3/?chosen=Bacon

    回车之后就到第四关

     

     

    第四关:

    也是按照上面文章的提示,在命令行窗口输入:

    telnet hax.tor.hu 80 <回车>

     

    GET /pwfor4/ HTTP/1.1 <回车>
    Host: hax.tor.hu <回车>

     

    出 现:


    HTTP/1.1 200 OK
    Date: Tue, 11 May 2010 01:28:47 GMT
    Server: Apache
    Vary: Accept-Encoding
    Content-Length: 32
    Content-Type: text/html


    The password is: lolstick

     

    这一关我 碰到的密码就是: lolstick

     

     

    第五关:

    那道猜密码的题花了我一个小时,其实按照上面文章的说明,完全可以很快解出来的,只是我的密码hash值有5位匹配的字符,我一直按5位的密码去试,发现都不行,我把大写字母、特殊符号的hash值都找出来了,还是不行,最后灵机一动,想到密码可能就只有4位,我于是去掉我输入的密码最后一位,只保留4位,一下就成功了。下面是我试出来的所有字符对应的hash值,上一等是hash值,下一等是对应的字符:

    8685848382818095949392919089887170696867666564797877


    abcdefghijklmnopqrstuvwxyz

































    118 117 116 115 114 113 112 127 126 125 124 123 122 121 120 103 102 101 100 99989796111 110 109


    ABCDEFGHIJKLMNOPQRSTUVWXYZ

































    765432101514


















    0123456789

















































    22119 201918105 17293130104 2826107674108 106 75107 111213927258241621
    !@#$%^&*()_+-={}[]|\<;:>,.?/'"

     

    我遇到的密码的hash值是:

    hash值:9122894125652108219
    对应字符:live

     

    过了这五关,剩下的就是申请账号了,按照上面文章所提示的操作就可以了,申请帐号的过程就不赘述了。

     

    ===================================

    补:

    现在该网站不输入URL已经不让注册shell了,他们给我回了一个邮件:

     

     

    Hi, wdmsyf!

    Your shell has not been activated.
    The administrator left you the following message:

    url ?

    If you feel there is an error or would like to ask a question, write to hax@tor.hu.

    Regards,
    hax.tor.hu

     

    =========

    看来得想个办法解决才行,折腾了一会儿,想出了一个办法,试了一下,还管用,输入如下一个URL:

    http://search.nasa.gov/search/advSearch.jsp?start=&filter=0&spell=&nasaInclude=125077185&qx=&qt=all&qm=anywhere&dt=at&recPerPg=20&dtype=on&dn1=&dn=nasa.gov&displayFormat=detail

     

    这是满足它的条件的,让我过关了。这个URL是什么,大家可以自己去验证,呵呵。

     

     

    展开全文
  • ByteArray、16进制、字符串之间的转换

    千次阅读 2019-05-23 17:36:00
    ByteArray、16进制、字符串之间的转换: package fengzi.convert { import flash.utils.ByteArray; public class ByteArrayTranslated { /*** * 通过hax数据返回ByteArray * @param hax ...

    ByteArray、16进制、字符串之间的转换:

    package fengzi.convert
    {
    	import flash.utils.ByteArray;
    	public class ByteArrayTranslated
    	{
    
    		/***
    		* 通过hax数据返回ByteArray
    		* @param                      hax       格式 "AA5A000100FF"
    		***/
    		public static function getHax(hax:String):ByteArray
    		{
    			var byte:ByteArray=new ByteArray();
    			for (var i:uint = 0; i<hax.length; i=i+2)
    			{
    				trace(hax.substr(i, 2));
    				trace(uint("0x"+hax.substr(i, 2)));
    				byte.writeByte(uint("0x"+hax.substr(i, 2)));
    			}
    
    			return byte;
    		}
    
    
    
    
    		/***
    		* 16进制数据返回ByteArray
    		* @param                       str         格式 "AA5A000100FF"
    		* @return                      bytes
    		***/
    		public static function from16ToByteArray(str:String):ByteArray
    		{
    			var bytes:ByteArray=new ByteArray();
    			var b_arr:Array = str.split("");
    			var b_length:int = b_arr.length;
    			for (var i:int=0; i<b_length-1; i+=2)
    			{
    				var b_char1:String = b_arr[i];
    				var b_char2:String = b_arr[i + 1];
    				var b_byte:int=parseInt(b_char1+b_char2,16);
    				//trace("b_byte:",b_byte);  
    				bytes.writeByte(b_byte);
    			}
    			return bytes;
    		}
    
    
    
    		/*** 
    		* String转ByteArray  
    		* @param             str           字符
    		* @return            bytes
    		***/
    		public static function convertStringToByteArray(str:String):ByteArray
    		{
    			var bytes:ByteArray;
    			if (str)
    			{
    				bytes=new ByteArray();
    				bytes.writeUTFBytes(str);
    			}
    			return bytes;
    		}
    
    
    
    		/*** 
    		* ByteArray转String 
    		* @param       bytes 
    		* @return      str
    		***/
    		public static function convertByteArrayToString(bytes:ByteArray):String
    		{
    			var str:String;
    			if (bytes)
    			{
    				bytes.position = 0;
    				str = bytes.readUTFBytes(bytes.length);
    			}
    			return str;
    		}
    
    
    
    
    		/*** 
    		* 把ByteArray转换为16进制的形式的字符串 
    		* @param ba 
    		* @param name 
    		* @return  
    		***/
    		public static function byteArrayTo16(ba:ByteArray):String
    		{
    			ba.position = 0;
    			var b_str:String = "";
    			while (ba.bytesAvailable > 0)
    			{
    				var b_s:String = ba.readUnsignedByte().toString(16);
    				//              trace("b_s:",b_s);  
    				if (b_s.length < 2)
    				{
    					b_s = "0" + b_s;
    				}
    				b_str +=  b_s;
    			}
    			return b_str;
    		}
    
    
    
    
    
    
    	}
    
    }
    

      

    转载于:https://www.cnblogs.com/fengziwu/p/10913373.html

    展开全文
  • 16位装载程序 - 第一阶段装载之探测内存装载程序16位装载程序的作用获取内存容量EAX=0E820H调用INT 15HAX=0E801H调用INT 15HAX = 088H调用INT 15H读写比较探测 正常情况下,在MBR程序和分区启动程序运行完后,就...

    正常情况下,在MBR程序和分区启动程序运行完后,就开始执行位于0800:0100的16位装载程序,这个程序就是被分区启动程序加载到这个位置的。

    这一阶段要完成的工作比较多,因此相应的源代码也比较多了。所以我就分成几个部分来写,
    这个第一阶段装载要完成内存探测、加载配置文件、加载第二阶段的32位装载程序、加载各种必须的系统文件(主要是各种驱动,因为进入32位后,就没有BIOS可用了),最后给硬盘做标记。

    1. 装载程序

    我的装载程序分成两个阶段执行,第一阶段是在实模式下进行装载,主要是探测内存和加载必要的文件,第二阶段是在32位不分页的保护模式下装载,主要是装载核心、初始化物理内存布局、初始化分页,完成这些后,才开始运行真正的系统。

    2. 16位装载程序的作用

    16位装载程序起着非常关键的作用,因为有很多事情要在实模式完成,比如把各种文件加载进内存。为什么要在实模式下加载,而不是到32位保护模式下进行加载呢?因为进入32位保护模式后,就没有BIOS可用了(不考虑V86模式,因为编程比在实模式下麻烦,还不如直接在实模式下完成),要完成探测内存、读取磁盘什么的工作,就要自己先写好这些硬件的驱动,至少是实现部分功能的。但是这些功能在BIOS中提供了,所以,我就选择在实模式下把需要的文件先加载进内存。

    3. 获取内存容量

    获取内存容量有几种方法,不能只用一种方法,因为BIOS不一定支持这种方法,如果都不支持,那就只能用最原始的读写比较来探测内存了。 int 15h的具体使用方法放到书里。

    3.1 EAX=0E820H调用INT 15H

    这个BIOS功能的调用规范就留到书里了,其实下面的代码已经把它封装成C函数,调用的方法也在里面,输出结果也贴在后面了。

    #include "stdio.h"
    typedef struct _reg_t
    {
        unsigned short  _DI, _SI, _BP, _SP, _BX, _DX, _CX, _AX;
        unsigned long   _EDI, _ESI, _EBP, _ESP, _EBX, _EDX, _ECX, _EAX;
        unsigned short  _CS, _DS, _ES, _SS, _FS, _GS;
    }reg_t;
    /*Values for System Memory Map address type:
    01h    memory, available to OS
    02h    reserved, not available (e.g. system ROM, memory-mapped device)
    03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
    04h    ACPI NVS Memory (OS is required to save this memory between NVS
    sessions)
    other  not defined yet -- treat as Reserved
    */
    typedef struct _address_range_map_t
    {
        unsigned long _BaseLow,_BaseHigh,_SizeLow,_SizeHigh,_Type;
    }arm_t;
    arm_t arm;
    char * strType[] =
    {
        "undefined",
        "memory, available to OS",
        "reserved, not available",
        "ACPI Reclaim Memory",
        "ACPI NVS Memory"
    };
    #define LOW_WORD(dw)                ((unsigned short)(dw))
    #define HIGH_WORD(dw)               ((unsigned short)((dw)>>16))
    #define SEGMENT(farptr)             HIGH_WORD((unsigned long)(farptr))
    #define OFFSET(farptr)              LOW_WORD((unsigned long)(farptr))
    int int_15h_E820(void * far pARD, unsigned int nSizeARD, unsigned long * pLeftCnt)
    {
        reg_t           reg;
        ;
        reg._EAX = 0xE820;
        reg._EBX = *pLeftCnt;
        reg._ECX = nSizeARD;
        reg._EDX = 0x534D4150;
        reg._ES  = SEGMENT(pARD);
        reg._DI  = OFFSET(pARD);
        asm{
            push    si
            push    di
            lea     si, reg
            mov     di, [si]._DI
            mov     ax, [si]._ES
            mov     es, ax
            db      066h
            mov     ax, [si]._EAX   ;// mov eax, reg._EAX
            db      066h
            mov     bx, [si]._EBX   ;// mov ebx, reg._EBX
            db      066h
            mov     cx, [si]._ECX   ;// mov ecx, reg._ECX
            db      066h
            mov     dx, [si]._EDX   ;// mov edx, reg._EDX
            int     015h
            mov     si, pLeftCnt
            db      066h
            mov     [si], bx        ;// mov [pLeftCnt], ebx
            pop     di
            pop     si
            jc      error
        }
        return 1;
     error:
        return 0;
    }
    int main(void)
    {
        unsigned long   nLeftCnt = 0;
        int             i = 0;
        printf(" ##    base address           size            type\n");
        printf(" --  -----------------  -----------------  --------------------------\n");
        do{
            int_15h_E820(&arm, sizeof(arm_t), &nLeftCnt);
            printf(" %2d  %08lX-%08lX  %08lX-%08lX  %s\n", ++i,
                arm._BaseHigh, arm._BaseLow, 
                arm._SizeHigh, arm._SizeLow,strType[arm._Type % 5]);
        }while( nLeftCnt );
        return 0;
    }
    

    使用EAX=0xE820探测内存
    上图是一个8G内存虚拟机的探测情况,可以看到有几个地方是需要保留的,有一些地址是断开的
    0x000A0000 - 0x000DFFFF 这里有256K
    0xF8000000 - 0xFFFFFFFF 这里有128M
    然后看有效地址上限,给虚拟机设定的内存是8G,但是可以访问的上限却是8G + 128M,把0xF8000000 - 0xFFFFFFFF这一段给补回来了

    3.2 AX=0E801H调用INT 15H

    这个方法也算不错了,但是上限是4G内存,而且数量会少256K。如果内存容量超过4G,他的返回结果有些不同。

    /*
    AX = E801h
    Return:
    CF clear if successful
    AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
    BX = extended memory above 16M, in 64K blocks
    CX = configured memory 1M to 16M, in K
    DX = configured memory above 16M, in 64K blocks
    CF set on error
    */
    int int_15h_E801(unsigned short * pExtMem16M, unsigned short * pExtMem4G,
        unsigned short * pCfgMem16M, unsigned short * pCfgMem4G)
    {
        asm{
            mov     ax, 0E801h
            int     015h
            jc      error
            push    si
            mov     si, pExtMem16M
            mov     [si], ax 
            mov     si, pExtMem4G
            mov     [si], bx
            mov     si, pCfgMem16M
            mov     [si], cx
            mov     si, pCfgMem4G
            mov     [si], dx
            pop     si
        }
        return 1;
    error:
        return 0;
    }
    

    3.3 AX = 088H调用INT 15H

    这个是BIOS最早提供的方法,只能得到64M的内存。

    在Hyper-V里已经不支持方法,如果用这个方法,得到的结果是0。

    unsigned short int_15h_88(void)
    {
        unsigned short  nTotal = 0;
        asm{
            mov     ah, 088h
            int     015h
            jc      error
            mov     nTotal, ax
        }
        return nTotal;
    error:
        return 0;
    }
    

    3.4 读写比较探测

    如果以上方法都不行,只能先写入数据,然后读出来比较的方法了。这个方法以“如果这个地址能够访问,那写入后在读出的数据应该一致”为基础的。肯定会有人问,如果碰巧一样呢?那你就写入4个字节,碰巧一样的几率是四十亿分之一,如果还一样,好吧,那就在想别的办法,我懒得想了,而且我觉得在虚拟机下也没得想了。其实,经过测试,发现如果地址不能访问,读出的数据都是0。

    这个方法比较麻烦,先要实现在实模式下访问4G地址空间,然后才能访问4G空间,利用在不分页的情况下,线性地址就是物理地址的情况,来测试内存是否可以使用。实际上就是在段寄存器装入一个能访问4G空间的段描述符,然后不要修改这个段寄存器,直接使用段寄存器访问内存就行了。

    下面就不贴完整的代码了,贴出关键的部分

    ;
    ;void WriteByte4G(byte_t nData, uint32_t nPhyAddr)
    ;
    _WriteByte4G PROC
        mov     bx, sp
        mov     al, [bx + 2]
        mov     ecx, [bx + 4]
        mov     ebx, ecx
        mov     fs:[ebx], al
        ret
    _WriteByte4G ENDP
    ;
    ;byte_t ReadByte4G(uint32_t nPhyAddr)
    ;
    _ReadByte4G PROC
        mov     bx, sp
        xor     ax, ax
        mov     ecx, [bx + 2]
        mov     ebx, ecx
        mov     al, fs:[ebx]
        ret
    _ReadByte4G ENDP
    
    // test memory 
        nSize32 = 0x100000l;
        while( nSize32 < 0xF8000000 ){
            _printf("  testing memory %lu ...\r",nSize32);
            nTmp = ReadByte4G(nSize32);
            WriteByte4G(0xA5, nSize32);
            if( ReadByte4G(nSize32) != 0xA5 )
                break;
            WriteByte4G(nTmp, nSize32);
            nSize32 += 0x400000l; /* detection setp is 1M */
        }
    

    4 综合比较

    用这三种方法对同一个分配了8G内存的虚拟机进行测试,代码和运行结果放在下面

    int main(void)
    {
        unsigned long   nLeftCnt = 0;
        unsigned short  nExtMem16M, nExtMem4G, nCfgMem16M, nCfgMem4G;
        int             i = 0;
        printf("EAX = E8020:\n");
        printf(" ##    base address           size            type\n");
        printf(" --  -----------------  -----------------  -------------------------\n");
        do{
            if( !int_15h_E820(&arm, sizeof(arm_t), &nLeftCnt)  )
                break;
            printf(" %2d  %08lX-%08lX  %08lX-%08lX  %s\n", ++i,
                arm._BaseHigh, arm._BaseLow, 
                arm._SizeHigh, arm._SizeLow,strType[arm._Type % 5]);
        }while( nLeftCnt );
        printf("\nAX = E801\n");
        if( int_15h_E801(&nExtMem16M, &nExtMem4G, &nCfgMem16M, &nCfgMem4G) ){
            printf("Extend memory: %u %u. total: %lu\n", nExtMem16M, nExtMem4G, 
                (unsigned long)nExtMem16M + (unsigned long)nExtMem4G * 64);
            printf("Config memory: %u %u. total: %lu\n", nCfgMem16M, nCfgMem4G, 
                (unsigned long)nCfgMem16M + (unsigned long)nCfgMem4G * 64);
        }
        printf("\nAH = 0x88\n");
        printf("Extend memory: %u\n", int_15h_88());
        return 0;
    }

    各个内存探测方法的运行结果
    从这测试结果来看,我是不使用AH=088h了,如果EAX=0E820和AX=0E801都不行的话,我是采用读写比较的方法了。

    展开全文
  • QT中QString 格式化16进制 arg前面自动补0 16进制格式化是个坑 正确方式 // An highlighted block QByteArray a; a[0]=0x80;..."hax="<<str1; 会出现问题形式 // An highlighted block QByteAr

    QT中QString 格式化16进制 arg前面自动补0

    16进制格式化是个坑
    正确方式

    // An highlighted block
    QByteArray a;
        a[0]=0x80;
        QString str1 = QString("%1").arg(a[0]&0xff,2,16, QLatin1Char('0'));
        qDebug()<<"hax="<<str1;
    

    在这里插入图片描述

    会出现问题形式

    // An highlighted block
     QByteArray a;
        a[0]=0x80;
        QString str1 = QString("%1").arg(a[0],2,16, QLatin1Char('0'));
        qDebug()<<"hax="<<str1;
    

    在这里插入图片描述
    参考:https://blog.csdn.net/wkr2005/article/details/76891008

    展开全文
  • 2006年12月21日 11:25:00 上一篇BLOG中,通过测试我们发现 JavaScript的时钟是16ms的间隔....先说第二种情况,对于firefox中的js引擎,我尚未去看代码,因此我只说"可能",但后来hax来说,firefox的JS引擎
  • hex(‘secure’)=736563757265 然后这串数字就能代表‘secure’这个字符串,只需要加上0x的前缀! SELECT * from users WHERE username=0x736563757265 等价于SELECT * from users WHERE username='secure' ...
  • EmEditor 是快速,轻巧,可扩展,使用方便的 Windows 文本编辑器。同时支持32位和64位版本! ... (见全文) 日本人气网站窓の杜 (Mado-no-mori) 评价,“无需 Excel。最强 CSV 编辑器”。(见译文) ...
  • /** * 通过hax数据返回ByteArray * @param hax 格式 "AA5A000100FF" */ private function getHax(hax:String):ByteArray { ...
  • Starting emulator for AVD 'Android4.2' emulator: Failed to open the HAX device! HAX is not working and emulator runs in emulation mode emulator: Open HAX device failed creating window 0 0 320 480
  • Unicode编码表:国际统一编码

    万次阅读 2017-08-04 11:11:52
    0x16A0-0x16FF 5792-5887 Runic 0x1780-0x17FF 6016-6143 Khmer 0x1800-0x18AF 6144-6319 Mongolian 0x1E00-0x1EFF 7680-7935 Latin Extended Additional ...
  • AndroidStudio 编译中遇到问题总结

    万次阅读 2015-11-15 00:31:43
    CPU acceleration status: HAX kernel module is not installed! 解决办法:你需要安装intelhaxm-android。看看你的\sdk\extras\intel\Hardware_Accelerated_Execution_Manager文件夹下有的话就安装一下,没有的...
  • 16 # 上下左右,ESC,Delete键的cv2.waitKey() 函数返回值 KEY_UP = 65362 KEY_DOWN = 65364 KEY_LEFT = 65361 KEY_RIGHT = 65363 KEY_ESC = 27 KEY_DELETE = 65535 KEY_EMPTY = 0 ...
  • Android内核的编译和调试

    万次阅读 2017-04-28 11:02:27
    一、Android内核源码的选择 Android手机设备内核源码的调试需要外部硬件设备的支持,调试步骤比较麻烦。相对来说,Android模拟器内核源码的调试就比较简单了,这里以Android模拟器内核源码的调试为例。...
  • 基于 16 进制的注入攻击样例 (8)字符串变体 & 相关知识 (9)Union 注入 UNION — 语言问题处理 (10)绕过登陆界面 (11)在SQL Server 2005 中启用 xp_cmdshell (12)探测 SQL Server 数据库的结构 (13)从...
  • OC 面向对象 (初级)
  • Appium源码环境搭建(1)

    千次阅读 2015-02-25 21:39:24
    docs/en/{ => appium-setup}/android-hax-emulator.md | 8 +- docs/en/appium-setup/android-setup.md | 51 + docs/en/{ => appium-setup}/ios-deploy.md | 34 +- docs/en/appium-setup/parallel_tests.md...
  • python的hashlib库的md5摘要...haxdigest hax16进制,digest是摘要 #md5加密是不可反解的 import hashlib #实例化对象 obj=hashlib.md5() #先创建一个md5的对象 #写入要加密的字节 obj.update("admin".en...
  • [hAx,hLine1,hLine2] =plotyy(x',y1,x',y2); %设置图幅 xlim( hAx( 1 ), [1 10] ); xlim( hAx( 2 ), [1 10]); %设置线型 hLine1.LineStyle = '-'; hLine2.LineStyle = '--'; %设置线宽 hLine1.LineWidth=1.0; hLine2...
  • Flex中常见的图

    千次阅读 2013-10-03 15:14:55
    <charts:ColumnChart id="column" dataProvider="{chartArray}" showDataTips="true" width="100%" height="90%" fontSize="16"> 星期"/> 苹果" yField="apple" xField="total"/...
  • 【2008-08-19 16:11】 我(博文作者)以前也试验过,不过这种用法很少很变态,所以基本没去关注它,var f1=function f1(){} 一般用var或function其中一种来声明,不会两种同时用。两种同时用的会让ie很郁闷,其他...
  • 最近[url=http://hax.iteye.com/blog/114148]新添16本书[/url],目前开始看陈剑瓯翻译的《精通CSS——高级Web标准解决方案》(Andy Budd, CSS Mastery -- Advanced Web Standards Solutions)。 以下是读书笔记。...
  • proe齿轮渐近线曲线方程

    千次阅读 2011-11-24 00:51:03
    ha=(hax+x)*m hf=(hax+cx-x)*m d=m*z da=d+2*ha df=d-2*hf db=d*cos(alpha) 直齿齿轮齿廓渐开线生成方程 /* 为笛卡儿坐标系输入参数方程 /*根据t (将从0变到1) 对x, y和z /* 例如:对在 x-y平面的一个圆,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 871
精华内容 348
关键字:

hax16