Polar D&N misc_无限解base64

本文介绍了在解决一个名为‘无限解base64’的CTF挑战时遇到的问题及解决方法。作者通过使用shell脚本进行while循环解码,最终通过grep和wc -l的正确使用找到了正确的flag。

目录

关键资料:

1、题目网址:

2、题目文件

3、解题思路

4、相关代码

5、结果


关键资料:

感谢大神的资料分享:

我在关键判断目标字符串是否存在的时候使把grep 的筛选结果传递给 wc -l 去统计是否存在目标字符串,理想状态是如果存在那么就是1行,如果不存在就是0行,结果频繁出错明显存在的时候还是显示0行。后来网上找到大神文章wc -l 统计的是newline的个数,而我的解码字符串均不包含newline所以无论如果统计,我的结果一直是0,导致代码出错,根据大神文中指导使用了

grep -c "" 来统计获得准确的行数。从而解决问题。再次感谢。

​​​​wc -l 统计的是行数?大错特错-优快云博客文章浏览阅读60次。POSIX 标准里面定义一行用的就是 一段文字以newline结尾,如果不按这个标准来就不认为这是一行文本。-l 的意思是统计 '\n'的数量,上面的例子file中没有换行符,自然统计出来的结果是0。wc可以Unix系的基础工具呀,这统计的行数不正确属于重大bug呀!会用Linux的人都知道用wc -l 可以统计文本文件的行数。在windows系统中newline 是'\r\n'那么大名鼎鼎的wc -l不能用了?事出反常必有妖,这个锅并不是wc的。那么,

脚本1: /* * dts file for Hisilicon tiangong0 Development Board * * Copyright (C) 2022-09-07, Hisilicon Ltd. * */ /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> / { compatible = "hsan,tiangong0"; board_id = <0>; vendor_id = "hsan"; fragment@0 { target-path = "/"; __overlay__ { board_id = <0>; vendor_id = "hsan"; }; }; fragment@1 { target = <&pmupwm>; __overlay__ { pinctrl-0 = <&pmupwm_sig1_state>; }; }; fragment@2 { target = <&peri_gpio0>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&gpio7_default_state>, <&gpio12_default_state>, <&gpio13_default_state>, <&gpio27_default_state>, <&gpio28_default_state>; }; }; fragment@3 { target = <&gemac3>; __overlay__ { phy-mode = "gmii"; sgmii; phy-handle = <&gephy3>; }; }; fragment@4 { target = <&gemac4>; __overlay__ { status = "disabled"; }; }; fragment@5 { target = <&gephy4>; __overlay__ { status = "disabled"; }; }; fragment@8 { target = <&usb3_xhci>; __overlay__ { status = "disabled"; }; }; fragment@9 { target = <&serdes0>; __overlay__ { status = "disabled"; }; }; fragment@10 { target = <&serdes1>; __overlay__ { status = "disabled"; }; }; fragment@11 { target = <&gephy3_2p5>; __overlay__ { status = "disabled"; }; }; fragment@12 { target = <&gephy3>; __overlay__ { status = "okay"; }; }; fragment@13 { target = <&i2c1>; __overlay__ { status = "disabled"; }; }; fragment@14 { target = <&spi0>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&gpio34_default_state>; slicdev { compatible = "hsan,slic-spidev"; reg = <0>; spi-max-frequency = <4096000>; zsi; rst-gpios = <&portb 2 GPIO_ACTIVE_HIGH>; /* gpio34 */ gpio-delay = <50>; spi-cpha; spi-cpol; spi-cs-high; }; }; }; fragment@15 { target = <&hwdio>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&hw0_default_state>; interface-mode = <1>; /* 0:hw; 1:zsi; 2:isi */ clk-sel = <0>; /* 0:osc; 1:serdes0; 2:serdes1; 3:serdes2 */ clk-mode = <1>; /* 0:input clk; 1:output clk */ clk-rate = <0>; /* 0:8MHz; 1:4MHz; 2:1MHz; 4:512KHz */ rx-edge = <1>; /* 0:up edge; 1:down edge */ tx-edge = <0>; /* 0:up edge; 1:down edge */ rx-align = <0>; /* value[0,1023] */ tx-align = <0>; /* value[0,1023] */ fs-edge = <0>; /* 0:up edge; 1:down edge */ fs-level = <1>; /* 0:low level; 1:hight level */ fs-rate = <1>; /* sample rate 0:8KHz; 1:16KHz */ fs-mode = <1>; /* 0:normal mode; 1:8KHz mode */ pcm-wide = <1>; /* 0:8bit; 1:16bit */ }; }; fragment@16 { target = <&mii_misc_ge3_2p5>; __overlay__ { status = "disabled"; }; }; fragment@17 { target = <&pinctrl_peri>; __overlay__ { pinctrl-0 = <&peri_power_source0_3v3_state>, <&peri_power_source1_3v3_state>, <&peri_power_source2_3v3_state>; pinctrl-names = "default"; }; }; fragment@18 { target = <&gephy0>; __overlay__ { /* led-polar * 00:on-drive LED low, off-drive LED high * 01:on-drive LED high, off-drive LED low * 10:on-drive LED low, off-tristate LED high * 11:on-drive LED high, off-tristate LED high */ /* led-freq * eg:led-freq = <200>;Blink period is 200ms */ led-polar = <0x0>; led-mode = <0x1>; /* single_led 1, double_led 2 */ pinctrl-names = "default"; pinctrl-0 = <&gephy_led0_default_state>; }; }; fragment@19 { target = <&gephy1>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led1_default_state>; }; }; fragment@20 { target = <&gephy2>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led2_default_state>; }; }; fragment@21 { target = <&gephy3>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led3_default_state>; }; }; }; 脚本2: /* * dts file for Hisilicon tiangong0 Development Board * * Copyright (C) 2022-09-07, Hisilicon Ltd. * */ /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> / { compatible = "hsan,tiangong0"; board_id = <0>; vendor_id = "vendor3"; fragment@0 { target-path = "/"; __overlay__ { board_id = <0>; vendor_id = "vendor3"; }; }; fragment@1 { target = <&upsphy0>; __overlay__ { status = "okay"; }; }; fragment@2 { target = <&usb3ctrl>; __overlay__ { phys = <&usb2phy0>, <&upsphy0>; phy-names = "usb2phy", "upsphy"; }; }; fragment@3 { target = <&usb3_xhci>; __overlay__ { status = "okay"; }; }; fragment@4 { target = <&peri_gpio0>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&gpio1_default_state>, <&gpio27_default_state>, <&gpio28_default_state>, <&gpio29_default_state>, <&gpio38_default_state>, <&gpio39_default_state>, <&gpio40_default_state>, <&gpio41_default_state>; }; }; fragment@5 { target = <&i2c1>; __overlay__ { status = "disabled"; }; }; fragment@6 { target = <&pinctrl_peri>; __overlay__ { pinctrl-0 = <&peri_power_source0_3v3_state>, <&peri_power_source1_3v3_state>, <&peri_power_source2_3v3_state>; pinctrl-names = "default"; }; }; fragment@7 { target = <&pmupwm>; __overlay__ { pinctrl-0 = <&pmupwm_sig1_state>; }; }; fragment@8 { target = <&spi0>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&gpio34_default_state>; slicdev { compatible = "hsan,slic-spidev"; reg = <0>; spi-max-frequency = <4096000>; zsi; rst-gpios = <&portb 2 GPIO_ACTIVE_HIGH>; /* gpio34 */ gpio-delay = <50>; spi-cpha; spi-cpol; spi-cs-high; }; }; }; fragment@9 { target = <&hwdio>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&hw0_default_state>; interface-mode = <1>; /* 0:hw; 1:zsi; 2:isi */ clk-sel = <0>; /* 0:osc; 1:serdes0; 2:serdes1; 3:serdes2 */ clk-mode = <1>; /* 0:input clk; 1:output clk */ clk-rate = <0>; /* 0:8MHz; 1:4MHz; 2:1MHz; 4:512KHz */ rx-edge = <1>; /* 0:up edge; 1:down edge */ tx-edge = <0>; /* 0:up edge; 1:down edge */ rx-align = <0>; /* value[0,1023] */ tx-align = <0>; /* value[0,1023] */ fs-edge = <0>; /* 0:up edge; 1:down edge */ fs-level = <1>; /* 0:low level; 1:hight level */ fs-rate = <1>; /* sample rate 0:8KHz; 1:16KHz */ fs-mode = <1>; /* 0:normal mode; 1:8KHz mode */ pcm-wide = <1>; /* 0:8bit; 1:16bit */ }; }; fragment@10 { target = <&gemac4>; __overlay__ { status = "disabled"; }; }; fragment@11 { target = <&gephy4>; __overlay__ { status = "disabled"; }; }; fragment@12 { target = <&gemac8>; __overlay__ { status = "disabled"; }; }; fragment@13 { target = <&gephy5>; __overlay__ { status = "disabled"; }; }; fragment@14 { target = <&gemac3>; __overlay__ { phy-mode = "gmii"; phy-handle = <&gephy3>; }; }; fragment@15 { target = <&gephy3_2p5>; __overlay__ { reg = <0x1>; status = "disabled"; reset-gpios = <&porta 29 1>; }; }; fragment@16 { target = <&mdio1>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&extphy1_default_state>; }; }; fragment@17 { target = <&gephy0>; __overlay__ { /* led-polar * 00:on-drive LED low, off-drive LED high * 01:on-drive LED high, off-drive LED low * 10:on-drive LED low, off-tristate LED high * 11:on-drive LED high, off-tristate LED high */ /* led-freq * eg:led-freq = <200>;Blink period is 200ms */ led-polar = <0x0>; led-mode = <0x1>; /* single_led 1, double_led 2 */ pinctrl-names = "default"; pinctrl-0 = <&gephy_led0_default_state>; }; }; fragment@18 { target = <&gephy1>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led1_default_state>; }; }; fragment@19 { target = <&gephy2>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led2_default_state>; }; }; fragment@20 { target = <&gephy3>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led3_default_state>; status = "okay"; }; }; fragment@21 { target = <&mii_misc_ge3_2p5>; __overlay__ { status = "disabled"; }; }; }; 这来脚本你的异同
09-05
这两个脚本是 **设备树 overlay 文件(`.dts`)**,用于在运行时动态修改主设备树(main device tree)的配置。它们都针对 **Hisilicon tiangong0 开发板**,并且具有非常相似的结构和功能。但它们之间也存在一些 **关键差异**,主要体现在: --- ## ✅ **相同点:** ### 1. **结构相同** - 都使用 `/dts-v1/;` 和 `/plugin/;` 表示这是一个设备树插件(overlay)。 - 都使用 `fragment@x` 来对主设备树进行覆盖(overlay)。 - 都使用了 `#include <dt-bindings/gpio/gpio.h>` 引入 GPIO 宏定义。 - 都定义了 `/ { compatible = "hsan,tiangong0"; ... };` 表示兼容 tiangong0 开发板。 --- ### 2. **覆盖内容相似** - 都对以下组件进行了配置或覆盖: - **GPIO**:`peri_gpio0` 的 `pinctrl` 配置。 - **网络接口**:禁用 `gemac4`、`gemac8`、`gephy4`、`gephy5`、`gephy3_2p5`。 - **SPI0**:配置了 `slicdev` 子节点。 - **HWDIO**:配置了音频接口参数。 - **PHY LED 控制**:配置了多个 PHY 的 LED 模式和极性。 - **电源引脚控制**:`pinctrl_peri` 配置电源引脚为 3.3V。 - **I2C1**:禁用 I2C1。 - **PMU PWM**:配置 `pmupwm_sig1_state` 引脚。 --- ## ✅ **不同点:** ### 📌 **1. `vendor_id` 不同** - **脚本1**: ```dts vendor_id = "hsan"; ``` - **脚本2**: ```dts vendor_id = "vendor3"; ``` - 用途:用于标识不同厂商或配置版本,可能用于系统识别不同硬件平台。 --- ### 📌 **2. `board_id` 相同但 `target-path` 的覆盖内容不同** - **脚本1** 在 `fragment@0` 中仅覆盖了 `board_id` 和 `vendor_id`。 - **脚本2** 则在 `fragment@0` 中做了相同操作,但其 `vendor_id` 不同。 --- ### 📌 **3. USB3 相关配置不同** - **脚本1**: ```dts fragment@8 { target = <&usb3_xhci>; __overlay__ { status = "disabled"; }; }; ``` - **脚本2**: ```dts fragment@3 { target = <&usb3_xhci>; __overlay__ { status = "okay"; }; }; ``` - **脚本1** 禁用了 USB3 控制器。 - **脚本2** 启用了 USB3 控制器,并在 `fragment@2` 中设置了双 PHY 支持: ```dts phys = <&usb2phy0>, <&upsphy0>; phy-names = "usb2phy", "upsphy"; ``` --- ### 📌 **4. SerDes 配置不同** - **脚本1**: ```dts fragment@9 { target = <&serdes0>; __overlay__ { status = "disabled"; }; }; fragment@10 { target = <&serdes1>; __overlay__ { status = "disabled"; }; }; ``` - **脚本2**:没有覆盖 `serdes0` 和 `serdes1` 的 `status`。 - **脚本1** 明确禁用了 SerDes0 和 SerDes1。 - **脚本2** 未做此操作,可能保留默认状态(可能是启用)。 --- ### 📌 **5. `gephy3` 的状态不同** - **脚本1**: ```dts fragment@12 { target = <&gephy3>; __overlay__ { status = "okay"; }; }; ``` - **脚本2**: ```dts fragment@20 { target = <&gephy3>; __overlay__ { led-mode = <1>; led-polar = <0>; pinctrl-names = "default"; pinctrl-0 = <&gephy_led3_default_state>; status = "okay"; }; }; ``` - **脚本2** 更详细地配置了 `gephy3` 的 LED 模式和引脚控制。 --- ### 📌 **6. `mdio1` 配置不同** - **脚本1**:没有覆盖 `mdio1`。 - **脚本2**: ```dts fragment@16 { target = <&mdio1>; __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&extphy1_default_state>; }; }; ``` - **脚本2** 配置了 `mdio1` 的 `pinctrl`。 --- ## ✅ **总结对比表:** | 特性 | 脚本1 | 脚本2 | |------|-------|-------| | `vendor_id` | `"hsan"` | `"vendor3"` | | `usb3_xhci` 状态 | `disabled` | `okay` | | `serdes0/1` 状态 | `disabled` | 未修改 | | `gephy3` 配置 | 仅设置 `status` | 设置 `status`、LED、`pinctrl` | | `mdio1` 配置 | 无 | 设置了 `pinctrl` | | 是否启用 USB3 | ❌ 否 | ✅ 是 | | 是否启用 SerDes | ❌ 否 | ✅ 可能启用 | | 主要用途 | 禁用功能、简化配置 | 启用 USB3、更详细配置 | --- ## ✅ **相关问题:** ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值