CTF练习 Log Crypto

Log

题目

在网络的深处,存在一个数字日志,记录着系统的起起伏伏。然而,最近出现了一个神秘的扫描器,频繁对系统进行攻击,你是数字侦探,被委派任务找出这个扫描器最为活跃的来源IP(出现重复按照日期最早的算)。
在这里插入图片描述

分析

考察日志统计:将日志放到excel里面,根据空格分列数据后,统计ip

1. 合并文件

copy access.log.?? log.txt

在这里插入图片描述

2.表格处理日志

菜单栏【数据】->【分列】,按空格为分隔符号分列。
根据ip进行计数,筛选出5条最高访问次数的ip地址,根据时间得到答案122.252.241.163

在这里插入图片描述

Crypto

题目

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2023/10/20 13:32
from Crypto.Util.number import *
from secret import flag
from sage.all import *
p=getPrime(512)
q=getPrime(512)
e1=getPrime(64)
e2=getPrime(64)
N1=p*q
m=bytes_to_long(flag)

c1=pow(m,e1,N1)
c2=pow(m,e2,N1)
print("e1="+str(e1))
print("e2="+str(e2))
print("c1="+str(c1))
print("c2="+str(c2))
print("N1="+str(N1))

# e1=15154862404842278851
# e2=12559619060348765633
# c1=129061960172987856775724689620907533499026278141684802370744431170694087890607127502915339002382505689659795160397409979050090218452041537036076275506611915488053630025767989561720487535340686208336631844553167509535880293221587474899887124847981825347648959302111450932627271156976419996034995472347544951449
# c2=57621466301898877108281867095517079215750508388186265340335297953845539349925113202177181161569783105547910074451664487640920748934076569428408005768732547421940449167664088574358990810191915352574582106797109129135395066184609996512061811750597951761474064458982455594553864401565110547456726090289659692691
# N1=148876844056751848788936329051800910086735763712250288782790925753925255702216990364054278400980334652791567181444332917549084106236043465869918288308031338783077559375541511604524094347767506492724631196191752263233136316358649035559987075168928231964069345159610191318194200350157839270833363343478696757073

分析

使用了两个公钥(n,e)来加密同一条信息m,使用共模攻击。

#N1=p*q
#c1=pow(m,e1,N1)
#c2=pow(m,e2,N1)

import gmpy2
from Crypto.Util.number import *
e1=15154862404842278851
e2=12559619060348765633
c1=129061960172987856775724689620907533499026278141684802370744431170694087890607127502915339002382505689659795160397409979050090218452041537036076275506611915488053630025767989561720487535340686208336631844553167509535880293221587474899887124847981825347648959302111450932627271156976419996034995472347544951449
c2=57621466301898877108281867095517079215750508388186265340335297953845539349925113202177181161569783105547910074451664487640920748934076569428408005768732547421940449167664088574358990810191915352574582106797109129135395066184609996512061811750597951761474064458982455594553864401565110547456726090289659692691
N1=148876844056751848788936329051800910086735763712250288782790925753925255702216990364054278400980334652791567181444332917549084106236043465869918288308031338783077559375541511604524094347767506492724631196191752263233136316358649035559987075168928231964069345159610191318194200350157839270833363343478696757073

g,s1,s2 = gmpy2.gcdext(e1,e2)
m = pow(c1,s1,N1)*pow(c2,s2,N1)%N1
print(m)
print("flag = ",long_to_bytes(int(m)))

共模攻击:
根据扩展欧几里得算法可以得到一组整数(s1,s2),使得 :
g,s1,s2= gmpy2.gcdext(e1,e2)
解密明文:
m = pow(c1,s1,n)*pow(c2,s2,n)%n

  • 若e1,e2存在最大公约数g=3,则对m进行开g次方根:
    m = gmpy2.iroot(m,g)[0]
  • 若e1,e2互质,则m = pow(c1,s1,n)*pow(c2,s2,n)%n
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值