Автор оригинала: David Wong.
Предисловие
Печень в день, наконец, достигла третьего, рекордного. Это действительно хорошее блюдо~~~~
baby_reverse
Функция шифрования заключается в следующем
int __fastcall encode(const char *a1, __int64 a2)
{
char v3[32]; // [rsp+10h] [rbp-70h]
char v4[32]; // [rsp+30h] [rbp-50h]
char v5[36]; // [rsp+50h] [rbp-30h]
int v6; // [rsp+74h] [rbp-Ch]
int v7; // [rsp+78h] [rbp-8h]
int i; // [rsp+7Ch] [rbp-4h]
v7 = 18;
i = 0;
v6 = 0;
if ( strlen(a1) != 18 )
return puts("Your Length is Wrong");
puts("flag{This_1s_f4cker_flag}");
for ( i = 0; i < v7; i += 3 )
{
v5[i] = v7 ^ (a1[i] + 6);
v4[i + 1] = (a1[i + 1] - 6) ^ v7;
v3[i + 2] = a1[i + 2] ^ 6 ^ v7;
*(_BYTE *)(a2 + i) = v5[i];
*(_BYTE *)(a2 + i + 1LL) = v4[i + 1];
*(_BYTE *)(a2 + i + 2LL) = v3[i + 2];
}
return a2;
}Очень простая функция шифрования, разделенная на три группы
key = 'bIwhroo8cwqgwrxusi'
flag = ''
for i in range(0,18,3):
flag += chr((ord(key[i])^18) - 6) + chr((ord(key[i+1])^18) + 6) + chr(ord(key[i+2])^6^18)
print flag
#jactf{w0w_is_flag}Заменять
Функция шифрования заключается в следующем
v2 = a1;
if ( a2 != 35 )
return -1;
v4 = 0;
while ( 1 )
{
v5 = *(_BYTE *)(v4 + v2);
v6 = (v5 >> 4) % 16;
v7 = (16 * v5 >> 4) % 16;
v8 = byte_402150[2 * v4];
if ( v8 < 48 || v8 > 57 )
v9 = v8 - 87;
else
v9 = v8 - 48;
v10 = byte_402151[2 * v4];
v11 = 16 * v9;
if ( v10 < 48 || v10 > 57 )
v12 = v10 - 87;
else
v12 = v10 - 48;
if ( (unsigned __int8)byte_4021A0[16 * v6 + v7] != ((v11 + v12) ^ 0x19) )
break;
if ( ++v4 >= 35 )
return 1;
}
return -1;В этом и заключается идея взрыва
import string
byte_402150 = [0x32, 0x61, 0x34, 0x39, 0x66, 0x36, 0x39, 0x63, 0x33, 0x38, 0x33, 0x39, 0x35, 0x63, 0x64, 0x65, 0x39, 0x36, 0x64, 0x36, 0x64, 0x65, 0x39, 0x36, 0x64, 0x36, 0x66, 0x34, 0x65, 0x30, 0x32, 0x35, 0x34, 0x38, 0x34, 0x39, 0x35, 0x34, 0x64, 0x36,0x31, 0x39, 0x35, 0x34, 0x34, 0x38, 0x64, 0x65, 0x66, 0x36, 0x65, 0x32, 0x64, 0x61, 0x64, 0x36, 0x37, 0x37, 0x38, 0x36, 0x65, 0x32, 0x31, 0x64, 0x35, 0x61, 0x64,0x61, 0x65, 0x36, 0x00]
byte_4021A0 = [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01,
0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D,
0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4,
0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC,
0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7,
0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2,
0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E,
0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB,
0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB,
0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C,
0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5,
0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C,
0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D,
0x64, 0x5D, 0x19, 0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A,
0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,
0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3,
0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D,
0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A,
0xAE, 0x08, 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6,
0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E,
0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9,
0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9,
0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,
0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99,
0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16]
flag=''
v4=0
dic=string.ascii_lowercase+string.ascii_uppercase+string.digits+'{}_!%^&'
while(v4<35):
v8 = byte_402150[2*v4]
if (v8 < 48 or v8 > 57):
v9 = v8 - 87
else:
v9 = v8 -48
v10 = byte_402150[2*v4+1]
v11 = 16 * v9
if(v10 < 48 or v10 >57):
v12 = v10 -87
else:
v12 = v10 -48
for i in dic:
v6 = (ord(i)>>4)%16
v7 = (16*ord(i)>>4)%16
if(byte_4021A0[16*v6 + v7]==(v11+v12)^0x19):
flag += i
break
v4 += 1
print flag
#flag{Th1s_1s_Simple_Rep1ac3_Enc0d3}Вставьте сценарий, который большой парень решил с помощью Z3.
#-*-coding:utf-8 -*-
#flag{Th1s_1s_Simple_Rep1ac3_Enc0d3}
list_flag = [51, 80, 239, 133, 33, 32, 69, 199, 143, 207, 199, 143, 207, 237, 249, 60, 81, 80, 77, 207, 0, 77, 81, 199, 239, 251, 195, 207, 110, 159, 251, 4, 67, 195, 255]
byte_4021A0 = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187]
from z3 import *
def z3_solve(res_flag,byte_4021A0,flag1):
solve_flag = Solver()
flag2 = []
for i in range(35):
flag2.append(BitVec('v'+str(i),8))
for i in range(35):
solve_flag.add(( (16 * ((flag2[i] >> 4) % 16))+(16 * flag2[i] >> 4) % 16)== flag1[i])
check_flag = solve_flag.check()
print check_flag,type(check_flag)
res_model = solve_flag.model()
flag_final = ""
for i in range(35):
flag_chr =("%s"%(res_model[flag2[i]]))
flag_final = flag_final + chr(int(flag_chr))
print flag_final
def res_find(list_flag,byte_4021A0):
list_find = []
for i in list_flag:
res = byte_4021A0.index(i)
list_find.append(res)
return list_find
if __name__ == '__main__':
res = res_find(list_flag,byte_4021A0)
# for i in res:
# print i
z3_solve(list_flag,byte_4021A0,res)
print "Finish\n"На самом деле это не картинка.
Название дает картинку, бинуок
[email protected]:/mnt/c/Users/Desktop/juean$ binwalk Misc-JASEC.png DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 PNG image, 824 x 639, 8-bit/color RGB, non-interlaced 91 0x5B Zlib compressed data, compressed 140598 0x22536 End of Zip archive, footer length: 22
В названии есть молния. Сравните его с изображением обычной сжатой упаковки. эммм Во всяком случае, там нет заголовка zip.
Можно обнаружить, что 50 4B 03 04 был заменен на ja66
[email protected]:/mnt/c/Users/Desktop/juean$ binwalk Misc-JASEC.png DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 PNG image, 824 x 639, 8-bit/color RGB, non-interlaced 91 0x5B Zlib compressed data, compressed 137859 0x21A83 Zip archive data, at least v2.0 to extract, compressed size: 2605, uncompressed size: 11258, name: subject.zip 140598 0x22536 End of Zip archive, footer length: 22
Затем переднее отделение Ja66 распакуйте
import base64
flag = ""
for i in range(0,32):
f = open('./'+str(i)+'/'+str(i)+'.txt','r')
flag += f.read()
print base64.b64decode(flag)
#jactf{64se64_1s_50_c001}что
Название Описание
=E4=BD=9B= E6=9B=B0=EF=BC=9A=E6=A2=B5=E5=83=A7= E5=A5=A2=E6= A5=9E=E5=A5=A2=E5=90=89=E8=8B=A5=E5=A5=A2=E4= B8=8D=E5= B8=9D=E5=86=A5= E5=A4=9C=E6=98=AF=E7=BC=BD=E6=9C=8B=E7=BC=BD=E7=9C=9F=E7=89=B9= E4=BF=B1=E4=B8=8A=E7=BD=B0=E8=83=BD=E7=9A=A4=E5= AE=A4=E9=98=BF=E8= AB=B3=E6=98=8E=E4=B8=80=E5=88=87=E5=91=90=E9=99=A4=E6=A2=B5=E5=A7=AA=E7=BC=BD=E5=A9=86=E5=91=90= E4=BA=A6=E5=8F=83=E4=BE=84=E5=91=BC=E7=9A=A4= E4=B8=96=E5=93=86=E7=89=B9=E5=93=86=E6=95=85=E5=8B=9D=E8= AB=B3=E7=88=8D=E8= AC=B9=E6=99=BA=E7=9A=A4=E5=8F=83 =E5=AD=95=E9=80=9D=E8= AB=B3=E8= AC=B9=E6=BC=AB=E6= AD=BB=E5=8D=B3=E4=BE=84=E9=99=A4=E5=93=86=E9=80=9D=E4=BE=84=E6=98= AF=E5=A5=A2=E5=96=9D=E7=A4=99=E8=B1=86=E8= AB=B3=E6= A5=9E=E7=84=A1=E4=BF=B1=E8=80=85=E5=93=86=E5=BA=A6=E8=80=85=E3=80=82=E8= AB=B3=E7=9C=9F=E5=86=A5=E8=A8=B6=E4=BE=84=E5=8B=9D=E7=AB=9F=E8=97=9D = E5=A5=A2=E4= B8=8D=E4=BC=8A= E7=9A=A4=E8=AC=B9=E6=B6=85=E5=AD=95=E7=84=A1= E4=BB=96=E7=BE=85=E5=A4=A7=E5=BE=97=E9=97=8D=E5=93=86=E5=96=9D=E8=80 =B6=E5=83=A7=E7=84=A1=E7=BE=AF=E6=BB=85=E9=99=A4=E5=88=A9=E7=BC=BD=E5=A4=9A=E6=A2=B5=E5=A4=B7=E6=A2=B5=E6=A0=97=E7=BC=BD=E8=80=85=E5=AD=95=E8= AB=B3=E7=9B=A7=E7=9A=A4= E4=B8=89=E7=BD=B0=E5= AF=AB=E8=80=81=E6=A2=B5=E8=80 =B6=E5=AE=A4=E5=B8=9D=E6=A2=B5=E5= AF=AB=E7=BE=AF=E6=95=B8=E6=A2=B5=E7=9B=A1= E4=BE=84=E6=A0=97=E4=BE=84=E8=97=90= E4=BF=B1= E4=B8=96=E8= AB=B3=E4=B8=8A=E8= AB=B3=E5=A7=AA=E6=95=B8= E5=AE=A4=E5=A9=86=E7=BD=B0=E6=A7=83=E5=A5=A2=E8=A8=B6=E5=93=86=E5=A4=9A=E9=80=9D=E8=97=90=E9=81=93=E6=A2=B5=E6= A5=9E=E6=A2=B5=E5=8D=97= E4=BE=84=E8=BF=A6=E5=91=90= E7=9F=A5=E6=9C=8B=E6= A5=9E=E4=BE=84=E9=9B=A2=E5=91=90=E6=B2=99=E5=91=90=E6=99=BA=E9=81=AE=E5=A4=A7=E5=AE=A4=E7= A5=9E=E5=86=A5=E8=BC=B8=E6=AE=BF=E7=BC=BD=E6=A7=83=E6=A2=B5=E6=80=9B=E6=81=90=E8=88=8D=E7=9F=A5=E7=9A=A4=E8=BF=A6=E5=A5=A2=E8=88=AC=E8= AB=B3=E7=88=8D=E5=AF=AB=E6=BC=AB=E4=BC=8A= E4=BF=B1=E6=A0=97=E5=93=86=E4=BB=96=E4=BA=A6=E7=BC=BD=E6= A5=9E=E6=80=9B=E5=86=A5=E5=91=BC=E5=88=87=E4=BF=B1=E8=8F=A9=E8=88=8D=E5=91=90=E5= AF=A6=E6=A0=97=E5=A5=A2=E6=B3=A2=E6=91=A9=E8= AB=B3=E9=81=93=E7=BC=BD=E7=91=9F=E5=93=86=E5= AF=A6=E7=9A=A4=E7=88=8D=E5=8B=9D=E8=96=A9=E7=BD=B0=E8= AB=B8=E5=A5=A2=E8=88=AC=E8= AB=A6=E7=BD=B0=E6=98=8E=E7=BC=BD=E8= AB=A6=E5=B0=BC=E5=93=86=E6= A5=9E=E4=BD=9B= E4=BF=B1=E9=86= AF=E8= AB=B3=E6=BB=85=E5=BA=A6=E5=93=86=E6=89=80=E6=A7=83=E5=A7=AA=E9=BA=BC=E6=89=80=E6=81=90=E8= AB=B3=E4=BB=96=E4=BE=84=E5=AF=AB=E7=91=9F= E4=BE=84 =E6=89=80=E5=BE=97=E9=9A=B8=E5=93=86=E9=97=8D=E5=91=90= E6=8F=90=E7=9B=A7=E5=86=A5=E5=92=92=E5=A5=A2=E6=9B=B0=E5=91=90=E6=B2=99=E6=80=AF=E8=88=AC=E5=8D=97=E6=80=AF=E5=9C=B0=E7=BC=BD=E5=96=9D=E5=86=A5=E6=83=B3=E5=91=90=E7=9B=A7=E7=BD=B0=E8=AC=B9=E5=91=BC=E8=B7=8B=E7=BC=BD=E4=B8=8A=E5=A8=91=E8= AB=A6=E6=AD=BB=E4=BE=84=E8=BF=A6
Процесс решения проблем
Возможность печати в кавычках также является одним из распространенных методов кодирования в mime-почте. Как и Base64, он кодирует входную строку или данные в строку для печати, которая полностью состоит из ASCII. quopri quopri.декодирование() Декодирование доступный
Будда сказал: экстравагантность буддийского монаха, экстравагантность, благоприятность, экстравагантность и бессмертие-все это наказание, которое может обеспечить комнату. За исключением жены племянника и призыва племянника к мировому Дорадо, лучше знать, как обеспечить мировое Дорадо. Следовательно, смерть племянника означает, что смерть племянника означает, что он тот, кто может выпить слишком много. Ты знаешь правду, в nephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephnephfrom Бога великого Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бог Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Бога Я боюсь, что не смогу отказаться от своих знаний, но я не могу писать так хорошо, как могу. Вирджилио. Он также призвал кунбодхисаттву. Он призвал Бодхисаттву. Он призвал Бодхисаттву. Он призвал Бодхисаттву. Он призвал Бодхисаттву. Он призвал Бодхисаттву.
Поймите истинное значение слов Будды Справедливый, дружелюбный, свободный, справедливый, демократический, справедливый, гармоничный, свободный, справедливый, справедливый, справедливый, справедливый, справедливый, справедливый, справедливый, справедливый, справедливый, честный, честный, преданный, справедливый, справедливый, честный, честный, честный, честный, честный, справедливый, преданный, демократический, законный, процветающий, сильный, законный, дружелюбный, законный Основные ценности социализма, расшифрованные в флаге jactf{hexin_yufo_qp}
Маленькая расческа
Создание взрыва словаря
Crunch 11 11 - t 138364%%%%% - O / root / desktop / test.txt Airtrack-ng - w / root / desktop / test.txt tenda'u d07d90-01.cap
Семья Бесс три британских демона войны
Скрипт напрямую
$ python base.py ciphertext_ea88a4d420c804686a8899608e06130f.txt 1 using base16 decode sucess..... 2 using base16 decode failuer..... using base32 decode sucess..... 3 using base16 decode failuer..... using base32 decode failuer..... using base64 decode sucess..... 4 using base16 decode sucess..... 5 using base16 decode failuer..... using base32 decode sucess..... 6 using base16 decode failuer..... using base32 decode failuer..... using base64 decode sucess..... 7 using base16 decode sucess..... 8 using base16 decode failuer..... using base32 decode sucess..... 9 using base16 decode failuer..... using base32 decode failuer..... using base64 decode sucess..... 10 using base16 decode sucess..... 11 using base16 decode failuer..... using base32 decode sucess..... 12 using base16 decode failuer..... using base32 decode failuer..... using base64 decode sucess..... 13 using base16 decode failuer..... using base32 decode failuer..... using base64 decode failuer..... jactf{4(b64_32_16)}
Основатель Римской империи
В соответствии с методом шифрования Цезаря и форматом флага
a = 'h^_o`[pZi^i`'
b = ""
for j in range(0,90):
b= ""
for i in range(len(a)):
b += chr(ord(a[i])+i+2)
print bсовершенно секретная разведка
Название Описание
Название Описание И Сяокай вчера подслушал совершенно секретную информацию о разведке, а именно:,, можете ли вы помочь Сяокаю выяснить эту информацию?
Процесс решения проблем
import base64,libnum
enc = "WzI2NDAzMjMxMEwsIDQ5NTA2MzczNDFMLCA0MTg5MTM3MjM1TCwgMzUwMzY3NTkwNkwsIDExOTMyNzJMLCAzNzQ1MzA5NjhMLCA1MTg5MjgxNTMxTCwgMjUxNDIwMDI3MkwsIDQ0NTQzMDU1ODFMLCA2NDEwNzg1OTdMLCA0Mzk1OTMxNjU5TCwgMjcxNjQyNjU5OUwsIDQzNzUzOTE5NEwsIDM0NDgwMTM1OTZMLCAzMDcyMDcyMDlMLCA0NzUwODIwNjA2TCwgMzI1MDQwNzk5M0wsIDg1MzkwNTIwOUwsIDIxMDk3OTExNTlMLCAyNzE2NDI2NTk5TCwgMjEwNzg5OTU1NEwsIDQzOTU5MzE2NTlMLCAyNzk0Mzg0NTk4TCwgMjEwOTc5MTE1OUwsIDUyOTc3NzkwOTRMLCAxNDYwODc0Mjg2TCwgMTQ2MDg3NDI4NkwsIDc5NDkzMTY3OUwsIDc5NDkzMTY3OUwsIDU0NDcwNTE2MjJMLCA4NTM5MDUyMDlMLCAzMTk4MzQwMjE4TCwgMTE5MzI3MkwsIDE5MTIzMjMxMDFMLCA1Mjk3Nzc5MDk0TCwgMzA3MjA3MjA5TCwgMzIzMTU3MjYwOEwsIDMxOTgzNDAyMThMLCA1MTg5MjgxNTMxTCwgNTI3ODg5NTQ4TCwgNDk1MDYzNzM0MUwsIDI4MzkzNjY4MDVMLCAxMTE2NDU3MzU0TCwgNTI3ODg5NTQ4TCwgNTI5Nzc3OTA5NEwsIDMyNTA0MDc5OTNMLCA0NDU0MzA1NTgxTCwgNjUxMDM5MkwsIDMyNTA0MDc5OTNMLCAxNDYwODc0Mjg2TCwgMTA1OTAzNTEyOUwsIDMyMDAzNTk2MTJMLCA4NTM5MDUyMDlMLCAzMDcyMDcyMDlMLCAxNTY3NzkxMDFMLCAyMTQ1MzAxMzI4TCwgNTI3ODg5NTQ4TCwgMTA1OTAzNTEyOUwsIDU0NjgwMjUwNzJMLCAzNDQ4MDEzNTk2TCwgMjEwNzg5OTU1NEwsIDQxODkxMzcyMzVMLCAzNTAzNjc1OTA2TCwgMjY1MzQzNjExM0xd"
enc = base64.b64decode(enc)
enc_list = eval(enc)
flag = ""
print enc_list
d = 3960784897
n = 5520780427
for i in range(len(enc_list)):
m = pow(enc_list[i],d,n)
flag += chr(m)
print flag
#U2FsdGVkX1/8DKBmhvO87/SOLaawwxvAdHLB9AV62nC6LhXzhatpvBcg6tlK7Fs5В разделе расшифровка des jactf{So_easy_RSA_and_DES}
Байес
предмет
Были выданы два документа. Были выданы два документа.
int main()
{
string P("*****************");
string C("*****************");
int len = C.length();
for (int k = 0; k < len; k ++) {
int where = des_find(P, C[k]);
where = ((where * a) + b) mod x;
cout << P[where];
}
return 0;
}
int des_find(string p, int m)
{
for (int i = 0; i < p.length(); i++) {
if (m == p[i]) {
return i;
}
}
}Тема. Txt
Теперь известно, что кодовая книга, используемая шпионом (это та, которую разработал Байес), выглядит следующим образом: ” elfxrvjuwvjt1b4y3zibm1hc2rmqvnerkdisktmz2ha2xfcxdawenwqk5nzxj0e3l1aw9wftaxmj0otg3nju =” Теперь мы получаем их алгоритм шифрования и фрагмент зашифрованного текста данных: “gf9c {yq34khn3sowhcz3rzh3ckj3ndpm1bt7” Можете ли вы расшифровать текстовые данные?
Процесс решения проблем
#include#include #Define psize 65 // macro defines password table size using namespace std; int gcd(int m, int n); int init_gcd(int m, int n); int des_find(string p, int m); int main() { string P("zQWERTYUIOPxcvbnmasdfASDFGHJKLghjkl_qwZXCVBNMert{yuiop}0123498765"); String m ("gf9c {yq34khn3sowhcz3rzh3ckj3ndpm1bt7"); // clear text space, with known ciphertext String c; // store decrypted plaintext Int i = 2; // solve the number of all coprime Int A1; // store the inverse element for (i; i < PSIZE; i++) { if (gcd(i, PSIZE) == 1) {// it indicates that I and 28 are mutually prime at this time. /***Solving the inverse element of I at this time***/ a1 = init_gcd(i, PSIZE); For (int j = 0; J < psize; j + +) // control the traversal of B { Cout < < at this time: a = < I < < B = < J < < the inverse element of a is: "< A1 <" \ "; For (int k = 0; K < m.length(); K + +) {// each Chinese character stands two bytes, so it needs to be stored in two array spaces. Int where = des_find (P, m [k]); // match the position of ciphertext in plaintext space where = ((where - j)*a1) % PSIZE; if (where < 0) { where += PSIZE; } cout << P[where]; } cout << "\"" << endl; } } } return 0; } Int GCD (int b, int a) // find mutual prime { int temp; If (a < b) // determine the size { temp = a; a = b; b = temp; } if (b == 0) return a; Else return GCD (B, a% B); // recursion } Int init μ GCD (int m, int n) // extended Euclid algorithm { int i = 2; for (i; i < 28; i++) { if ((m*i) % n == 1) { return i; } } } Int des_find (string P, int m) // position matching function { for (int i = 0; i < p.length(); i ++) { //cout<
Следующие шаги Обобщите базовое семейство был Байес Об алгоритме и обратном преобразовании символов в базовый формат файла PyC Шифрование DES EBC CBC
Оригинал: “https://developpaper.com/2019-write-up/”