写在前面
chapter02-侦察
侦察 reconnaissance
1. 分类:主动vs被动
被动侦察:在不与目标直接交互的前提下,获取目标某些信息(chapter5)
被动侦察:可能被防火墙或蜜罐监测到
2. 资产发现 asset discovery
传统上的资产:IP地址、服务器、域名、网络
现代意义上的资产:社交网络账号、开源代码仓库、物联网对象等
3. 使用rust实现第一个扫描器
- 基本目标:找到目标的子域名、并扫描每个域名下面的常见端口
- 进阶:增加更多的功能
4. Rust中的错误处理
- Rust使用枚举类型
result
表示正确或错误的情况。 - rust中的
errors
是强类型的,大都是枚举类型- 在库函数中,多使用
thiserror
接口(crate
)下的Error
类型 - 在程序中,多使用
anyhow
接口(crate
)下的Error
类型
- 在库函数中,多使用
thiserror::Error
适用场景:适合创建自定义的错误类型
use thiserror::Error;
// 属性宏
#[derive(Error, Debug, Clone)]
pub enum Error{
#[error("Usage:...")]
CliUsage,
}
anyhow::Error
适用场景:无需关心具体的错误类型,只需要关注如何处理错误 :sound: :sound:这里的anyhow::Error本身就是一个类型。
fn main() -> Result<(), anyhow::Error>{
// ...
}
option交互
iterator交互
#