抖音短视频教你查一个人的精准定位-CNN BLSTM CTC的验证码识别从训炼到布署
三两句,直截了当,短信验证码是 *** 信息安全的一个关键构成部分,提升 了暴力行为试着破译的成本费,而验证码识别是其背面,文中将领着大伙儿看一下怎么使用深度神经 *** 开展短信验证码的鉴别,每个制造厂商能够根据文中来了解图形验证码的缺点和不可靠性。
最新上线的(2019/01/21):假如针对DLL启用感兴趣或者别的語言的TensorFlow API感兴趣的移微信被盗 *** 黑客联系 *** 步下列2个新项目:
https://github.com/kerlomz/captcha_library_c
https://github.com/kerlomz/captcha_demo_csharp
小编选用的当下更为时兴的CNN BLSTM CTC开展端到端的不确定长验证码识别,编码中预埋了DenseNet BLSTM CTC的选择项,能够在配备中立即选用。更先,详细介绍个大约吧微信被盗 *** 黑客联系 *** 。
网格构造predict-CPUpredict-GPU实体模型尺寸
CNN5 Bi-LSTM H64 CTC15ms28米s2mb
CNN5 Bi-LSTM H16 CTC8ms28米s1.5mb
DenseNet Bi-LSTM H64 CTC60Ms60Ms6.5mb
H16/H64指的是Bi-LSTM的掩藏神微信被盗 *** 黑客联系 *** 经元数量num_units,这儿留意,你没有看错,都没有写反,LSTM有时钟频率依靠,tf.contrib.rnn.LSTMCell的完成未能很充足的运用GPU的云计算服务器,更底层kernel涵数中间的空隙十分大,不利充足的运用 GPU 的并行性来开展测算。因此 本新项目应用GPU训炼,应用CPU开展预测分析。预测分析服务项目布署新项目源代码请移景这里:https://github.com/kerlomz/captcha_platform
微信被盗 *** 黑客联系 *** 二 自然环境依靠:
有关CUDA和cuDNN版本号的难题,许多人很担心,这儿就列举官方网根据pip安装的TensorFlow的版本号相匹配表:
Linux
VersionPython versionCompilerBuild toolscuDNNCUDA
tensorflow_gpu-1.12.02.7, 3.3-3.8GCC 4.8Bazel 0.15.079
tensorflow_gpu-1.11.02.7, 3.3-3.8GCC 4.8Bazel 0.15.079
tensorflow_gpu-1.10.02.7, 3.3-3.8GCC 4.8Bazel 0.15.079
tensorflow_gpu-1.9.02.7, 3.3-3.8GCC 4.8Bazel 0.11.079
tensorflow_gpu-1.微信被盗 *** 黑客联系 *** 8.02.7, 3.3-3.8GCC 4.8Bazel 0.10.079
tensorflow_gpu-1.7.02.7, 3.3-3.8GCC 4.8Bazel 0.9.079
tensorflow_gpu-1.6.02.7, 3.3-3.8GCC 4.8Bazel 0.9.079
Windows
VersionPython 微信被盗 *** 黑客联系 *** versionCompilerBuild toolscuDNNCUDA
tensorflow_gpu-1.12.03.5-3.5MSVC 2015 update 3Bazel 0.15.079
tensorflow_gpu-1.11.03.5-3.5MSVC 2015 update 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5-3.5MSVC 微信被盗 *** 黑客联系 *** 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.9.03.5-3.5MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.8.03.5-3.5MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.7.03.5-3.5MSVC 2015 微信被盗 *** 黑客联系 *** update 3Cmake v3.6.379
tensorflow_gpu-1.6.03.5-3.5MSVC 2015 update 3Cmake v3.6.379
假如期待应用上边相匹配以外的配搭的CUDA和cuDNN,能够自主编译程序TensorFlow,或是去Github上检索TensorFlow Wheel寻找第三方编译程序的相匹配版本号的whl安装包。提早预警信息,若是自身编译程序将微信被盗 *** 黑客联系 *** 会痛苦重重的,坑许多 ,这儿也不进行了。
2.1 本新项目自然环境依靠
现阶段在下列流行电脑操作系统服务平台均完成检测:| 电脑操作系统 | 最少适用版本号 || ——– | ———— || Ubuntu | 16.04 || Windows | 7 SP1 || MacOS | N/A |
本训练科目关键的自然环境依靠清微信被盗 *** 黑客联系 *** 单以下| 依靠 | 最少适用版本号 || ———- | ———— || Python | 3.6 || TensorFlow-GPU | 1.6.0 || Opencv-Python | 3.3.0.10 || Numpy | 1.14.1 || Pillow | 4.3.0 || PyYaml | 3.13 |
2.1.1 微信被盗 *** 黑客联系 *** Ubuntu 16.04 下的 Python 3.6
1)先安裝Python自然环境
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install libc6-dev gcc
sudo apt-get install -y make 微信被盗 *** 黑客联系 *** build-essential zlib1g-dev libbz2-dev libreadline-dev $ libsqlite3-dev wget curl llvm tk-dev
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
tar -vxf Python-3.6.6.tar.xz
cd Python-3.微信被盗 *** 黑客联系 *** 6.6
./configure --prefix=/usr/local --enable-shared
make -j8
sudo make install -j8
历经上边命令就安裝好Python3.6自然环境了,假如提醒找不着libpython3.6m.so.1.0就到/usr/local/lib途径下将该文件拷贝一份到/usr/微信被盗 *** 黑客联系 *** lib和/usr/lib64路径下。2)安裝有关依靠(这一步Windows和Linux通用性)能够立即在新项目途径下实行pip3 install -r requirements.txt安裝全部依靠,留意这一步是安裝在全局性Python自然环境下的,强烈要求应用虚拟器开展新项目间的自然环境防护,如Virtualenv或Anaconda这些。我一般应用的是Virtualenv,有改动编码必须的,提议安裝PyCharm做为Python 微信被盗 *** 黑客联系 *** IDE
virtualenv -p /usr/bin/python3 venv # venv is the name of the virtual environment.
cd venv/ # venv is the name of the virtual environment.
source bin/activate # to activate the current virtual 微信被盗 *** 黑客联系 *** environment.
cd captcha_trainer # captcha_trainer is the project path.
pip3 install -r requirements.txt
2.1.2 Ubuntu 16.04 下的 CUDA/cuDNN
在网上见到过许多 实例教程,自己也布署过很数次,Ubuntu 微信被盗 *** 黑客联系 *** 16.04碰到的坑還是较为少的。14.04适用就没很好,假如电脑主板不兼容关掉SecureBoot得话千万别安裝Desktop版,由于安裝好以后一定会不断循环在登录界面没法进到桌面上。在网上实例教程说要加驱动器信用黑名单什么的朋友立即绕过了,亲自测试没哪个必需。就简易的两步:
1. 免费下载好安装文件留意免费下载runfile种类的安装文件,deb安装会自动安装默认设置驱动器,极有可能造成 登录循环系统
NVIDIA 微信被盗 *** 黑客联系 *** 驱动下载:https://www.geforce.cn/drivers
CUDA 下载链接:https://developer.nvidi *** /cuda-downloads
cuDNN 下载链接:https://developer.nvidi *** /cudnn (必须申请注册NVIDIA账户且登录,免费下载deb安装包)
2. 关掉用户界面Ctrl alt F1进到标识符页面,关掉用户界面
sudo service lightdm stop
3. 安裝Nvidia Driver
指令中的版本号自身相匹配免费下载的版本号改,在上面的下载链接依据自身的显卡型号免费下载最新版本,谨记是runfile文件格式的安装文件。
sudo chmod a x NVIDIA-Linux-x86_64-384.90.run //获得实行管理权限
微信被盗 *** 黑客联系 *** sudo ./NVIDIA-Linux-x86_64-384.90.run –no-x-check –no-nouveau-check –no-opengl-files //驱动安装
安裝取得成功之后应用下列指令认证,假如显示信息独立显卡信息内容则表明安裝取得成功
nvidia- *** i
4. 微信被盗 *** 黑客联系 *** 安裝CUDA
1)先安裝一些系统软件依靠库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2) 执行安装程序,按指示无脑继续就好了,如果提示是否安装驱动微信被盗黑客联系方式选不安装。
sudo sh cuda_9.0.176_384.81_linux.run
安装完如果环境变量没配上去,就写到 ~/.bashrc 文件的尾部
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export 微信被盗黑客联系方式 LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后在终端执行 sudo ldconfig更新,安装完毕就可以重启机器重启图形界面了。
sudo service lightdm start
2.1.3 Windows 系统
在Windows其实简微信被盗黑客联系方式单很多,只要到官网下载安装包无脑安装就可以了,下载连接同Ubuntu,先安装Python,显卡驱动,CUDA,然后下载对应的cuDNN替换到对应路径即可。
花了超长篇幅介绍了训练环境的基本搭建,主要是给尚未入门的读者看的,老鸟们随便跳过
三 使用
入手的之一步环境搭建好了,那就是准备跑代码了,还是有几个必要的条件,巧妇难为无米之炊,首先,既然是训练,要先有训练集,笔者不满百度微信被盗黑客联系方式云不开会员龟速10kb限速很久了,所以上传到 *** 群857149419共享里,有一个新手尝鲜的训练集,是mnist手写识别的例子,现在万事俱备,只欠东风。
3.1 定义一个模型
本项目采用的是参数化配置,不需要改动任何代码,可以训练几乎任何字符型图片验证码,下面从两个配置文件说起:config.yaml # 系统配置
# - requirement.txt - GPU: 微信被盗黑客联系方式 tensorflow-gpu, CPU: tensorflow
# - If you use the GPU version, you need to install some additional applications.
# TrainRegex and TestRegex: Default matching apple_20181010121212.jpg file.
# 微信被盗黑客联系方式 - The Default is .*?(?=_.*\.)
# TrainsPath and TestPath: The local absolute path of your training and testing set.
# TestSetNum: This is an optional parameter that is used when you want to extract 微信被盗黑客联系方式 some of the test set
# - from the training set when you are not preparing the test set separately.
System:
DeviceUsage: 0.7
TrainsPath: 'E:\Task\Trains\YourModelName\'
TrainRegex: 微信被盗黑客联系方式 '.*?(?=_)'
TestPath: 'E:\Task\TestGroup\YourModelName\'
TestRegex: '.*?(?=_)'
TestSetNum: 1000
# CNNNetwork: [CNN5, DenseNet]
# RecurrentNetwork: 微信被盗黑客联系方式 [BLSTM, LSTM]
# - The recommended configuration is CNN5+BLSTM / DenseNet+BLSTM
# HiddenNum: [64, 128, 256]
# - This parameter indicates the number of nodes used to remember and store past 微信被盗黑客联系方式 states.
NeuralNet:
CNNNetwork: CNN5
RecurrentNetwork: BLSTM
HiddenNum: 64
KeepProb: 0.98
# SavedSteps: A Session.run() execution is called a Steps,
微信被盗黑客联系方式# - Used to save training progress, Default value is 100.
# ValidationSteps: Used to calculate accuracy, Default value is 100.
# TestNum: The number of samples for each test batch.
# -微信被盗黑客联系方式 A test for every saved steps.
# EndAcc: Finish the training when the accuracy reaches [EndAcc*100]%.
# EndEpochs: Finish the training when the epoch is greater than the defined 微信被盗黑客联系方式 epoch.
Trains:
SavedSteps: 100
ValidationSteps: 500
EndAcc: 0.975
EndEpochs: 1
BatchSize: 64
TestBatchSize: 400
LearningRate: 0.01
DecayRate: 0.98
微信被盗黑客联系方式 DecaySteps: 10000
上面看起来好多好多参数,其实大部分可以不用改动,你需要修改的仅仅是训练集路径就可以了,注意:如果训练集的命名格式和我提供的新手训练集不一样,请根据实际情况修改TrainRegex和TestRegex的正则表达式。,TrainsPath和TestPath路径支持list参数,允许多个路径,这种操作适用于需要将多种样本训练为一个模型,或者希望训练一套微信被盗黑客联系方式通用模型的人。为了加快训练速度,提高训练集读取效率,特别提供了make_dataset.py来支持将训练集打包为tfrecords格式输入,经过make_dataset.py打包之后的训练集将输出到本项目的dataset路径下,只需修改TrainsPath键的配置如下即可
TrainsPath: './dataset/xxx.tfrecords'
TestPath是微信被盗黑客联系方式允许为空的,如果TestPath为空将会使用TestSetNum参数自动划分出对应个数的测试集。如果使用自动划分机制,那么TestSetNum测试集总数参数必须大于等于TestBatchSize测试集每次读取的批次大小。神经 *** 这块可以讲一讲,默认提供的组合是CNN5(CNN5层模型)+BLSTM(Bidirectional 微信被盗黑客联系方式 LSTM)+CTC,亲测收敛最快,但是训练集过小,实际图片变化很大特征很多的情况下容易发生过拟合。DenseNet可以碰运气在样本量很小的情况下很好的训练出高精度的模型,为什么是碰运气呢,因为收敛快不快随机的初始权重很重要,运气好前500步可能对测试集就有40-60%准确率,运气不好2000步之后还是0,收敛快慢是有一定的运气成分的。
NeuralNet:
CNNNetwork: CNN5
RecurrentNetwork: BLSTM
HiddenNum: 微信被盗黑客联系方式 64
KeepProb: 0.99
隐藏层HiddenNum笔者尝试过8~64,都能控制在很小的模型大小之内,如果想使用DenseNet代替CNN5直接修改如上配置中的CNNNetwork参数替换为:
NeuralNet:
CNNNetwork: DenseNet
......
微信被盗黑客联系方式
model.yaml # 模型配置
# ModelName: Corresponding to the model file in the model directory,
# - such as YourModelName.pb, fill in YourModelName here.
# CharSet: Provides a default optional 微信被盗黑客联系方式 built-in solution:
# - [ALPHANUMERIC, ALPHANUMERIC_LOWER, ALPHANUMERIC_UPPER,
# -- NUMERIC, ALPHABET_LOWER, ALPHABET_UPPER, ALPHABET]
# - Or you can use your own customized character set 微信被盗黑客联系方式 like: ['a', '1', '2'].
# CharExclude: CharExclude should be a list, like: ['a', '1', '2']
# - which is convenient for users to freely combine character sets.
# - If you don't want to manually 微信被盗黑客联系方式 define the character set manually,
# - you can choose a built-in character set
# - and set the characters to be excluded by CharExclude parameter.
Model:
Sites: []
ModelName: 微信被盗黑客联系方式 YourModelName-CNN5-H64-150x50
ModelType: 150x50
CharSet: ALPHANUMERIC_LOWER
CharExclude: []
CharReplace: {}
ImageWidth: 150
ImageHeight: 50
# 微信被盗黑客联系方式 Binaryzation: [-1: Off, >0 and < 255: On].
# Smoothing: [-1: Off, >0: On].
# Blur: [-1: Off, >0: On].
# Resize: [WIDTH, HEIGHT]
# - If the image size is too 微信被盗黑客联系方式 *** all, the training effect will be poor and you need to zoom in.
# - ctc_loss error "No valid path found." happened
Pretreatment:
Binaryzation: -1
Smoothing: -1
Blur: 微信被盗黑客联系方式 -1
上述的配置只要关注ModelName、CharSet、ImageWidth、ImageHeight首先给模型取一个好名字是成功的之一步,字符集CharSet其实大多数情况下不需要修改,一般的图形验证码离不开数字和英文,而且一般来说是大小写不敏感的,不区分大小写,因为打码平台收集的训练集质量参差不齐,有些大写有些小写,不如全部统一为小写,默认ALPHANUMERIC_LOWER则会自动将大写的转为小写,字符集可定制化很灵活,除了配置备注上提供的几种类型,还可以训练中文,自定义字符集用list表示,示例如下:
CharSet: 微信被盗黑客联系方式 ['常', '世', '宁', '慢', '南', '制', '根', '难']
可以自己根据收集训练集的实际字符集使用率来定义,也可以无脑网上找3500常用字来训练,注意:中文字符集一般比数字英文大很多,刚开微信被盗黑客联系方式始收敛比较慢,需要更久的训练时间,也需要更多的样本量,请量力而行
形如上图的图片能轻松训练到95%以上的识别率。ImageWidth、ImageHeight只要和当前图片尺寸匹配即可,其实这里的配置主要是为了方便后面的部署智能策略。其他的如Pretreatment之下的参数是用来做图片预处理的,因为笔者致力于做一套通用模型,模型只使用了灰度做预处理。其中可选的二值化、均值滤波、高斯模糊均未开启,即使不进行那些预处理该框架已经能够达到很理想的识别效果了,笔者自用的大多数模型都是98%以上的识别率。
3微信被盗黑客联系方式.2 开始训练
按照上面的介绍,配置只要修改极少数的参数对应的值,就可以开启正式的训练之旅了,具体操作如下:可以直接使用PyCharm的Run,执行trains.py,也可以在激活Virtualenv下使用终端亦或在安装依赖的全局环境下执行
python3 trains.py
剩下的就是等了,看过程,等结果。正常开始训练的模样应该是这样的:
微信被盗黑客联系方式训练结束会在项目的out路径下生成一个pb和yaml文件,下面该到部署环节了。
微信被盗黑客联系方式 3.3 部署
真的很有必要认真的介绍一下部署项目,比起训练,这个部署项目倾注了笔者更多的心血,为什么呢?项目地址:https://github.com/kerlomz/captcha_platform
真的值得了解的几点
同时管理多个模型,支持模型热拔插
灵活的版本控制
支持批量识别
服务智能路由策略
微信被盗黑客联系方式首先笔者重写了Tensor Flow的Graph会话管理,设计会话池,允许同时管理多模型,实现多模型动态部署方案。1)训练好的pb模型只要放在部署项目的graph路径下,yaml模型配置文件放在model,即可被服务发现并加载,2)如果需要卸载一个正在服务的模型,只需要在model中删除该模型的yaml配置文件,在graph中删除对应的pb模型即可。3)如果需要更新一个已经服务中的模型,只需修改新版的模型yaml配置文件的版本号微信被盗黑客联系方式高于原模型的版本号,按先放pb后放yaml的顺序,服务便会自动发现新版的模型并加载使用,旧的模型将因版本低于新版模型不会被调用,可以按照上述的卸载 *** 卸载已被弃用的模型释放内存。上面的操作中无需重启服务,完全的无缝切换
其次,一套服务想要服务于各式各样的图像识别需求,可以定义一套策略,训练时将所有尺寸一样的图片训练成一个模型,服务根据图片尺寸自动选择使用哪个模型,这样的设计使定制化和通用性共存,等积累到一定多样微信被盗黑客联系方式的训练集时可以将所有的训练 *** 到一起训练一个通用模型,亦可以彼此独立,每个模型的叠加仅仅增加了少量的内存或显存,网上的方案大多是不同的模型单独部署一套服务,每个进程加载了一整套TensorFlow框架势必是过于庞大和多余的。
用到批量识别需求的人相对少很多这里就不展开介绍了。识别项目提供了多套可选的服务有:gRPC,Flask,Tornado,Sanic,其中Flask和Tornado提供了加密接口,类似于微信微信被盗黑客联系方式公众号开发接口的SecretKey和AccessKey接口,感兴趣的可以在demo.py中阅读调用源码了解。
部署的使用可以经过package.py编译为可执行文件,这样可以免去更换机器环境安装的烦恼,部署项目安装流程同训练项目,项目中提供的requirements.txt已经将所需的依赖都列清楚了,强烈建议部署项目安装cpu版TensorFlow。
Linux:
Tornado:
# 微信被盗黑客联系方式 端口 19952
python3 tornado_server.py
Flask
# 方案1,裸启动, 端口 19951
python flask_server.py
# 方案2,使用gunicorn,端口 5000
pip install gunicorn
微信被盗黑客联系方式gunicorn -c deploy.conf.py flask_server:app
Sanic:
# 端口 19953
python3 sanic_server.py
gRPC:
# 端口 50054
python3 微信被盗黑客联系方式 grpc_server.py
Windows:Windows平台下都是通过python3 xxx_server.py启动对应的服务,注意,Tornado、Flask、Sanic的性能在Windows平台都大打折扣,gRPC是Google开源的RPC服务,有较为优越的性能。
3.4 调用/测试
1. Flask服务:
请求地址Content-Type参数形式请求 *** 微信被盗黑客联系方式
http://localhost:19951/captcha/v1application/json *** ONPOST
具体参数:| 参数名 | 必选 | 类型 | 说明 || ———- | —- | —— | ——————&微信被盗黑客联系方式mdash;— || image | Yes | String | Base64 编码 || model_site | No | String | 网站名,yaml配置中可绑定 || model_type | No | String | 类别,yaml配置中可绑定 |请求为 *** ON格式,形如:{“image”: “base64编码后的图像二进制流”}
微信被盗黑客联系方式返回结果:| 参数名 | 类型 | 说明 || ——- | —— | —————— || message | String | 识别结果或错误消息 || code | String | 状态码 || success | String | 是否请求成功 |该返回为 *** ON格式,形如:{“message”: 微信被盗黑客联系方式 “xxxx”, “code”: 0, “success”: true}
2. Tornado服务:
请求地址Content-Type参数形式请求 ***
http://localhost:19952/captcha/v1application/json *** ONPOST
请求参数和返回格式同上
3. 微信被盗黑客联系方式 Sanic服务:| 请求地址 | Content-Type | 参数形式 | 请求 *** || ———– | —————- | ——– | ——– || 微信被盗黑客联系方式 http://localhost:19953/captcha/v1 | application/json | *** ON | POST |请求参数和返回格式同上
4. gRPC服务:需要安装依赖,grpcio、grpcio_tools和对应的grpc.proto文件,可以直接从项目中的示例代码demo.py中提取。
class GoogleRPC(object):
def __微信被盗黑客联系方式init__(self, host: str):
self._url = '{}:50054'.format(host)
self.true_count = 0
self.total_count = 0
def request(self, image, model_type=None, model_site=None):
微信被盗黑客联系方式
import grpc
import grpc_pb2
import grpc_pb2_grpc
channel = grpc.insecure_channel(self._url)
stub = grpc_pb2_grpc.PredictStub(channel)
response = 微信被盗黑客联系方式 stub.predict(grpc_pb2.PredictRequest(
image=image, split_char=',', model_type=model_type, model_site=model_site
))
return {"message": response.result, "code": response.code, 微信被盗黑客联系方式 "success": response.success}
if __name__ == '__main__':
result = GoogleRPC().request("base64编码后的图片二进制流")
print(result)
3.5 微信被盗黑客联系方式 奇技淫巧
该项目还可以直接用于识别带颜色的图片,本质是不同的颜色分别训练,调用的时候通过传参区分,如果希望获得图片中红色的文字,就直接通过参数定位到训练红色的模型,希望获取图片中蓝色的图片就通过参数定位到蓝色模型,如:
不过这种操作对样本量要求较高,且效率不高,当颜色参数越来越多时就不适用,可以采用颜色提取的方微信被盗黑客联系方式式,这样所需要的样本量将大大减少,但对于颜色提取算法效果要求高了。还有一种方案是同时预测验证码和每个字符对应的颜色,不过这需要修改现有的神经 *** 进行支持,在最后一层修改为双输出,一个输出颜色,一个输出对应字符,这对于样本标注的要求较高,也提高的成本,所以如果能用无限生成样本,那问题就迎刃而解了,比如上图,笔者就写了样本生成代码,感兴趣的可以移步:https://www.jianshu.com/p/da1b972e24f2其实还有微信被盗黑客联系方式 很多很多技巧,例如,用生成的样本代替训练集,其实网上的图片验证码大多是采用开源的,稍作修改而已,大多数情况都能被近似生成出来,笔者收集了不少源代码,上述展示的验证码图片不代表任何实际的网站,如有雷同,笔者不承担责任,该项目只能用于学习和交流用途,不得用于非法用途。
后记
如果各位好汉对深度学习、OCR感兴趣的,欢迎大家一起学习和交流。走过路过点个星在此谢谢大家了!
https://github.com/kerlomz/captcha_trainer
https://github.com/kerlomz/captcha_platform
*本文原创作者:kerlomz,本文属FreeBuf原创奖励计划,未经许可禁止转载
红壳鸟好像不要训练开食吧。直接喂谷子是比较难,不嫌麻烦打成粉.弄成糊状做成软软小颗粒,那是腐烂的原因,千万不能吃,有毒的。石榴的肉微信被盗黑客联系方式是粉红的,壳也是粉红的,脑补一下所以美容,不像其他的水果,皮肉颜色不一样一般微型车用红壳优于黄壳。十万以上的车用黄壳优于红壳。并不是价钱高就是好的,相匹配是更佳的,黄壳的黏度比红壳低,低温启动效果好。减少摩擦,润滑。抖音教你查一个人的定位
黑客是怎么知道你的位置的。2012394922可以的。黑客不会随便接受的。
抖音教你查一个人的定位想要这样的话,必须要有像你们申请手机号的那样,用链接器将新的手机卡与电微信被盗黑客联系方式脑链接好,并且你还要入侵到它们的服务器里,将里面的(你想要的)数据和驱动拷。
首先。我不是黑客。你还小。有点天真。幻想着某些事情。黑客只能做为一个副业。或许可有可无的。或许说是一个兴趣爱好更加合适。因为,它是违纪的。
你还是先研究一下TCP/IP协议吧是不是《日光爱人》?作者:天崖之翼不做商场大亨却叱咤风云,不去趋炎附势却权倾天下,不去攀花折草却坐拥花丛,不去追刀逐剑却纵横武林!一个我行我。抖音教你查一个微信被盗黑客联系方式人的定位
悟空问答收益计算时间:1、悟空问答官网有明确说明收益计算时间的。是每天晚上结算前一天的收益。现金收入将通过消。
抖音教你查一个人的定位黑客不是相当就当的,因为系统都是由代码和英语组成,文化程度必须高,尤其是理科成绩,而且,而且数学逻辑思维必须好,编程需要。如果你只是初中。还是建议你再。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。