首页 > 其他分享 >Week1

Week1

时间:2023-01-14 18:47:11浏览次数:49  
标签:begin end key stream -- bmatrix Week1

WEEK1
附件获取,密码:hadc

Crypto

兔兔的车票

picture只有0-14,然而原文异或是0-15,所以肯定有个图片就是本身。也就是key的某一个,有一个enc = flag ^ key某一个。所以两两异或可以弄出来。

exp

from PIL import Image
from Crypto.Util.number import *
from random import shuffle, randint, getrandbits

sampleImg = Image.open('./兔兔的车票/attachment/pics/enc0.png')
width = sampleImg.width
height = sampleImg.height

def xorImg(keyImg, sourceImg):
    img = Image.new('RGB', (width, height))
    for i in range(height):
        for j in range(width):
            p1, p2 = keyImg.getpixel((j, i)), sourceImg.getpixel((j, i))
            img.putpixel((j, i), tuple([(p1[k] ^ p2[k]) for k in range(3)]))
    return img

im = Image.open(f'./兔兔的车票/attachment/pics/enc1.png')
for j in range(2, 16):
    im_j = Image.open(f'./兔兔的车票/attachment/pics/enc{j}.png')
    img = xorImg(im, im_j)
    img.save(f'./兔兔的车票/attachment/res/dec{j}.png')

image

RSA

利用在线网站分解质因数。

exp

from Crypto.Util.number import *
c = 110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582
n = 135127138348299757374196447062640858416920350098320099993115949719051354213545596643216739555453946196078110834726375475981791223069451364024181952818056802089567064926510294124594174478123216516600368334763849206942942824711531334239106807454086389211139153023662266125937481669520771879355089997671125020789
p = 11239134987804993586763559028187245057652550219515201768644770733869088185320740938450178816138394844329723311433549899499795775655921261664087997097294813
q = 12022912661420941592569751731802639375088427463430162252113082619617837010913002515450223656942836378041122163833359097910935638423464006252814266959128953
e = 65537

phi = (p-1)*(q-1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))

Be stream

给了一个递推式:

\[stream(n) = \left\{\begin{matrix}key[0],n = 0 \\key[1],n=1 \\4stream(n-1)+7stream(n-2),n\ge 2 \end{matrix}\right. \]

要我们算water = stream((i//2)**6) % 256.这个n很大,不可能通过递归去算,考虑矩阵快速幂简化递归。

通项:

\[X_{n-1} = \begin{bmatrix}stream(n-1)&stream(n-2)\end{bmatrix}. \]

构造乘幂矩阵:

\[A =\begin{bmatrix}4& 1\\7&0\end{bmatrix}. \]

递推式就化简成了:

\[X_n = X_{n-1} \times A=X_1\times A^{n-1}.\newline \begin{bmatrix}stream(n)&stream(n-1)\end{bmatrix}=\begin{bmatrix}key[1]&key[0]\end{bmatrix}\times\begin{bmatrix}4& 1\\7&0\end{bmatrix}^{n-1}. \]

我们要计算stream(n), 就是取出\(X_n\)的第一项。

exp

import numpy as np
enc = b'\x1a\x15\x05\t\x17\t\xf5\xa2-\x06\xec\xed\x01-\xc7\xcc2\x1eXA\x1c\x157[\x06\x13/!-\x0b\xd4\x91-\x06\x8b\xd4-\x1e+*\x15-pm\x1f\x17\x1bY'
key = [int.from_bytes(b"Be water", 'big'), int.from_bytes(b"my friend", 'big')]
X = [key[1], key[0]]
A = [[4, 1], [7, 0]]
X = np.matrix(X)
A = np.matrix(A)
def stream(i):
    if i == 0:
        return key[0]
    elif i == 1:
        return key[1]
    else:
        ans = X*(A**(i-1))
        return ans.tolist()[0][0]
flag = b''
for i in range(len(enc)):
    water = stream((i//2)**6) % 256
    flag += bytes([water ^ enc[i]])
print(flag)

神秘的电话

morse密码解出来是

-----/··---/··---/···--/·/··--·-/·--·/·-·/··/··/-···/·-··/-·--/··--·-/··--·-/····/---/-·/·--/·-/··--·-/·---/--/--·/····/··--··/··-·/--·/-·-/-·-·/--·-/·-/---/--·-/-/--/··-·/·-·/

0223E_PRIIBLY__HONWA_JMGH?FGKCQAOQTMFR

encrypted_message.txt里面是base64密文,解出来是这样的:

几个星期前,我们收到一个神秘的消息。但是这个消息被重重加密,我们不知道它的真正含义是什么。唯一知道的信息是关于密钥的:“只有倒着翻过十八层的篱笆才能抵达北欧神话的终点”。

猜测栅栏解密,北欧神话的终点映射的是什么解密就不清楚了。但应该都是古典密码,2023都在一块。

传统栅栏和W栅栏都试了一下,发现18栏的W栅栏符合要求:

rmocfhm_wo_ybipe2023_ril_hnajg?katfqqg

猜测最后的加密是维吉尼亚,爆破密钥

welcome_to_hgame2023_and_enjoy?hacking

部分修正以后得到flag:

hgame{welcome_to_hgame2023_and_enjoy_hacking}

密钥:vidar

标签:begin,end,key,stream,--,bmatrix,Week1
From: https://www.cnblogs.com/Lovechan/p/17052334.html

相关文章

  • HGAME 2023 WP week1
    WEEK1webClassicChildhoodGame一眼顶真,直接翻js文件,在Events.js中找到mota(),猜测是获取flag,vara=['\x59\x55\x64\x6b\x61\x47\x4a\x58\x56\x6a\x64\x61\x62\x46\x......
  • ACM预备队-week10(图论3)
    1.Einstin学画画:题目链接:P1636Einstein学画画-洛谷|计算机科学教育新生态(luogu.com.cn)1#include<bits/stdc++.h>2usingnamespacestd;3intvis[1005];......
  • 2023寒假训练Week1
    Day1今天主要在补之前各种比赛的题目AcWing4653.数位排序#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;int32_tmain(){intn,m;......
  • 机器学习技法---(Week1)Linear Support Vector Machine
      技法的课,相对更关注算法,希望1个月内搞掂~课程介绍  共计16周课程,主要内容:哲学上直观的理解、关键理论、核心算法和实际操作的注意点。围绕特征变换,本次课程涉及到以......
  • week1-homework
    week01-homework1,图文并茂解释开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?参考文档:各大开源协议的比较_Robin_zero的博客-CSDN博客_开源协议对比参考文档:细......
  • NewStarCTF-WEEK1-Crypto-ezrsa复现
    2022-NewStar-Week1-ezrsa复现题干assertlen(flag)%5==0cnt=len(flag)//5flags=[flag[cnt*i:cnt*(i+1)]foriinrange(5)]可知flag分五段。第一段m......
  • HNCTF [Week1]Interesting_http
    HNCTF[Week1]Interesting_http五毛钱翻译:请用post给我一个wantBurpSuite抓包传参<want>参数更改传参方式发送到'重发模块'---->五毛钱翻译:你还要告诉我你......
  • 0xgame2022 PWN week1-4
    0xgameweek1pwn1签到的nc,catflagpwn2ret2backdoor,一个栈溢出#encoding=utf-8frompwnimport*importosimportsysimporttime#fromae64importAE64#fro......
  • BUUCTF [NewStarCTF] Week1 WEB NotPHP 详解
    NotPHP<?phperror_reporting(0);highlight_file(__FILE__);if(file_get_contents($_GET['data'])=="WelcometoCTF"){if(md5($_GET['key1'])===md5($_GET['k......
  • NewStarCTF学习笔记-WEEK1
    WEEK1returntotext[text区域]​ 通过向栈上堆砌长度足够且合适的"垃圾信息"改写ret指令指向的地址,执行对应函数​ 注意点:保护,遇上Canary要进行绕过常见的Cana......