导航:首页 > 文档加密 > ctea加密

ctea加密

发布时间:2022-01-21 16:40:30

1. 求塞班手机QQ记录文件的加密方式。很多人说是tea加交织填充算法,希望来个准确的描述和介绍~

建议你去塞班论坛问问,那里高手好多,不过得先注册

2. TEA加密算法的内容

代码如下:
void qq_encipher(unsigned long *const plain, const unsigned long *const key, unsigned long *const crypt)
//参数为8字节的明文输入和16字节的密钥,输出8字节密文
{
unsigned long left = plain[0],right = plain[1],
a = key[0], b = key[1],
c = key[2], d = key[3],
n = 32, sum = 0,
delta = 0x9E3779B9;
// 明文输入被分为左右两部分,密钥分为四部分存入寄存器,n表示加密轮数推荐32。Delta为一常数。
while (n-- > 0) {
sum += delta;
left += ((right << 4) + a) ^ (right + sum) ^ ((right >> 5) + b);
right += ((left << 4) + c) ^ (left + sum) ^ ((left >> 5) + d);
}
crypt[0] = left ;
crypt[1] = right ;
}
void decrypt(unsigned long *v, unsigned long *k) {
unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i; /* set up */
unsigned long delta=0x9e3779b9; /* a key schele constant */
unsigned long a=k[0], b=k[1], c=k[2], d=k[3]; /* cache key */
for(i=0; i<32; i++){ /* basic cycle start */
z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);
y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
sum -= delta; /* end cycle */}v[0]=y;v[1]=z;}
虽然TEA算法比 DES(Data Encryption Standard) 要简单得多, 但有很强的抗差分分析能力,加密速度也比 DES 快得多,而且对 64 位数据加密的密钥长达 128 位,安全性相当好。其可靠性是通过加密轮数而不是算法的复杂度来保证的。从中可以看到TEA 算法主要运用了移位和异或运算。密钥在加密过程中始终不变。

3. 如何加载 VMware Workstation v8.0.1 加密过的虚拟磁盘文件

首先介绍一下VMware Workstation v8.0 的加密功能(修改、移除密码也是在这里操作),操作很简单:

新建一个任意虚拟机,然后“编辑虚拟机设置”→“选项”,可以看到一个“加密”,说明写的是:“该虚拟机未加密。你可以使用密码保护该虚拟机的数据和配置。”

旁边有个“加密按钮”,点击,会要求你输入密码,然后开始加密,他会把虚拟机配置文件和整个虚拟磁盘统统重新编码进行加密,而且是不可逆的高强度加密,如果你没有密匙,是无法还原的。

我们再看看它的配置文件发生了什么变化。

主要文件有:

Windows XP Professional.vmdk //虚拟磁盘文件
Windows XP Professional.vmsd //储存密匙的文件
Windows XP Professional.vmx //虚拟机的整体配置文件
Windows XP Professional.vmxf //某种配置文件
加密前:

Windows XP Professional.vmdk //正常
Windows XP Professional.vmsd //空白
Windows XP Professional.vmx //明文的配置内容
Windows XP Professional.vmxf //明文的配置内容
Windows XP Professional.vmx 内容大概是这个样子的:

.encoding = "GBK"
config.version = "8"
virtualHW.version = "8"
scsi0.present = "TRUE"
memsize = "512"
ide1:0.present = "TRUE"
ide1:0.autodetect = "TRUE"
ide1:0.deviceType = "cdrom-raw"
ide1:1.present = "TRUE"
ide1:1.fileName = "E:\b\1\Windows XP Professional.vmdk"
floppy0.startConnected = "FALSE"
floppy0.fileName = ""
floppy0.autodetect = "TRUE"
usb.present = "TRUE"
ehci.present = "TRUE"
sound.present = "TRUE"
sound.fileName = "-1"
sound.autodetect = "TRUE"
mks.enable3d = "TRUE"
serial0.present = "TRUE"
serial0.fileType = "thinprint"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
hpet0.present = "TRUE"
usb.vbluetooth.startConnected = "TRUE"
displayName = "Windows XP Professional"
guestOS = "winxppro"
nvram = "Windows XP Professional.nvram"
virtualHW.proctCompatibility = "hosted"
powerType.powerOff = "hard"
powerType.powerOn = "hard"
powerType.suspend = "hard"
powerType.reset = "hard"
extendedConfigFile = "Windows XP Professional.vmxf"
可以看到第一行是指定了编码,底下是虚拟机的参数。

加密后:

Windows XP Professional.vmdk //文件数据完全改变
Windows XP Professional.vmsd //有内容了
Windows XP Professional.vmx //加密的配置内容
Windows XP Professional.vmxf //没变
Windows XP Professional.vmsd 内容为:

.encoding = "GBK"
encryption.keySafe = "vmware:key/list/(pair/(null/%3cVMWARE%2dEMPTYSTRING%3e,HMAC%2dSHA%2d1,tvdbb%%2b7seyEXsITq%2frJfM%2bpRhuxn6hLdUf0sV2M7KK%%2bvDIIk%%3d))"
encryption.data = "jzMK85KB33C+ZvVvCDKF9cTMLXd7hUEWEZCY2p3/fVZERl1trvql+gD65kYqSk4WS+NKrQ=="
第一行指定编码格式,第二行是安全密匙(Url 编码的密匙信息+ Base64 编码的密匙),第三行是Base64 编码的加密数据。

Windows XP Professional.vmx 内容为:

.encoding = "GBK"
displayName = "Windows XP Professional"
encryption.keySafe = "vmware:key/list/(pair/(phrase/Q8qRfGi6V0M%3d/pass2key%3dPBKDF2%2dHMAC%2dSHA%2d1%3acipher%3dAES%2d256%3arounds%3d1000%3asalt%3dOiu7KvvIxTv%2b5a0RBmb4VA%253d%253d,HMAC%2dSHA%2d1,mwIz3U9k2vDV8kW5zgVcUkmP8SWBB%%2fcTA7RN9EoAb4A%2fD3fBYXctJDdDSKprDCk%%3d))"
encryption.data = "+D5d8Y8NV2Ua8+++mv/++/yi1Q/EpN5dIOHjFr9H0Vb3GLlu++eqvqWpFBNZUgKU+vH3ROfLNhGM6qnbaWrpn//+//3b+SOu3PJfEpr9pQ/aa/ezEAKrVE+2gb6L6ZIFsz/E6EqrQklJKHO+/WJ6m4CyAFt03RX/+7aqXY+o++9X0DxUGn8Y2W76agCZPVN3wO+//+k7RFa///DomPZ/vyxzIeaj/zafelc+9XM57DDTD6+D/dZbonatgXkQKnEEwSF4RCYBV+qm7MNlg+jz8pUHSK6QyGaOzj+WlU6O3XwELTB1zzl6JthHY/HHMgR/C4T3Tj2LPwK/nLq8+/2GDR/+/+uQhB7BrFzLnzmh7+BP9Tm3WG5J3vG0nb2MblKfRPk3u+/5mVCiAtMVWPHjQ+"
格式和上边的差不多,实际上“encryption.data”为加密过的明文配置信息。

对两段encryption.keySafe www.2cto.com 分别进行Url解码后,发现:

vmware:key/list/(pair/(phrase/Q8qRfGi6V0M=/pass2key=PBKDF2-HMAC-SHA-1:cipher=AES-256:rounds=1000:salt=Oiu7KvvIxTv+5a0RBmb4VA==,HMAC-SHA-1,mwIz3U9k2vDV8kW5zgVcUkmP8SWBB+/cTA7RN9EoAb4A/D3fBYXctJDdDSKprDCk/=))
vmware:key/list/(pair/(null/<VMWARE-EMPTYSTRING>,HMAC-SHA-1,tvdbb++7seyEXsITq/rJfM+pRhuxn6hLdUf0sV2M7KK/+vDIIk/=))
其中简要地说明了密匙信息,加密算法有:HMAC-SHA-1、PBKDF2-HMAC-SHA-1,密匙长度:AES-256,还加盐!

通过之前的观察,我们发现有变化的文件有:

Windows XP Professional.vmdk //虚拟磁盘文件
Windows XP Professional.vmsd //储存密匙的文件
Windows XP Professional.vmx //虚拟机的整体配置文件
这三个文件是关键,那么如果你新建了一个虚拟机,想加载之前加密过的虚拟磁盘文件,该如何做呢?

首先,新建一个和之前系统一样的虚拟机,配置随意,然后找到保存配置的目录,复制.vmsd、.vmx 过去覆盖(或者替换其中的密匙信息),然后打开该虚拟机(不是启动!),删掉之前的磁盘,加载加密过的磁盘,直接就可以用了。

4. 急求一道c语言编程的答案!!时间急迫!!快快!!

问问题的该不会是。。。。xgd的吧。。。
你够可以的~~~不想自己做还搜难度系数最大的。。。

自己做个数学型的就行了呗。。那些里有特简单的。

5. 魅族5.15内置的com.redteamobile.virtual.softsim有什么用

刚好今天刷机到5.1.5.0Y,冻结应用的时候发现了这个未知的应用,通过关键词搜索得知,redteamobile 中文名 红茶移动,是专门给境外漫游用的,让你不换SIM卡就可以享受境外的网络和服务。同时5.1.5Y比1.4还多了一个roamingpay.apk的东西,网络没查到,不过翻译过来是漫游支付,估计跟红茶是配套的,目前这俩我都冻结了,还没发生不稳定的情况,正常使用。

6. F2:D7:5E:F5:CC:C1的密码是多少

协议分析:获取各类登录会话密钥

我们知道QQ的一些会话密钥是在登录过程中生成的,尤其是Session Key,有了它便可以解密出聊天文本内容。本文主要是了解一下QQ的加密机制,首先是用嗅探工具Wireshark 捕获本地发至8000端口的UDP数据包,然后使用 QQCrypter 工具对各类文本进行加解密分析。

帐号资料

QQ号码(HEX):739317986 2C 11 18 E2

QQ密码 MD5 一次密文:D1 C2 DC FC BF D4 1C E1 10 3A 25 47 5B 64 F7 A5

QQ密码 MD5 二次密文:17 05 FB D8 1D 0D B4 37 79 7E 55 75 6C B8 E8 D2

IP地址(HEX):192.168.1.101 C0 A8 01 65

数据包分析

密钥A:

02 // 命令类别

1C 27 // QQ2010 Beta3版本号

00 91

46 60

2C 11 18 E2 // QQ号码

02 00 00 00 01 01 01 00 00 64 00

3E 12 2D 44 39 61 C5 34 80 7E D1 26 AD 30 50 29 //密钥A

6B 1C 4B 2C 30 0B 4C 56 90 14 32 56 F3 AF 69 20 // 以下蓝色内容为密文

62 C0 80 80 DE 26 CE EA E6 E6 8C BE F5 8A E7 45

87 F1 BD AC 59 0E 87 47 1D FE 4E 46 02 51 5D 00

03

用TEA解密如下:

00 01 00 00 08 04 01 E0 00 00 03 20 00 00 00 01

00 00 0B 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

密钥B:

02

1C 27

00 DD

16 B2

2C 11 18 E2

02 00 00 00 01 01 01 00 00 64 00

33 BA 7C E2 A1 C2 B4 8E DC 8D 19 49 2E 54 D6 23 //密钥B

// 以下蓝色内容为密文

93 29 E2 EA 3E 02 DE D2 2D 7C 6D 70 DB 25 F5 74

57 4B 03 8A B9 DF EF 0D A3 EF 49 3C A8 F6 7D FE FD 1D 22 82 27 F2 39 03 91 95 02 C9 C2 FB 8E 5D EA 8F 0C 54 F8 74 D0 84 53 A3 62 58 71 D8 12 AA 06 DA C4 9F FF AD 1D 57 23 09 0C AF 6D A9 2E 44 9E 7C CD E6 85 E3 73 27 76 98 29 32 1E 8F 50 66 F6 3C D7 F4 BD A6 C4 07 DF DE 7E A4 68 B5 2A ED 7E 81 27 C2 1D 11 7A 14 28 1D 38 FF 89 9B 74 FF 96 62 96 E9 E1 B1 B3 85 95 F4 16 32 14 31 96 91 49 E5 E8 14 27 2C 52 96 16 0C 63 4C 0B B0 E6 18 43 A6 0B 3B 87 8C 98 C2 A8 7F 2E EC A7 9E 94 B2 00 43 AC D4 B1 68 55 A4 55 9B 62 35 75 93 AE 5F A7 32 67 6C 43 66 0E 4A 06 B6 87 72 1E 0A B7 B3 04 D8 AB 80 0E 5F AA A1 3A 24 1E B5 58 F1 70 EF 41 58 2F 77 50 85 97 9E B2 0A DF C9 16 AC 64 50 5F F7 B7 66 67 CE 83 74 0B 68 69 A8 37 51 37 F5 79 C2 9B E4 E6 CA 77 AC 02 BE 34 9B 8C B4 93 EE DE BC 4F 46 21 BA 72 5A 6B 23 7C 2C 11 E0 6A 02 D2 5E E7 BC FD 0E FB 52 16 93 B6 B0 C2 52 B2 42 58 93 27 BF 19 93 C1 F4 7D BB 48 48 37 91 81 00 AE 51 D4 15 22 4C 26 28 4E 50 50 F2 5E A3 B2 04 1A 17 FA 91 BE 3D 7D 82 70 71 43 4B 5C 44 AB D4 BF 65 D1 DC AB 5D E0 68 36 35 1D 93 88 6E C5 85 02 57 68 87 71 0F 2A 6F 4B 48 0D E1 AE 95 99 A6 57 49 A6 D5 86 04 42 87 F3 C6 23 9A 42 A3 52 23 9D B9 67 92 A7 1B 1A 7C 56 98 9B B3 A9 A3 25 5E 2B 74 A8 78 DC C5 11 40 A3 13 2D ED 88 4F 11 2B 59 D6 EC 13 61 BA 57 EB 6F 4C 67 95 DA EA BA 0C FA 3E 2B 86 3A D8 84 05 7F 3B 27 A6 94 49 CA F4 23 6D C0 AD 97 08 E2 C7 15 27 0B 8E 10 CD 02 1A 63 13 15 BF 4A B3 66 87 AC 2A 42 09 D5 4A DD F8 1C 0C B0 0A DD 09 F5 7F 28 60 61 55 E7 25 73 A4 BC FB 9C 5E 87 C7 CD 8A A9 46 9A 14 FD B1 03 F5 AA 2F 9C 84 32 52 A6 70 D5 FC 62 DA DA 74 B3 67 3F 84 C9 67 25 A8 8B 7E 93 72 41 8F 0C C4 34 5C 10 9F 5D 9D C2 F4 93 A0 D9 61 45 C1 B7 54 A3 76 F7 31 D8 A1 CE 8E 94 1D C7 B4 C4 49 EA BD 7C 78 77 1E CF 5D CE 5E 81 4F EC 64 AA 6A B5 E2 41 BA 4E 00 D6 D7 7F B9 96 8F

03

用密钥B (33 BA 7C E2 A1 C2 B4 8E DC 8D 19 49 2E 54 D6 23)经TEA算法解密,内容如下:

00 DE 00 01 00 00 08 04 01 E0

00 00 03 20 00 00 00 01 00 00 0B 17

00 38

53 5E 98 F6 D7 43 46 75 8F 78 8A 60 FB 8E D7 4A

5C 4A 4C 42 A2 A2 C1 37 8D 21 55 CC B6 26 5F 02

AE 1C 87 79 23 9B FD CE 96 28 82 E0 AB 08 28 FA

C3 9C B0 7C 76 5C F5 F5

00 78 //0x78表示十进制数值 120

D5 FE 11 59 59 04 90 82 BA 36 50 54 4D 49 44 B8 //120个字节的开始块

22 72 00 BA 2D F3 5C 4C 3F B6 45 B1 D3 16 1C A9 4D 12 33 B0 79 11 BB 68 79 6E 2E 1B 1C E1 C9 F8 19 4B F1 35 AA EB 62 F2 D7 77 48 70 1D B4 40 CB 85 F8 74 15 5E 6C 32 9F 07 E4 B0 2A 61 35 4B 54 CC 85 F4 EA 6C 5A 42 F8 DB 18 A3 8F 9B 42 AD 5E 9A 5E FE 89 4C 18 71 2A 33 6A E9 D1 9F CE 0F DA 99 ED 65 F8 F6 E2 0D 66 //120个字节的结束块

00 14 82 FE 87 6D 6D 10 52 50 50 CD 61 98 54 F7 2F 82 EE 6A EB D5 01 77 2E 01 7F 5D 41 8F 00 10 8D CD 83 D5 BB B4 1F 4C CA 15 5C 38 D4 69 F1 30 02 66 45 A3 96 00 10 49 1F 22 31 08 12 D4 98 70 1F A3 63 9F 4B 56 AB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

密钥C和D:

我们用QQ密码 MD5 二次密文(17 05 FB D8 1D 0D B4 37 79 7E 55 75 6C B8 E8 D2)作为密钥,对上面的120个字节 数据块作解密处理,可以得到密文:

52 40 0C 93 00 01 2C 11 18 E2 00 00 03 20 00 00

00 01 00 00 0B 17 00 00 00

D1 C2 DC FC BF D4 1C E1 10 3A 25 47 5B 64 F7 A5 //这个16位的数据正好是QQ密码

//经过MD5一次加密的密文

4C 75 25 59 00 00 00 00 00 00 00 00 00 00 00 00

00 3A FF 40 28 00 00 00 00 00 00 00 00 00 10

08 97 8A 39 E8 96 72 49 AC 26 E6 8B 63 E4 D7 44 //这个16位的数据是密钥 C

27 1E 92 DE F4 F4 9A 68 B2 E4 8D 84 BC EC 42 41 //这个16位的数据是密钥 D

密钥E和F:

7. 什么是TEA算法

TEA算法被广泛地应用于计算机数据加密领域,OICQ的数据安全采用了TEA算法。本文讨论了TEA的算法的原理及实现,并揭示了QQ中该算法的应用,本文是灵钥科技公司(www.panakes.com)在即时通信密码研究公开的第一篇论文,今后我们将陆续发表相关的论文及相应的产品。

TEA算法简介
TEA算法是由剑桥大学计算机实验室的DavidWheeler和RogerNeedham于1994年发明.TEA是TinyEncryptionAlgorithm的缩写。特点是加密速度极快,高速高效,但是抗差分攻击能力差。

TEA加密算法是一种分组密码算法,其明文密文块64比特(8字节),密钥长度128比特(16字节)。TEA加密算法的迭代次数可以改变,建议的迭代次数为32轮,尽管算法的发明人强调加密16轮就很充分了。两个TEAFeistel周期算为一轮。图1示例了TEA一轮的加密流程。

以下示例了TEA的C语言加密算法,TEA的解密算法与加密算法类似。

#defineTEA_ROUNDS0x20
#defineTEA_DELTA0x9E3779B9
#defineTEA_SUM0xE3779B90

voidtiny_encrypt(unsignedlong*constv,unsignedlong*constw,
constunsignedlong*constk)
{
registerunsignedlong
y=v[0],
z=v[1],
a=k[0],
b=k[1],
c=k[2],
d=k[3],
n=TEA_ROUNDS,
sum=0,
delta=TEA_DELTA;

while(n-->0){
sum+=delta;
y+=(z<<4)+a^z+sum^(z>>5)+b;
z+=(y<<4)+c^y+sum^(y>>5)+d;
}
w[0]=y;
w[1]=z;
}

TEA算法利用的不断增加的(即源程序中的delta)值作为变化,,就是黄金分割率。它的作用是使得每轮的加密是不同。的准确值可能不太重要。但是在这里,它被初始化为

=0x9e3779b

QQ是如何利用TEA进行加密的?
TEA算法被广泛应用于QQ的数据加密中,QQ采用16轮的TEA算法加密,在这时采取16轮加密时而不采取标准的32轮加密时为了减少验证服务器的压力。QQ在数据加密前采用了密码学中的常用的填充及交织技术,减少加密数据的相关性,增加破译者的破解难度。

下表列出了QQ应用TEA算法几个方面

序号
应用
相关文件

1
通讯报文的加密/解密

2
消息记录的加密/解密
MsgEx.db

3
本地消息密码、首次登录时间、提示内容验证密码
Matrix.db

4
消息备份文件
*.bak

QQ的TEA算法源程序分析
QQ在进行TEA加密前采用ntohl函数对原文数据和加密密钥进行了变换,从网络字节顺序转换位主机字节顺序进行加密后,再通过htonl函数将数据转换为网络字节顺序的数据。

为什么要这样做呢?因为不同的计算机使用不同的字节顺序存储数据。因此任何从Winsock函数对IP地址和端口号的引用和传给Winsock函数的IP地址和端口号均时按照网络顺序组织的。

为防止分析者分析出QQ是采用TEA加密算法的,程序的设计者采用了subeax,61C88647h指令,而不采用Addeax9e3779b9h指令。因为分析者只需要判断9e3779b9h(即是我们前面提的黄金分割率的值)就知道采用了TEA加密算法。

sub_409A43procnear;CODEXREF:sub_409B8C+AEp
;sub_409B8C+109p...

var_10=dwordptr-10h
var_C=dwordptr-0Ch
var_8=dwordptr-8
var_4=dwordptr-4
arg_0=dwordptr8
arg_4=dwordptr0Ch
arg_8=dwordptr10h

pushebp
movebp,esp
subesp,10h
pushebx
pushesi
movesi,[ebp+arg_0]
pushedi
pushdwordptr[esi];netlong
callntohl
pushdwordptr[esi+4];netlong
movedi,eax;y
callntohl
movebx,eax;z
moveax,[ebp+arg_4]
leaecx,[ebp+var_10]
leaesi,[ebp+var_10]
subeax,ecx
mov[ebp+arg_0],4
mov[ebp+arg_4],eax
jmpshortloc_409A7C
;哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00409A79
loc_409A79:;CODEXREF:sub_409A43+49j
moveax,[ebp+arg_4]

loc_409A7C:;CODEXREF:sub_409A43+34j
pushdwordptr[eax+esi];netlong
callntohl;对k[0],k[1],k[2],k[3]进行ntohl变化,
mov[esi],eax
addesi,4
dec[ebp+arg_0]
jnzshortloc_409A79

push10h;做十六轮TEA运算
xoreax,eax
popecx

loc_409A93:;CODEXREF:sub_409A43+88j
movedx,ebx
movesi,ebx
shredx,5;z>>5
addedx,[ebp+var_C];z>>5+k[1]
subeax,61C88647h;sum=sum+deltadelta:0x9e3779b9
shlesi,4;z<<4
addesi,[ebp+var_10];z<<4+k[0]
xoredx,esi;(z>>5+k[1])^(z<<4+k[0])
leaesi,[eax+ebx];sum+z
xoredx,esi;(z<<4+k[0])^(sum+z)^(z>>5+k[1])
addedi,edx;y+=(z<<4+k[0])^(sum+z)^(z>>5+k[1])

movedx,edi
movesi,edi
shredx,5;y>>5
addedx,[ebp+var_4];y>>5+k[3]
shlesi,4;y<<4
addesi,[ebp+var_8];y<<4+k[2]
xoredx,esi;(y>>5+k[3])^(y<<4+k[2])
leaesi,[eax+edi];(sum+y)
xoredx,esi;(y<<4+k[2])^(sum+y)^(y>>5+k[3])
addebx,edx;z+=(y<<4+k[2])^(sum+y)^(y>>5+k[3])
dececx
jnzshortloc_409A93

pushedi;hostlong
callhtonl
movesi,[ebp+arg_8]
pushebx;hostlong
mov[esi],eax;加密结果
callhtonl
mov[esi+4],eax;加密结果
popedi
popesi
popebx
leave
retn
sub_409A43endp

结论
作为一种分组加密算法,TEA加密算法在其发展的过程中,目前出现了几种针对TEA算法设计的缺陷攻击方法,使得原有的TEA加密算法变得不安全,在过去的十几年中,TEA算法进行了若干次的改进,历经XTEA,BlockTEA,XXTEA几个版本。目前最新的算法是XXTEA。

QQ采用了最初的TEA算法做其核心的加密算法,QQ在采用TEA算法时采用了16轮的加密,其加密复杂度比32轮减了许多。利用TEA算法的设计缺陷,使得快速破解QQ密码成为可能。

值得一提的QQ在利用TEA算法做加密时,采用了交织及随机填充随机数的技术,增加了密码分析者分析难度,从一定程度上保护了信息的安全。

更多信息请访问www.panakes.com

TEA(Tiny Encryption Algorithm) 是一种优秀的数据加密算法,虽然它比 DES(Data Encryption Standard) 要简单得多, 但有很强的抗差分分析能力,加密速度也比 DES 快得多,而且对 64 位数据加密的密钥长达 128 位,安全性相当好。 下面的程序来自卢开澄《计算机密码学》(清华大学出版社)。

补充:为了使这段程序更加实用,我将其整理为几个单元, 分别用于 Delphi 和 C++Builder 。包括对数据流 TMemoryStream 和字符串的加密/解密功能, 对字符串的加密/解密还通过 Base64 编码/解码,保持加密后的字符串仍为字符串。

// v[2] : 64bit data, k[4] : 128bit key

void encipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;

while ( n-- > 0 )
{
sum += delta;
y += ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
z += ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
}
v[0] = y;
v[1] = z;
}

void decipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0xC6EF3720, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;

// sum = delta << 5, in general sum = delta * n
while ( n-- > 0 )
{
z -= ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
y -= ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
sum -= delta;
}
v[0] = y;
v[1] = z;
}

8. 如何实现php的TEA算法

算法简单,而且效率高,每次可以操作8个字节的数据,加密解密的KEY为16字节,即包含4个int数据的int型数组,加密轮数应为8的倍数,一般比较常用的轮数为64,32,16,QQ原来就是用TEA16来还原密码的.


TEA算法

核心为:

#include<stdint.h>

voidencrypt(uint32_t*v,uint32_t*k){
uint32_tv0=v[0],v1=v[1],sum=0,i;/*setup*/
uint32_tdelta=0x9e3779b9;/*akeyscheleconstant*/
uint32_tk0=k[0],k1=k[1],k2=k[2],k3=k[3];/*cachekey*/
for(i=0;i<32;i++){/*basiccyclestart*/
sum+=delta;
v0+=((v1<<4)+k0)^(v1+sum)^((v1>>5)+k1);
v1+=((v0<<4)+k2)^(v0+sum)^((v0>>5)+k3);
}/*endcycle*/
v[0]=v0;v[1]=v1;
}

voiddecrypt(uint32_t*v,uint32_t*k){
uint32_tv0=v[0],v1=v[1],sum=0xC6EF3720,i;/*setup*/
uint32_tdelta=0x9e3779b9;/*akeyscheleconstant*/
uint32_tk0=k[0],k1=k[1],k2=k[2],k3=k[3];/*cachekey*/
for(i=0;i<32;i++){/*basiccyclestart*/
v1-=((v0<<4)+k2)^(v0+sum)^((v0>>5)+k3);
v0-=((v1<<4)+k0)^(v1+sum)^((v1>>5)+k1);
sum-=delta;
}/*endcycle*/
v[0]=v0;v[1]=v1;
}


PHP部分代码非我原创,大家可以了解一下这方面的知识

<?php
$date='8345354023476-3434';
$key='12345';
$t=newtea();
$tea=$t->encrypt($date,$key);
$eetea=$t->decrypt($tea,$key);
var_mp($tea);
var_mp($eetea);
classtea{
private$a,$b,$c,$d;
private$n_iter;
publicfunction__construct(){
$this->setIter(32);
}
privatefunctionsetIter($n_iter){
$this->n_iter=$n_iter;
}
privatefunctiongetIter(){
return$this->n_iter;
}
publicfunctionencrypt($data,$key){
//resizedatato32bits(4bytes)
$n=$this->_resize($data,4);

//convertdatatolong
$data_long[0]=$n;
$n_data_long=$this->_str2long(1,$data,$data_long);

//resizedata_longto64bits(2longsof32bits)
$n=count($data_long);
if(($n&1)==1){
$data_long[$n]=chr(0);
$n_data_long++;
}

//resizekeytoamultipleof128bits(16bytes)
$this->_resize($key,16,true);
if(''==$key)
$key='0000000000000000';

//convertkeytolong
$n_key_long=$this->_str2long(0,$key,$key_long);

//encryptthelongdatawiththekey
$enc_data='';
$w=array(0,0);
$j=0;
$k=array(0,0,0,0);
for($i=0;$i<$n_data_long;++$i){
//getnextkeypartof128bits
if($j+4<=$n_key_long){
$k[0]=$key_long[$j];
$k[1]=$key_long[$j+1];
$k[2]=$key_long[$j+2];
$k[3]=$key_long[$j+3];
}else{
$k[0]=$key_long[$j%$n_key_long];
$k[1]=$key_long[($j+1)%$n_key_long];
$k[2]=$key_long[($j+2)%$n_key_long];
$k[3]=$key_long[($j+3)%$n_key_long];
}
$j=($j+4)%$n_key_long;

$this->_encipherLong($data_long[$i],$data_long[++$i],$w,$k);

//
$enc_data.=$this->_long2str($w[0]);
$enc_data.=$this->_long2str($w[1]);
}

return$enc_data;
}
publicfunctiondecrypt($enc_data,$key){
//convertdatatolong
$n_enc_data_long=$this->_str2long(0,$enc_data,$enc_data_long);

//resizekeytoamultipleof128bits(16bytes)
$this->_resize($key,16,true);
if(''==$key)
$key='0000000000000000';

//convertkeytolong
$n_key_long=$this->_str2long(0,$key,$key_long);

//decryptthelongdatawiththekey
$data='';
$w=array(0,0);
$j=0;
$len=0;
$k=array(0,0,0,0);
$pos=0;

for($i=0;$i<$n_enc_data_long;$i+=2){
//getnextkeypartof128bits
if($j+4<=$n_key_long){
$k[0]=$key_long[$j];
$k[1]=$key_long[$j+1];
$k[2]=$key_long[$j+2];
$k[3]=$key_long[$j+3];
}else{
$k[0]=$key_long[$j%$n_key_long];
$k[1]=$key_long[($j+1)%$n_key_long];
$k[2]=$key_long[($j+2)%$n_key_long];
$k[3]=$key_long[($j+3)%$n_key_long];
}
$j=($j+4)%$n_key_long;

$this->_decipherLong($enc_data_long[$i],$enc_data_long[$i+1],$w,$k);

//(removepadding)
if(0==$i){
$len=$w[0];
if(4<=$len){
$data.=$this->_long2str($w[1]);
}else{
$data.=substr($this->_long2str($w[1]),0,$len%4);
}
}else{
$pos=($i-1)*4;
if($pos+4<=$len){
$data.=$this->_long2str($w[0]);

if($pos+8<=$len){
$data.=$this->_long2str($w[1]);
}elseif($pos+4<$len){
$data.=substr($this->_long2str($w[1]),0,$len%4);
}
}else{
$data.=substr($this->_long2str($w[0]),0,$len%4);
}
}
}
return$data;
}
privatefunction_encipherLong($y,$z,&$w,&$k){
$sum=(integer)0;
$delta=0x9E3779B9;
$n=(integer)$this->n_iter;

while($n-->0){
//Cv0+=((v1<<4)+k0)^(v1+sum)^((v1>>5)+k1);
//Cv1+=((v0<<4)+k2)^(v0+sum)^((v0>>5)+k3);
$sum=$this->_add($sum,$delta);
$y=$this->_add($y,$this->_add(($z<<4),$this->a)^$this->_add($z,$sum)^$this->_add($this->_rshift($z,5),$this->b));
$z=$this->_add($z,$this->_add(($y<<4),$this->a)^$this->_add($y,$sum)^$this->_add($this->_rshift($y,5),$this->b));
}

$w[0]=$y;
$w[1]=$z;
}
privatefunction_decipherLong($y,$z,&$w,&$k){
//sum=delta<<5,ingeneralsum=delta*n
$sum=0xC6EF3720;
$delta=0x9E3779B9;
$n=(integer)$this->n_iter;

while($n-->0){
//Cv1-=((v0<<4)+k2)^(v0+sum)^((v0>>5)+k3);
//Cv0-=((v1<<4)+k0)^(v1+sum)^((v1>>5)+k1);
$z=$this->_add($z,-($this->_add(($y<<4),$this->a)^$this->_add($y,$sum)^$this->_add($this->_rshift($y,5),$this->b)));
$y=$this->_add($y,-($this->_add(($z<<4),$this->a)^$this->_add($z,$sum)^$this->_add($this->_rshift($z,5),$this->b)));
$sum=$this->_add($sum,-$delta);
}

$w[0]=$y;
$w[1]=$z;
}
privatefunction_resize(&$data,$size,$nonull=false){
$n=strlen($data);
$nmod=$n%$size;
if(0==$nmod)
$nmod=$size;

if($nmod>0){
if($nonull){
for($i=$n;$i<$n-$nmod+$size;++$i){
$data[$i]=$data[$i%$n];
}
}else{
for($i=$n;$i<$n-$nmod+$size;++$i){
$data[$i]=chr(0);
}
}
}
return$n;
}
privatefunction_hex2bin($str){
$len=strlen($str);
returnpack('H'.$len,$str);
}
privatefunction_str2long($start,&$data,&$data_long){
$n=strlen($data);

$tmp=unpack('N*',$data);
$j=$start;

foreach($tmpas$value)
$data_long[$j++]=$value;

return$j;
}
privatefunction_long2str($l){
returnpack('N',$l);
}


privatefunction_rshift($integer,$n){
//convertto32bits
if(0xffffffff<$integer||-0xffffffff>$integer){
$integer=fmod($integer,0xffffffff+1);
}

//converttounsignedinteger
if(0x7fffffff<$integer){
$integer-=0xffffffff+1.0;
}elseif(-0x80000000>$integer){
$integer+=0xffffffff+1.0;
}

//dorightshift
if(0>$integer){
$integer&=0x7fffffff;//removesignbitbeforeshift
$integer>>=$n;//rightshift
$integer|=1<<(31-$n);//setshiftedsignbit
}else{
$integer>>=$n;//usenormalrightshift
}

return$integer;
}
privatefunction_add($i1,$i2){
$result=0.0;

foreach(func_get_args()as$value){
//removesignifnecessary
if(0.0>$value){
$value-=1.0+0xffffffff;
}

$result+=$value;
}

//convertto32bits
if(0xffffffff<$result||-0xffffffff>$result){
$result=fmod($result,0xffffffff+1);
}

//converttosignedinteger
if(0x7fffffff<$result){
$result-=0xffffffff+1.0;
}elseif(-0x80000000>$result){
$result+=0xffffffff+1.0;
}

return$result;
}

//}}}
}
?>

上面的是TEA的算法,XTEA的算法为:


#include <stdint.h>


void encipher(unsigned int num_rounds, uint32_t v[2], uint32_t const k[4]) {

unsigned int i;

uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;

for (i=0; i < num_rounds; i++) {

v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);

sum += delta;

v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);

}

v[0]=v0; v[1]=v1;

}


void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const k[4]) {

unsigned int i;

uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;

for (i=0; i < num_rounds; i++) {

v1 &#8722;= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);

sum &#8722;= delta;

v0 &#8722;= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);

}

v[0]=v0; v[1]=v1;

}


那PHP中只需要把运算的位置改下就OK


private function _teaencipherLong($y, $z, &$w, &$k) {

$sum = ( integer ) 0;

$delta = 0x9E3779B9;

$n = ( integer ) $this->n_iter;

while ( $n -- > 0 ) {

$y = $this->_add ( $y, $this->_add ( $z << 4 ^ $this->_rshift ( $z, 5 ), $z ) ^ $this->_add ( $sum, $k [$sum & 3] ) );

$sum = $this->_add ( $sum, $delta );

$z = $this->_add ( $z, $this->_add ( $y << 4 ^ $this->_rshift ( $y, 5 ), $y ) ^ $this->_add ( $sum, $k [$this->_rshift ( $sum, 11 ) & 3] ) );

}

$w [0] = $y;

$w [1] = $z;

}

private function _decipherLong($y, $z, &$w, &$k) {

// sum = delta<<5, in general sum = delta * n

$sum = 0xC6EF3720;

$delta = 0x9E3779B9;

$n = ( integer ) $this->n_iter;

while ( $n -- > 0 ) {

$z = $this->_add ( $z, - ($this->_add ( $y << 4 ^ $this->_rshift ( $y, 5 ), $y ) ^ $this->_add ( $sum, $k [$this->_rshift ( $sum, 11 ) & 3] )) );

$sum = $this->_add ( $sum, - $delta );

$y = $this->_add ( $y, - ($this->_add ( $z << 4 ^ $this->_rshift ( $z, 5 ), $z ) ^ $this->_add ( $sum, $k [$sum & 3] )) );

}

$w [0] = $y;

$w [1] = $z;

9. 我QQ号丢了申诉了但都7个小时了怎么还没结果啊

要24小时才有回复的,你慢慢耐心的等吧。。

一、怎样知道QQ被盗

1、正在上QQ,突然收到提示:“您的QQ已在别处上线”。说明有人正在盗你的QQ。

2、登录时提示密码不正确,重试N次也不行。说明你的QQ已经被盗。

二、有密码保护该怎么办

让他偷吧,去腾讯客服重设密码就可以了。详细方法>>

三、 没有密码保护或忘了密码保护的设置该怎么办

1、2秒钟内重新上线,抢在盗号者前面修改密码,并重新登录。

2、尽快去腾讯客服网站(可以点这里去)填写号码申诉表,让腾讯把QQ还给你。证明QQ是你的方法>>

有密码保护的朋友不一定就能顺利地找回密码,如果您如果当初注册的安全邮箱已失效(重新设定的密码会以邮件的方式发给你),或暂时无法接收并打开重设密码的确认邮件(比如网络不通),那你可以临时修改安全邮箱。详细方法>>

如果去填写了号码申请表,不管有没有通过腾讯的审核,它都会通过客户端消息或邮件的方式通知您申诉处理结果。您也可以自己去查询审核的结果。具体介绍>>

丢了QQ密码再来找很麻烦,不如采取措施来尽量避免QQ被盗带来的麻烦。

建议一:

立即申请QQ密码保护功能。这样就能一万个放心,不怕QQ被偷。申请QQ密码保护功能的方法>>

建议二:

了解老网友给大家介绍的《QQ密码窃取伎俩剖析与防盗策略》在平时的使用过程中引起充分注意。点击查看>>

建议三:

最新版的QQ2005增加了安全中心功能,可以有效防止您的QQ被盗。点这里了解QQ2005、下载QQ2005>>

建议四:

不要再挂机了。腾讯早就修改了升级方法,挂机已经没有多大意义,成为历史了。通过挂机把密码丢了倒是很容易。
建议五:

不要相信所谓充Q币、送Q币的广告,天下没有白吃的午餐。贪便宜就可能会失去你心爱的QQ号。看看骗子们有哪些花招>>

建议您做以下一些事情:

1、用些软件查杀一下你机器里的病毒木马。木马克星、木马杀客都可以。要到安全模式下去杀才稳妥哟。

2、仔细回想去过哪些网站挂机,赶快去取消,挂机早就没有意义了。

3、修改密码,整个复杂点儿的。

4、改用官方的QQ,不发用些不知名的杂牌QQ,不要去不知名的网站下载QQ。

还有 在论坛

少于500分的人的连接,不要轻易点~~

刷业务 刷Q B 会员的 勿信!!!

下载的东西先杀毒在用~

QQ被盗了可以这样找回来

很多人号码申诉时都如实的填写了自己相关真实的证明资料,却老是申诉被拒绝,其中很大的原因是填写资料时提供的证明资料没有足够说服力(特别是号码申诉的“其他证明资料”,我想这个问题一定困扰很多人,怎样填写一些只有你本人知道而别人无法得知的资料,这样的资料才更有说服力。),现我把我的一些申诉的具体方法和大家交流一下:

一、被盗号码QQ资料、历史密码、历史好友、用户个人身份资料、原有密码保护资料,这些资料只要填写半年前就可以了。若原有密码保护或证件号码忘了,就直接在申诉表里注明“忘记了”

二、其他证明资料的填写(16个别人无法知道或很难知道的证明资料):

1、该号码何处申请(如:声讯台、网站、QQ客户端或手机申请等。如果是会员或QQ行用户顺便写上支付方式。)

2、该号码是否用手机绑定过(有的话就填上曾经绑定过的手机号码)

3、QQ游戏(如:你是否用过QQ游戏里面的双倍积分卡等游戏道具)

4、如果忘了原始密码,就填写个申请旧密码保护时的密码,并注明是申请旧密码保护时的密码(当然,这个要在你记得的前提下,如果不记的可以不填)

5、是否赠送过别人QQ秀或某些腾讯的业务,有的话填上并注明获赠人的QQ号码(当然,这里最好能填3个月前的,因为盗号者可以用你密码在QQ帐户里查到你最近3个月Q币消费记录,填早的更有说服力)

6、你的网络硬盘密码、通讯录密码、QQ帐户密码。(这些密码也很有说服力,我想若不是号码的主人,就不大可能知道这些了吧。除非你把那些密码设的和你QQ密码一样)

7、如果你是会员,你还可以填写你QQ的客服电话的VIP服务密码。

8、该号码是否做过会员,有的话填上大体的时间。在会员服务期间是否克隆过好友,从哪个号码克隆的好友(如果有,这个也是个很好的证明)

9、是否向哪个群或QQ游戏家族捐献过Q币(有的话,还要填写群号码或家族名称)

10、是否获得别人赠送的QQ秀或腾讯的一些服务。

11、提供你QQ曾用过的昵称(要是号码是你的,以前的昵称总知道吧,要是不完全记的完整的昵称,至少也要提供以前昵称部分“文字”)

12、有QQ宠物的可以填写自己宠物领取的方式(如:七夕情侣宠物蛋活动、银行卡支付、好友赠送的或曾经赠送给哪些好友宠物等)

13、是否用QQ梦想地带的积分换过奖品或某些增值服务(有的话写清兑换的奖品送于何人或是自己使用)

14、是否申请过蓝钻、红钻、黄钻等业务,并写上这些服务的获得方式和时间(如 QQ帐户支付、手机支付、积分兑换或好友赠送的以及服务开通的大致时间)

15、是否上传过聊天记录(这些腾讯公司就有存档的,是十足的证明资料)

16、如果你是会员的话,是否参加过会员活动。

还有一点重要的------就是大家能申请尽量多申请些业务(大家可能说那需要很多QB,其实免费的也很多)这样申诉的时候就有更多的资料可写。

以上只是我的个人的一些见解,大家要是有更好的方法可以拿出来和大家分享。

希望密码丢失的人都能拿回密码,如果你觉的这些对你有帮助,帮忙顶一下,好让更多的人看到,帮助更多的人,谢谢!!!!

建议务必填写原始密码、原始资料,也就是刚申请QQ时让填写的密码及昵称;然后就是对前面所填资料的一个补充描述,如 QQ大约是什么时间申请的,最早加的几个好友是谁,历史密码大概的设置更改的时间,密码丢失的情况的一些描述,以及其他一些有效证据的提供。

以上所提供描述的,是我自己当初申诉时所填写的一写资料,并不代表按我所填就一定能申诉成功,只是给大家一个借鉴。

最后希望大家都能妥善的保管好自己的QQ,填写申诉表的时候一定要冷静、详细、准确,这样才能提高申诉成功的机会。

二、盗QQ一法:
一.行动:

2.1.准备工具:
2.1.1.扫空密码的工具:
这里可以列出很多,如:流光,x-scan,scanipc等
这里特别推荐用scanipc啦,这个工具不错,可能同步种植你要放进肉鸡的木马。
http://www.20cn.net/cgi-bin/download/down.cgi
这里可以得到!测试版好象比正式版还好。感觉罢了。

2.1.2.偷qq的软件:
也有很多的,我这里选择QQ杀手6.8.
http://xinxinyi.yeah.net
这里可以得到。

2.1.3.申请一个免费的邮箱。
你不是想就用自己的用着的吧!随你啦,不怕死就用啦
我还是建议新申请一个来接收肉鸡上发回来的qq和密码。

2.2.得到一个ip段:
方法还是很多:

2.2.1.你可以装个能看ip的qq。
得到一个qq上的人的ip,比如你得到qq上的人的ip是211.98.106.3 好,记下先,呆会有用。

2.2.2.也可以查找自己的ip,开始--运行--cmd--ipconfig。

2.2.3.用搜索 ip 。还会没有吗?

2.3.扫描同步植入:

2.3.1.添写ip段:
打开scanipc添上一个从上面或者那里都行得到的ip,比如是211.98.106.3。
那么你可以在ip那里 。
开始行添:211.98.106.1 结束行添:211.98.106.255 这是一个c类,你想多点,就自己添加啦!

2.3.2.添写同步种植:
2.3.2.1配置qq杀手:
先看看他的说明。
打开资料设置文件--Qqset.exe,不会设置,看看设置范例。
好了配置好了就确定,之后生成一个Msread.dt.
在运行专用捆绑工具--QQbin.exe 来捆绑哪个新生成Msread.dt文件。
捆绑成功后生成SHOWGOOD文件。这个是用于远程种植的.

2.3.2.2.回到scanipc在木马那里:
浏览,找到刚才配置后得到的SHOWGOOD文件,同时勾上同步植入

好了,都做好了,现在可以扫描了!多扫几个网段的.得到空密码的并自动种植木马。
累了,玩其他的拉,不过你得到了空密码也可以玩其他的东西。这么不说啦!

2.4查看邮箱
一段时间后,查看邮箱啦!是不是有不少收获,别玩太多,积积德。你都玩啊?告诉你我没玩过,这个是思路那是又写出来?我前言说了,想让你明白自己的qq也可以这样轻易就被别人偷了。

三、安全措施

3.1.空密码:
此中最大给人利用的地方是administrator没密码,或者其他用户是空密码。

3.2.弱密码
有弱密码,弱密码就是很容易给人猜到的密码,有什么比123 /456/0/1 等密码简单呢!

3.3.好的密码
数字+字母+特殊符号
例如:n1,。
这个密码随短,如果你想暴力破解。ok,你慢慢跑吧

3.4.安装放火墙吧!
这个最简单,下载个天网,默认设置都可以让你安全的啦!

破解QQ密码完全剖析

一. 传统破解QQ密码的方法

总是有人以各种各样的理由找我破解别人的Q密码,其实我也没有什么肯定可以破解的办法.总结现在破解QQ密码的手段,第一种是本地盗用,一般是利用木马或者伪装程序之类的东西从QQ使用者的机器上获取用民用工业输入的密码.这种方法的缺点是首先要获取对方主机的权限,以漏洞或者欺骗的方式进行破解.第二种是远程破解,掌握了QQ的通信方式就可以用程序模拟QQ到服务器上进行登录验证.然后用字典或者暴力方式来进行破解.由于网络速度等限制原因.这种方法的效率真一般比较低.对于较为复杂的密码很难破解出来.还有一种方法是通过其他间接的方式,例如破解对方邮箱等,或者腾讯的服务器有某些漏洞可以导致密码泄漏,这我就不得而知了.

其实除了以上这几种常见的攻击手段,还有一种以前使用得比较少的方法,那就是通过sniffer来捕获QQ通信信息.由于QQ所使用的通信协议的特殊性,可以利用捕获到的信息来穷举出登录密码.由于这种破解是在本地进行的.所以速度要比远程破解快一些.这种方法比较适合在网吧等地方盗取别人的QQ.

二. QQ通信协议介绍

要通过抓取数据包来破争QQ密码.首先要对QQ的通信协议有一定的了解.只是通过抓包来分析的话,工作量是相当巨大的.幸好现在网上有一些开源的QQ项目.例如lumaqq.perl-oicq等.这要关我们就可以轻易了解QQ基本的通信协议了.QQ的通信协议是一套基于二进制数据的自己开发的应用层网络协议.其中使用一些公司的加密算法.QQ基本通信协议支持udp和tcp两种基本协议方式.两种方式的基本数据结构是一样的.只是tcp包多了一个描述长度的头部.那么我们就来看看QQ的登录过程是怎么样.
首先QQ客户端向服务器发送一个请求登录令牌的数据包.服务器返回登录令牌.这个令牌是在服务器端生成的.和客户端的IP地址,版本信息等数据相关.以后会用到这个令牌去进行其他作.

在QQ客户端得到登录令牌之后.就会向服务器发送一个包含登录信息的登录请求.要求登录.服务顺会首先看看客户端的号码.I守址和版本是否可以在本服务器上进行登录.如果可以的话,就验证客户端的登录信息是否与服务器上保存的登录信息进行比较.匹配的就向客户端返回一个登录成功的数据包.不匹配返回登录失败.因为QQ的服务器有很多台.可能要分管不同的QQ版本.IP等.所以如果客户端的号码.IP地址和版本无法在本服务器进行登录.服务器就返蜀犬吠日一个重定向包.让客户端去另外一台服务器登录.其实整个QQ登录过程就是这么简单的两个步骤.

了解了QQ登录的过程后.我们还需要知道具人本的数据包格式.以便解析出我们需要的数据内容.QQ登录过程的数据包分为头部.内容和尾部三个部分.其中头的格式固定为:0x02客户端版本 命令 序列号 QQ号码. 其中0x02是1个字节的标志;客户端版本2个字节.用于表示QQ客户端的版本;命令2个字节.表示要发送的命令类型.例如请求登录令牌登录请求等;序列号是一个2字节的随机数,在一次QQ会话中通过它来确认回应包是否对应请求包.QQ客户端默认每次加1;QQ号码就是4字节的QQ号.对于服务器来说是每个字段是无所谓的.QQ登录过程数据包的尾部固定为0x03.

1. 请求登录令牌包

包内容就是对一次命令的具体信息,对于第一次发送的请求登录令牌包来说,包命令是0x0062,整个请求包如下所示;

而服务器返回包则相对复杂一些,如下所示
其中0x18表示登录令牌的长度,现在QQ默认的登录令牌长度是0x18.这个令牌是在服务器端生成的.具体的生成算法我们当然还无从得知,应该是参考了QQ客户端的I守址.端口和其他一些信息生成这个令版的,因为你把在A机器上得到的令牌用到B机器上,你就会登录不了.如果你把A机器上的IP给改了.你照样也登录不了.
2. 登录包.
对于我们嗅探QQ密码来说,最重要的就是这个登录包.在这里包含了和QQ密码相关的信息.登录包的具体结构如下;

其中初始密钥是一个16字节的随机数,用于本身的加密.这里最重要的就是密码密钥加密的一个空字符串.
所谓密码密钥就是用QQ口呤进行两次MD5加密后得到的密文,然后以这个密文作为密钥去加密一个空字符串,这次加密使用了反馈的TEA算法,加密结果放在QQ登录包里,让服务器去验证,由于QQ的加密算法使用特殊的填充机制使用QQ服务器可以验证出用户密码是否正确,这个会在后面进行详细的解释.QQ登录包里面还有一些诸如登录状态,登录令版和很多未知的内容.但是这些对于我们破解QQ密码来说都没有什么太大的作用.
需要特别提到的是,前面的请求登录令牌包是不加密的,而这个登录包除了初始密钥本身以外的部分都要用初始密钥进行加密,加密算法同样是反馈的TEA.
QQ服务器在收到这个登录包之后,首先要用初始密钥解密登录包后面的部分,如果解密成功,就会用保存在服务器上的密信息去解密密码密钥加密的那个空字符串密文,我现在还不确定QQ服务器上保存的是密码明文还是密码密钥.猜测是密码密钥.这样服务器就用密码密钥去解密那段16位密文,如果用户提交的密码是正确的.才可以解密成功.否则解密函数会返回空,认证就失败了.当验证QQ客户端密码准确无误后.就返回一个登录成功包.格式如下:

三. QQ的加密算法
了解了上面的QQ登录的通信协议之后还不足以破解QQ密码,我们还需要掌握QQ的加密算法.前面提到了,密码密钥是用户密码进行两次MD5加密之后得到的结果.然后再用空个结果作为密钥使用TEA算法进行加密.TEA是Tiny Encrypt Arithmetic的缩写.顾名思义就是一种比较简单的小型加密算法.它用一个16字节的密钥去加密一个8字节的明文.得到一个8字节的密文.也可以反向从密文解密出明文.具体的算法可以到网上搜索查阅.这里就不在赘述了.
但是QQ使用的TEA虽然是标准的TEA.但是QQ却使用了一种自己特殊的填充反馈机制,QQ消息被分为多个加密单元.每一个加密单元都是8字节.使用TEA进行加密.加密结果再作为下一个单元的密钥.如果明文本身的长度不是8的倍数.那么还要进行填充.使其成为8的倍数.填充的时候会用一个32位随机数存放于明文的开始位置.再在明文的最后用0填充为整个长度是8的倍数.由于会向后反馈这样即使对于相同的明文,因为使用了不同的随机数.也会产生完全不同的密文.

使用这种特殊的填充反馈算法所导致的结果就是,一段密文只能用加密它的密钥进行解密.如果使用不正确的密钥.就无法得到正确的填充结果.最常见的就是解密后得到的填充数值不是0,这样就判断解密失败.
服务器正式根据这种机制来确定客户端口的密码是否正确的.这也是我们破解QQ密的原理所在.

四. 穷举破解QQ密码

有了以上的思路.只要写出程序就可以实现QQ密码的破解了.首先是抓包.我使用了winpcap来抓包.这样在HUB环境下可以抓到所有的QQ包.在交换环境中.我们可以使用一些ARP欺骗工具.同样可以抓到特定IP所发出的包.还有QQ的加密算法的实现.参考网上的perl-oicq和lumaqq等代码也可以轻易实现.然后用字典或者暴力破解的方法对密文进行解密即可.解密的过程用伪代码表示如下:结果=decrypt(密文,MD5(MD5(密码))),如果结果不为空的时候就是正确的密码.

五. 实际破解过程

我写了一个程序来未例整个破解的过程.由于仅仅是用于示意.程序写得较为粗糙.加密算法都没有进行优化,这样在破解速度上并不是很快.如果用汇编去实现的话速度还能提高很多.具体的用法是这样的.

要使用这个程序必需首先安装winpcap3.0,这样你才能抓包.安装完winpcap后,直接运行qqscrak.exe.会出现如图2所示的界面.

图3
这样就开始sciff网络上所有的QQ包了.当有QQ进行登录的时候,程序会抓到QQ登录包.下面的密破解按钮就变为黑色.点击这个按钮,进行密码破解界面,如图4

[img][/img]
图4
可以看到QQ号码和对应的密码密钥加密的16字节密文,我们选择字典破解.打开相应的字典文件.点击开始破解,如果你的字典里面包含了对方密码的话就会弹出成功破角对方密码的对话框.如果试了很多字典都不行.也可以选择暴力破解.实际上就是穷举所有8位的字每和数字组合的密码.但是这种方法比较浪费时间.可能跑几年也跑池同来对方密码哦……

QQ网络骗术大曝光

最新案例: 发送虚假邮件骗取QQ资料

实际案例:尊敬的QQ用户您好:
首先,感谢您对我们的支持与关爱。在过去的6年里,腾讯和广大的朋友们一起一步步成长,一起成熟,一起努力,也一直坚持,才有了今天 的成绩!2005年我们会提供给大家更方便实用的服务和更贴心的沟通体验!
由于QQ密码保护服务在功能上的不完善,加之部分用户遗忘了早期注册的密码保护资料,致使密码丢失后不能及时取回。为了解决日益严重 的号码被盗问题,最大限度避免木马病毒等给QQ用户带来的伤害。我们将在部分号码段试行新的实名密码保护系统(SNPS)。新系统的推出将极大增强您使 用号码的安全性。会在现有密码保护基础上增加以下功能和特性:
1.发现QQ号码被盗后,使用新的实名安全识别码在第一时间可以把QQ号码锁定。防止盗号者删除您的好友,更改号码资料。及时保障您QQ 个人账户内Q币和游戏币不被转移和窃取盗用。
2.新系统采用最新的动态特征码技术,由于算法的不可逆加密,彻底杜绝暴力破解等其它因素导致的QQ号码密码被盗。即使您遗忘了密码保 护的回答,找回密码邮箱已停用仍可以轻松的取回密码。
3.简化了密码被盗后的取回流程。只一个步骤便可以把密码轻松重设,同时还可以对密码进行权限管理,作简单快捷,让您更放心。
新系统最后调试期将在部分号码段试行。如您收到此封邮件,我们会在确认您是号码的真正主人后,由系统回执给您号码唯一对应的实名安全 识别码。
请确认以下填写的内容准确性和详细性,这将是我们判断该号码属于您的重要依据。
※QQ号码:
※真实姓名:
※身份证号码:
※联系电话:
※详细地址:
※手机号码:
※QQ原始密码(申请该QQ号时的第一个密码):
※QQ历史密码(有多少提供多少,请用/隔开):
※证件类型(身份证/军官证/护照/其它证件/电话号码):
※证件号码:
※提示问题:
※问题答案:
※安全信箱:
注意:
1.待填写完毕(必要时复制表格)发送到我们专门设立的回执实名安全识别码的加密电邮: [email protected] ,资料确认后系统将及时对您进行回 执。
2.填写此表格并成功递交,即表示您保证以上所填内容完全准确,并同意任意一项内容失效均有可能导致丧失权利。请再次确认并务必保证以 上资料的准确性。如果您的资料不正确,我们将不做任何回执也不再另行通知。

阅读全文

与ctea加密相关的资料

热点内容
服务器匆忙什么意思 浏览:777
windows下载文件命令 浏览:89
绍兴加密防伪技术 浏览:52
linux清除缓存的命令 浏览:777
梁柱连接处梁的加密箍筋 浏览:101
安卓录屏大师如何弹出 浏览:652
cad命令详解 浏览:171
品牌云服务器提供商 浏览:324
加密投资者的心理 浏览:699
小米无命令 浏览:824
不要层层等命令 浏览:371
4k播放器怎样设置源码 浏览:953
二手冰箱压缩机多少钱 浏览:520
excelpdf转换器注册码 浏览:394
工作三年的大专程序员 浏览:729
java毕业设计文献 浏览:144
筹码集中度指标源码 浏览:483
listsortjava 浏览:187
plc闪光电路编程实例 浏览:300
socket编程试题 浏览:207