花名/ID: 天析

邮箱: 2200475850@qq.com

主攻方向: 物联网安全、WEB安全

兴趣爱好: 乒乓球、羽毛球、排球、业余无线电···

备案信息:蜀ICP备19023334号

一名成熟的物理黑客是如何养成的

近期改动时间:2021-01-29 21:19:35

不定期更新帖,因为帖主还在努力学习当中!

我将通过对网络上的一些关于 物联网 / 工控 安全等相关方面的思维导图、文章、漏洞进行学习后,根据自身的理解予以整理修改,因此难免会出现差错之处,请各位师傅们予以指正。对于文中引用的一些相关资料和资源均版权归原作者所有!本文将不定期更新!催更新请加我QQ:2200475850 ~


开发基础(具有一定的编码能力是不必不可少的)

  1. C语言

  • ### 必备Linux命令和C语言基础

这里我们列出一些 Linux 主流发行版的操作!

关机命令

  • halt 【立刻关机】

  • poweroff 【立刻关机】

重启命令

  • reboot 【立即重启】

其他命令

|命令|操作说明|
|-|-|
|ls|显示文件或目录|
|ls -l|列出文件详细信息|
|ls -a|列出当前目录下所有文件及目录,包括隐藏文件|
|mkdir|创建目录|
|cd|切换目录|
|cat|查看文件内容|
|cp|拷贝|
|mv|移动或重命名|
|rm|删除文件|
|rm -r|递归删除,可删除子目录及文件|
|rm -f|强制删除|
|find|在文件系统中搜索某文件|
|grep|在文本文件中查找某个字符串|
|rmdir|删除空目录|
|pwd|显示当前目录|
|ln|创建链接文件|
|who|显示在线登陆用户|
|whoami|显示当前操作用户|
|hostname|显示主机名|
|uname|显示系统信息|
|top|动态显示当前耗费资源最多进程信息|
|ps|显示瞬间进程状态|
|ifconfig|查看网络情况|
|ping|测试网络连通|
|netstat|显示网络状态信息|
|kill|杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。|

  • ### 输入输出专题

输出(你向这个世界宣告你的诞生):

#include "stdio.h"

int main() {

    /* 我的第 1 个 C 程序 */
    printf("你好,世界!\n");

    return 0;

}

输入(它多少岁了):

#include "stdio.h"

int main() {

    /* 我的 2 个 C 程序 */
    int age;
    printf("你觉得它多少岁了?\n\n->");
    scanf_s("%d", &age);
    printf("\n\n原来我%d岁了啊!", age);

    return 0;

}
  • ### 控制语句

if 判断

#include "stdio.h"

int main() {

    /* 我的 3 个 C 程序 */

    int a = 20;
    int b = 10;

    if (a > b) {

        printf("\n a > b  这是真的\n");

    }
    if (a < b) {

        printf("\n a < b 这是真的\n");

    }
    if (a == b) {

        printf("\n a == b 这是真的\n");

    }
    if (a >= b) {

        printf("\n a >= b 这是真的\n");

    }
    if (a <= b) {

        printf("\n a <= b 这是真的\n");

    }
    if (a != b) {

        printf("\n a != b 这是真的\n");

    }

    return 0;

}

switch 选择

#include "stdio.h"

int main() {

    /* 我的 4 个 C 程序 */

    int who_am_i = 0;

    switch (who_am_i) {

        case 0:
            printf("原来我是 A\n");
        case 1:
            printf("原来我是 B\n");
        case 2:
            printf("原来我是 C\n");
        case 3:
            printf("原来我是 D\n");
        default:
            printf("我,谁也不是!\n");

    }

    return 0;

}

while循环

方式一:

#include "stdio.h"

int main() {

    /* 我的 5 个 C 程序 */

    int i = 0;
    int sum = 0;

    while (i <= 100) {

        sum += i;
        i++;

    }

    printf("%d\n", sum);

    return 0;

}

方式二:

#include "stdio.h"

int main() {

    /* 我的 6 个 C 程序 */

    int i = 0;
    int sum = 0;

    do {

        sum += i;
        i++;

    } while (i <= 100);

    printf("%d\n", sum);

    return 0;

}

for循环

#include "stdio.h"

int main() {

    /* 我的 7 个 C 程序 */

    int i, sum = 0;

    for (i = 0; i <= 100; i++) {

        sum += i;

    }

    printf("%d\n", sum);

    return 0;

}
  • 函数

    介于篇幅的原因,【函数】这部分,建议师傅们直接去看C语言中文网的教程,挺不错的!

  • 数组和字符串

    介于篇幅的原因,【数组】和【字符串】这部分,建议师傅们直接去看C语言中文网的教程,挺不错的!

    数组溢出

在C语言中,数组的元素下标是从0开始计算的,所以,对于n个元素的数组a[n], 遍历它的时候是a[0],a[1],...,a[n-1],如果遍历到a[n],数组就溢出了。

  1. C语言高级

  • ### 软件包管理及shell命令
  • ### shell命令
  • ### shell脚本编程
  • ### C语言高级编程
  • Makefile

  1. 数据结构全攻略

  • ### 顺序表
  • ### 单链表上
  • ### 循环链表及线性表的应用
  • ### 栈及其实现
  • ### 队列实现及应用
  • ### 树和二叉树
  • ### 查找
  • ### 排序

单片机基础知识

  1. 什么是单片机?

    单片机是一种集成电路芯片,也叫微控制器,MCU,简单的来讲,单片机就是一个将微型计算机系统集成到里面的电路芯片。

其实现如今无论是哪一种微控制器,51也好,32也好,究其本质都是内核加外设,内核通过诸多寄存器来控制外设,而各种外设通过各种中断系统来通知内核。内核与外设之间通过总线传递数据,地址等信息。因此我们其实涉及到的这一部分的知识其实都是读写寄存器,处理中断源,控制访问内部总线。

  1. 入门单片机推荐

    推荐学习51单片机的一定知识后直接过度到32或者其他系列的单片机,因为,一通百通。

应用层核心知识

  1. 嵌入式Linux下文件I/O精讲
  • 标准I/O上
  • Linux下文件I/O
  • 库的制作及使用
  1. Linux并发程序设计你该这么学
  • 进程编程及守护进程
  • 线程专题
  • Unix进程间通信方式上
  • System V IPC对象上
  1. Linux网络编程必修篇
  • 网络基础上
  • TCP编程
  • 并发服务器
  • UDP编程
  • IO多路复用
  • TCP、IP协议原理
  • 网络编程扩展

底层核心知识

  1. 精通ARM体系结构及接口技术
  • ARM基础
  • ARM指令
  • ARM异常处理
  • ARM裸机开发
  • ARM通讯接口
  • ARM中断机制
  • ARM波形控制
  1. 全面掌握嵌入式系统移植
  • 系统移植概述及环境搭建
  • 系统移植概述及环境搭建
  • Bootloader移植
  • Linux内核分析
  • Linux内核移植及网卡移植
  • 第三方驱动移植
  • 根文件系统制作
  1. 嵌入式内核及驱动开发初级
  • 设备驱动环境搭建
  • 驱动模块开发
  • 字符设备驱动基础
  • 中断编程
  • 平台总线专题
  1. 嵌入式内核及驱动开发高级
  • 高级驱动学习方法
  • 输入子系统
  • I2C子系统
  • 设备树

物联网开发关键技术

  1. Android系统开发
  • Android系统开发之系统概述及开发环境搭建
  • Android系统开发之系统编译过程详解
  • Android系统开发之模块编程及fastboot使用
  • Android系统开发之系统启动流程分析
  • Android系统开发之HAL硬件抽象层的开发
  1. stm32 嵌入式系统设计
  • ARM体系结构概述
  • 开发环境搭建及平台
  • STM32 GPIO口操作平台
  • STM32 USART串口的应用
  • STM32时钟
  • STM32中断系统
  • STM32 I2C总线通信
  • STM32 SPI总线通信2
  • STM32模数转换器ADC
  • STM32数据搬运工DMA
  • STM32 实时时钟RTC
  • STM32 PWM定时器

物联网高级开发

  1. Zigbee系统开发
  • zigbee简介+开发环境搭建
  • zigbee无线传感器网络
  • zigbee无线传感器网络管理及实战
  • ZigBee项目实战
  1. 蓝牙4.0 BLE开发从入门到精通
  • 蓝牙介绍和开发环境的搭建
  • 基础实验
  • 蓝牙协议栈
  • 蓝牙智能手环介绍
  1. RFID开发与应用

工控安全层次结构

物理层次

  • 门禁系统
  • 人脸验证
  • 无线路由系统
  • 终端机安全
  • 智能家具(门锁、小爱音响、天猫精灵等)

网络层次

  • 无线网环境(WiFi)
  • vpn接入安全
  • rdp威胁
  • 端口安全
  • 防火墙
  • IPS/IDS
  • 流量安全

应用层次

  • 操作系统安全
  • 邮件安全
  • 协作管理平台安全
  • 态势感知
  • 配置安全
  • 操作审计
  • 流量分析

用户层次

  • 身份校验
  • 数字证书
  • 日志管理
  • 授权管理
  • 特权管理
  • 态势感知
  • 数据备份
  • 数据加密
  • 数据交换

IoT产品安全评估

IoT产品安全评估
IoT产品安全评估