从0开始学杂项 第二期:隐写分析(1) 直接附加

Misc 学习(二) - 隐写分析:直接附加

在上一期,我主要谈了谈对于杂项的一些浅薄理解,这一期我们正式开始对于CTF杂项的学习,我们首先学习的是杂项中最常考察的一项——隐写分析

这篇文章的大部分来自于我为了科学之光冬令营20号下午的讲课所准备的大纲。

一. 什么是隐写分析

有些时候,我们想把一些信息或者文件隐藏在某些文件之中,就可以利用隐写术来达到我们的目的。而针对那些有隐藏信息的文件,我们从中获取到被隐藏的信息的过程就叫做隐写分析

隐写分析是 Misc 中最为重要的项目之一,包括文件分析、信息隐写等等,涉及巧妙的编码、隐藏数据、层层嵌套的文件中的文件等等于杂项一样,它也喜欢考察一些并非为我们所掌握的小知识,比如一些从来没听说过的乱七八糟的密码(比如与佛论禅加密、颜文字加密等等),我们需要善用自己的信息搜集能力(其实就是查百度),在这里顺便简单介绍一下信息搜集

信息搜集

我的理解是,信息搜集就是针对某一目标,在搜集它/他/她的明显信息后,通过进一步的信息整合与分析得到他的隐蔽信息。

(此处省略500字)

“知己知彼,百战百胜。”我们学习信息搜集只是为了更好地防止自己的信息被搜集,提高自身信息安全意识,自觉保护个人信息,防止自己的隐私被窥探。

但其实,我们做隐写分析也用不到什么高深的技术,在这里我推荐使用 Bing(国内查不到还能顺手查查国外的)。当碰到自己的知识盲区时,我们需要准确地找出自己想问的问题,比如[BUUCTF]荷兰宽带数据泄露,下载后我们得到了一个 conf.bin 文件,我觉得可能大部分人都不清楚这是个什么玩意,编辑器打开一看还是堆乱码,这个时候我们就需要使用搜索引擎了。

我们首先要明确自己的问题: conf.bin 文件是什么,输入搜索框,回车,很快便能得知这是路由器的备份配置文件,要用 RouterPassView.exe 打开查看。

其它的问题大抵也是如此,只要我们准确把握问题主干,搜索引擎大多数时候都会给我们想要的结果。

二. 直接附加

本节我们需要的工具:一个十六进制编辑器(010 Editer 或者 WinHex 等等),最好有个 Kali Linux 虚拟机

我们都知道,文件的扩展名往往反映了文件的类型,但又不一定准确,因为我们可以随意地去修改它。比如我们把可以一个 jpg 图片文件改名成 xxx.png,无论我们学过学过计算机知识都应该知道 JPG 和 PNG 不是同一个东西,但是我们双击却依然可以用图片查看器查看这张图片,这说明程序有自己的方式去判断这是什么类型的文件,从而选择读取这张图片内容的方式,这就是文件头的作用。

大部分文件类型有其固定的文件结构,基本结构为:
文件头 + 文件内容(+ 文件尾) //文件尾可能有可能没有

图片查看器打开图片文件时,首先会根据文件头判断它是哪种类型的文件,然后再根据文件类型选择恰当的读取方式。一般来说,程序在读取有文件尾的文件时一般只会读到文件尾,并不会关注后面还有没有别的内容。

所以对于有文件尾的文件类型A来说,文件尾之后的内容往往不会对文件的查看有影响,增加的内容普通情况下不会被发现(拿十六进制编辑器不算普通情况)。我们可以往它的文件尾后面添加字符,数字,甚至是藏一个别的文件,这就是直接附加

要分离出附加在文件A后面的文件,可以通过在十六进制编辑器中观察文件尾后中隐含的文件头信息来判断文件A中附加的文件类型,从而进行提取,常见文件类型文件头(尾)如下:

文件类型 文件头 文件尾
JPEG( jpg ) FF D8 FF FF D9
PNG 89 50 4E 47 AE 42 60 82
GIF 47 49 46 38 00 3B
ZIP 50 4B 03 04 50 4B
RAR 52 61 72 21 /
Wave(wav) 57 41 56 45 /

类型列举不全,更详细的可以看大佬博客:http://blog.csdn.net/Ahuuua/article/details/109165473

说实话,我不推荐肉眼观察法提取(楽),一个是考验记忆力和眼力,最主要的是可能有藏比作者把一个相同类型的文件藏一个文件里,然后在前一个文件的文件尾和后一个文件的文件头之间藏东西(我是深受其害),对于我这种喜欢先拉到最后看文件尾的人很不友好。

我推荐使用 Binwalk 工具(Kali Linux自带)和 Foremost 工具(如果你的 linux 没有的话可以输入 apt-get install foremost 回车,其他工具类似)分离文件A中附加的其他文件,Binwalk 可以自动分析一个文件中包含的多个文件并将它们提取出来,Foremost 也可以分离文件而且有时候更好用一点,我们可以先用 Binwalk 进行分析,如果有隐藏文件再用 Foremost 分离,我们经常使用的一些相关使用方法如下:

binwalk [文件A] 	#分析文件A
binwalk -e [文件A] 	#分析文件A后自动提取已知的文件类型的隐藏文件
foremost [文件A] 		#分离文件A的隐藏文件,存到与文件A同目录的output文件夹中,同时在文件夹中生成一个日志文件

更详细的使用方法我懒得写了(笑),不过一般也用不着

例题

找了道例题:[BUUCTF] 二维码 大家可以自己先尝试一下,如果有困难再去看下面的题解。顺便说一下,做CTF题,遇到不会的题看题解是一件非常正常的事,关键在于能不能在这道题中吸取教训,只要下次做到类似的能做对就行,这也是一个积累经验的过程(最好看完自己不会的地方再自己做,不要照抄 flag)。

题解

下载下来是一张 PNG 格式的二维码,盲猜扫出来肯定不是结果。扔到 WinHex 中(或者 010-Editor ),一眼看到 png 文件尾和 zip 文件头(看多了就能一眼盯真?)。(图片里面写错了)

这时当然可以直接人力提取,从 504B0304 开始选中一直到最后,右键-编辑-复制选块-正常 复制这一段数据,然后左上角新建一个文件,大小无所谓(最好小一点)直接确定。

选中第一个 0,右键-编辑-剪贴板数据-写入(其实我不知道写入和粘贴有什么区别,希望有大佬可以解惑),在弹出的窗口里确定-确定,成功写入后按 Ctrl+S 键保存,命名为1.zip。(不推荐这样肉眼观察法和人力分离法,这里讲主要是想带大家熟悉一下编辑器的用法)

我更推荐使用 Binwalk+Foremost 的方式,打开 Linux,把文件弄进去放个地方,在这个地方打开终端,输入 binwalk QR_code.png 发现有隐藏的ZIP文件,再输入 foremost QR_code.png 在 output 文件夹中找到分离出来的ZIP文件(或者直接输入 binwalk -e QR_code.png也是可以的)。

打开压缩包发现需要密码(好像有点超纲,算了无所谓做中学吧),直接打开上古神器 ARCHPR 选择 “所有数字”,长度 1-6(一般CTF题里面需要暴力破解的压缩包的密码都不会太复杂)(压缩包我会以后说)

得到密码 7639,解压后打开 4number.txt ,得到 flag。


本期就先说到这里,主要讲了讲隐写分析中的直接附加,写的不太好的地方还请包涵并提出您宝贵的建议,我们下期再见。

参考资料

[1] CTF WIKI : http://ctf-wiki.org/misc/introduction/

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


作者:CHTXRT

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

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

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

相关文章

  • AD19简易教程(原理图的绘制)

    建立工程 依次点击File-->New-->Project-->PCBProject完成项目创建。绘制原理图 (1)创建SchDoc文件右击刚才新建的项目PCB_Project1.PrjPCB,依次点击AddNewtoProject-->Schematic,完成电路原理图创建(2)添加原理图库(3)元器件放置及连线点击上方工具栏相应元件可放置基本元件。对于工具栏中没有的元件,点击左侧第五个按钮进入库,可以在自己建立的库中选择刚绘制的元件。点击所需器件名称,将其拖动到绘制区域即可。工具栏左数第六个为接线工具,点击后就可以进行连线了。AD原理图绘制的教程就这些了,关于AD的使用后续还会继续推出相关教程。

  • 实战 | 0~1 自定义组件开发问卷小程序

    本文将帮助您基于腾讯云微搭低代码WeDa平台,从0到1快速打造如下图所示的问卷调查小程序。概述基于腾讯云微搭低代码平台开发一款问卷小程序需要经过四个步骤:1.新建低码应用。 2.根据需求定义数据源。 3.按照需求设计页面(主要完成布局的添加和组件的定义)。 4.本地构建及预览发布。只需简单几步就可以用腾讯云微搭低代码平台独立开发一款属于自己的应用。步骤1:新建低码应用创建应用1.单击左侧导航栏的【应用管理】,在中间的内容区域单击【创建空白应用】。2.输入应用名称,单击【确定】创建应用。步骤2:定义数据源传统开发流程需要先进行需求分析,分析完成后需要按照需求进行数据库的设计,在腾讯云微搭低代码平台中,只需在控制台左侧的【数据源管理】中自定义数据源即可,无需单独构建数据库。1.单击【新建数据源】按钮选择【数据源模型】。2.在打开的页面里,数据源名称输入问卷调查,数据源标识输入survey。3.单击【添加字段】按钮,添加数据源相关字段。结合实际情况设置以下参数:字段名称:输入姓名。字段标识:输入name。数据类型:选择【字符串】。是否必填:选择【是】。是否枚举:选择【否】。类似地,依次添加字

  • 快来看看安卓大佬总结的AndroidX下使用Activity和Fragment的那些变化

    过去的一段时间,AndroidX软件包下的Activity/Fragmet的API发生了很多变化。让我们看看它们是如何提升Android的开发效率以及如何适应当下流行的编程规则和模式。本文中描述的所有功能现在都可以在稳定的AndroidX软件包中使用,它们在去年均已发布或移至稳定版本。在构造器中传入布局ID从AndroidXAppCompat1.1.0和Fragment1.1.0(译者注:AppCompat包含Fragment,且Fragment包含Activity,详情见【整理】Jetpack主要组件的依赖及传递关系)开始,您可以使用将layoutId作为参数的构造函数:classMyActivity:AppCompatActivity(R.layout.my_activity) classMyFragmentActivity:FragmentActivity(R.layout.my_fragment_activity) classMyFragment:Fragment(R.layout.my_fragment)复制这种方法可以减少Activity/Fragment中方法重写的数量,

  • 推荐一个内网渗透扫描神器

    Perun是一款主要适用于乙方安服、渗透测试人员和甲方RedTeam红队人员的网络资产漏洞扫描器/扫描框架,它主要适用于内网环境,加载漏洞检测Vuln模块后能够快速发现安全问题,并根据需要生成报表,以方便安全人员对授权项目完成测试工作。Perun由Python2.7和Python标准库开发,所有功能(端口扫描,漏洞检测,控制台输出,生成Html报告)兼容Windows系统和*nix系统,Html报告采用Vue+Element,支持对扫描结果的排序、搜索、分页。在内网环境中只需上传Perun的启动器文件(未安装Python的主机环境下可以使用Pyinstaller打包生成的单个控制台exe二进制启动器文件,大小在3-5M),其余文件可以部署在云端,也可以部署在目标内网中,既可用作普通的端口扫描器,又可用作漏洞扫描器,方便安全人员在内网环境中进行工作。快照预览控制台快照报告快照工作流程加载-l参数指定路径下的项目代码解析-t参数指定的目标进行ping扫描活跃主机(使用--skip-ping参数将跳过ping扫描阶段)根据默认扫描端口或-p参数对指定端口进行端口扫描,默认扫描178个端口,详

  • IsolatedStorage的使用方法

    WindowsPhone7使用了Silverlight,而在Silverlight中可以使用IsolatedStorage来做独立存储,那么在WindowsPhone7下也可以使用IsolatedStorage。不同程序使用IsolatedStorage存储的数据相互独立,也就是说A程序不能访问B程序通过IsolatedStorage存储的信息,安全性非常高,程序的IsolatedStorage默认为2G大小。下面简单的说下用法:一、创建、存储:IsolatedStorageFile_isf=IsolatedStorageFile.GetUserStoreForApplication(); IsolatedStorageFileStreamstream=newIsolatedStorageFileStream("config.ini",FileMode.Create,_isf); StreamWriterwriter=newStreamWriter(stream); writer.WriteLine("abcdefg"); writer.Clo

  • 海尔家电产业集团CTO赵峰:家电行业转型存三大痛点,AI+IoT是智能制造双引擎

    赵峰(海尔家电产业集团CTO、副总裁)赵峰博士,主要负责海尔的超前研发和智慧生活产业。赵博士曾担任微软亚洲研究院常务副院长,主要负责物联网、大数据、计算机系统及网络等领域的研发工作。毕业于麻省理工学院计算机系及人工智能实验室。曾在位于硅谷的XeroxPARC担任首席科学家,创立了该中心的传感器网络研究,并先后任教于美国俄亥俄州立大学和斯坦福大学。赵博士是美国电机电子工程师学会IEEEFellow,撰写了物联网领域第一本专著《WirelessSensorNetworks》,被多所美国大学选为教科书。以下是赵峰博士的演讲:赵峰:大家下午好!我今天非常高兴有机会站在新智元的论坛上跟各位伙伴各位专家分享一下,海尔在智慧家庭上做的实践以及接下来怎么看整个智慧家庭行业的发展。特别感谢杨静的邀请,我是新智元非常忠实的读者,我也看到新智元如何一步步组建人工智能最大的社群,把各种开发者、专家、投资者聚集在一起,有机会提供这样一个平台来探索业界最有意思的技术、业务、趋势等等。我今天给大家讲的聚焦在人工智能如何对智慧家庭上产生影响。行业三大痛点:单品不成套、伪智能不互通、体验差不互动我一直都对人工智能非常有

  • 逆天!9.9元的共享雨伞卖19元成了经典营销案例,我差点就信了

    ofo、摩拜掀起的街头共享之风还在蔓延,现在又陆续出现共享充电宝、共享雨伞等创业热潮,最近甚至还出现了共享女友,让许多单身汪梦想成真。视频内容不论是共享单车、共享充电宝还是共享雨伞都面临“回收”难题。运营平台要么像ofo那样通过与蚂蚁金服合作通过个人征信来解决,要么通过收取一定的押金来强迫用户归还。共享雨伞就没有共享单车这么顺利了,一出生就命途多舛。南昌出现30万把共享雨伞投放后“一伞难觅”的情况,创始人说这是要“藏伞于民”。杭州一家公司更惨,投放5万把共享雨伞,一天内就被城管收了个精光。看上去共享雨伞是比共享充电宝还要不靠谱的项目。不过,最近一个流行的段子似乎让共享雨伞发生了转机,这个段子来自于微博CEO王高飞@来去之间,其透露:“3万把共享雨伞押金19元,半小时收费0.5元,虽然投放了没几天,就全部被人拿回家,但这应该是一段经典的营销案例,必将载入中国销售史册。”不少人都对这个段子中的“某共享雨伞平台”的套路拍案叫绝——如果真是这样,那么以后许多东西的销售,都可以“共享”之名实现无人销售,超市购物车、书、甚至宅男的充气娃娃……等等。但仔细想想,不大对劲。@来去之间这个段子中,什么品

  • Redis源码分析(三)——Redis数据结构-字典

    1.数据结构1.1哈希表typedefstructdictht{ dictEntry**table; unsignedlongsize; unsignedlongsizemask; unsignedlongused; }dictht;复制table:存储节点的数组size:table数组的长度sizemask:size-1,用于在添加节点时计算节点在table中的位置used:节点数量1.2哈希表节点typedefstructdictEntry{ void*key union{ void*val; unit64_tu64; int64_ts64; }v; structdictEntry*next }dictEntry;复制key:节点的keyunion:节点的value(可以是指针、unit64_t整数、int64_t整数)next:下一个节点的地址1.3字典typedefstructdict{ dictType*type void*privdata dicththt[2] }dict;复制type:操作哈希表的各种函数privdata:上述函数所需的入参ht[2]:存储两个哈希表,一

  • ubuntu16.04安装pycharm_pycharmlinux安装

    大家好,又见面了,我是你们的朋友全栈君。 一、准备工作1.安装包下载进入https://www.jetbrains.com/pycharm/download/#section=linux下载pycharm安装包2.解压安装包将安装包从电脑复制到虚拟机,然后使用一下命令进行解压tar-zxvfpycharm-professional-2021.1.2.tar_2.gz复制此处以pycharm-professional-2021.1.2.tar_2.gz为例然后使用以下命令在/opt创建文件夹用以存放pycharm数据sudomkdir/opt/pycharm复制然后使用以下命令将解压的pycharm数据移动到之前创建的文件夹中sudomv/home/user/pycharm-2021.1.2/opt/pycharm/复制这样准备工作就做好啦,想确认的话可以cd到对应目录查看文件是否成功转移二、初始化执行/bin目录下的pycharm.sh文件sh/opt/pycharm/pycharm-2021.1.2/binpycahrm.sh复制弹出以下对话框选择同意然后继续输入自己的邮箱和密码,活

  • Django框架

        Django框架 基础入门 第一章:Django简介 第二章:Django版本安装创建项目应用(三板斧) 第三章:Django静态文件(request对象-get请求与post请求-视图函数书写) 第四章:Django连接MySQL数据库ORM实操(增删改查) 第五章:Django中ORM创建表关系 进展知识 第六章:Django的请求生命周期 第七章:Django框架路由层-无名有名分组-无名有名分组反向解析 第八章:Django框架路由分发-名称空间 第九章:python虚拟环境与伪静态网页 第十章:Django框架版本区别 第十一章:Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别 第十二章:Django框架模板语法传值-过滤器-标签-自定义过滤器,标签,inclusion_tag 高级知识 第十三章:什么是Ajax?全面了解 h1{color:rgba(0,60,128,1);text-align:center} h1:hover{color:rgba(0

  • 行星工单系统部分实现(1)-流程控制

    1.工单系统的表格页 工单系统是一种网络软件系统,根据不同组织,部门和外部客户的需求,来由针对的管理,维护和追踪一系列的问题和请求。大多用于记录、处理、跟踪一项工作的完成情况。 为使客服同学有序、协同处理客户问题,客服技术团队打造了多渠道整合的,可灵活配置的,便于流转的行星工单系统。 由于工单系统从属后台系统,页面展示基本以如下表格页为主.为统一表格页行为,故将其统一封装成表格页组件. 表格页组件分为如下几块: 筛选项区域 表格主体 分页组件 操作按钮 行内操作链接 其中分页组件可通过向表格页组件传入标志来控制其显示状态、筛选项区域及表格主体内容可通过向表格页组件传入表格列配置及表单项配置实现不同页面间各异的逻辑。 但由于操作按钮、行内操作链接的逻辑各页基本不同,无法将其封入表格页组件。因此采用事件处理这部分逻辑从列表页组件中解耦,我们将不同表格页按钮操作名称作为唯一标识,在入口文件中将系统全量事件集注册到全局,将标识与事件集中事件建立起对应关系,以此实现上述需求。 然后我们发现,这些操作按钮的逻辑,基本为以下几类行为的聚合: 弹出提示框让用户操作 弹出表单类组件获取一部分数据

  • 把dataset 输出到 excel

    把dataset输出到excelpublicvoidCreatExcel(System.Web.UI.WebControls.GridViewctl,DataSetds,stringfilename) { ctl.DataSource=ds.Tables[0]; ctl.DataBind(); HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+filename); HttpContext.Current.Response.Charset="UTF-8"; HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default; HttpContext.Current.Response.ContentType="application/ms-excel"; System.IO.StringWritertw=newSystem.IO.StringWriter(); System.Web.UI

  • Codeforces Global Round 7【ABCDE】(题解)

    目录目录涵盖知识点:思维、构造、马拉车、线段树。比赛链接:传送门D题只有数据范围的区别,故只写D2。好多题啊,随缘更新。(其实懒得写)A-BadUglyNumbersB-MaximumsC-PermutationPartitionsD2-Prefix-SuffixPalindrome(Hardversion)E-Bombs 涵盖知识点:思维、构造、马拉车、线段树。 比赛链接:传送门 D题只有数据范围的区别,故只写D2。 好多题啊,随缘更新。(其实懒得写) A-BadUglyNumbers 题意:构造一个长度为\(n\)的数字使得其不能被其中的每一位数整除。 题解:2333333(雾) AcceptCode: #include<bits/stdc++.h> usingnamespacestd; intmain(){ intt; cin>>t; while(t--){ intn; cin>>n; if(n==1){ cout<<"-1\n"; continue; } else{ cout<<2; for(inti=1;i<

  • 【dp】开心的金明

    开心的金明 来源:NOIP2006(普及组)第二题 【问题描述】    金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1...jk,则所求的总和为:v[j1]*w[j1]+..+v[jk]*w[jk]请你帮助金明设计一个满足要求的购物单. 【输入文件】    输入的第1行,为两个正整数,用一个空格隔开:N m (其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。) 从第2行到第m+1行,第

  • [51nod] 1378 夹克老爷的愤怒 #树形DP

    1378 夹克老爷的愤怒 基准时间限制:1 秒空间限制:131072 KB分值: 80 难度:5级算法题   夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租。 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压。 诺德县有N个村庄,编号0至N-1,这些村庄之间用N-1条道路连接起来。 家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄。 夹克老爷一贯奉行最小成本最大利润的原则,请问要实现对全部村庄的武力控制,夹克老爷需要派出最少多少名家丁? Input 第1行:2个数N, K中间用空格分隔(1<= N <= 100000, 0 <= K <= N)。 之后N-1行:每行2个数S, E中间用空格分隔,表示编号为S的村庄同编号为E的村庄之间有道路相连。(0 <= 

  • NLP和Machine Learning学习记录

       毕业设计中需要利用NLP和ML技术来解决问题,这一个阶段对这些技术进行学习和应用。  NLP技术  NLP学习主要参考书籍:用Python进行自然语言处理(中文) http://www.nltk.org/  可以解决分词(stem和lamma)、分句、词性标注、以及wordnet同义词分析、句子结构分析、实体识别等   关于文法特征,还需要进一步阅读  另外目前最新的NLP相关工具实现,可以参考http://nlp.stanford.edu/  本文主要利用NLP技术来进行中英文分句、分词,以及在分词的基础上词性标注,并建立句法树,在句法树的上依据特征进行实体识别   ML:MachineLearning   主要采用SVM来进行异常检测,OC-SVM可以检测出同一个类别中的异常行为;以及SVM用来实现分类;实现采用scikit-learn机器学习包中svm库来解决 http://scikit-learn.org/stable/mo

  • 将Excel中数据导入数据库(一)

      在工作中经常要将Excel中数据导入数据库,这里介绍一种方法。   假如Excel中的数据如下:   数据库建表如下:   其中Id为自增字段:   Excel中数据导入数据库帮助类如下: 1usingSystem; 2usingSystem.Data; 3usingSystem.Data.OleDb; 4usingSystem.Configuration; 5usingSystem.Data.SqlClient; 6 7/* 8*功能:文件操作类(读取、写入) 9*/ 10namespaceExcelToDataBaseHelper.Service 11{ 12classFileSvr 13{ 14publicFileSvr() 15{ 16 17} 18 19///<summary> 20///Excel数据导入Datable 21///</summary> 22///<paramname="fileUrl"></param> 23///<paramname="table"></param> 24

  • 图的相关操作

    1#include<iostream> 2#include<algorithm> 3 4usingnamespacestd; 5constintMaxNum=100; 6constintINF=99999; 7typedefstructsrcNode{ 8intVem; 9structsrcNode*next; 10}srcNode; 11 12typedefstructvNode{ 13chardata; 14srcNode*src; 15}vNode; 16 17typedefstructGNode{ 18intvNum,srcNum; 19vNodevNodeList[MaxNum]; 20}Graph,GNode; 21 22 23/** 24*BFS 25*/ 26voidBFS(Graph*G){ 27//广度优先遍历需要维护一个队列 28intv[MaxNum*MaxNum]; 29intfront=-1,rear=-1; 30boolvisited[MaxNum]; 31for(inti=0;i<G->vNum;++i){ 32

  • MySQL建立索引的原则

    1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

  • 第八周作业

    1、编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值. publicclassvbn{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub inta[]={10,20,30,40,50}; for(inti=0;i<a.length;i++){ System.out.println(a[i]); } } }复制 2、将一个字符数组的值(neusofteducation)拷贝到另一个字符数组中。 publicclassvbn{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub char[]a={'n','e','u','s','o','f','t','e','d','u','c','a','t','i','o','n'}; char[]b=newchar[16]; System.ar

  • Apache源码编译安装脚本

      Apache是开源的的、最流行的Web服务器软件之一,它快速、可靠并且可通过简单的API扩充,将Perl/Python/PHP等解释器编译到服务器中。Apache的模块超多,以及具有运行稳定,强大的rewrite功能、动态处理能力强等优点,在追求稳定的业务环境下被广泛使用。   以下是Apache2.4版本prefork模式的源码编译脚本: #!/bin/bash # #******************************************************************** #Author:Eddie.Peng #URL:https://www.cnblogs.com/eddie1127/ #Date:2019-10-18 #FileName:httpd_install.sh #Description:ThescriptforinstallApachehttpdwebserver #******************************************************************** #Setcolor COLOR

相关推荐

推荐阅读