nodes:节点,可执行文件,可以通过ros与其他节点进行通信(节点是一个能执行特定工作任 务的工作单元,并且能够相互通信,从而实现一个机器人系统整体的功能)
messages:ros的一种数据类型,用于订阅或者发布到一个话题
topics:话题,节点可以发布消息到话题
master:节点管理器,ros名称服务
rosout:ros中相当于stdout/stderr
roscore:主机+rosout+参数服务器
roscore启动
rosrun turtlesim turtlesim_node启动一个node
rosrun turtlesim turtle_teleop_key启动键盘控制(注意鼠标的聚焦点在这个terminal上)
rosrun rqt_graph rqt_graph打开显示当前系统运行的情况
rostopic echo /turtle1/cmd_vel查看话题发布的数据
附代码如下:
import cv2 as cv import numpy as np def ch(): src = cv.imread("D:/matplotlib/0.jpg") h,w,ch = np.shape(src) bgr = cv.split(src) cv.imshow("blue",bgr[0]) cv.imshow("green",bgr[1]) cv.imshow("red",bgr[2]) print(h,w,ch) cv.waitKey(0) cv.destroyAllWindows() ch() 运行效果:
代码解释:
import cv2 as cv import numpy as np def ch(): src = cv.imread("D:/matplotlib/0.jpg") h,w,ch = np.shape(src) bgr = cv.split(src) #将彩色图像拆分成单个通道 cv.imshow("blue",bgr[0]) cv.imshow("green",bgr[1]) cv.imshow("red",bgr[2]) #分别显示每个通道的图像 print(h,w,ch) cv.waitKey(0) cv.destroyAllWindows() ch()
继续学习,这次尝试做了一下南邮ctf平台的逆向题来练习
目录
第一题 HELLO,RE!
第二题 ReadAsm2
第三题 Py交易
第四题 WxyVM
第五题 maze
第六题 WxyVM 2
第一题 HELLO,RE! 打开ida,找到main函数按F5,hexray反编译
就在眼前 flag{Welcome_To_RE_World!}
第二题 ReadAsm2 来锻炼汇编的阅读能力吧
main函数定义了一串字符串,应该就是加密的密文
通过func解密后输出结果,题目提示调用约定为System V AMD64 ABI
百度调用约定后,分析结果如下
总的来说,意思就是函数对输入的字符串每一个字符都与其
所在缓冲区的索引做异或运算,最后输出结果。
用py来写解密脚本吧
flag = [0x0,0x67,0x6e,0x62,0x63,0x7e,0x74,0x62,0x69,0x6d, 0x55, 0x6a, 0x7f, 0x60, 0x51, 0x66,0x63, 0x4e, 0x66, 0x7b, 0x71, 0x4a, 0x74, 0x76, 0x6b, 0x70, 0x79, 0x66 , 0x1c] flagstr = [] index = 0 for ech in flag: flag[index] = ech^index flagstr.append(chr(flag[index])) index = index+1 print ''.
低照度增强调研情况 目前使用的低照度增强方法主要包括四种:基于直方图均衡化的方法(HE);基于Retinex理论的方法;基于去雾模型的方法以及基于深度学习的方法。这些方法都是基本的方法,对于其他的一些方法大都是基于这些方法进行改进得到的。
基于直方图均衡的方法 直方图均衡化的思想就是将图像的灰度直方图从较为集中的某灰度区间拉伸至全部灰度范围内,用以扩大图像灰度值的范围,提升图像对比度并突出部分细节效果。对于一副图片来说其直方图可以用来表示灰度值的分布。其中如果大部分像素集中在低灰度区间则图片整体较暗,相反则图片较亮。所以我们可以对于灰度分布图采用均衡化的方法将其灰度的分布范围在整个区域平均化,这样就相当于减少了低灰度的像素个数,整个图片就会变亮一些。
基于Retinex的方法 Retinex方法主要是基于人类的视觉系统可以不受光源强度和照射不均匀等不确定因素的干扰而准确感知物体的颜色和亮度这一理论提出的。提出这一理论主要是基于真实世界中物体的颜色由光与物体的相互作用产生的,其本身是无颜色的;构成颜色的基本单元是红、绿、蓝三原色光波、单位区域的颜色由红绿蓝三原色光波决定这几个理论。
根据上述理论,我们可以得出物体的颜色不受反射光强和非均匀光照的影响仅有物体的反射光线决定。基于此,我们假设如下公式:,其中表示视觉系统最终的图片(人看到的图片),表示物体特有的性质称为物体的反射特性,表示入射光的影响。根据公式我们需要的是,已知的是,需要估计的是。
为了简化计算,我们对上式两边同时取对数(乘除变加减)则可以得到:
由上式可知,我们只需要估计出就可以得到对应的。对于的估计采用高斯卷积函数进行:
其中表示的是高斯函数,*表示卷积运算。的表达式为:
表示的是一个尺度,表示高斯函数的尺度选择,其满足。该式中是需要求的。因此对于一个彩色通道的图片,其某一通道对应的图像变换后为:
然后在利用就可以求出每一个通道的值。最终就得到了每个通道处理后的值进而得到处理后的图片。
上述方法采用了一个高斯核,因此一般被称为单尺度Retinex方法(SSR)。现在假设整个过程采用了个高斯核,则每个在评估的时候就会出现个不同的值,如果把这些值综合起来就行成了多尺度的Retinex方法(MSR),其具体公式如下:表示权重。
由于MSR会存在色差,有人提出来在通道上加入调节因子来消除色差,其具体如下:
表示的是调节因子,其对应的取值方式不同往往会产生不同的效果。现在常用的有基于其各通道的均值 ,方差计算出最小值和最大值,然后用最小值和最大值进行归一化。
其中取值越小,增强效果越明显,一般取2-3最适宜。
基于去雾模型的图片增强 去雾模型一般是针对雾霾或者大雾天气,考虑到空气中的悬浮物导致的图片效果不佳时需要采用的方法。该方法假设:
其中表示待去雾的图像,表示无雾图像,表示全球大气光成分,表示折射率(大气传递系数)。在使用过程中是要求的,为输入的,和是需要通过暗通道先验来进行估计的。
暗通道先验规律是指每一个图片的局部区域都很有可能有至少一个颜色通道有很低的值。根据这个规律我们定义了暗通道的值如下:
通过上式可以看出,求暗通道的值首先是求出通道的最小值。在根据通道最小值求出区域内的最小值。
根据暗通道的值我们可以估计大气折射率:
根据暗通道的值估计大气光:
(1):选取暗通道图像中暗通道最亮的0.1%。
(2):在取出的位置中,对应到原图找出最高亮度点的值作为大气光。
然后回带到开始的式子中就可以求出对应的去雾图:
基于深度学习 使用卷积神经网络来进行低照度增强的资料较少,目前只发现了一种方式,并且也没有固定的官方模型,只是一个简单的7层卷积网络,由于图片增强的目的是把亮度低的地方亮度变高,所以该模型要求输出的大小和原来的相同,因此该网络没有池化层。其具体结构如下:
上述就是采用的网络结构,由于图片增强的目的只是为了提高亮度,同时并不希望色彩方面的值发生改变而引起不必要的色彩差异。因此本次采用的是将RGB色彩空间转化为HSI空间,然后再对I分量进行卷积处理,最后再转换成RGB空间合成最后的图片。其具体流程如下:
各方法的优劣 上述方法是最近看到的低照度增强使用较多的方法,其各有优缺。现在将其总结如下:
直方图法可以有效的提高对比度,并且处理速度快。但是容易出现色差并且灰度级的合并会丢失细节信息。
SSR方法假设光照是缓慢变化的,但是真是情况下光照是不平滑的,因此采用这种方法在亮度差异大的区域会产生光晕。
MSR方法能够较好的提高图片的对比度和亮度,但是图片边缘锐化不足,容易出现光晕或者图片泛白。
去雾模型虽然能够在一定程度上提高视觉质量,但是增强后的图像往往不符合场景,因为我们的场景是光线不够导致的图像变暗,而不是由于悬浮物遮挡导致的。
基于深度学习的方法能够避免传统方法的参数调节问题,也能够使色彩更加协调,但是缺乏训练样本,在训练时我们必须要给出同样场景只有照度不同的图片,因此该方法也比较难实现。
参考文献
《基于深度卷积神经网络的低照度图像增强》马红强1 ,马时平1,许悦雷1,2,朱明明1;
《基于卷积神经网络的水下图像增强算法研究》 丁雪研
windows下,当你在命令行输入pip,回车后,报如下提示
Traceback (most recent call last): File “c:\python\python36-32\lib\runpy.py”, line 193, in _run_module_as_main “__main__”, mod_spec) File “c:\python\python36-32\lib\runpy.py”, line 85, in _run_code exec(code, run_globals) File “C:\Python\Pyt…………….
解决方式:1、首先删除Python,根据自己的版本。我的python-3.6-32位的。
2、在次安装python软件,安装成功后,在次输入pip系统报:
C:\Users\Administrator>pip
‘pip’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
3、C:\Python\Python36-32\Scripts下的pip.exe程序拷贝到C:\Python\Python36-32目录下。在次运行pip如下:
C:\Users\Administrator>pip
Usage:
pip [options]
Commands:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements forma
list List installed packages.
show Show information about installed packages.
check Verify installed packages have compatible depen
知识蒸馏(Knowledge Distillation)的概念由Hinton大神于2015年在论文《Distilling the Knowledge in a Neural Network》中提出,论文见:https://arxiv.org/abs/1503.02531。此方法的主要思想为:通过结构复杂、计算量大但是性能优秀的教师神经网络,对结构相对简单、计算量较小的学生神经网络进行指导,以提升学生神经网络的性能。论文中提出了“暗知识”这一概念,即:比如我们在识别一张猫猫的图片的时候,一个性能良好的神经网络经过softmax变换后的输出,在一般该向量中代表猫猫的位置会得到一个非常高的值,比如,0.9,而代表其它分类的值在传统的研究中就不那么受重视了。Hinton大神认为,其它位置得到的值能够为我们提供一些额外的信息,比如,在猫得到0.9的同时,识别为狮子的值可能因为相似的缘故给到了0.09,而识别为汽车的值则可能只有0.0001。在我的理解中,这种目标间的相似性,就是“暗知识”的本质。为了要放大这种“暗知识”所包含的信息,Hinton在传统的softmax函数中加入温度参数T,变为下式所示:
那么,知识蒸馏的步骤分别为:
一、采用传统方式训练一个教师网络。
二、建立学生网络模型,模型的输出采用传统的softmax函数,拟合目标为one-hot形式的训练集输出,它们之间的距离记为loss1。
三、将训练完成的教师网络的softmax分类器加入温度参数,作为具有相同温度参数softmax分类器的学生网络的拟合目标,他们之间的距离记为loss2。
四、引入参数alpha,将loss1×(1-alpha)+loss2×alpha作为网络训练时使用的loss,训练网络。
重点就在于将暗知识放大之后,让学生网络的暗知识去拟合教师网络的暗知识,同时由于教师网络会带有一定的bias,表现为教师网络在训练完成后,对训练集识别的正确率会高于测试集,所以加上loss1来减缓这种趋势,实际应用的时候,可以考虑将alpha首先设置的接近1,比如0.95啥的,来快速拟合教师网络,再逐步调低alpha的值,来确保网络的分类正确率,不过这只是理论上可行的,我也没试验就是了……
那我们就开搞啦,首先是搭建教师网络,我这里选择的是resnet18,并且由于电脑训练速度的原因(渣机无力……)将网络中所有卷积核的数目减少了一半,训练集采用Cifar10,训练时对图像进行了padding之后随机裁剪以及随机水平翻转来加入噪声。优化器采用带动量项的SGD(lr=0.1, momentum=0.9, weight_decay=5e-4),训练200个epoch,其中在第100以及第150个epoch时将学习率除10,详细的代码见文章末尾的github地址好啦。训练完成后,网络对测试集的识别结果如下所示:
Accuracy of the network on the 10000 test images: 93.970000 % Accuracy of plane : 97.727273 % Accuracy of car : 100.000000 % Accuracy of bird : 84.210526 % Accuracy of cat : 86.046512 % Accuracy of deer : 93.877551 % Accuracy of dog : 96.875000 % Accuracy of frog : 98.113208 % Accuracy of horse : 93.
前言 最近做深度学习项目,用的caffe框架,自己电脑本身是win10,平时用linux都在虚拟机,感觉不舒服,并且caffegpu在win下安装真的费劲,必须得用VS2013才可以编译,2015亲测不行,果断装一个linux算了,直接装上双系统开干,当然早就结束了这个项目,最近买个新电脑,准备重新走一遍这个过程,以后自己用也方便,也方便大家。
下载linux镜像 可以先进入中国linux官网
https://cn.ubuntu.com/
选择Ubuntu桌面系统,之后选择下载ubuntu
选择版本(16.04/18.04) http://releases.ubuntu.com/18.04/
http://releases.ubuntu.com/16.04/
我一直在用16.04所以就选择下载16.04
Ubuntu 16.04 LTS官方镜像下载:
32位选择:
http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-i386.iso
64位选择:
http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso
我电脑64位,现在大多数都为64位吧,如下图选择
下载软碟通并制作系统U盘 软碟通(百度随便找一下就行,特别多,这个不好用再找):http://xiazai.zol.com.cn/detail/11/105025.shtml
下载安装一条龙,之后打开软件。
打开文件,选择打开,此时选择刚才下好的iso文件
选好为如下图所示:
之后选择启动,选择 写入硬盘镜像
之后如下图所示,选择U盘,并写入
写入U盘的过程如图
写好之后会发现U盘插入之后显示名称就为Ubuntu16.04
磁盘分区 点击此电脑右键,选择管理
选择磁盘管理,进行压缩磁盘
这里我选择D盘进行压缩磁盘,点击D盘右键一下,选择压缩卷即可,因为我要跑深度学习用dataset比较大,所以选择给linux500G
设置BIOS,U盘启动 进入Bios,我的电脑室惠普精灵四代用以下办法成功进入
①开始—电源—按住shift键不放,点重启,直到进入高级启动项,松开shfit键 ②在高级启动项—-点疑难解答。
③点击“高级选项’。
④点击”UEFI固件”,计算机将自动重启,进入BIOS菜单。
其他电脑我用过机械革命等,都是直接开机长按F2,F12,F10都有,如何成功进入BIOS,百度一下自己的电脑即可。
当然如果是笔记本就是Fn+按键即可
按F10进入BIOS模式
选择系统设置里面的boot启动选项,HP真的不错,中文的了,我当时装其他电脑都是英文的
首先能看到电脑的启动模式为UEFI,我觉得大多数都是现在,所以装这种模式靠谱,很少有Lagecy了,并且我装这种模式也没成功过,将Secure Boot (安全启动模式)设置Disable,开机顺序将U盘和操作系统的启动管理员对调,先把U盘放到第一个,按F10保存即可。
重启插入U盘,自动进入 安装界面
点击确认,进入安装界面
安装Ubuntu 先来一波傻瓜式安装
此时为安装类型,会提示你是否与Windows Boot Manager共存,说明你的BIOS更改启动方式正确了,如果系统没提示你之前安装过windows 那么你的启动方式就错误了,你得回到BIOS页面下更改启动方式再次启动,这里我们选择其他方式,自己管理。
分区 主要分以下这些:
swap:用作虚拟内存,这个一般和自己的物理内存一般大
/:主要用来存放Linux系统文件
/boot:存放linux内核,用来引导系统的,如果是Legacy启动就要设置引导,UEFI就不用设置这个(UEFI要设置EFI文件)
/usr:存放用户程序,一般在/usr/bin中存放发行版提供的程序,用户自行安装的程序默认安装到/usr/local/bin中
/home:存放用户文件
当初压缩的磁盘如下图所示,选中那个空闲磁盘,然后点击+ 号,开始分配。
①分配swap,选择主分区,空间起始位置,大小最好和自己物理内存一样(我的是16G分配两倍,以后可能装个内存条所以分配32G),用于交换空间
②设置EFI引导,选择逻辑分区,空间起始位置,用于EFI系统分区,大小设置4G即可
③设置Boot引导,选择逻辑分区,空间起始位置,用于Ext4日志文件,挂载点:/boot,大小设置8G
④ 设置/,选择逻辑分区,空间起始位置,用于Ext4日志文件,挂载点:/,大小的话推荐100G.
⑤ 设置home,选择逻辑分区,空间起始位置,用于Ext4日志文件,挂载点:/home,home大一些300G
今天优化代码的时候,切实感受到魔鬼数字使代码的可读性变得极差。
开发的过程中,通常会使用数字来表示某种跟业务逻辑有关的状态,不同的状态通常对应着不同的处理逻辑。在代码里,就容易出现魔鬼数字的问题。尤其当遇到缺少注释的代码时,代码的可读性就变得很糟,很理解那段代码究竟是要干什么。
在代码中使用魔鬼数字(没有具体含义的数字、字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量。
将数字定义为常量的最终目的是为了使代码更容易理解,所以并不是只要将数字定义为常量就不是魔鬼数字了。如果常量的名称没有意义,无法帮助理解代码,同样是一种魔鬼数字。
案例
// 魔鬼数字,无法理解3具体代表产品的什么状态
if (product.getProduct().getProductStatus() != 3)
{
throw new PMSException(PMSErrorCode.Product.ADD_ERROR);
}
// 仍然是魔鬼数字,无法理解NUM_THREE具体代表产品的什么状态
if (product.getProduct().getProductStatus() != NUM_THREE)
{
throw new PMSException(PMSErrorCode.Product.ADD_ERROR);
}
何为关联规则学习 关联规则学习是一种基于规则的机器学习方法,用于发现大型数据库中变量之间的有趣关系。它旨在使用一些有趣的度量来识别在数据库中发现的强规则。这种基于规则的方法在分析更多数据时也会生成新规则。假设数据集足够大,最终目标是帮助机器模拟人类大脑的特征提取和新未分类数据的抽象关联能力。
基于强有力规则的概念,Rakesh Agrawal,TomaszImieliński和Arun Swami介绍了关联规则,用于发现超市中销售点(POS)系统记录的大规模交易数据中产品之间的规律性。例如,在超市的销售数据中发现,如果顾客一起购买洋葱和土豆,他们也可能会购买汉堡肉。这些信息可以用作关于营销活动的决策的基础,例如促销定价或产品放置。
除了市场购物篮分析的上述示例之外,目前在许多应用领域中使用关联规则,包括Web使用挖掘,入侵检测,连续生产和生物信息学。与序列挖掘相反,关联规则学习通常不考虑事务内或跨事务的项目顺序。
常用的关联算法包括 Apriori、FP-Growth、PrefixSpan、SPADE、AprioriAll、Apriori-Some等。
关联算法评估规则 频繁规律与有效规则:
频繁规则指的是关联结果中支持度和置信度都比较高的规则 有效规则指关联规则真正能促进规则中的前后项提升 假如,数据集有1000条事务数据用来显示购买苹果和香蕉的订单记录,其中有600个客户的订单记录中包含了苹果,有800个客户的订单记录中包含了香蕉,而有400个客户同时购买了苹果和香蕉。假如我们产生了一条关联规则,用来表示购买了苹果的客户中还有很多人购买香蕉,那么该规则可以表示为:苹果→香蕉。
支持度:support = 400/1000= 40%
置信度:confidence = 400/600=67%
如果只是看支持度和置信度,这个规则似乎非常显著的说明了苹果和香蕉之间的频繁关系,买了苹果的客户中有67%的人也会一起购买香蕉。但是,如果忽略购买苹果的事实,只购买香蕉的客户比例会高达是80%(800/1000)!这显示了购买苹果这种条件不会对购买香蕉产生积极的促进作用,反而会阻碍其销售,苹果和香蕉之间是一种负相关的关系。因此,只看支持度和置信度将无法完整体现规则的有效性,这里我们使用提升度来有效应对该问题。
提升度(Lift)指的是应用关联规则和不应用产生结果的比例。在本示例中,Lift=(400)/(800)=0.5(有关联规则的前提下只有400个客户会购买香蕉,没有关联规则的前提下会有800个购买香蕉)。当提升度为1时,说明应用关联规则和不应用关联规则产生相同的结果;当提升度大于1时,说明应用关联规则比不应用关联规则能产生更好的结果;当提升度小于1时,关联规则具有负相关的作用,该规则是无效规则。
做关联规则评估时,需要综合考虑支持度、置信度和提升度三个指标,支持度和置信度的值越大越好。
提升度低的负相关关联其实也是一种关联模式,也是可以通过避免的方式利用这种关联:不将互斥商品放在一个组合中,不将互斥广告投放整合投放,不将互斥关键字提供个客户,不将互斥信息流展现给客户。
运营分析中关联分析的使用 网站页面关联分析:帮助我们找到用户在不同页面之间的频繁访问关系,以分析用户特定的页面浏览方式,这样可以帮助了解不同页面之间的分流和引流情况,可用于不同页面间的推荐已达到提高转化率。 广告流量关联分析:针对站外广告投放渠道用户浏览或点击的行为分析,该分析主要用于了解用户的浏览和点击广告的规则。这种站外广告曝光和点击的关联分析可以为广告客户的精准投放提供参考。 用户关键字搜索:通过分析用户在站内的搜索关键字了解用户真实需求的。通过对用户搜索的关键字的关联分析,可以得到类似于搜索了iPhone又搜索了三星,这种关联可以用于搜索推荐、搜索关联等场景,有助于改善搜索体验,提高客户的目标转化率。 不同场景发生,这种模式可以广泛用于分析运营中关注的要素,例如用户浏览商品和购买商品的关联,关注产品价格和购买产品价格的关联,加入购物车与购买的关联。这种关联可以找到用户在一个事件中不同行为之间的关联,可以用来挖掘用户的真实需求,有针对性的对当前用户进行个性化推荐,同时也对定价策略有参考价值。 相同场景发生,用户在同一个页面中点击不同功能、选择不同的应用。这种关联可以用于分析用户使用功能的先后顺序,有利于做产品优化和用户体验提升;对于不同产品功能组合、开发和升级有了更加明确地参考方向,便于针对永辉习惯性操作模式做功能迭代;同时针对用户频繁查看和点击的内容,可以采用打包、组合、轮转等策略,帮助客户查找,同时增加内容曝光度和用户体验。 python代码实现 apriori模块:
# -*- coding: utf-8 -*- from numpy import * import re def createData(fileName): mat = [] req = re.compile(r',') fr = open(fileName) content = fr.readlines() for line in content: tem = line.replace('\n','').split(',') mat.append(tem) return mat def loadDataSet(): return [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]] # C1 是大小为1的所有候选项集的集合 def createC1(dataSet): C1 = [] for transaction in dataSet: for item in transaction: if not [item] in C1: C1.
啊D注入工具 是一种主要用于SQL注入的工具,由彭岸峰开发,使用了多线程技术,能在极短的时间内扫描注入点
下载 https://download.csdn.net/download/qq_37865996/10821070
使用 1.打开啊D
注意观察左侧的<注入检测>里的、<浏览网页>、<相关工具>选项的功能等,下面会用到.
1.SQL注入
在<检测网址>的栏内可以输入要注入的网址
点击<注入检测>里的<浏览网页>图标,即可浏览该网页
然后稍等片刻,如图下方就出现了红色的<可用注入点>URL
有3个注入点,右击,选择注入即可。
2.目录浏览上传木马
先将啊D切换到<相关工具>选项下,然后点击<目录查看>,接着就可以点击<开始检测>
然后就如图所示,进入了对方的C盘下,可以找到对方的网站的绝对路径,就是网站的文件在C盘的哪个文件夹下
这里找到是在C盘的web文件夹下
然后,点击下图的选项
在图下面的<文件上传><本地文件>选项下选择自己的asp木马存放的位置,然后在<目标位置>选择,点击<上传>
稍等一会,文本框中出现<内容写入结束,祝您好运>字样,就上传小马成功了
最后就如下图,在浏览器中输入小马的网站相对位置,就可以打开传大马的界面了
在图中分别输入要传的大马的绝对路径和大马源码,点击,就完成了大马的上传。当遇到传不上去大马的时候,可以换个大马源码试试
木马注入部分内容来源:https://mp.weixin.qq.com/s?__biz=MzA4NDk5NTYwNw==&mid=2651425379&idx=2&sn=0dd58ce59a92a2518729eb5eb7e2fc75&chksm=8423911bb354180d0b638595348b1a7ff189847a3b49e7551393d0f34e3bdc5a28286b647849&mpshare=1&scene=23&srcid=1201smZZoABvexqVTCGWiblM