[BUUCTF]洞拐洞拐洞洞拐

[BUUCTF] 洞拐洞拐洞洞拐

问题链接:http://buuoj.cn/challenges#洞拐洞拐洞洞拐

问题附件是一张图片。

一. 图片分析

查看图片,发现是由有规律的黑白像素构成的PNG图片,用Python脚本尝试以黑色为1,白色为0分别按行读取,发现00xxxxxx00.......的规律,按照char 型读取,发现都是可打印字符,读取及转换代码如下:

#使用:.\hb黑白像素块10.py 2239f085-4e8c-425b-9e8e-793c982c42f5.png
#author:CHTXRT
from PIL import Image
import sys

img = Image.open(sys.argv[1])
temp = ''
n = 0
for x in range(320):
    for y in range(320):
        n+=1
        if(img.getpixel((x,y))==(255,255,255)):
            temp += '0'
        else:
            temp += '1'
        if(n==8):
            n = 0
            print(chr(int(temp,2)),end='')
            temp = ''
img.close()    

得到结果:

52494646FC18000057415645666D742010000000010001000A000000140000000200100064617461D8........(以下省略n行)

二. 音频分析

上边那串数据看起来像个文件,把它扔到编辑器里面,发现 .wav文件头。

改名2333.wav 保存,用Audacity 打开如图所示:

是个单声道音频(important),观察音频,列出部分音阶:

-0.5 -0.5 0.5 -0.5 0 -0.25 -0.5 -0.25 1.0 -0.5 -0.75 ......(以后省略n项)

发现每段只有 8 种可能:-0.75 -0.5 -0.25 0.0 0.25 0.5 0.75 1.0

盲猜一波八进制,转换前半部分得到 115132127107 ,如果按3个拆分,可以得到 77 90 87 71 ,都属于Ascii 可打印字符,用Python 脚本进行转换,代码如下:

#使用:.\wv音频处理.py 2333.wav
#author: CHTXRT
import sys
import wave
import struct

wav = wave.open(sys.argv[1],'r')
frame = wav.getnframes()
data = wav.readframes(frame)
h = [0]*(len(data)//2)
for i in range(len(data)//2):
    h[i] = (struct.unpack('<h',data[i*2:i*2+2]))[0]
hmax = 32767
temp = ''
for i in range(0,len(h),10):
    temp += str(round(h[i]/hmax*4)+3)
    if(len(temp)==3):
        print(chr(int(temp,8)),end='')
        temp = ''
#其中 wave 转换采用的相关 wav 格式知识见下文第四节。

得到一段数据如下:

MZWGCZ33G44GGNRTHE3DEMZSGQ4TQMZQMY2WCNRZGZSDCOBYHBRGMMZUMFSWIMZSGVRTQY3DGIZWIZDBO5SDKML2PJYXUMRTGMZTGYLBPU

三. 编码分析

上边那段文字看起来像段密文,如果是做题做多了或者熟悉Base系列的同学可能会一眼盯真,看出前四个字正是flag的 Base32 编码,不熟悉的同学可以使用相关枚举脚本查看(懒得写了,以后可能补),解密明文如下:

flag{78c639623249830f5a696d1888bf34aed325c8cc23ddawd51zzqz23333aa}

四. wav 分析

本节作为补充知识,勉强算是我在编写上述脚本时学习的记录吧。

对于 wav 文件来说,它的音频由许多采样点构成,每个采样点占用 2 或 4 个字节(单声道音频就是 2 字节,双声道就是 4 个字节,高八位是左声道,第八位是右声道),每个声道的采样数据是一个短整数(int_8),同时我们还应该着重注意的是,wav 文件的数据是小端存储的,所以我们应该先读后四位,再读前四位 [1]。

#使用:.\wv音频处理.py 2333.wav
#author: CHTXRT
import sys
import wave
import struct

wav = wave.open(sys.argv[1],'r')
frame = wav.getnframes()
data = wav.readframes(frame)
h = [0]*(len(data)//2)
for i in range(len(data)//2):
    h[i] = (struct.unpack('<h',data[i*2:i*2+2]))[0]  #[1]  unpack方法中的第一个参数中,‘<’代表小端存储读取
hmax = 32767
temp = ''
for i in range(0,len(h),10):
    temp += str(round(h[i]/hmax*4)+3)
    if(len(temp)==3):
        print(chr(int(temp,8)),end='')
        temp = ''

以上内容仅供参考,水平不高,大佬见笑。

下一篇文章:对如何在博客园中添加音乐播放器及设置自动播放的研究 ——CSDN


作者:CHTXRT

出处:http://www.cnblogs.com/chtxrt/

本站使用「CC BY-SA 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

本文转载于网络 如有侵权请联系删除

相关文章

  • ☆打卡算法☆LeetCode 149. 直线上最多的点数 算法解析

    大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。一、题目1、算法题目“给定一个数组,数组中每个元素表示平面上一个点,求最多多少个点在一条直线上。”题目链接:来源:力扣(LeetCode)链接:149.直线上最多的点数-力扣(LeetCode)2、题目描述给你一个数组 points ,其中 points[i]=[xi,yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。示例1: 输入:points=[[1,1],[2,2],[3,3]] 输出:3复制示例2: 输入:points=[[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]] 输出:4复制二、解题1、思路分析这道题的题意是求最多有多少个点在同一条直线上。比如说有一条直线经过点i、j、k,那么i和j以及i和k所连的直线的斜率是相同的。那么就可以枚举出来所有的点与点所连直线的斜率,出现次数最多的斜率就是题目要求的答案。2、代码实现代码参考:classSolution{ publicintmaxPoints(int[]

  • 无服务器计算的机器学习,出路在哪里?

    机器之心分析师网络作者:仵冀颖编辑:H4O本文重点关注了基于无服务器计算的机器学习的最新研究进展,并通过四篇研究论文表明了无服务器ML框架在执行机器学习任务时性能远优于经典的基于粗粒度的VM集群的ML框架。一、机器学习和无服务器学习1.1、机器学习(ML)在应用场景中遇到了什么问题?近年来,机器学习(MachineLearning,ML)在图像识别、文本和语音处理等领域中广泛应用,改变了人们工作、生活的方式,带来了巨大的便利性。但同时,ML用户也面临着几个巨大的挑战,这些挑战极大地阻碍了ML的生产力和效率。首先,用户通常需要手动配置许多系统级参数,例如工作服务器/参数服务器的数量、内存分配、cpu数量、物理拓扑等。其次,用户需要指定大量与ML相关的参数,如学习率、学习算法、神经网络结构等,这些参数与系统级参数之间还存在各种交互作用。第三,ML工作流通常由多个阶段组成,包括预处理、训练、超参数搜索等等,每个阶段都有ML用户必须考虑的不同计算需求。由于ML的这些特点,在实际应用中经常会导致两个问题:一是,ML工作流中不同任务的异构性导致了训练工作流执行过程中资源的严重不平衡。ML用户需要单

  • var和let/const的区别

    let和const是ES6新增的命令,用于声明变量,这两个命令跟ES5的var有许多不同,并且let和const也有一些细微的不同,再认真阅读了阮一峰老师的文档后,发现还是有一些不知道的细节...本文中提到的链接,因为微信的限制,没有显示出来,查看文中链接,需要点击最下方的阅读原文链接博客、前端积累文档、公众号、GitHub内容:var和let/const的区别 块级作用域 不存在变量提升 暂时性死区 不可重复声明 let、const声明的全局变量不会挂在顶层对象下面 const命令两个注意点: const声明之后必须马上赋值,否则会报错 const简单类型一旦声明就不能再更改,复杂类型(数组、对象等)指针指向的地址不能更改,内部数据可以更改。 为什么需要块级作用域?ES5只有全局作用域和函数作用域,没有块级作用域。这带来很多不合理的场景:内层变量可能覆盖外层变量用来计数的循环变量泄露为全局变量vartmp=newDate(); functionf(){ console.log(tmp);//想打印外层的时间作用域 if(false){ vartmp='hellow

  • 3.从print到I/O

    为何对双引号念念不忘?>>>print("hello,world!") hello,world!复制  平x而论,既然在意双引号的去掉,为何不在意括号的去掉?甚至是print的去掉?前面说过,python程序就是一堆指令的集合,print()就是试图向计算机传递的指令,而print("hello,world!")这整个程序就是试图让计算机打印"hello,world!"的指令,所以当计算机最后显示打印结果时只关注print()指令中的数据,因此,屏幕显示就没有显示出print(),同理,更进一步,在将字符串转化成图像方阵显示在屏幕的时候,把字符串标识(双引号或单引号)也隐去掉了!print是I/O的一种方法1.print  print只是python程序输入输出(I/O)方法的一种,输出用户容易看懂的形式,而省掉其中相当多的细节,可以说是抽象化以及人性化吧。实际上,从程序执行到在屏幕上显示,经过一系列的过程,频繁的输入输出(I/O)势必增加系统的开销。输入输出(I/O)是计算机的一个子系统,使计算机和外界可以

  • 维基解密47941份torrent文件

    维基解密47941份torrent文件 下载地址:https://github.com/ddosi/hack 解压密码:www.ddosi.com详细目录文件查看地址:raw.githubusercontent.com/ddosi/hack部分目录文件如下:├─tibet-protests-avi │BBC_-_Dalai_Lama_interview_on_Tibet_protests_2008.03.16.avi.torrent │BBC_-_Deaths_Reported_in_Tibet_Protests.avi.torrent │BBC_-_Lhasa_Tibetan_Demanded_independent_from_China_rule.avi.torrent │BBC_-_The_world_condemn_China_killed_Tibet_Protesters.avi.torrent │BBC_F2_ABC_-_Protests_in_Tibet_Lhasa_against_China.avi.torrent │British_TV_-_Document_Tibe

  • 爬虫框架Scrapy(二)

    正文共:4018字5图 预计阅读时间:11分钟每日分享Therearetwowaysofspreadinglight:tobethecandleorthemirrorthatreflectsit.传播光的方法有两种:或成为一支蜡烛,或成为一面反射它的镜子。小闫语录:有位老师,曾送给我们一句话『要让别人因你的存在而感到幸福』,在这里将它送给大家。希望大家要么在创造阳光,要么在传递阳光。爬虫框架Scrapy(二)1.请求和响应1.为什么要三次握手?答:本质原因是避免服务器空耗资源。举个简单的例子:简单的回顾一下三次握手,客户端向服务器发起请求;服务器向客户端返回响应,同时也发起请求;客户端返回响应,确认连接。这是完整的三次握手。假设只有两次握手,客户端向服务器发送连接请求,因为网络问题丢包了,根据重传机制客户端再次发送请求,这时没有丢包,然后服务器返回响应,两次握手后建立了连接。客户端和服务器开始传输数据,但是在交流的过程中如果丢的包又回来了,然后服务器开了一个线程进行连接客户端,同时向客户端发起连接请求,但是这个数据包失效了,客户端不会再发消息了,服务器会一直等待,空耗资源,这是一种浪费

  • 南京新一代人工智能研究院孙明俊:AI芯片评测非一日之功,需要AI企业多参与

    镁客网新增【科创板报】栏目实时速递科创板最新消息图|南京新一代人工智能研究院院长孙明俊目前DNNbenchmarkV0.5评测工具已经在Github上开源。 策划&撰写:巫盼国内的芯片产业有多火?最明显的一个特征便是越来越多的新兴技术公司推出了适用于特殊场景的专用芯片。然而,在芯片“井喷”的背后,也暗藏着不少问题。最近,镁客网采访了中国信息通信研究院云大所人工智能部副主任、中国人工智能产业发展联盟(AIIA)总体组组长、南京新一代人工智能研究院院长孙明俊,请她从第三方的角度解读了AI芯片背后的基准评测问题。南京信新一代人工智能研究院,瞄准AI芯片评测南京有多重视人工智能?从南京经济技术开发区大力推进的智慧新港就能可见一斑,近几年,开发区除了引入像京东、科沃斯、创新工场这样的企业研究院,还和一些政府机构合作共建新型研究院,比如南京新一代人工智能研究院。去年,中国信息通信研究院(以下简称“信通院”)与南京经济技术开发区在前期合作的基础上,依托中国信息通信研究院在人工智能领域技术储备及产业资源等优势,合作共建了南京新一代人工智能研究院。据悉,信通院近年来在云计算、大数据、人工智能、宽

  • 云计算提供商进军混合云市场的注意事项

    2015年云市场显然是混合云唱起了主角,此前曾在私有云或是公有云市场有所成就的众多服务提供商们很多都开始转战混合云市场。根据Gartner的调查显示,四分之三的企业表示看好混合云模式。但是现实是混合云目前的市场使用率仅有15%。混合云市场的用户需求与应用落地之间存在巨大的落差。虽然大部分公司在未来3年内会使用某种形式的混合云计算架构,但是方案还不够成熟并且存在设置困难和运营复杂的问题。这就意味着,在混合云市场,先进入者未必能赢得先机,只有能提供更加亲近用户使用的解决方案才有更大机会。那么,未来混合云市场的竞争焦点会落在哪里呢?灵活的计费模式。众所周知,无论是公有云或是私有云的服务商们,可以降低成本都是他们的闯入云市场的关键利器。无论是公有云或是私有云环境,单纯基于用户使用流量的计费模式显然不能适应市场需求。用户使用云服务的首要关注点在于弹性,因此缺乏弹性计费模式的混合云服务实难为市场所接受。云数据中心布局。数据中心在全球市场较为合理的区域分布是云计算提供商未来竞争的焦点,我们也就不难理解为什么很多国内的云计算提供商纷纷布局海外市场,而国外云计算巨头如AWS和微软等为什么布局国内市场。混

  • 2012 ASP.NET/IIS MVP

    2012年4月1日晚上收到微软的邮件,告知我的ASP.NET/IISMVPRenew成功,从2006开始已经连任ASP.NETMVP7届。从2011年4月4日开始,ASP.NET和IIS的MVP合并了,也就是说我现在是ASP.NET/IISMVP。不知不觉在博客园写了八年博客,非常感谢dudu为我们创办的博客园,其他感谢的话就不说了,把提交给微软RenewMVP的文章这里贴下,一起回顾下2011年写的博客,过去的一年(2011年1月到2011年12月),累计发表了99篇技术文章。这99篇博客涉及到了.net、asp.net开发、WCF,sqlserver,windowsserver、windowsphone等技术方向,还有微博http://t.qq.com/geffzhang上有几千条的讨论和传播.NET的最新技术,欢迎收听我,来到腾讯微博讨论,也在新浪微博http://weibo.com/geffzhang上讨论,只是那里不够活跃,新浪微博和腾讯微博相比在工具便利性方面少了QQ这样的工具,每天也会登陆新浪微博,欢迎大家一起交流。在Linux/Unix架设ASP.NET的Web服务器 

  • 为什么不推荐Docker文件挂载?

    今天群里小伙伴发了一个疑问,它通过docker启动了个nginx,nginx的一些相关配置文件都是通过文件的方式进行映射的,疑问的点在于,在宿主机上修改了文件,为什么对应映射到容器里面的文件内容没有改变?话不多说,起个容器看dockerrun--namenginx-p8082:80-v/opt/nginx/nginx.conf:/etc/nginx.conf-dnginx Unabletofindimage'nginx:latest'locally latest:Pullingfromlibrary/nginx a2abf6c4d29d:Pullcomplete a9edb18cadd1:Pullcomplete 589b7251471a:Pullcomplete 186b1aaa4aa6:Pullcomplete b4df32aa5a72:Pullcomplete a0bcbecc962e:Pullcomplete Digest:sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9

  • 单向链表的花式玩法 → 还在玩反转?

    开心一刻   一天,朋友胃疼的难受,陪他去医院   医生:这些天你都吃了什么?   朋友:媳妇剩的饭我吃,孩子剩的饭我也吃   医生:你家不养狗的吗?   朋友:难道狗剩下的我也要吃?   我当场就笑岔气了 数据结构   关于什么是链表,本文不做过多介绍,不了解的小伙伴自行去充能   稍微带大家回顾下链表的分类,不做过多介绍,直接看图   单链表   双向链表   循环链表     单向循环链表     双向循环链表   环形链表     由单链表+单向循环链表组成 花式玩法   后续的场景都会基于某些特定类型的链表,大家不要太放飞自我   我也会在各个场景中明确指明基于那个类型,大家不要看偏了   单向节点 OneWayNode    虽然代码用java实现,但涉及到的算法实现是通用的,希望大家不要被开发语言所禁锢   链表反转   基本上指的是单链表的反转,大家就认为是单链表的反转   楼主在以往的面试过程中就遇到过这个问题,而且不止一次被面到   如果大家连这个都不会,赶紧偷摸code起来   递归实现,实现简单,也好理解   有递归,往往有其

  • 加密和验签:保密性、完整性和身份认证

    保密性、完整性和身份验证是必须了解的三大特性 保密性:数据加密解密。 完整性:防止数据被篡改。 身份验证:确认数据源的身份identity。   一、保密性:加密算法 密钥:对明文进行加密过程用到的保密的比特序列。 对称加密算法:就一个密钥 非对称加密算法:有公钥和私钥,如RSA。 加解密过程简述:A和B进行通信加密,B要先生成一对RSA密钥,B自己持有私钥,给A公钥--->A使用B的公钥加密要发送的内容,然后B接收到密文后通过自己的私钥解密内容。   二、完整性和身份验证:签名 对称加密算法领域的完整性和身份认证: 密码散列函数crytographichashfunction:该函数接受任意长度的输入并给出固定长度的输出(一般称为摘要digest),如SHA-256. 散列函数看起来不错,但如果有人可以同时篡改消息及其摘要,那么消息发送仍然是不安全的。我们需要将哈希与加密算法结合起来。在对称加密算法领域,我们有消息认证码messageauthenticationcodes(MAC)技术。MAC有多种形式,但哈希消息认证码hashmessageauthenti

  • STM32F103单片机MQTT安卓手机app控制继电器EMQ温度esp8266wifi

    MQTT与Socket区别: 通俗来讲:mqtt是对socket进一步封装。稳定性更好,消耗流量更小,连接更加安全,大公司物联网目前主流使用的传输协议是MQTT。 单片机型号:STM32F103C8T6 单片机运行的程序功能:通过单片机采集DS18B20温度,通过AT指令控制ESP826601设置透传模式,单片机运行MQTT协议,连接到EMQ等标准MQTT服务,手机APP端完成温度采集、继电器控制。 手机APP功能:手机app运行的是MQTT协议,作为客户端,连接EMQ,可以设置MQTT参数配置、远程采集温度、控制继电器。 淘宝扫码购买 提供免费公共EMQ服务使用,EMQ百万级别的mqtt连接承载力,配置简单,自己也可以买一台服务器配置

  • 反射机制

    1 反射的概述 1.1 什么是反射 每个.class文件被加载到内存后都是一个Class类的对象!例如Demo.class加载到内存后它是Class<Demo>类型的一个对象。     反射就是通过Class对象获取类型相关的信息。一个Class对象就表示一个.class文件,可以通过Class对象获取这个类的构造器、方法,以及成员变量等。 反射是Java的高级特性,在框架中大量被使用!我们必须要了解反射,不然无法学好JavaWeb相关的知识!   1.2 反射相关类 与反射相关的类: l Class:表示类; l Field:表示成员变量; l Method:表示方法; l Constructor:表示构造器。   2 Class类   2.1 获取Class类 获取Class类的三种基本方式: l 通过类名称.class,对基本类型也支持; Classc=int.class; Classc=int[].class; Classc=String.class l 

  • Checkstyle的安装与使用

    两种安装方法: 方法一:  1.Eclipse中,选择Help->SoftwareUpdates->FindandInstall  2.选择Searchfornewfeaturestoinstall选择Next  3.选择NewRemoteSite  4.输入更新地址 http://eclipse-cs.sourceforge.net/update  5.安装后重启即可  【参考自:http://blog.sina.com.cn/s/blog_4b93170a0102dw2a.html】 【这种方法实践了一下失败了】 方法二:  工具/原料 checkstyle.xml配置文件。下载地址http://pan.baidu.com/s/1o6I1fkA checkstyle插件包。下载地址http://pan.baidu.com/s/1o6LOSwM 【实际是在http://sourceforge.net/projects/eclipse-cs/官方网站上下载的插件包】 方法/

  • 简单爬虫,查博客浏览量

    简单的字符串操作,稍微有些不严谨,但还可以修改。直接运行下面的yeshu()方法就可以。 yeshu("http://www.cnblogs.com/cyrfr/");//博客园首页地址,一定是进去有文章那那个页面 functionyeshu($n) { $html=file_get_contents($n); $foun="default.html?page="; if(strpos($html,$foun)) { $d=(strpos($html,$foun))+18; $founend='">下一页'; $e=(strpos($html,$founend)); $lent=$e-$d; $page=substr($html,$d,$lent); $url=$n.$foun.$page; $htm=file_get_contents($url); $str="<divclass=\"pager\">"; $strend="页: <ahref"; $f=strpos($htm,$str)+25;

  • PMP图表(必背)

                             

  • java读取zip文件中的excel信息

    首先要使用到的及时是easyexcel,maven依赖如下 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.4</version> </dependency> 复制 创建对象读取 实体类 packagecom.wl.task; importcom.alibaba.excel.annotation.ExcelProperty; importlombok.Data; @Data publicclassTestEntity{ @ExcelProperty(value="姓名") privateStringusername; @ExcelProperty(value="性别") privateStringgender; @ExcelProperty(value="年龄") privateStringage; @ExcelProperty(value="籍贯")

  • 洛谷-P1097 [NOIP2007 提高组] 统计数字

    洛谷-P1097[NOIP2007提高组]统计数字 原题链接:https://www.luogu.com.cn/problem/P1097 题目背景 题目描述 输入格式 输出格式 输入输出样例 说明/提示 C++代码 题目背景 #警告:数据可能存在加强 题目描述 某次科研调查时得到了\(n\)个自然数,每个数均不超过\(1500000000(1.5\times10^9)\)。已知不相同的数不超过\(10000\)个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 输入格式 共\(n+1\)行。 第一行是整数\(n\),表示自然数的个数; 第\(2\)至\(n+1\)每行一个自然数。 输出格式 共\(m\)行(\(m\)为\(n\)个自然数中不相同数的个数),按照自然数从小到大的顺序输出。 每行输出\(2\)个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。 输入输出样例 输入#1 8 2 4 2 4 5 100 2 100 复制 输出#1 23 42 51 1002 复制 说明/提示 \(40\%\)的数据满足:\(1\len\le10

  • 算法 - 排序复习

    基本插入排序 插入排序是面向链表结构的排序方法 插入排序的基本思想: 对于数组arr=[a0,a1,a2,...,an] 从i=0开始,排好序的集合是{a0} 假设0-i个元素已经有序,有序集合是{a0,a1,...,ai} 取第ai+1个元素,将其与有序集合从ai开始向前依次比较,直到遇到比ai小的元素aj 将ai插入链表中aj元素后 第an个元素插入后{a0,...,an}集合是已经排好序的了 盗一张非常形象的动图:   快速排序 快速排序是对冒泡排序的一种改进 设置两个变量i、j,开始时,i=0,j=n-1 以第一个数组元素作为key,即key=a[0] 从j开始向前搜索,找到第一个小于key的值a[j],互换a[j]和a[i] 从i开始向后搜索,找到第一个大于key的值a[i],互换a[j]和a[i] 直到i==j时,第一次排序完成,此时key位置前面的数字都小于key,后面的数字大于key 对key前面的区间和后面的区间再分别进行排序,直到所有递归区间全部排序完成 盗一张维基百科的图:  

  • 解决Scala Play框架在Git Bash运行的异常:Could not find configuration file ../framework/sbt/sbt.boot.properties

    GitBash+ConEmu可以模拟Linux强大的命令行。不过在结合Scala和Play时,需要注意如下事项: 1.Scala的安装在64位操作系统下,默认会放在“C:\ProgramFiles(x86)\”。更改此目录使其安装在没有空格和没有括号的目录下。 2.chmoda+x scala,使此脚本具有执行权限。 3.安装完Play2后,因为路径原因会出现“Couldnotfindconfigurationfile../framework/sbt/sbt.boot.properties”的问题,此时更改两个文件: $PLAY_HOME\framework\build:将-Dsbt.boot.properties=`dirname$0`/sbt/sbt.boot.properties改成-Dsbt.boot.properties=sbt.boot.properties  $PLAY_HOME\play:将 -Dsbt.boot.properties=$dir/framework/sbt/play.boot.properties改成-Dsbt.boot.

相关推荐

推荐阅读