BruceFan's Blog

Stay hungry, stay foolish

0%

我的stm32l431开发板使用的是CH340 USB转串口芯片,Linux默认有这个驱动程序,将设备插到电脑上后在/dev目录下会多一个ttyUSB0设备,用dmesg查看驱动内核log:

1
2
3
4
5
6
$ dmesg
...
[91912.510126] usbcore: registered new interface driver ch341
[91912.510142] usbserial: USB Serial support registered for ch341-uart
[91912.510157] ch341 3-3.1:1.0: ch341-uart converter detected
[91912.524719] usb 3-3.1: ch341-uart converter now attached to ttyUSB0
阅读全文 »

JTAG(Joint Test Action Group;联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
OpenOCD是一个用于JTAG调试的软件, 可以用于不同调试器和CPU, 还可以与GDB配合,stlink和jlink都是符合JTAG标准的调试器。
想在Ubuntu下对stm32开发板进行调试需要先安装OpenOCD下载地址,在Ubuntu16.04上:

阅读全文 »

原项目
下载models v1.11
因为项目要用到official包里的文件,所以将下载的models压缩包解压后,把其中的official文件夹拷贝到python包路径下,比如:

1
~/.virtualenvs/deepspeech/lib/python3.5/site-packages

安装official依赖:

1
$ pip install -r official/requirements.txt
阅读全文 »

syzkaller运行流程结构如下图所示,红色标签表示需要配置的选项:

syz-manager用来启动、监控、和重启多个虚拟机实例,并在虚拟机里启动一个syz-fuzzer进程。它负责持久化corpus和存储crash。

阅读全文 »

宿主机要通过ssh访问虚拟机有两种网络配置方式,一种是用户模式网络,另一种是网桥网络模式。

qemu内部的用户模式网络

在没有任何-net参数时,qemu默认使用的是-net nic -net user参数,提供了一种用户模式(user-mode)的网络模拟。使用用户模式网络的虚拟机可以连通宿主机及外部网络,用户模式网络是完全由qemu自身实现,不依赖于其他工具,而且不需要root权限。qemu使用Slirp实现了一整套TCP/IP协议栈,并且使用这个协议栈实现了一套虚拟的NAT网络。

阅读全文 »

syzkaller官网上有介绍如何在Ubuntu宿主机上用qemu方法fuzz x86_64的Linux内核,但是步骤很分散,在好几个页面上,而且还可能有一些坑,后面会讲到。
首先介绍一下我的环境:

  • Ubuntu 16.04 x86_64
  • gcc 8.2.0
  • linux-5.1
  • go1.12.5
阅读全文 »

Google为了解决机器学习模型部署上线至生产环境,发布了Tensorflow Serving。本文主要通过部署一个手写数字识别的模型来介绍Tensorflow Serving的基本用法。

阅读全文 »

这次主要是调试Android system/bt目录下的代码,也就是蓝牙相关的代码,是源于对几个CVE(cve-2018-9355~cve-2018-9362)的学习,这几个CVE是蓝牙相关的漏洞。

蓝牙相关代码分析

因为之前对蓝牙相关代码没有了解过,所以先对AOSP中关于蓝牙的代码进行学习。首先是从Android应用层编程开始,几个基本操作:

阅读全文 »

继续上一篇文章的内容,我们已经有一个可以证实的区块链了,但是现在链中只保存着一些无用的信息,这篇文章中我们将会实现简单的钱包(wallet)交易(transaction),用交易来替换这些数据,创建一个非常简单的加密货币:”NoobCoin”。

阅读全文 »