能力值:
( LV7,RANK:110 )
|
-
-
2 楼
求赏金
int main(int argc, char* argv[])
{
int iX = 0;
int iY = 0;
for (iX = 0; iX <= 0xff; iX++)
{
for (iY = 0; iY <= 0xFF; iY++)
{
int ia = 0x32^iX;
int ib = 0x30^iY;
if (ia + ib == 0xF2)
{
printf("0x%X 0x%X\r\n", iX, iY);
}
}
}
printf("-----------\n");
for (iX = 0; iX <= 0xff; iX++)
{
for (iY = 0; iY <= 0xFF; iY++)
{
int ia = 0x42^iX;
int ib = 0x40^iY;
if (ia + ib == 0x12)
{
printf("0x%X 0x%X\r\n", iX, iY);
}
}
}
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE=地狱怪客;1399277]求赏金
int main(int argc, char* argv[])
{
int iX = 0;
int iY = 0;
for (iX = 0; iX <= 0xff; iX++)
{
for (iY = 0; iY <= 0xFF; iY++)
{
int ia ...[/QUOTE]
先等等看,其他人的答案。。。这种方式太暴力了吧
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
[QUOTE=地狱怪客;1399277]求赏金
int main(int argc, char* argv[])
{
int iX = 0;
int iY = 0;
for (iX = 0; iX <= 0xff; iX++)
{
for (iY = 0; iY <= 0xFF; iY++)
{
int ia ...[/QUOTE]
如果,是128位的,遍历的话,得遍历到天荒地老
还是得靠数学分析才行啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这是非线性的运算,暂时只能用暴力破解
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
赏金猎人呢。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
简单看来
{0b00000001,0b0000000}不是最低位的解
那么
{0bxxxxxxx1,0bxxxxxxx0}一定不是解
不过好像1bit1bit回溯,也不怎样..
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
位宽度,符号参与计算等是大问题,如下图,点交叉部分应该就是方程组的解了,抛砖引玉~
# -*- coding: utf-8 -*-
#-----------------------------------------------
#求解异或方程组
#0x32^X + 0x30^Y = 0xF2
#0x42^X + 0x40^Y = 0x12
#-----------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
def equation1(x):
return np.bitwise_xor(0xf2 - np.bitwise_xor(0x32,x),0x30)
def equation2(x):
return np.bitwise_xor(0x12 - np.bitwise_xor(0x42,x),0x40)
x = np.linspace(0,255,256,dtype=np.ubyte)
y = equation1(x)
z = equation2(x)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="0x32^X + 0x30^Y = 0xF2",color="red",linewidth=2)
plt.plot(x,z,"b--",label="0x42^X + 0x40^Y = 0x12")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Bitwise XOR equation set")
plt.ylim(-255,255)
plt.grid(True)
plt.legend()
plt.show()
for i in range(-255,255):
if(equation1(i) == equation2(i)):
print "x = %u, y = %u" % (i, equation1(i))
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
是不是利用异或运算的性质来计算更简单些。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
0x32^X + 0x30^Y = 0xF2 (1)
0x42^X + 0x40^Y = 0x12 (2)
(1)^0x32 - (2)^0x42,化简得到一个矛盾方程,无解。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
使用消元法,利用异或运算,是能解出来的。
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
50^X + 48^Y = 242
66^X + 64^Y = 18
50^X + 48^Y - 242 = 0
66^X + 64^Y - 18 = 0
50^X + 48^Y - 242 = 66^X + 64^Y - 18
50^X + 48^Y = 66^X + 64^Y + 224
---
0x32^X + 0x30^Y = 0x42^X + 0x40^Y + 0xE0
---
溢位的话...?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
头大了,x=y=0x48 ,可是不知道怎么求解
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
你这还是暴力破解,128位 256位时怎么办?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
正在找类似的解决方案,谢谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
是没想到获得确定解,只能画出图来观摩解分布情况,然后在关心的区间内暴力匹配
|
|
|