liu 发布的文章

Shodan是个搜索引擎(网址:https://www.shodan.io/),不过,是个很特殊的搜索引擎,而且价格昂贵,不过,这是有办法解决的,当然,使用之前就得好好把握尺度了,如果你是想干什么坏事,那就此打住吧.

你首先需要申请一个福利账号.(从截图应该得知福利点在哪里了吧,我就不继续细说了,至于看不懂这个图上信息的,建议就此放弃,因为,自己购买套餐价格非常昂贵,大约2100软妹币一个月,当然,土豪除外.)

当你读到这里,说明你还是有兴趣知道这是什么玩意的.那么Shodan是怎么工作的呢?Shodan 通过扫描全网设备并抓取解析各个设备返回的各种信息,不管同意还是拒绝,都会被记录下来.我们通过这个引擎,可以找到很多感兴趣的东西,比如漏洞主机,CDN后端的服务器.

另外,当你准备使用Shodan的时候,你就准备着耐心点,要花上很多时间,才能达到目的,这是非常正常的,甚至是,花了很多时间,什么都没做到.

一开始先说说积分,就是关于钱的问题.

官方介绍三种积分:https://help.shodan.io/the-basics/credit-types-explained

我们通过特殊手段可以拿到这么多,不会累计到下一个月,理论上下一个月继续给积分.

  • Export credits : 100

  • Query credits : 200000

  • Scan credits : 65536

Export credits是通过Shodan官网下载数据时使用,一个积分可以到处1万数据,不够1万往上取整.

在线导出比较耗费他的服务器资源,所以送的分数也少,而且是异步导出,速度还稍微慢一些.

Query Credits是通过命令/API搜索时候花费的,每100个结果,就需要耗费1调query积分,不会往上取整,但是通常我们搜索以下,可能有很多结果的,那么我们看返回的数量来决定花费多少.

Scan Credits是最高级的东西,比如你想立马让Shodon扫描某个网络,每个IP就得耗费一个Scan Credits,当然,我们就算不主动扫,Shadon也是经常扫描全网设备,返回结果所需时间比较长.

使用搜索过滤

如果像前面单纯只使用关键字直接进行搜索,搜索结果可能不尽人意,那么此时我们就需要使用一些特定的命令对搜索结果进行过滤,常见用的过滤命令如下所示:

  • hostname:搜索指定的主机或域名,例如 hostname:"google"

  • port:搜索指定的端口或服务,例如 port:"21"

  • country:搜索指定的国家,例如 country:"CN"

  • city:搜索指定的城市,例如 city:"Hefei"

  • org:搜索指定的组织或公司,例如 org:"google"

  • isp:搜索指定的ISP供应商,例如 isp:"China Telecom"

  • product:搜索指定的操作系统/软件/平台,例如 product:"Apache httpd"

  • version:搜索指定的软件版本,例如 version:"1.6.2"

  • geo:搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808"

  • before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15"

  • net:搜索指定的IP地址或子网,例如 net:"210.45.240.0/24"

搜索实例

找一些SOCKS代理:

product:socks

查找位于合肥的 Apache 服务器:

apache city:"Hefei"

查找位于国内的 Nginx 服务器:

nginx country:"CN"

查找 GWS(Google Web Server) 服务器:

"Server: gws" hostname:"google"

查找指定网段的华为设备:

huawei net:"61.191.146.0/24"

另外,作为特殊福利账号,还可以搜索vuln:

福利账号还可以点击Map,进入分布图.红点位置,则是较多设备所在的位置.

一般情况下,会和命令行配合使用,然后导出结果给脚本用.

安装起来非常方便哈.(当然你也可以用pip,不过Python 2马上EOL了.)

pip3 install shodan

然后初始化一下.

shodan init [API_Key]

获取到在中国的Apache和Lightpd数量,后者真是少啊.

root@debian:~# shodan count apache country:"CN"1887729root@debian:~# shodan count lighttpd country:"CN"78000root@debian:~# shodan count lighttpd country:"CN" port:809033

我们可以下载所有lighttpd并且开放了80端口的数据,这里超过1000条,需要指定limit参数,下载其实就是循环查询,如果觉得烦的话网页导出也是可以的,只是成本更高一些.

实测导出上述的9000条数据大概10分钟.

root@debian:~# shodan download --limit 9000 lighttpd lighttpd country:"CN" port:80Search query:			country:CN port:80Total number of results:	9033Query credits left:		199760Output file:			lighttpd.json.gz  [###################################-]   99%  00:00:00Saved 9000 results into file lighttpd.json.gz

root@debian:~#

然后用解释命令解释成数据.(省略部分)

root@debian:~# shodan parse --fields ip_str,port,org --separator , lighttpd.json.gz 

125.76.225.166,80,China Telecom (Group)115.231.50.251,80,China Telecom Ningbo124.227.187.236,80,AnQing124.225.165.63,80,China Telecom Hainan61.191.49.181,80,China Telecom Anhui42.4.16.252,80,UNICOM Liaoning211.152.136.73,80,Tencent cloud computing122.138.91.64,80,China Unicom Jilin39.96.132.24,80,Hangzhou Alibaba Advertising Co.,Ltd.202.142.28.163,80,CNISP-Union Technology (Beijing) Co.59.37.133.180,80,China Telecom Guangdong39.96.223.193,80,Hangzhou Alibaba Advertising Co.,Ltd.198.1.166.122,80,YangsheNin39.96.188.210,80,Hangzhou Alibaba Advertising Co.,Ltd.182.61.181.83,80,Beijing Baidu Netcom Science and Technology Co.61.155.209.232,80,China Telecom jiangsu province backbone112.126.232.236,80,Hangzhou Alibaba Advertising Co.,Ltd.106.12.32.226,80,Beijing Baidu Netcom Science and Technology Co.113.247.232.74,80,China Telecom Hunan106.14.65.125,80,Hangzhou Alibaba Advertising Co.,Ltd

当然你也可以把上述归类成单一的search命令,但是如果你进行第二次搜索,将花费更多的资源.

另外一个功能叫立即扫描,要花Scan Credits的,而且Shodan其实只扫描常见的三四百个端口,异步结果.(目标可以是CIDR格式分割.)

shodan scan submit 52.160.131.0/24

然后会立即提交,如果返回No open ports found or the host has been recently crawled and cant get scanned again so soon.则代表扫描已经开始,你就等吧.

使用下面命令返回扫描状态.

shodan scan list

必须记得这些ID,我们等下可以用来下载结果的,这是最新鲜结果哦.(只有DONE可以被下载)

root@debian:~# shodan download --limit -1 scan-results.json.gz scan:xYu0J55y7v1H38pR 



Search query:			scan:xYu0J55y7v1H38pRTotal number of results:	1Query credits left:		199670Output file:			scan-results.json.gz  [####################################]  100%Saved 1 results into file scan-results.json.gz

root@debian:~#

之前说到,Shodan默认只扫描常见端口,我们可以扫描特定端口,而且可以扫描整个互联网特定端口.比如,我要找6022端口的SSH服务.

shodan scan internet 6022 ssh

不过呢,由于福利版本是不能这么干的,所以,也没实测过,估计要到结果也非常久了.

最后啊,还请大家合法利用哈.


福利API Key:

PB2X9cub5LhLxOIdsomKVqtlxjSIdi3Y


Xcopy
复制文件和目录,包括子目录。

语法
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z]

参数

 Source 
必需的。指定要复制的文件的位置和名称。该参数必须包含驱动器或路径。 
Destination 
指定要复制的文件的目标。该参数可以包含驱动器盘符和冒号、目录名、文件名或者它们的组合。 
/w 
在开始复制文件之前将显示以下消息并等待您的响应: 
Press any key to begin copying file(s) 

/p 
提示您确认是否要创建每个目标文件。 
/c 
忽略错误。 
/v 
在写入目标文件时验证每个文件,以确保目标文件与源文件完全相同。 
/q 
禁止显示 xcopy 消息。 
/f 
复制时显示源文件名和目标文件名。 
/l 
显示要复制的文件列表。 
/g 
创建解密的目标文件。 
/d[:mm-dd-yyyy] 
只复制那些在指定日期或指定日期之后更改过的源文件。如果不包括 mm-dd-yyyy 值,xcopy 会复制比现有 Destination 文件新的所有 Source 文件。该命令行选项使您可以更新更改过的文件。 
/u 
只从 source 复制 destination 中已有的文件。 
/i 
如果 Source 是一个目录或包含通配符,而 Destination 不存在,xcopy 会假定 destination 指定目录名并创建一个新目录。然后,xcopy 会将所有指定文件复制到新目录中。默认情况下,xcopy 将提示您指定 destination 是文件还是目录。 
/s 
复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。 
/e 
复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。 
/t 
只复制子目录结构(即目录树),不复制文件。要复制空目录,必须包含 /e 命令行选项。 
/k 
复制文件,如果源文件具有只读属性,则在目标文件中保留该属性。默认情况下,xcopy 会删除只读属性。 
/r 
复制只读文件。 
/h 
复制具有隐藏和系统文件属性的文件。默认情况下,xcopy 不复制隐藏或系统文件。 
/a 
只复制那些具有存档文件属性设置的源文件。/a 不修改源文件的存档文件属性。有关如何通过使用 attrib 来设置存档文件属性的信息,请参阅“”。 
/m 
复制具有存档文件属性设置的源文件。与 /a 不同,/m 关闭在源中指定的文件的存档文件属性。有关如何通过使用 attrib 来设置存档文件属性的信息,请参阅“”。 
/n 
使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统需要 FAT 文件系统命名约定(即 8.3 个字符)时,需要 /n。目标文件系统可以是 FAT 或 NTFS。 
/o 
复制文件所有权与自由选择的访问控制列表 (DACL) 信息。 
/x 
复制文件审核设置和系统访问控制列表 (SACL) 信息(包含 /o)。 
/exclude:filename1[+[filename2]][+[filename3]] 
指定包含字符串的文件列表。 
/y 
禁止提示您确认要覆盖现存的目标文件。 
/-y 
提示您确认要覆盖现有目标文件。 
/z 
在可重启模式中通过网络复制。 
/? 
在命令提示符显示帮助。 
注释
使用 /v 
XOX

使用 /exclude 
列出每个文件的单独行中的每个字符串。如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配,就从复制进程排除该文件。例如,如果指定字符串 "\Obj\",则会排除 Obj 目录下的所有文件。如果指定字符串 ".obj",则排除具有 .obj 扩展名的所有文件。

使用 /z 
如果在复制过程中丢失连接(例如,如果用于连接的服务器脱机),复制过程将在重新建立连接后恢复。/z 也显示每个文件完成的复制操作的百分比。

在 COPYCMD 环境变量中使用 /y 

可在 COPYCMD 环境变量中使用 /y。在命令行上使用 /-y 可以覆盖该命令。默认情况下,会提示您覆盖,除非您从批处理脚本内运行 copy。

复制加密的文件 
将加密文件复制到不支持 EFS 的卷会导致错误。应首先解密文件或将文件复制到支持 EFS 的卷中。

附属文件 
要附加文件,请指定单个目标文件,多个源文件(使用通配符或文件 1 + 文件 2 + 文件 3 格式)。

Destination 的默认值 
如果省略 Destination,xcopy 命令将文件复制到当前目录。

指定 Destination 是文件还是目录 
如果 Destination 不包含现有目录且不以反斜杠 (\) 结尾,会出现下列消息: 

Does destination specify a file name 
or directory name on the target 
(F = file, D = directory)? 

如果要将一个或多个文件复制到一个文件,请按 F。如果要将一个或多个文件复制到一个目录,请按 D。

使用 /i 命令行选项可抑制显示该消息,从而导致 xcopy 认定在源是多个文件或一个目录的情况下,目标是一个目录。

使用 xcopy 命令设置 Destination 文件的存档属性 
xcopy 命令创建具有存档属性设置的文件,无论源文件中是否设定了此属性。有关文件属性和 attrib 的详细信息,请参阅“”。

比较 xcopy 和 diskcopy 
如果磁盘的子目录中包含文件,要将其复制到具有不同格式的磁盘中,请使用 xcopy 命令,而不要使用 diskcopy。因为 diskcopy 命令是一个磁道接一个磁道地复制磁盘,所以需要源磁盘和目标磁盘的格式必须相同。xcopy 命令没有该要求。通常情况下请使用 xcopy,除非您需要完整的磁盘图像副本。

xcopy 的退出码 
要处理 xcopy 返回的退出码,请在批处理程序的 if 命令行上使用 errorlevel 参数。有关使用“if”处理退出码的批处理程序的范例,请参阅“”。下表列出每一个退出码和说明。

退出码 说明 
0 文件复制没有错误。 
1 没有找到要复制的文件。 
2 用户按 CTRL+C 终止了 xcopy。 
4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。 
5 出现了磁盘写入错误。 

范例
要从驱动器 A 将所有文件和子目录(包括所有空的子目录)复制到驱动器 B,请键入: 

复制代码代码如下:


xcopy a: b: /s /e


要包含上一示例中的任何系统或隐藏文件,请按如下所示添加 /h 命令行选项: 

复制代码代码如下:


xcopy a: b: /s /e /h



要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件,请键入: 

xcopy \rawdata \reports /d:12-29-1993 

要更新上例中 \Reports 中存在的所有文件,而不考虑日期,请键入:

xcopy \rawdata \reports /u

如果只想获得前一个命令要复制的文件列表,而不复制文件,请键入:

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

文件 Xcopy.out 列出了要复制的所有文件。

要将 \Customer 目录和所有子目录复制到网络驱动器 H: 上的目录 \\Public\Address,保留只读属性,并在 H: 上创建新文件时对您做出提示,请键入:

xcopy \customer h:\public\address /s /e /k /p

要发出上一个命令,确保在 \Address 目录不存在时 xcopy 会创建该目录,同时应抑制显示创建新目录时要显示的消息,请按如下所示添加 /i 命令行选项:

xcopy \customer h:\public\address /s /e /k /p /i

可以创建批处理程序执行 xcopy 操作,并且使用 if 批处理命令在发生错误时处理退出码。例如,以下的批处理程序使用可替换的 xcopy 源和目标参数: 

复制代码代码如下:


@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination

rem drive or directory (%2)

xcopy %1 %2 /s /e

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit

:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit

:abort
echo You pressed CTRL+C to end the copy operation.
goto exit

:exit


要使用该批处理程序将 C:\Prgmcode 目录和其子目录中的所有文件复制到驱动器 B 中,请键入: 

copyit c:\prgmcode b: 

该命令解释程序将用 C:\Prgmcode 替换 %1 与 B:。对于 %2,然后使用 xcopy 与 /e 和 /s 命令行选项。如果 xcopy 遇到错误,批处理程序将读取退出码并转到相应 IF ERRORLEVEL 语句中指示的标签,然后显示相应的消息并退出批处理程序。


xcopy 如何取消 消息 是目录 还是文件的解决方法

xcopy d:\testcopy\*.* e:\testCopy
目标 E:\testCopy 是文件名
还是目录名
(F = 文件,D = 目录)?

怎么取消掉这个 是文件还是目录的提示框?

/Y 是覆盖取消提示 ,防止之后提示

\ 是在新建的时候取消提示

帮助文档在 XCOPY /? 找到

正确的是

XCOPY D:\dir F:\dir\ /Y

在新的目录加上 \ 然后带/Y 这样在第一次多次的时候就不会提示了

或者我们用管道符

echo f | XCOPY D:\dir F:\dir /Y

echo d | XCOPY D:\dir F:\dir /Y

这样就不用带\了。


xcopy /Y /s /v /e /h "C:\Program Files (x86)\仓库现场管理系统\*.*" C:\RongDaWMS\仓库现场管理系统\

/Y 不提示,直接覆盖

/s 复制非空的目录和子目录。如果省略 /s,xcopy 将在一个目录中工作。

/v 在写入目标文件时验证每个文件,以确保目标文件与源文件完全相同

/e 复制所有子目录,包括空目录。同时使用 /e、/s 和 /t 命令行选项。

/h 复制具有隐藏和系统文件属性的文件。默认情况下,xcopy 不复制隐藏或系统文件。

先来了解一下Linux中的硬链接和软链接:

Linux中的硬链接和软链接

Windows中的硬链接和软链接:

硬链接

从Windows  NT4开始,NTFS文件系统引入了HardLink这个概念,它让一个文件可以拥有多个访问路径。


如上图,左边为链接,右边为真正的文件。删除链接并不会删除源数据文件。

示例,为一个文件创建三个硬链接:


示例,删除创建的三个硬链接:

硬链接的优点:
*兼容性好
*盘符被更改也不会受影响
*无需管理员的权限

硬链接的缺点:
*必须在同一个分区
*仅支持本地驱动器
*不支持为文件夹创建硬链接

初级软链接

到了Windows2000,引入了Junction 链接方式,又叫初级的软链接,它属于软链接类型。可实现为一个文件夹创建多个链接。

如上图:
App1访问CoolData文件夹时,系统会重定向到“真实的文件夹”,App2和Debug中也一样。当App1文件夹中的CoolData文件夹内容被更改了,App2和Debug中的内容也会随之更改,但是访问者不知道,他们访问的三个其实都不是真正的“真实文件夹”。

创建初级软链接的命令格式为:mklink /J

Junction 链接的优点:
*兼容性还好
*支持文件夹操作
*支持跨分区
*无需管理员权限

Junction 链接的缺点:
*不支持相对路径
*盘符被更改会受影响
*不可指向文件/远程SMB网络路径

软链接

Symbolic Link又被叫做符号链接和Soft Link(软链接)。是在Vista之后才有的,可以说是Junction链接的增强版,软连接可以支持任何路径,包括文件和不存在的路径,支持相对路径,支持跨文件系统。
Symbolic Link功能强大,但是使用的时候能避免则尽量避免,因为其兼容性很差。

创建初级软链接的命令格式为:mklink /D

在windows server 服务器上面挂在阿里云nas之后,使用初级软连接无法将nas 的挂在点链接到硬盘的文件夹,必须使用软链接才可以。

Windows中链接的删除:

在Windows自带DOS命令窗口中键入“mklink h”,查看帮助信息:

删除的命令:

rmdir 链接名称
例如:rmdir d:\recivefiles rmdir d:\develop

删除虚拟链接目录,并不会删除真实文件,注意,不能使用del命令,del命令会删除真实文件


1.建立举例


  1. ##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。

  2. mklink /d d:\develop \\138.20.1.141\e$\develop


  3. ##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。

  4. mklink /d d:\recivefiles \\138.20.1.141\e$\recivefiles


2.删除举例

  1. #删除虚拟的链接目录,并不会删除远程文件夹真实文件,注意千万不能用del,del会删除远程的真实文件。

  2. rmdir d:\recivefiles

  3. rmdir d:\develop


3.补充mklink用法



  1. C:\Users\joshua>mklink

  2. Creates a symbolic link.


  3. MKLINK [[/D] | [/H] | [/J]] Link Target


  4.         /D Creates a directory symbolic link. Default is a file symbolic link.

  5.         /H Creates a hard link instead of a symbolic link.

  6.         /J Creates a Directory Junction.

  7.       

  8.         Link specifies the new symbolic link name

  9.         Target specifies the path (relative or absolute) that the new link refers to.

命令格式:mklink /d(定义参数) \MyDocs(链接文件) \Users\User1\Documents(原文件)
/d:建立目录的符号链接符号链接(symbolic link)
/j:建立目录的软链接(联接)(junction)

/h:建立文件的硬链接(hard link)