⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x86.s

📁 unix密码破解软件John the Ripper
💻 S
📖 第 1 页 / 共 2 页
字号:
DES_xor_key2:	pushl %ebx	movl 8(%esp),%edx	movl 12(%esp),%ebx	pushl %esi	pushl %edi	DES_xor2(0)	DES_xor2(32)	DES_xor2(8)	DES_xor2(16)	DES_xor2(24)	DES_xor2(40)	DES_xor2(48)	DES_xor2(56)	DES_xor2(64)	DES_xor2(96)	DES_xor2(72)	DES_xor2(80)	DES_xor2(88)	DES_xor2(104)	DES_xor2(112)	DES_xor2(120)	popl %edi	popl %esi	popl %ebx	ret#endif.data/* * Weird alignments to make sure KS address's bits 5-11 never match current * instruction pointer's bits 5-11. */#ifdef SOLARISDO_ALIGN(12).zero 0x1000 - 32 - 128#elif defined(__DJGPP__).textDO_ALIGN(12).space (0x1000 - 32 - 128 - 0xE0)#elseDO_ALIGN(12).space (0x1000 - 32 - 128)#endif#if !DES_X2/* * The function pointer, set by CPU_detect(). */.globl DES_std_cryptDES_std_crypt:.long DES_std_crypt_anyDES_SavedL:.long 0#endif/* * These are in .data, not .bss, to get them in a cache line that has to be * already loaded at DES_std_crypt() startup. */.globl DES_IVDES_IV:#ifdef SOLARIS.zero 16#else.space 16#endif.globl DES_countDES_count:.long 0DES_count_tmp:.long 0DO_ALIGN(5).globl DES_KS_copyDES_KS_copy:#ifdef SOLARIS.zero 128#else.space 128#endif#ifdef __DJGPP__.space 32#endif#ifndef BSD.bss#endif#if DES_X2.globl DES_SPE_FDES_SPE_F:.space 0x1000#else.globl DES_SPE_LDES_SPE_L:#ifdef SOLARIS.zero 0x800#else.space 0x800#endif/* * Cache bank shift. This should be at least as large as the word size, but * smaller than the cache line size. (At least on Intel Pentium, two loads * can't dual issue if accessing the same cache bank.) */.long 0.globl DES_SPE_HDES_SPE_H:#ifdef SOLARIS.zero 0x800#else.space 0x800#endif#endifDO_ALIGN(5).globl DES_KS_currentDES_KS_current:#ifdef SOLARIS.zero 128#else.space 128#endif.globl DES_KS_tableDES_KS_table:#ifdef SOLARIS.zero 0x20000#else.space (8 * 128 * 16 * 8)#endif/* * MD5 stuff, optimized for Intel Pentium only right now. */#define S11				7#define S12				12#define S13				17#define S14				22#define S21				5#define S22				9#define S23				14#define S24				20#define S31				4#define S32				11#define S33				16#define S34				23#define S41				6#define S42				10#define S43				15#define S44				21#define Ca				0x67452301#define Cb				0xefcdab89#define Cc				0x98badcfe#define Cd				0x10325476#define a				%esi#define b				%edi#define c				%edx#define d				%ebx#undef tmp1#undef tmp2#define tmp1				%eax#define tmp2				%ecx#ifdef SOLARIS#define x(i)				i+i+i+i(%ebp)#else#define x(i)				4*i(%ebp)#endif.text#define FF(a, b, c, d, x, s, ac) \	andl b,tmp1; \	addl x,a; \	xorl d,tmp1; \	addl $ac,a; \	addl tmp1,a; \	movl b,tmp1; \	roll $s,a; \	xorl c,tmp1; \	addl b,a#define GG(a, b, c, d, x, s, ac) \	movl x,tmp2; \	xorl b,tmp1; \	addl tmp2,a; \	andl d,tmp1; \	addl $ac,a; \	xorl c,tmp1; \	addl tmp1,a; \	roll $s,a; \	movl b,tmp1; \	addl b,a#define HH(a, b, c, d, x, s, ac) \	movl c,tmp1; \	addl tmp2,a; \	xorl d,tmp1; \	addl $ac,a; \	xorl b,tmp1; \	movl x,tmp2; \	addl tmp1,a; \	roll $s,a; \	addl b,a#define II(a, b, c, d, x, s, ac) \	xorl d,tmp2; \	addl x,a; \	orl b,tmp2; \	addl $ac,a; \	xorl c,tmp2; \	addl tmp2,a; \	movl $-1,tmp2; \	roll $s,a; \	addl b,aDO_ALIGN(5).globl MD5_bodyMD5_body:	pushl %ebp	pushl %ebx	pushl %esi	pushl %edi	movl 20(%esp),%ebp/* Round 1 */	movl $0xd76aa477,a	movl $Cb,b	addl x(0),a	movl $Cc,c	roll $S11,a	movl $Cd,d	addl b,a	movl $0x77777777,tmp1	FF (d, a, b, c, x( 1), S12, 0xe8c7b756) /* 2 */	FF (c, d, a, b, x( 2), S13, 0x242070db) /* 3 */	FF (b, c, d, a, x( 3), S14, 0xc1bdceee) /* 4 */	FF (a, b, c, d, x( 4), S11, 0xf57c0faf) /* 5 */	FF (d, a, b, c, x( 5), S12, 0x4787c62a) /* 6 */	FF (c, d, a, b, x( 6), S13, 0xa8304613) /* 7 */	FF (b, c, d, a, x( 7), S14, 0xfd469501) /* 8 */	FF (a, b, c, d, x( 8), S11, 0x698098d8) /* 9 */	FF (d, a, b, c, x( 9), S12, 0x8b44f7af) /* 10 */	FF (c, d, a, b, x(10), S13, 0xffff5bb1) /* 11 */	FF (b, c, d, a, x(11), S14, 0x895cd7be) /* 12 */	FF (a, b, c, d, x(12), S11, 0x6b901122) /* 13 */	FF (d, a, b, c, x(13), S12, 0xfd987193) /* 14 */	FF (c, d, a, b, x(14), S13, 0xa679438e) /* 15 */	andl c,tmp1	addl $0x49b40821,b	xorl a,tmp1	addl tmp1,b	roll $S14,b	movl c,tmp1	addl c,b/* Round 2 */	GG (a, b, c, d, x( 1), S21, 0xf61e2562) /* 17 */	GG (d, a, b, c, x( 6), S22, 0xc040b340) /* 18 */	GG (c, d, a, b, x(11), S23, 0x265e5a51) /* 19 */	GG (b, c, d, a, x( 0), S24, 0xe9b6c7aa) /* 20 */	GG (a, b, c, d, x( 5), S21, 0xd62f105d) /* 21 */	GG (d, a, b, c, x(10), S22,  0x2441453) /* 22 */	xorl d,tmp1	andl b,tmp1	addl $0xd8a1e681,c	xorl a,tmp1	addl tmp1,c	roll $S23,c	movl d,tmp1	addl d,c	GG (b, c, d, a, x( 4), S24, 0xe7d3fbc8) /* 24 */	GG (a, b, c, d, x( 9), S21, 0x21e1cde6) /* 25 */	GG (d, a, b, c, x(14), S22, 0xc33707d6) /* 26 */	GG (c, d, a, b, x( 3), S23, 0xf4d50d87) /* 27 */	GG (b, c, d, a, x( 8), S24, 0x455a14ed) /* 28 */	GG (a, b, c, d, x(13), S21, 0xa9e3e905) /* 29 */	GG (d, a, b, c, x( 2), S22, 0xfcefa3f8) /* 30 */	GG (c, d, a, b, x( 7), S23, 0x676f02d9) /* 31 */	movl x(12),tmp2	xorl c,tmp1	addl tmp2,b	andl a,tmp1	addl $0x8d2a4c8a,b	xorl d,tmp1	movl x(5),tmp2	addl tmp1,b	roll $S24,b	addl c,b/* Round 3 */	HH (a, b, c, d, x( 8), S31, 0xfffa3942) /* 33 */	HH (d, a, b, c, x(11), S32, 0x8771f681) /* 34 */	HH (c, d, a, b, x(14), S33, 0x6d9d6122) /* 35 */	HH (b, c, d, a, x( 1), S34, 0xfde5380c) /* 36 */	HH (a, b, c, d, x( 4), S31, 0xa4beea44) /* 37 */	HH (d, a, b, c, x( 7), S32, 0x4bdecfa9) /* 38 */	HH (c, d, a, b, x(10), S33, 0xf6bb4b60) /* 39 */	HH (b, c, d, a, x(13), S34, 0xbebfbc70) /* 40 */	HH (a, b, c, d, x( 0), S31, 0x289b7ec6) /* 41 */	HH (d, a, b, c, x( 3), S32, 0xeaa127fa) /* 42 */	HH (c, d, a, b, x( 6), S33, 0xd4ef3085) /* 43 */	HH (b, c, d, a, x( 9), S34,  0x4881d05) /* 44 */	HH (a, b, c, d, x(12), S31, 0xd9d4d039) /* 45 */	HH (d, a, b, c, x( 2), S32, 0xe6db99e5) /* 46 */	movl a,tmp1	xorl b,tmp1	addl $0x1fa27cf8,c	xorl d,tmp1	addl tmp1,c	roll $S33,c	addl d,c	HH (b, c, d, a,   $-1, S34, 0xc4ac5665) /* 48 *//* Round 4 */	II (a, b, c, d, x( 0), S41, 0xf4292244) /* 49 */	II (d, a, b, c, x( 7), S42, 0x432aff97) /* 50 */	II (c, d, a, b, x(14), S43, 0xab9423a7) /* 51 */	II (b, c, d, a, x( 5), S44, 0xfc93a039) /* 52 */	II (a, b, c, d, x(12), S41, 0x655b59c3) /* 53 */	II (d, a, b, c, x( 3), S42, 0x8f0ccc92) /* 54 */	II (c, d, a, b, x(10), S43, 0xffeff47d) /* 55 */	II (b, c, d, a, x( 1), S44, 0x85845dd1) /* 56 */	II (a, b, c, d, x( 8), S41, 0x6fa87e4f) /* 57 */	xorl c,tmp2	orl a,tmp2	addl $0xfe2ce6e0,d	xorl b,tmp2	addl tmp2,d	movl $-1,tmp2	roll $S42,d	addl a,d	II (c, d, a, b, x( 6), S43, 0xa3014314) /* 59 */	II (b, c, d, a, x(13), S44, 0x4e0811a1) /* 60 */	II (a, b, c, d, x( 4), S41, 0xf7537e82) /* 61 */	II (d, a, b, c, x(11), S42, 0xbd3af235) /* 62 */	II (c, d, a, b, x( 2), S43, 0x2ad7d2bb) /* 63 */	xorl a,tmp2	addl x(9),b	orl c,tmp2	addl $0xeb86d391,b	xorl d,tmp2	addl tmp2,b	movl 24(%esp),tmp1	roll $S44,b/* Update the state and return */	addl $Ca,a	addl $Cd,d	movl a,(tmp1)	leal Cb(b,c),b	addl $Cc,c	movl b,4(tmp1)	movl c,8(tmp1)	movl d,12(tmp1)	popl %edi	popl %esi	popl %ebx	popl %ebp	ret/* * Blowfish stuff. */#undef L#undef R#undef tmp1#undef tmp2#define L				%esi#define R				%edi#define tmp1				%ecx#define tmp1_lo				%cl#define tmp2				%ebp#ifdef SOLARIS#define P(N)				BF_current+0x1000+N+N+N+N#else#define P(N)				BF_current+0x1000+4*N#endif.text#define BF_ROUND(L, R, N) \	xorl L,%eax; \	xorl tmp1,tmp1; \	movl %eax,L; \	shrl $16,%eax; \	movl L,%edx; \	movb %ah,tmp1_lo; \	andl $0xFF,%eax; \	movb %dh,%bl; \	andl $0xFF,%edx; \	movl BF_current(,tmp1,4),tmp1; \	movl BF_current+0x400(,%eax,4),tmp2; \	addl tmp2,tmp1; \	movl BF_current+0x800(,%ebx,4),tmp2; \	xorl tmp2,tmp1; \	movl BF_current+0xC00(,%edx,4),tmp2; \	addl tmp1,tmp2; \	movl P(N)+4,%eax; \	xorl tmp2,R#define BF_ENCRYPT_START \	BF_ROUND(L, R, 0); \	BF_ROUND(R, L, 1); \	BF_ROUND(L, R, 2); \	BF_ROUND(R, L, 3); \	BF_ROUND(L, R, 4); \	BF_ROUND(R, L, 5); \	BF_ROUND(L, R, 6); \	BF_ROUND(R, L, 7); \	BF_ROUND(L, R, 8); \	BF_ROUND(R, L, 9); \	BF_ROUND(L, R, 10); \	BF_ROUND(R, L, 11); \	BF_ROUND(L, R, 12); \	BF_ROUND(R, L, 13); \	BF_ROUND(L, R, 14); \	BF_ROUND(R, L, 15); \	movl BF_ptr,tmp2; \	xorl L,%eax; \	movl P(17),L#define BF_ENCRYPT_END \	xorl R,L; \	movl %eax,RDO_ALIGN(12).globl BF_bodyBF_body:	pushl %ebp	pushl %ebx	pushl %esi	pushl %edi	xorl L,L	xorl R,R	movl P(0),%eax	xorl %ebx,%ebx	movl $P(0),BF_ptrBF_loop_P:	BF_ENCRYPT_START	addl $8,tmp2	BF_ENCRYPT_END	movl tmp2,BF_ptr	cmpl $P(18),tmp2	movl L,-8(tmp2)	movl R,-4(tmp2)	movl P(0),%eax	jb BF_loop_P	xorl %ebx,%ebx	movl $BF_current,BF_ptrBF_loop_S:	BF_ENCRYPT_START	BF_ENCRYPT_END	movl P(0),%eax	movl L,(tmp2)	movl R,4(tmp2)	BF_ENCRYPT_START	BF_ENCRYPT_END	movl P(0),%eax	movl L,8(tmp2)	movl R,12(tmp2)	BF_ENCRYPT_START	BF_ENCRYPT_END	movl P(0),%eax	movl L,16(tmp2)	movl R,20(tmp2)	BF_ENCRYPT_START	addl $32,tmp2	BF_ENCRYPT_END	movl tmp2,BF_ptr	cmpl $BF_current+0x1000,tmp2	movl P(0),%eax	movl L,-8(tmp2)	movl R,-4(tmp2)	jb BF_loop_S	popl %edi	popl %esi	popl %ebx	popl %ebp	ret#ifdef BSD.data#else.bss#endif#ifdef SOLARISDO_ALIGN(12).zero 0x1000 - 96#elif defined(__DJGPP__).textDO_ALIGN(12).space (0x1000 - 96 - 0x100)#elseDO_ALIGN(12).space (0x1000 - 96)#endif.globl BF_currentBF_current:#ifdef SOLARIS.zero 0x1000 + 72#else.space (0x1000 + 72)#endifBF_ptr:.long 0#ifdef __DJGPP__.space 32#endif/* * CPU detection. */#define EF_ID				$0x00200000#define CF_MMX				$0x00800000#define CV_INTEL			$0x6C65746E.text.globl CPU_detectCPU_detect:	pushfl	pushfl	xorl EF_ID,(%esp)	popfl	pushfl	popl %eax	xorl (%esp),%eax	popfl	andl EF_ID,%eax	jz CPU_detect_ret	movl $1,%eax	pushl %ebx#if DES_X2	cpuid	popl %ebx	xchgl %edx,%eax	andl CF_MMX,%eax#else	.byte 0x0F	.byte 0xA2	popl %ebx	andb $0x0F,%ah	cmpb $5,%ah	jne CPU_detect_ret	xorl %eax,%eax	pushl %ebx	.byte 0x0F	.byte 0xA2	popl %ebx	cmpl CV_INTEL,%ecx	jne CPU_detect_ret	movl $DES_std_crypt_P5,%eax	movl %eax,DES_std_crypt#endifCPU_detect_ret:	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -