新手小白----攻防世界难度3----latlong

一.题目详情

题目链接:https://adworld.xctf.org.cn/challenges/list

点击下载附件,发现又是一个没有后缀名的文件:

第一思路可以用01editor或者winhex来查看文件头;或者可以把文件放进kali虚拟机使用file+文件名来查看文件类型,发现为wav音频文件

二.解题思路

(1)第一反应做音频文件类型题,使用Audacity来查看音频里是否藏信息之类的,查看频谱图和分析是否存在高低音频之类的(转二进制思路)

发现什么都没有,这条思路走不通

(2)通过binwalk来分析文件是否还有没有隐藏其他文件,binwalk+文件名,发现还是什么都没有

再尝试strings 文件名 | grep flag 看看有没有信息,可惜还是没有

说明这条思路也是死路

(3)点击打开听一下音频是否有什么隐藏信息,听完发现貌似是一段信号电波;查询一下有没有破译信号电波的工具,发现kali有个工具为multimon-ng,是用于专门解码aprs、psk等业余无线电数字通信协议的工具;反正没有其他思路了,尝试是否可以解决出flag

三.解题过程

(1)在kali机上下载multimon-ng

sudo apt-get install multimon-ng

(2)在使用multimon-ng时,需要使用sox工具将wav音频文件转化为raw类型文件

sox -t wav latlong -esigned-integer -b16 -r 22050 -t raw latlong.raw

这条命令使用sox工具将WAV文件latlong.wav转换为RAW文件latlong.raw,并指定了一些参数:

-t wav:指定输入文件的格式为WAV。

latlong:输入的WAV文件名。

-esigned-integer:指定输出文件的采样格式为有符号整数。

-b16:指定输出文件的位深度为16位。

-r 22050:指定输出文件的采样率为22050 Hz。

-t raw:指定输出文件的格式为RAW。

latlong.raw:输出的RAW文件名。

(3)成功获得一个raw文件

(4)使用multimon-ng 获取信息

multimon-ng -t raw -a AFSK1200 latlong.raw

以RAW格式作为输入类型(-t raw),并指定解码方式为AFSK1200(-a AFSK1200),对latlong.raw文件进行解码。

获取flag为:

flag{f4ils4f3c0mms}

 四.提交flag获取分数

五.总结

本次misc题,明白了处理音频文件除了用Audacity外,还有kali中的multimon-ng。又get到一个新工具multimon-ng。

感谢您提供的代码。根据您提供的代码,我们可以看到您正在使用 `ExifInterface` 类来获取视频文件的地理位置信息。但是,根据 Android 的文档,`ExifInterface` 类只能用于处理图片的 Exif 信息,而不是视频文件。 要从视频文件中获取地理位置信息,您可以使用 Android 的 `MediaMetadataRetriever` 类。以下是一个示例代码,演示如何使用 `MediaMetadataRetriever` 获取视频文件的地理位置信息: ```kotlin import android.content.Context import android.location.Location import android.media.MediaMetadataRetriever fun getLocationForVideo(context: Context, videoPath: String): Location? { val retriever = MediaMetadataRetriever() retriever.setDataSource(videoPath) val locationString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_LOCATION) if (locationString != null) { val parts = locationString.split(",") if (parts.size == 2) { val latitude = parts[0].toDoubleOrNull() val longitude = parts[1].toDoubleOrNull() if (latitude != null && longitude != null) { return Location("").apply { this.latitude = latitude this.longitude = longitude } } } } return null } ``` 在上述代码中,我们使用 `MediaMetadataRetriever` 类的 `setDataSource()` 方法将视频文件设置为数据源。然后,我们使用 `extractMetadata()` 方法和 `MediaMetadataRetriever.METADATA_KEY_LOCATION` 参数来提取视频文件的地理位置信息。 如果成功提取到了地理位置信息字符串 `locationString`,我们将其拆分为纬度和经度两部分,并将它们转换为 `Double` 类型。 最后,我们使用这些纬度和经度值创建一个 `Location` 对象,并返回它作为结果。 请确保您的应用已经获得了适当的权限来读取视频文件和访问设备的地理位置信息。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值