日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【愚公系列】2022年01月 攻防世界-进阶题-MISC-76(warmup)

發布時間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【愚公系列】2022年01月 攻防世界-进阶题-MISC-76(warmup) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、warmup
  • 二、答題步驟
    • 1.下載附件
    • 2.ARCHPR
    • 3.盲水印
    • 4.得到圖片
  • 總結


一、warmup

題目鏈接:https://adworld.xctf.org.cn/task/task_list?type=misc&number=1&grade=1&page=4

二、答題步驟

1.下載附件

拿到題目,發現有一個圖片和一個壓縮包,嘗試打開壓縮包發現需要密碼,因此猜測圖片即為壓縮包的明文。

用WINRAR壓縮png圖片, 進行兩個raar進行明文crc驗證,用WINRAR軟件打開兩個文件對比cec32

發現crc32一樣可以進行明文工具,因為此處要使用ARCHPR進行壓縮包的破解工作

2.ARCHPR

使用ARCHPR進行明文攻擊

Advanced Archive Password Recovery 統計信息: 加密的 ZIP/RAR/ACE/ARJ 文件: C:\Users\Administrator\Desktop\warmup_3D87119B1FD69603E77BA1292A007C4B.zip 總計口令: n/a 總計時間: 3m 32s 157ms 平均速度(口令/): n/a 這個文件的口令 : 未找到 加密密鑰: [ e43a642a 8e424cdb eb7c6331 ]

解密文件會出現在目錄下

3.盲水印

盲水印腳本bwm.py

#!/usr/bin/env python # -*- coding: utf8 -*-import sys import randomcmd = None debug = False seed = 20160930 oldseed = False alpha = 3.0if __name__ == '__main__':if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) < 2:print ('Usage: python bwm.py <cmd> [arg...] [opts...]')print (' cmds:')print (' encode <image> <watermark> <image(encoded)>')print (' image + watermark -> image(encoded)')print (' decode <image> <image(encoded)> <watermark>')print (' image + image(encoded) -> watermark')print (' opts:')print (' --debug, Show debug')print (' --seed <int>, Manual setting random seed (default is 20160930)')print (' --oldseed Use python2 random algorithm.')print (' --alpha <float>, Manual setting alpha (default is 3.0)')sys.exit(1)cmd = sys.argv[1]if cmd != 'encode' and cmd != 'decode':print ('Wrong cmd %s' % cmd)sys.exit(1)if '--debug' in sys.argv:debug = Truedel sys.argv[sys.argv.index('--debug')]if '--seed' in sys.argv:p = sys.argv.index('--seed')if len(sys.argv) <= p+1:print ('Missing <int> for --seed')sys.exit(1)seed = int(sys.argv[p+1])del sys.argv[p+1]del sys.argv[p]if '--oldseed' in sys.argv:oldseed = Truedel sys.argv[sys.argv.index('--oldseed')]if '--alpha' in sys.argv:p = sys.argv.index('--alpha')if len(sys.argv) <= p+1:print ('Missing <float> for --alpha')sys.exit(1)alpha = float(sys.argv[p+1])del sys.argv[p+1]del sys.argv[p]if len(sys.argv) < 5:print ('Missing arg...')sys.exit(1)fn1 = sys.argv[2]fn2 = sys.argv[3]fn3 = sys.argv[4]import cv2 import numpy as np import matplotlib.pyplot as plt# OpenCV是以(BGR)的順序存儲圖像數據的 # 而Matplotlib是以(RGB)的順序顯示圖像的 def bgr_to_rgb(img):b, g, r = cv2.split(img)return cv2.merge([r, g, b])if cmd == 'encode':print ('image<%s> + watermark<%s> -> image(encoded)<%s>' % (fn1, fn2, fn3))img = cv2.imread(fn1)wm = cv2.imread(fn2)if debug:plt.subplot(231), plt.imshow(bgr_to_rgb(img)), plt.title('image')plt.xticks([]), plt.yticks([])plt.subplot(234), plt.imshow(bgr_to_rgb(wm)), plt.title('watermark')plt.xticks([]), plt.yticks([])# print img.shape # 高,, 通道h, w = img.shape[0], img.shape[1]hwm = np.zeros((int(h * 0.5), w, img.shape[2]))assert hwm.shape[0] > wm.shape[0]assert hwm.shape[1] > wm.shape[1]hwm2 = np.copy(hwm)for i in range(wm.shape[0]):for j in range(wm.shape[1]):hwm2[i][j] = wm[i][j]if oldseed: random.seed(seed,version=1)else: random.seed(seed)m, n = list(range(hwm.shape[0])), list(range(hwm.shape[1]))if oldseed:random.shuffle(m,random=random.random)random.shuffle(n,random=random.random)else:random.shuffle(m)random.shuffle(n)for i in range(hwm.shape[0]):for j in range(hwm.shape[1]):hwm[i][j] = hwm2[m[i]][n[j]]rwm = np.zeros(img.shape)for i in range(hwm.shape[0]):for j in range(hwm.shape[1]):rwm[i][j] = hwm[i][j]rwm[rwm.shape[0] - i - 1][rwm.shape[1] - j - 1] = hwm[i][j]if debug:plt.subplot(235), plt.imshow(bgr_to_rgb(rwm)), \plt.title('encrypted(watermark)')plt.xticks([]), plt.yticks([])f1 = np.fft.fft2(img)f2 = f1 + alpha * rwm_img = np.fft.ifft2(f2)if debug:plt.subplot(232), plt.imshow(bgr_to_rgb(np.real(f1))), \plt.title('fft(image)')plt.xticks([]), plt.yticks([])img_wm = np.real(_img)assert cv2.imwrite(fn3, img_wm, [int(cv2.IMWRITE_JPEG_QUALITY), 100])# 這里計算下保存前后的(溢出)誤差img_wm2 = cv2.imread(fn3)sum = 0for i in range(img_wm.shape[0]):for j in range(img_wm.shape[1]):for k in range(img_wm.shape[2]):sum += np.power(img_wm[i][j][k] - img_wm2[i][j][k], 2)miss = np.sqrt(sum) / (img_wm.shape[0] * img_wm.shape[1] * img_wm.shape[2]) * 100print ('Miss %s%% in save' % miss)if debug:plt.subplot(233), plt.imshow(bgr_to_rgb(np.uint8(img_wm))), \plt.title('image(encoded)')plt.xticks([]), plt.yticks([])f2 = np.fft.fft2(img_wm)rwm = (f2 - f1) / alpharwm = np.real(rwm)wm = np.zeros(rwm.shape)for i in range(int(rwm.shape[0] * 0.5)):for j in range(rwm.shape[1]):wm[m[i]][n[j]] = np.uint8(rwm[i][j])for i in range(int(rwm.shape[0] * 0.5)):for j in range(rwm.shape[1]):wm[rwm.shape[0] - i - 1][rwm.shape[1] - j - 1] = wm[i][j]if debug:assert cv2.imwrite('_bwm.debug.wm.jpg', wm)plt.subplot(236), plt.imshow(bgr_to_rgb(wm)), plt.title(u'watermark')plt.xticks([]), plt.yticks([])if debug:plt.show()elif cmd == 'decode':print ('image<%s> + image(encoded)<%s> -> watermark<%s>' % (fn1, fn2, fn3))img = cv2.imread(fn1)img_wm = cv2.imread(fn2)if debug:plt.subplot(231), plt.imshow(bgr_to_rgb(img)), plt.title('image')plt.xticks([]), plt.yticks([])plt.subplot(234), plt.imshow(bgr_to_rgb(img_wm)), plt.title('image(encoded)')plt.xticks([]), plt.yticks([])if oldseed: random.seed(seed,version=1)else: random.seed(seed)m, n = list(range(int(img.shape[0] * 0.5))), list(range(img.shape[1]))if oldseed:random.shuffle(m,random=random.random)random.shuffle(n,random=random.random)else:random.shuffle(m)random.shuffle(n)f1 = np.fft.fft2(img)f2 = np.fft.fft2(img_wm)if debug:plt.subplot(232), plt.imshow(bgr_to_rgb(np.real(f1))), \plt.title('fft(image)')plt.xticks([]), plt.yticks([])plt.subplot(235), plt.imshow(bgr_to_rgb(np.real(f1))), \plt.title('fft(image(encoded))')plt.xticks([]), plt.yticks([])rwm = (f2 - f1) / alpharwm = np.real(rwm)if debug:plt.subplot(233), plt.imshow(bgr_to_rgb(rwm)), \plt.title('encrypted(watermark)')plt.xticks([]), plt.yticks([])wm = np.zeros(rwm.shape)for i in range(int(rwm.shape[0] * 0.5)):for j in range(rwm.shape[1]):wm[m[i]][n[j]] = np.uint8(rwm[i][j])for i in range(int(rwm.shape[0] * 0.5)):for j in range(rwm.shape[1]):wm[rwm.shape[0] - i - 1][rwm.shape[1] - j - 1] = wm[i][j]assert cv2.imwrite(fn3, wm)if debug:plt.subplot(236), plt.imshow(bgr_to_rgb(wm)), plt.title(u'watermark')plt.xticks([]), plt.yticks([])if debug:plt.show()

保存requirements.txt文件

opencv-python==4.2.0.34 matplotlib==2.1.1

執行命令安裝對應包

pip install -r requirements.txt

提取圖中的盲水印

python3 bwm.py decode day1.png day2.png day3.png --oldseed

4.得到圖片


falg為:flag{bWm_Are_W0nderfu1}

總結

  • 盲水印
  • 明文攻擊
  • crc32碰撞

總結

以上是生活随笔為你收集整理的【愚公系列】2022年01月 攻防世界-进阶题-MISC-76(warmup)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠狠干免费视频 | 美女爆乳18禁www久久久久久 | 少妇一区二区视频 | 精品一区在线 | 日韩五码电影 | 91精彩视频在线观看 | 日本大胆人体视频 | 亚洲蜜臀av乱码久久精品蜜桃 | 欧美视频久久久 | av免费黄色 | 国产不卡精品视频 | 自拍视频第一页 | 在线成人影视 | 午夜视频色 | 男女羞羞无遮挡 | 操亚洲| 亚洲欧洲精品一区二区三区 | 狠狠干2018 | 亚洲一区自拍偷拍 | 亚洲欧美日韩在线不卡 | www四虎com| 无码人妻一区二区三区免费n鬼沢 | 蜜臀在线视频 | 欧美群妇大交群 | 自拍偷拍在线视频 | 色午夜视频 | 美女隐私无遮挡网站 | 午夜激情在线观看 | 国产激情成人 | 99精品乱码国产在线观看 | 中文字幕另类 | 美国黄色av | 亚洲国产成人精品91久久久 | 国产97在线观看 | 欧美一区二区在线免费观看 | 奇米在线播放 | 欧美老熟 | 男女视频在线观看免费 | 亚洲狼人社区 | 亚洲欧美日韩精品色xxx | 四虎成人精品在永久免费 | 大象传媒成人在线观看 | 一级免费看 | 国产91免费在线观看 | 草的我好爽 | av无码一区二区三区 | 好吊色这里只有精品 | 欧美三区在线 | 日本中文字幕成人 | 亚洲超碰在线 | 少妇性bbb搡bbb爽爽爽欧美 | 毛片久久久 | 卡一卡二视频 | 九色首页| 国产夫妻一区 | 免费看av大片 | 污视频导航 | 啪啪自拍 | 亚洲国产第一 | 少妇呻吟视频 | av中文字幕观看 | 免费午夜视频 | 日本久久久久久久久久 | 日本久久精品视频 | 国模叶桐尿喷337p人体 | 无码人妻精品一区二区三区在线 | 美女av在线播放 | 日本毛片在线 | 69午夜 | 国产麻豆一区二区 | 久草免费在线色站 | 97视频免费在线 | 精品在线视频免费观看 | 日韩一区二区在线免费观看 | 免费成人美女女电影 | 日韩精品欧美激情 | 中文字幕在线免费观看视频 | 久久99久久99精品蜜柚传媒 | 欧美www视频| 亚洲欧洲色| 国产精品17p | 中文字幕成人动漫 | 国产激情在线播放 | 97超碰色 | 日本午夜三级 | 男女那个视频 | 色乱码一区二区三区熟女 | 深夜免费视频 | 偷拍女澡堂一区二区三区 | 交视频在线播放 | 老师的肉丝玉足夹茎 | 激情小视频在线观看 | 一卡二卡三卡四卡五卡 | 黑人玩弄人妻一区二区三区免费看 | 国产在线高潮 | 日韩成人精品一区二区 | 亚洲免费观看在线 | 国产午夜精品久久 | 少妇一级淫免费放 |