本文目录
- extract是什么意思
- 请教词源学角度讲解extract这个词
- extract命令如何使用
- derive和extract都有提取的意思,怎么区别
- extract什么意思怎么读速求啊~
- install和extract什么意思
- 近义词辨析:extract 和abstract 有什么区别
- 怎样破解文档密码
- ExtractAllFiles是什么意思
- 文件密码破解
extract是什么意思
extract的意思有两种,分别为作名词时的含义和作动词,也就是及物动词时的表达含义,而其具体的详细解释和实际应用如下:
1、extract作名词n.意思为:摘录;选录;选曲;节录;提取物;浓缩物;精;汁。
(1)表示摘录;选录;选段等含义时的实际应用:
I would like to quote two extracts from the book。
我很想引用这本书的两段文字。
(2)表示提取物;浓缩物;精;汁时的实际应用:
Cooperating with the extract liquid,the result is better。
配合精华液使用,效果更佳。
2、extract作及物动词vt.意思为:提取;提炼;索取;选取;摘录;选录。
(1)表示选取;摘录;选录等含义时的实际应用:
She extracted passages for the students to translate。
她选了些短文让学生翻译。
(2)表示提取;提炼;索取等含义时的实际应用:
Bratti means to extract the utmost possible amount of pleasure。
布拉蒂决计从生活里榨出尽可能多的快乐来。
扩展资料
extract相关词组及含义
1、make extract 意思:精选,摘录。
2、read extract 意思:阅读选录。
3、reproduce extract 意思:复制选录。
4、meat extract 意思:肉汁。
5、extract from 意思:从……摘录。
请教词源学角度讲解extract这个词
你好,知道英语牛人团为你解答。
ex,是……以外,也指由内而外的动作方向
tract作为名词有某个地带和一片土地的意思
从土地里往外挖掘,那extract连起来自然就是提取、取出、发掘的意思啦。
希望对你有帮助 :-)
-act
extract命令如何使用
Extract.exe 是 Windows 9X 的纯DOS解压缩文件,extract 的语法如下:
extract /a 《 cabinet》 《 filename》 /l 《 destination》
·cabinet 是 cab 文件名称
·filename 是你要从 cab 取出的文件名称
·destination 是文件解出后要摆放的位置
·《 》只是用来标记说明的,不是「命令」的一部分,每一参数间必须用空格分开。
·如果你有 DOS 使用经验,可以使用 /? 参数(extract /?)来看一下 extract 的指令说明。
举个实际的例子会比较容易明白,假设,我要解 Shell.dll 到 C:\\Windows\\System下(Shell.dll 是在 precopy1.cab 里)假设我的光驱代号是 F,你换成你的光驱代号就行了。(就是指向你 cab文件的所在路径)
extract /a /e /l c:\\windows\\system f:\\win98\\precopy1.cab shell.dll
extract 也可以接受「万用字符」* 符号。
例如我要把 win95_02.cab 里的所有 txt 文件解压到 c:\\windows 下,就是:
extract /a /e /l c:\\windows f:\\win95\\win95_02.cab *.txt
如果想看某一 cab 文件的内容:
extract /d 《 cabinet》
如果想连续看 cab 文件的内容:
extract /a /d 《 cabinet》
如果想连续看 cab 文件显示一屏后暂定可以加MORE命令:
extract /a /d 《 cabinet》
cab 文件有「连锁」的特性,找完一个,会接着找与其连接的第二个,一直连锁下去,例如找完 Base4.cab 会接着找 Base5....找完Win98_21.cab,接下来就继续搜 Win98_22.cab、Win98_23.cab....等等,依此类推。
-c
derive和extract都有提取的意思,怎么区别
extract
n. 汁;摘录;榨出物;选粹
vt. 提取;取出;摘录;榨取
abstract
n. 摘要;抽象;抽象的概念
adj. 抽象的;深奥的
vt. 摘要;提取;使……抽象化
vi. 做摘要;写梗概
从上面的翻译就可以知道,extract多偏于榨汁从食物中提取某种物质之类的,意思就是提取一个物质本身的营养成分内在看不到的东西,但是有存在物质内部的东西。而abstract多偏于摘取文章这类的,是直接提取原本就看得见的物体里面的一部分。所以如果拿从生物组织中提取微管蛋白可定用的是extract。
-act
extract什么意思怎么读速求啊~
extract [iks’trækt] n.
1.[U] 榨出物,精汁
2.[C] 选粹,选曲
v.[T]
1. 摘录,摘抄
2. 析取,吸取
3.【数学】开(方),求(根)
4. 设法从……的得到(乐趣、舒适等)
5. 提取,榨出(汁液等),提炼 【俊狼猎英】团队为您解答。
-c
install和extract什么意思
install
[英][ɪnˈstɔ:l][美][ɪnˈstɔl]
vt.安装; 安顿,安置; 任命; 使…正式就职;
第三人称单数:installs过去分词:installed现在进行时:installing过去式:installed
extract
[英][’ekstrækt][美][ɪkˈstrækt]
vt.提取; (费力地)拔出; 选取; 获得;
extract
n.汁; 摘录; 提炼物; 浓缩物;
第三人称单数:extracts过去分词:extracted复数:extracts现在进行时:extracting过去式:extracted
-act
近义词辨析:extract 和abstract 有什么区别
两者都有“提取”“摘抄”的意思,extract多偏于榨汁从食物中提取某种物质之类的,意思就是提取一个物质本身的营养成分内在看不到的东西,但是有存在物质内部的东西。而abstract多偏于摘取文章这类的,是直接提取原本就看得见的物体里面的一部分。
extract
n. 汁;摘录;榨出物;选粹
vt. 提取;取出;摘录;榨取
abstract
n. 摘要;抽象;抽象的概念
adj. 抽象的;深奥的
vt. 摘要;提取;使……抽象化
vi. 做摘要;写梗概
-c
怎样破解文档密码
破解WORD文档密码
方法一(简单有效): 启动word 文档,新建一个空白文档,执行“插入文件” 命令,打开“插入文件”对话框,定位到需要解除保护的文档所在的文件夹,选中该文档,单击“插入”按钮,将加密保护的文档插入到新文档中,文档 保护会被自动撤销。
方法二: 打开文档后,将其另存为XML 文件,然后用UltraEdit(或者EditPlus,下载华军里搜索一下就行了)这个编辑软件打开刚刚存储的XLM 文件,查找 ,这个“******“ 是可变的。只需要找到这段文字,然后删掉这一段,保存退出,即可解除文档的密码保护。:)
方法三: 将受保护能查看不能修改的文档,另存为,再弹出的保存窗口中选择“保存类型”为“word97-2002“格式,保存后。再关掉word,重新打开,刚刚保存的文件,选择“工具”中“解除文档保护”即可编辑、修改这个文件了。
以上的三种方法都能够实现能看不能编辑的文档的保护密码的解除,大家可以用自己最为方便和习惯的使用方法。 在使用Word 进行文档保护时,经常会使用到窗体保护(工具-》保护文档 (P)...),用窗体保护最为彻底,用户无法编辑,也无法进行Copy&Paste 操作。
-act
ExtractAllFiles是什么意思
面向对象分析(OOA)与编程(OOP)技术已经成熟,但直到现在,有不少程序员仍不能主动应用面向对象的思想来设计开发软件。在本文中,我将以一个文件分割与合并工具的开发设计过程为例,介绍程序员如何用OOA和OOP进行程序设计。
一 功能构想和总体的实现方案
在设计一个软件之前,一定要弄清这个软件提供什么样的功能。设计文件分割合并工具的主要想法始于将一个大文件分割为小块以方便传输,必要时又可以再合并起来。我将这个工具软件的功能用UML表示如下:
图 1 系统用例图
可以看到,这个工具软件的功能与WinZip几乎完全一样。
功能确定,就开始考虑系统设计问题。应该指出,规模不同的软件系统,其设计阶段是不一样的,对于现在这个小工具软件,可以直接考虑其实现技术。
在C/C++中,将文件看成是一个字节流,并提供了好几种方式对文件进行操作:
l C语言方式:用fopen()、fclose()等打开和关闭文件,然后,直接在内存中对字节流进行处理;
l STL方式:用标准模板库(STL)中的iostream类;
l 特定开发环境所提供的类:如VC中的CFile,CMemFile等类;
C语言方式不符合OOP风格,STL功能强大,但在本例中开发工作量相对较大。我用的开发工具是C++Builder,其所提供的TStream类也能够满足要求,所以从实际出发,采用现成的VCL类库中的流系列类来开发此软件。
从系统功能出发,显然必须首先提供流的基本操作函数,实现流的打开、合并、抽取等操作,为此设计了FileStreamOpt类完成这些功能。下面展示了FileStreamOpt类的接口:
class FileStreamOpt
{
public:
__fastcall FileStreamOpt(); //构造函数
__fastcall ~FileStreamOpt(); //析构函数
//按指定的文件名和打开方式打开流
TFileStream * __fastcall OpenFileStream(String FileName, String OpenMode);
//关闭一个流
void __fastcall CloseStream(TStream *pStream);
//向一个流pStreamFirst的尾部追加一个流pStreamSecond
bool __fastcall AppendStream(TStream* pStreamFirst, TStream * pStreamSecond);
//抽取pStream流从Begin开始的Size字节的流内容存入文件NewFileName中
bool __fastcall ExtractStream(TStream* pStream, String NewFileName, int begin, int size,bool OverCover);
//将流pStream中Begin开始的Size字节删除
bool __fastcall CutOutStream(TStream* pStream,int begin, int size);
};
需要指出的是,为了实现通用性,接口采用了流基类指针参数TStream *,这样处理的结果是这些函数可以通过多态适用TStream类的所有子类。
二 数据结构
由于一个文件包中要存放若干个文件,显然必须有一个数据结构用来保存文件的有关信息,最容易想到的就是定义一个Struct,然后,向文件中写入这个结构就行了。但更合理的是生成一个文件信息类(FileInfo)。其接口如下:
class FileInfo : public TComponent
{
private:
String FFileName;
int FFileSize;
bool FNeedMerge;
int FMergeNo;
int FMergeTotalNum;
String FFilePath;
public:
__fastcall FileInfo(TComponent *AOwner);
FileInfo& operator=(FileInfo& a);
__published:
//文件名
__property String FileName = { read=FFileName, write=FFileName };
//文件路径
__property String FilePath = { read=FFilePath, write=FFilePath };
//文件大小
__property int FileSize = { read=FFileSize, write=FFileSize };
//是否需要合并。即这是拆分过的文件。
__property bool NeedMerge = { read=FNeedMerge, write=FNeedMerge };
//一个文件可分割的文件总数。
__property int MergeTotalNum = { read=FMergeTotalNum, write=FMergeTotalNum };
//要合并文件的文件顺序号
__property int MergeNo = { read=FMergeNo, write=FMergeNo };
};
一个FileInfo类的实例(对象)对应一个文件流对象。在保存文件包时,将包中所有FileInfo对象依次写入包文件中,在最前面写入对象数(也就是文件包中所包含的文件总数,int类型),后面就是各文件的实际数据。打开文件包时,先读取第一个int数据,然后是一个循环,读出所有的FileInfo对象数据,在内存中重建这些对象。
包中各个文件流按次序首尾相接形成一个文件包流,每个文件的具体位置可以通过它在文件包中的次序和在它之前的所有文件的大小计算出来。
这样一来,当软件运行时,增删文件体现为对FileInfo对象的增删和对文件流的插入和删除操作。
现在马上又出现了一个问题:这些FileInfo对象怎么管理?要自己定义一个数组或链表吗?最合适的方法是用STL提供的容器——List和Vector均可选:
l Vector:动态数组,缺点是在中部增加和删除元素时要移动其余的元素,因而效率不如List高;
l List:增加删除元素非常快,但不支持随机存储,如果要按某个序号来访问元素,则必须从头开始,或用find()方法。
在我这个软件中,如果规定增加文件时始终在Vector尾部追加FileInfo对象,就不会有移动对象的问题。删除文件时当然需要移动容器中的元素,但这并不是最常用的操作,而且一个文件包中存放的文件不会太多,删除文件所花的时间主要在文件流操作上而不是Vector内部元素的移动上,所以最终决定采用Vector管理FileInfo对象,这样一来,以后就可以用一个文件对应的FileInfo对象在容器中的索引来使用这个文件。
值得注意的是STL要求自定义的对象必须重载赋值运算符,所以我在FileInfo类中重载了“=”运算符。
FileInfo& FileInfo::operator=(FileInfo& a)
{
//重载赋值运算符
//注意:为避免编译时出现二义性错误,
//要将返回值和参数都设置为引用
FFileName=a.FileName;
FFilePath=a.FilePath;
FFileSize=a.FileSize;
FMergeNo=a.MergeNo;
FMergeTotalNum=a.MergeTotalNum;
FNeedMerge=a.NeedMerge;
return *this;
}
下面考虑FileInfo对象的存储问题:在MFC的单文档结构中,可以用“《《”和“》》”向流中存放对象,但我在BCB中并没有使用MFC的框架,当然,我可以自定义一个由STL中流对象继承而来的类来实现这个功能,事实上,BCB在TStream这个所有流对象的基类中已经实现了ReadComponent()和WriteComponent()方法,因此,只要使FileInfo对象继承自TComponent,这个对象就可以被保存到流中去,现在可以不必编写额外的代码了。
要指出的是,需要保存的信息必须设计成BCB中的property,并将其放在published部分,对于Public部分的数据成员,WriteComponent()不会保存其值,这点似乎不太爽,但这是想偷懒使用别人封装好的东西的必然代价,不是吗?所幸这点麻烦比自己去编写一个类似的方法要小多了。
用一个FileInfo类来代表一个文件的信息,增强了程序的可扩展性,我只需增加类的数据成员就可以加进新的信息,比如可以为每个文件增加一个文件属性和一个描述信息,而它的保存和读取代码都不用改变,也不用考虑它写入文件时的尺寸大小,这点Borland公司的程序员在设计ReadComponent()和WriteComponent()方法时已经考虑到了。
三 设计功能类:FileCutMerge
这个类实现了软件的基本功能,它的接口如下:
typedef std::vector《FileInfo *》 FileInfos;
class FileCutMerge:public TComponent
{
private:
//操作流对象指针
FileStreamOpt * pStreamOpt;
//当前文件包流指针
TFileStream* pPackage;
//用于指向文件信息对象的指针
FileInfo *pInfo;
//用于保存文件信息对象的容器指针
FileInfos * pVector;
//当前包中文件总数
int FileNum;
//文件内容开始的指针
int FileBegin;
//文件包文件名
String PkgFileName;
public:
//获取文件包中指定文件流与文件包流开头的距离
int __fastcall GetFileOffset(unsigned int num);
//类构造函数1
__fastcall FileCutMerge ( String PackageFileName,bool NeedCreate , TComponent* AOwner);
//向包中增加一个函数
bool __fastcall AddFile( String FileName);
//类析构函数
__fastcall ~FileCutMerge();
//获取文件包中文件数
int __fastcall GetFileNum();
//获取文件包中指定文件的FileInfo对象
FileInfo * __fastcall GetFileInfo(unsigned int num);
//将指定文件展开到磁盘上
bool __fastcall ExtractFile(unsigned int num,String path,bool OverCover);
//展开所有的文件
bool __fastcall ExtractAllFiles(String path,bool OverCover);
//删除一个文件
bool __fastcall DeleteAFile(unsigned int no);
//将文件包分割
bool __fastcall SplitFile(String FileName,String Path, int size);
//将分割后的文件包复原
bool __fastcall MergeFile(String MergeFileName);
//读取文件包文件大小
int __fastcall GetPackageSize();
//类构造函数2
__fastcall FileCutMerge(TComponent* Owner);
//打开一个文件包
bool __fastcall OpenPackage(String PackageFileName,bool NeedCreate);
//新建一个文件包
bool __fastcall NewPackage(String PackageFileName);
//包文件名
__property String PackageFileName = { read=PkgFileName, write=PkgFileName };
bool __fastcall SavePackageToDisk();
};
因为这个类中要对流作很频繁的操作,所以将StreamOpt类包容进来,在构造函数中创建它,在析构函数中销毁它。
-c
文件密码破解
RAR的加密算法使用的是AES,而旧的RAR的加密算法是私有的。这两种算法都很难破解,所以在没有密码的情况下只能用字典暴力破解法来破解。
一、Rar文件生成的流程。
Winrar加密文件时,总的分两个步骤:
1:先把源文件压缩,压成一段数据段。
2:再将压缩完的数据段加密。
对于同一个源文件来说,不进行加密,压缩完,其rar文件中的数据段是一模一样的。但是如果对同一个源文件来说,即使使用同一个密码,加密完rar文件中的数据段是不一样的,这是由于加密的密钥是依赖于一个Salt(8个字节的密钥,用来加密时使用,存放在rar文件头中里)
所以要解密rar加密文件关键在于数据解密这一步,那我们接下来研究一下如何加密的。
二、加密“压缩完的数据段”的流程
1、获取密钥:
将明文的密码与Salt一起,通过HASH算法,生成两个16字节的密钥。(一个是KEY(AES算法的参数),一个是initVector)
2、以Key和initVector来加密压缩数据:
这里,是一个循环加密的结构,每16字节作为一个块,进行加密(这可能正是为什么加密完的文件长度总为16倍数的原因)。加密采用AES算法(RAR采用的是AES的rijndael的标准应用)。这里注意:AES加密前,有一个异或运算,是先将每16字节块与上一个16字节块加密结果进行异或,然后再进行AES算法的。我用一个简单的示意代码看说明:
;===============================================
packblock=packblock^initVector
encryptBlock=AES(packblock) ;(KEY为AES的密钥)
for i=1 to 块数量-1
packblock=packblock^encryptBlock[i-1]
encryptBlock=AES(packblock) ;(KEY为AES的密钥)
next
;packblock表示压缩完的每16字节数据
;encryptBlock表示加密完的每16字节数据
;===============================================
三、解密的过程
由于AES算法是对称的,所以解密的过程,是加密过程的逆运算。但解密时AES算法过程与加密所用的不一样(是因为解密过程中由KEY生成的子密钥表不一样)。仍然需要我们将密码输入,与salt一起生成两个16字节密钥,KEY和initVector。
;===============================================
packblock=AES1(encryptBlock) ;(KEY为AES的密钥)
packblock=packblock^initVector
for i=1 to 块数量-1
packblock=AES1(encryptBlock) ;(KEY为AES的密钥)
packblock=packblock^encryptBlock[i-1]
next
;===============================================
那判断密码是否正确的在什么地方呢?
解密的过程是解密后的数据块进行解压缩,然后解成源文件,对该文件进行CRC校验,存在RAR文件中的源文件CRC校验码比较,相同则密码正确,不相同则密码错误。
四、无法秒破的原因
从上面,我们了解了RAR文件的整体思路。地球人都知道,解密时,肯定有个步骤是来判断密码的正确与否。而且,依据以往的经验,我们也许可以将某些判断的点移动,那样可以缩减破解的流程思路。那RAR的这一步在哪里?它把校验放在了最后的一步。如果要秒破,我们该怎么做泥?至少我认为目前是不可能的。
我们从解密过程逆反过来看看:
1、CRC检验这一块修改跳转?根本毫无意义,因为它已经是最后一步了。你可以修改RAR文件头的CRC值,你可以将它改得和你用任意密码解压出来的文件CRC值一样,但你的文件根本就不是原来的文件了。可能已经完全面目全非了。所以,对这一过程不可行。CRC校验本身是不可逆的
2、那么把判断提前到压缩完的数据?
解压的时候,有没有什么来判断压缩数据是否正确?压缩完的数据,有没有固定的特征,是否可以做为解压的判断,在这一步里,我们也无法找到有效的可用的固定特征。因为这一步涉及到RAR的压缩算法。即使一个源文件,即使你的文件前一部分是完全相同的,只对后面的部分进行改过,那么压缩完,数据也是完全一样的。因为压缩完的数据首先是一个压缩表,后面是编码。文件不一样,扫描完的压缩表也不一样,编码又是依赖于压缩表,所以,这里头找不到压缩完的数据有任何的固定特征可以用来判断的。
不管压缩数据是什么样的,Winrar都一如既往地进行解压,没有进行压缩数据是否有效的判断。
3、那假如我们破解了AES了泥?
由于AES只依赖于KEY,如果AES算法被破解了,我们知道了KEY,我们可以解出压缩完的数据,但是这里有一个问题,还有一个initVector密钥,用来第一个16字节块的异或,你没有initVector参数,你第一个16字节块的数据便无法解得出来。
4、那就只能从第一步Hash的算法入手
即使你能破解hash,但hash后的结果泥?没有结果,你怎么返推密码。
所以综上,发现rar的加密是由hash和AES两种算法互相牵制,而两种算法当前都无法破解,至少目前还没有办法秒破。
-act