首页 黑客接单正文

25小时在线接单图片-求一个黑客大神的联系方式-Nmap从探索到漏洞利用(二)

hacker 黑客接单 2020-11-12 215 3

求一个黑客大神的联系 *** -Nmap从探索到漏洞利用(二)

大家将探讨一些高級NMAP扫描仪的技术性,大家将开展一个中间人攻击(MITM)。如今,游戏开始了。

 

TCP SYN扫描仪

SYN扫描仪是默认设置的且最时兴的扫描仪选择项是有一定缘故的。它能够不在受服务器防火墙限定的髙速互联网每秒钟扫描仪数千个端口号 。另外也是相对性不醒目的和隐秘的,因为它始终不容易进行TCP联接。

指令:NMAP -sS 总体目标

 

 

TCP联接扫描仪 

 

 

当SYN扫描仪不能用的情况下,TCP联接扫描仪是默认设置的TCP扫描仪种类。它是在客户不具备推送RAW数据文件的权利的状况下。并不是像大部分别的扫描枪那般写初始数据文件,NMAP规定更底层的电脑操作系统根据传出联接系统进程来创建与总体目标机和端口号的联接。

 

 

指令:NMAP&25小时在线接单照片nbsp;-sT 总体目标

 

 

 

 

UDP扫描仪

 

 

尽管互联网技术上最时兴的服务项目运作在TCP协议书,但UDP服务项目也是普遍布署的。DNS,SNMP和DHCP(申请注册端25小时在线接单照片口53,161/162,和67/68)这三种最普遍的UDP服务项目。由于UDP扫描仪一般比TCP慢和更为艰难,一些安全性审计员忽视这种端口号。这是一个不正确,由于UDP服务项目是非常广泛, *** 攻击也不会忽视全部协议书。

 

 

指令:NMAP -sU 总体目标

 

 

 

 

选择项-data-length能够用于固定不动长短的任意重力梯度发送至每一个端口号或(假如特定0值)来禁止使用重力梯度。假如回到一个ICMP端口号不能达不正确(种类3,编码3),那麼端口号是关掉的。别的ICMP不能达不正确(种类3,编号1,2,9,10或13)标识端口号过虑。有时候服务项目会回到一个UDP包回应以证实它是对外开放的。假如再发后沒有接到答复,端口号被列入对外开放或是过虑。

 

 

指令:NMAP -sU–data-length=value 总体目标25小时在线接单照片

 

 

 

 

SCTP INIT扫描仪

 

 

SCTP是对TCP和UDP协议书的相对性较新的取代计划方案,融合TCP和UDP更具特点的一部分,另外也提升了新的作用,如多寄主和多流。它关键25小时在线接单照片被用以SS7 / SIGTRAN有关的服务项目,但有可能被用以别的主要用途。 SCTP INIT扫描仪SCTP等同于TCP SYN扫描仪。它能够不在受服务器防火墙限定的髙速互联网每秒钟扫描仪数千个端口号。像SYN扫描仪,扫描仪INIT相对性不醒目的和隐秘的,因为它始终不容易进行SCTP联接。

 

 

指令:NMAP -sY 总体目标

 

 

 

 

TCP NULL、FIN和Xmas扫描

 

 

· NULL扫描仪(-sN)

 

  不设定一切位(TCP标示标题文字是0)。

 

 · FIN扫描仪(-sF)

 

  25小时在线接单照片 设定仅仅TCP FIN位。

 

 · Xmas扫描(-sX)

 

  设定FIN,PSH,URG和标示。

 

 

TCP ACK扫描仪

 

 

这类扫描仪跟别的 *** 不一样的地区是由于它沒有分辨端口号的对外开放状况。它是用于绘图出服务器防火墙标准,对什么端口号开展了维护。

 

 

指令:NMAP -scanflags=value -sA target

 

 

25小时在线接单照片

 

 

该ACK扫描仪检测报文格式只具备ACK标示设定(除非是您应用-scanflags)。当扫描仪未历经系统软件过虑,开启和关掉的端口号都将回到一个RST包。 NMAP随后把他们标识为未过虑的,这代表着他们是ACK包达到的。

 

 

TCP对话框扫描仪

 

 

对话框扫描仪跟ACK扫描仪是基本上一样的,除开它运用一些系统软件的完成关键点来区别端口号的,而不是当回到一个RST时一直觉得端口号没经过虑。

 

 

指令:NMAP -sW 总体目标

 

 

 

 

TCP Maimon 扫描仪

 

 

Maimon 扫描仪的姓名来自它的发现人,Uriel Maimon。他在Phrack杂志期刊难题#49(1994年十一月)中叙述的技术性。这类技术性与NULL,FIN和Xmas扫描相近,唯一的不同点取决于探头是FIN/ ACK。

 

 

指令:NMAP -sM 总体目标

 

 

 

 

自定的TCP扫描仪应用-scanflag选择项

 

 

针对网站渗透测试,一个网站渗透测试工作人员不容易应用一般的TCP扫描仪例如ACK、FIN等,由于这种物品能够被IDS / IPS阻隔。因而她们将根据特定“-scanflag”选择项应用一些不一样的技术性。这还可以用以绕开服务器防火墙。

 

 

该-scanflags的主要参数能够是一个数据标识25小时在线接单照片值如9(PSH和FIN),但应用符号名称更非常容易。仅仅URG,ACK,PSH,RST,SYN和FIN的随意组成。比如,-scanflags URGACKPSHRSTSYNFIN全部设定,尽管扫描仪时并不是十分有效的。

 

 

指令:NMAP –scanflags 总体目标

 

 

 

 

SCTP COOKIE ECHO扫描仪

 

 

SCTP COOKIE ECHO扫描仪是一种更优秀的SCTP扫描仪。SCTP会默认设置丢掉开放端口回到的包括COOKIE ECHO数据文件块,但假如端口关闭则推送中断。这类扫描仪 *** 优势是,它并不象INIT扫描仪一样显著。此外,无状态服务器防火墙会阻隔INIT块而不是COOKIE ECHO块。但一个出色的IDS仍能25小时在线接单照片够检测到SCTP COOKIE ECHO扫描仪SCTP COOKIE ECHO扫描仪的缺陷是没法区别对外开放和过虑的端口号。

 

 

指令:NMAP -sZ 总体目标

 

 

 

 

TCP空余扫描仪

 

 

这类优秀的扫描仪方式容许对总体目标开展一个真实的盲目跟风TCP端口扫描仪(即沒有数据文件从你的真正IP地址发送至总体目标)。反过来与众不同的侧无线信道进攻运用丧尸服务器上可预测分析的IP按段ID编码序列形成来搜集有关总体目标的开放端口的信息内容。IDS系统软件总是显示信息扫描仪是以您特定的丧尸机进行。这在开展MITM(中间人攻击)十分有效的。

 

 

指令:NMAP -sI zombie 总体目标

 

 

25小时在线接单照片

 

 

这儿简易详细介绍下空余的基本原理:

 

 

1、向丧尸服务器推送SYN/ACK数据文件,得到 含有分块ID(IPID)的RST报文格式。 

 

2、推送应用丧尸服务器IP地址的伪数据文件给总体目标服务器。 假如总体目标服务器端口关闭,便会向丧尸服务器回应RST报文格式。假如总体目标端口号对外开放,总体目标服务器向丧尸服务器回应SYN/ACK报文格式,丧尸服务器发觉这一不法联接回应,并向总体目标服务器推送RST报文格式,这时IPID号刚开始提高。 

 

3、根据向丧尸服务器推送另一个SYN/ACK报文格式以撤出所述循环系统并查验丧尸服务器RST报文格式中的IPID是不是每一次提高2,另外总体目标服务器的RST每一次提高1。 反复所述流程直至检验完全部的端口号。

 

接下去是开展空余扫描仪的流程:

 

&25小时在线接单照片nbsp;

1、找寻适合的丧尸服务器

 

 

一个普遍的方式便是在NMAP下实行Ping扫描仪一些互联网。你能挑选NMAP出示的任意IP选择项(-iR),可是这很有可能导致与Zombie服务器中间的很多延迟时间。

 

 

在Zombie主机候选列表中执行一个端口扫描以及操作系统识别(-o)比简单的使用Ping命令筛选更容易找寻到合适的。只要启动了详细模式(-v),操作系统检测通常会确定IP ID增长 *** ,然后返回“IP ID Sequence Generation: Incremental”。如果这个类型被作为增长或是破损的低字节序增长量,那么该机是不错的僵尸主机备选。

 

 

还有一种 *** 是对运行ipidseq  NSE脚本。该脚本探测一台主机的IP ID生成 *** 并进行分类,然后就像操作系统检测一样输出IP ID分级。

 

 

命令:NMAP --script ipidseq [ 25小时在线接单图片 25小时在线接单图片 --script-args probeport=port] 目标

 

 

 

 

 

 

 

我们也可以使用hping用于发现僵尸主机。

25小时在线接单图片 

 

首先选择使用Hping3发送数据包,并观察ID号是不是逐一增加,那么该主机就是空闲的。如果ID号随意增加,那么主机实际上不是空闲的,或者主机的操作系统没有可预测的IP ID。

 

 

hping3 -s 目标

 

 

 

 

发送伪造SYN包到你指定的目标主机上的端口。

 

 

hping3 -spoof 僵尸主机 -S p 22 目标

 

 

 

 

正如你所看到的,没有任何反应,这表明数据包100%的丢失。这意味着我们并没有发现僵尸主机。同时我们将检查确认以下的步骤。

 

 

检查PID值是否逐一增加:

 

 

hping3 -S 目标

 

 

 

 

2、使用NMAP进行攻击

 

 

命令: NMAP -Pn -p- -sI 僵尸主机 目标

 

 

首先我们用NMAP扫描僵尸主机的端口:

 

 

 

 

发现僵尸主机22端口是关闭着的。

 

 

 

 

我们指定利用僵尸主机的22端口进25小时在线接单图片行空闲扫描,结果显而易见,无法攻击目标。

 

 

默认情况下,NMAP的伪造探针使用僵尸主机的80端口作为源端口。您可以通过附加一个冒号和端口号僵尸名选择一个不同的端口(例如www.baidu.com:90)。所选择的端口必须不能被攻击者或目标过滤。僵尸主机的SYN扫描会显示端口的开放状态。

 

 

这里解释下参数的含义:

 

 

-Pn:防止NMAP的发送初始数据包到目标机器。

 <25小时在线接单图片/p>

-p-:将扫描所有65535个端口。

 

-sI:用于闲置扫描和发送数据包欺骗。

 

了解NMAP的内部

 

 

作为一个渗透测试人员,我们必须明白NMAP空闲扫描的内部运行过程,然后用我们自己的 *** 来实现同样的事情。为此,我们将使用NMAP的数据包跟踪选项。

 

 

命令:NMAP -sI 僵尸主机:113 -Pn -p20-80,110-25小时在线接单图片180 -r - packet-trace -v 目标

 

 

-Pn是隐身的必要,否则ping数据包会用攻击者的真实地址发送到目标。未指定-sV选项是因为服务识别也将暴露真实地址。 -r选项(关闭端口随机化)让这个例子运行起来更简单。

 

 

 

 

 

正如我之前说的,成功的攻击需要选择一个合适的僵尸主机端口。

 

 

这种攻击的过程:

 

 

NMAP首先通过发送6个 SYN / ACK数据包并分析响应,测试僵尸主机的IP ID序列生成。在这里R表示复位包,意味该端口不可达。有关详细信息,请在NMAP手册空闲扫描。

 

<25小时在线接单图片 p> 

所以下面提及的C代码是空闲扫描。编译C代码并运行程序。

 

 

这是一个不寻常的扫描代码,可以允许完全的空闲扫描(例如发送到目标的数据包不是来自自己的真实IP地址),并也可用于穿透防火墙和路由器ACL范围。

 

 

 

#include "idle_scan.h"#include "timing.h"#include "osscan2.h"#include "NMAP.h"#include "NMAPOps.h"#include "services.h"#include "Target.h"#include "utils.h"#include "output.h" #include "struct_ip.h" #include extern NMAPOps o;25小时在线接单图片  struct idle_proxy_info {   create a constructer and take all variable into it  Target host;   int seqclass;   u16 latestid;   u16 probe_port;   u16 max_groupsz;   u16 min_groupsz;   double current_groupsz;   int senddelay;   int max_senddelay;    pcap_t *pd;   int rawsd;   struct eth_nfo eth; // For when we want to send probes via raw IP instead.  struct eth_nfo *ethptr; // points to eth if filled out, otherwise&25小时在线接单图片 nbsp;NULL}; static int ipid_proxy_probe(struct idle_proxy_info *proxy, int *probes_sent,      int *probes_rcvd) {  struct timeval tv_end;  int tries = 0;  int trynum;  int sent=0, rcvd=0;  int maxtries = 3;   struct timeval tv_sent[3], rcvdtime;  int ipid = -1;  int to_usec;  unsigned int bytes;  int base_port;  struct ip *ip;  struct tcp_hdr *tcp;  static u32 seq_base = 0;  static u32 ack&25小时在线接单图片 nbsp;= 0;  static int packet_send_count = 0;    if (o.magic_port_set)    base_port = o.magic_port;  else base_port = o.magic_port + get_random_u8();   if (seq_base == 0) seq_base = get_random_u32();  if (!ack) ack = get_random_u32();   do {    gettimeofday(&tv_sent[tries], NULL);         send_tcp_raw(proxy->rawsd, proxy->ethptr,     proxy->host.v4sourceip(), proxy->host.v4hostip(),     o.ttl, false,     o.ipoptions, o.ipoptionslen,     base_port + tries, proxy->probe_port, seq_base + (packet_send_count++ * 500)25小时在线接单图片  + 1, ack, 0, TH_SYN|TH_ACK, 0, 0, (u8 *) "\x02\x04\x05\xb4", 4, NULL, 0);    sent++;    tries++;         to_usec = proxy->host.to.timeout;    gettimeofday(&tv_end, NULL);    while((ipid == -1 || sent > rcvd) && to_usec > 0) {       to_usec = proxy->host.to.timeout - TIMEVAL_SU *** RACT(tv_end, tv_sent[tries-1]);      if (to_usec < 0) to_usec = 0; // Final no-block poll       ip = (struct ip *) readipv4_pcap(proxy->pd, &bytes, to_usec, &rcvdtime, NULL, true);      gettimeofday(&tv_end, NULL);      if (ip) { if (bytes < ( 4 * ip->ip_hl) + 14U)   continue;  if (ip->ip_p == IPPROTO_TCP) {    tcp = ((struct tcp_hdr *) (((char *) ip) + 4 * ip->ip_hl));   if (ntohs(tcp->th_dport) < base_port || ntohs(tcp->th_dport) - base_port >= tries  || ntohs(tcp->th_sport) != proxy->probe_port || ((tcp->th_flags & TH_RST) == 0)) {     if (ntohs(tcp->th_dport) > o.magic_port && ntohs(tcp->th_dport) < (o.magic_port + 260)) {        if (o.debugging) {  error("25小时在线接单图片 Received IP ID zombie probe response which probably came from an earlier prober instance ... increasing rttvar from %d to %d",        proxy->host.to.rttvar,25小时在线接单图片 (int) (proxy->host.to.rttvar * 1.2));       }       proxy->host.to.rttvar = (int) (proxy->host.to.rttvar * 1.2);       rcvd++;     }     else if (o.debugging > 1) {       error("Received unexpected response packet from %s during IP ID zombie probing:", inet_ntoa(ip->ip_src));   25小时在线接单图片     readtcppacket( (unsigned char *) ip,MIN(ntohs(ip->ip_len), bytes));     }     continue;   }    trynum = ntohs(tcp->th_dport) - base_port;   rcvd++;    ipid = ntohs(ip->ip_id);   adjust_timeouts2(&(tv_sent[trynum]), &rcvdtime, &(proxy->host.to)); }      }    }  } while(ipid == -1 && tries 25小时在线接单图片 < maxtries);   if (probes_sent) *probes_sent = sent;   if (probes_rcvd) *probes_rcvd = rcvd;   return ipid; }  static int ipid_distance(int seqclass , u16 startid, u16 endid) {   if (seqclass == IPID_SEQ_INCR)     return endid - startid;   if (seqclass == IPID_SEQ_BROKEN_INCR) {          startid = htons(startid);     endid = htons(endid);     return endid - startid;   }   return -1; } static void initialize_proxy_struct(struct idle_proxy_info *proxy) {   proxy->seqclass = proxy->latestid = proxy->probe_port = 0;  proxy->max_groupsz = proxy->min_groupsz = 0;  proxy->current_groupsz = 0;  proxy->senddelay = 0;  proxy->max_senddelay = 0;  proxy->pd = NULL;  proxy->rawsd = -1;  proxy->ethptr = NULL;} #define NUM_IPID_PROBES 6static void initialize_idleproxy(struct idle_proxy_info *proxy, char *proxyName,   const struct in_addr *first_target, const struct scan_lists * ports) {  int probes_sent = 0, probes_returned = 0;  int hardtimeout = 9000000;   unsigned int bytes, to_usec;  int timedout = 0;  char *p, *q;  char *endptr = NULL;  int seq_response_num;  int newipid;  int i;  char filter[512];   char name[MAXHOSTNAMELEN + 1];  struct sockaddr_storage ss;  size_t sslen;  u32 sequence_base;  u32 ack = 0;  struct timeval probe_send_times[NUM_IPID_PROBES], tmptv, rcvdtime;  u16 lastipid = 0;  struct ip *ip;  struct tcp_hdr *tcp;  int distance;25小时在线接单图片   int ipids[NUM_IPID_PROBES];  u8 probe_returned[NUM_IPID_PROBES];  struct route_nfo rnfo;  assert(proxy);  assert(proxyName);   ack = get_random_u32();   for(i=0; i < NUM_25小时在线接单图片 IPID_PROBES; i++) probe_returned[i] = 0;   initialize_proxy_struct(proxy);   initialize_timeout_info(&proxy->host.to);   proxy->max_groupsz = (o.max_paralleli *** )? o.max_paralleli ***  : 100;  proxy->min_groupsz = (o.min_paralleli *** )? o.min_paralleli ***  : 4;  proxy->max_senddelay = 100000;   Strncpy(name, proxyName, sizeof(name));  q = strchr(name, ':');  if (q) {    *q++ = '';    proxy->probe_port = strtoul(q, &endptr, 10);    if (*q==0 || !endptr || *endptr != '' || !proxy->probe_port) {     25小时在线接单图片  fatal("Invalid port number given in IP ID zombie specification: %s", proxyName);    }  } else {    if (ports->syn_ping_count > 0) {      proxy->probe_port = ports->syn_ping_ports[0];    } else if (ports->ack_ping_count > 0) {      proxy->probe_port = ports->ack_ping_ports[0];    25小时在线接单图片 } else {      u16 *ports;      int count;       getpts_simple(DEFAULT_TCP_PROBE_PORT_SPEC, SCAN_TCP_PORT, &ports, &count);      assert(count > 0);      proxy->probe_port = ports[0];      free(ports);    }  }   proxy->host.setHostName(name);  if (resolve(name, 0, 0, &ss, &sslen, o.pf()) == 0) {    fatal("Could not resolve idle scan zombie host: %s", name);  }  proxy->host.setTargetSockAddr(&ss, sslen);     proxy->host.TargetSockAddr(&ss, &sslen);  if (!NMAP_route_dst(&ss, &rnfo))    fatal("Unable to find appropriate source address and device interface to use when sending packets to %s", proxyName);   if (o.spoofsource) {    o.SourceSockAddr(&ss, &sslen);    proxy->host.setSourceSockAddr(&ss, sslen);    proxy->host.setDeviceNames(o.device, o.device);  } else {    proxy->host.setDeviceNames(rnfo.ii.devname,&25小时在线接单图片 nbsp;rnfo.ii.devfullname);    proxy->host.setSourceSockAddr(&rnfo.srcaddr, sizeof(rnfo.srcaddr));  }  if (rnfo.direct_connect) {    proxy->host.setDirectlyConnected(true);  } else {    proxy->host.setDirectlyConnected(false);    proxy->host.setNextHop(&rnfo.nexthop,    sizeof(rnfo.nexthop));  }  proxy->host.setIfType(rnfo.ii.device_type);  if (rnfo.ii.device_type == devt_ethernet)    proxy->host.setSrcMACAddress(rnfo.ii.mac);       if ((o.sendpref & PACKET_SEND_ETH) &&  proxy->host.ifType() == devt_ethernet) {    if (!setTargetNextHopMAC(&proxy->host))      fatal("%s: Failed to determine dst MAC address for Idle proxy",     __func__);    memcpy(proxy->eth.srcmac, proxy->host.SrcMACAddress(), 6);    memcpy(proxy->eth.dstmac, proxy->host.NextHopMACAddress(), 6);    proxy->eth.ethsd = eth_open_cached(proxy->host.deviceName());    if (proxy->eth.ethsd == NULL)      fatal("%s: Failed to open ethernet device (%25小时在线接单图片s)", __func__, proxy->host.deviceName());    proxy->rawsd = -1;    proxy->ethptr = &proxy->eth;  } else {#ifdef WIN32    win32_fatal_raw_sockets(proxy->host.deviceName());#endif    if ((proxy->rawsd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0 )       pfatal("socket troubles in %s", __func__);     unblock_socket(proxy->rawsd);    broadcast_socket(proxy->rawsd);#ifndef WIN32    sethdrinclude(proxy->rawsd);#endif    proxy->eth.ethsd = NULL;    proxy->ethptr = NULL;  }    if((proxy->pd=my_pcap_open_live(proxy->host.deviceName(), 152,  (o.spoofsource)? 1 : 0, 50))==NULL)    fatal("%s", PCAP_OPEN_ERRMSG);   p = strdup(proxy->host.targetipstr());  q = strdup(inet_ntoa(proxy->host.v4source()));  Snprintf(filter, sizeof(filter), "tcp and src host %s and dst host %s and src port %hu", p, q, proxy->probe_port); free(p); free(q); set_pcap_filter(proxy->host.deviceFullName(), proxy->pd,  filter); if (o.debugging)   log_write(LOG_STDOUT, "Packet capture filter (device %s): %s\n", proxy->host.deviceFullName(), filter);  sequence_base = get_25小时在线接单图片 random_u32();     while(probes_sent < NUM_IPID_PROBES) {     if (o.scan_delay) enforce_scan_delay(NULL);     else if (probes_sent) usleep(30000);               send_tcp_raw(proxy->rawsd, proxy->ethptr,     proxy->host.v4sourceip(), proxy->host.v4hostip(),     o.ttl, false,     o.ipoptions, o.ipoptionslen,  o.magic_port + probes_sent + 1, proxy->probe_port, sequence_base + probes_sent + 1, ack, 0, TH_SYN|TH_ACK, 0, 0, (u8 *)&25小时在线接单图片nbsp;"\x02\x04\x05\xb4",4, NULL, 0);    gettimeofday(&probe_send_times[probes_sent], NULL);    probes_sent++;         while(probes_returned < probes_sent && !timedout) {       to_usec = (probes_sent == NUM_IPID_PROBES)? hardtimeout : 1000;       ip = (struct ip *) readipv4_pcap(proxy->pd, &bytes, to_usec, &rcvdtime, NULL, true);       gettimeofday(&tmptv, NULL);       if (!ip) { if (probes_sent < NUM_IPID_PROBES)    break;  if (TIMEVAL_SU *** RACT(tmptv, probe_send_times[probes_sent - 1]) >= hardtimeout) {   timedout = 1; } continue;      } else if (TIMEVAL_SU *** RACT(tmptv, probe_send_times[probes_sent - 1]) >=  hardtimeout)  { timedout = 1;      }       if (lastipid != 0 && ip->ip_id == lastipid) { continue;       }      lastipid = ip->ip_id;       if (bytes < ( 4 * ip->ip_hl) + 14U) continue;    25小时在线接单图片    if (ip->ip_p == IPPROTO_TCP) { tcp = ((struct tcp_hdr *) (((char *) ip) + 4 * ip->ip_hl)); if (ntohs(tcp->th_dport) < (o.magic_port+1) || ntohs(tcp->th_dport) - o.magic_port > NUM_IPID_PROBES  || ntohs(tcp->th_sport) != proxy->probe_port || ((tcp->th_flags & TH_RST) == 0)) {   if (o.debugging > 1) error("Received unexpected response packet from %s during initial IP ID zombie testing", inet_ntoa(ip->ip_src));   continue; }  seq_response_num = probes_returned;  probes_returned++; ipids[seq_response_num] = (u16) ntohs(ip->ip_id); probe_returned[seq_response_num] = 1; adjust_timeouts2(&probe_send_times[seq_response_25小时在线接单图片num], &rcvdtime, &(proxy->host.to));      }    }  }     for(i=0,probes_returned=0; i < NUM_IPID_PROBES; i++) {     if (probe_returned[i]) {       if (i > probes_returned) ipids[probes_returned] = ipids[i];      probes_returned++;    }  }   if (probes_returned == 0)    fatal("Idle scan zombie %s (%s) port %hu cannot be used because it has not returned any of our probes -- perhaps it is down or firewalled.",   proxy->host.HostName(), proxy->host.targetipstr(),   proxy->probe_port);   proxy->seqclass = get_ipid_sequence(probes_returned, ipids, 0);  switch(proxy->seqclass) {  case IPID_SEQ_INCR:  case IPID_SEQ_BROKEN_INCR:    log_write(LOG_PLAIN, "Idle scan using zombie %s (%s:%hu); Class: %s\n", proxy->host.HostName(), proxy->host.targetipstr(), proxy->probe_port, ipidclass2ascii(proxy->seqclass));    break;  default:    fatal(25小时在线接单图片 "Idle scan zombie %s (%s) port %hu cannot be used because IP ID sequencability class is: %s.  Try another proxy.", proxy->host.HostName(), proxy->host.targetipstr(), proxy->probe_port, ipidclass2ascii(proxy->seqclass));  }   proxy->latestid = ipids[probes_returned - 1];  proxy->current_groupsz = MIN(proxy->max_groupsz, 30);   if (probes_returned < NUM_IPID_PROBES) {          if (o.debugging)       error("Idle scan initial zombie qualification test: %d probes sent, only %d returned", NUM_IPID_PROBES, probes_returned);     proxy->current_groupsz = MIN(12, proxy->max_groupsz);   25小时在线接单图片  proxy->current_groupsz = MAX(proxy->current_groupsz, proxy->min_groupsz);    proxy->senddelay += 5000;  }     if (first_target) {    for (probes_sent = 0; probes_sent < 4; probes_sent++) {       if (probes_sent) usleep(50000);       send_tcp_raw(proxy->rawsd, proxy->ethptr,       first_target, proxy->host.v4hostip(), o.ttl, false, o.ipoptions, o.ipoptionslen, o.magic_port, proxy->probe_port, sequence_base + probes_sent + 1, ack, 0, TH_SYN|TH_ACK, 0, 0, (u8 *) "\x02\x04\x05\xb4", 4, NULL, 0);     }         usleep(300000);    newipid = ipid_proxy_probe(proxy, NULL, NULL);    if (newipid == -1)25小时在线接单图片       newipid = ipid_proxy_probe(proxy, NULL, NULL);      if (newipid < 0) fatal("Your IP ID Zombie (%s; %s) is behaving strangely -- suddenly cannot obtain IP ID", proxy->host.HostName(), proxy->host.targetipstr());     distance = ipid_distance(proxy->seqclass, proxy->latestid,25小时在线接单图片 newipid);    if (distance <= 0) {       fatal("Your IP ID Zombie (%s; %s) is behaving strangely -- suddenly cannot obtain valid IP ID distance.", proxy->host.HostName(), proxy->host.targetipstr());    } else if (distance == 1) {      fatal("Even though your Zombie (%s; %s) appears to 25小时在线接单图片 be vulnerable to IP ID sequence prediction (class: %s), our attempts have failed.  This generally means that either the zombie uses a separate IP ID base for each host (like Solaris), or because you cannot spoof IP packets (perhaps your ISP has enabled egress filtering to prevent IP spoofing), or maybe the target network recognizes the packet source as bogus and drops them", proxy->host.HostName(), proxy->host.targetipstr(), ipidclass2ascii(proxy->seqclass));    }    if (o.debugging && distance != 5) {      error("WARNING: IP ID spoofing test sent 4 packets and expected a distance of 5, but instead got %d", distance);    }    proxy->latestid = newipid;  } } static void adjust_idle_timing(struct idle_proxy_info *proxy, Target *target, int testcount, int realcount) {   static int notidlewarning = 0;   if (o.debugging > 1)    log_write(LOG_STDOUT,   "%s: tested/true %d/%d -- old grpsz/delay: %f/%d ",   __func__, testcount, realcount, proxy->current_groupsz, proxy->senddelay);  else if (o.debugging &&&25小时在线接单图片nbsp;testcount != realcount) {    error("%s: testcount: %d  realcount: %d -- old grpsz/delay: %f/%d", __func__, testcount, realcount, proxy->current_groupsz, proxy->senddelay);  }     if (testcount < realcount) {               proxy->current_groupsz = MAX(proxy->min_groupsz, proxy->current_groupsz * 0.8);      proxy->senddelay += 10000; 25小时在线接单图片      proxy->senddelay = MIN(proxy->max_senddelay, proxy->senddelay);             proxy->current_groupsz = MAX(proxy->min_groupsz, MIN(proxy->current_groupsz, 500000 / (proxy->senddelay + 1)));     } else if (testcount > realcount) {                  proxy->current_groupsz = MAX(proxy->min_groupsz, proxy->current_groupsz * 0.8);       if (!notidlewarning && o.verbose) { notidlewarning = 1; error("WARNING: idle scan has erroneously detected phantom ports -25小时在线接单图片 - is the proxy %s (%s) really idle?", proxy->host.HostName(), proxy->host.targetipstr());      }    } else {             proxy->senddelay = 25小时在线接单图片(int) (proxy->senddelay * 0.9);      if (proxy->senddelay < 500) proxy->senddelay = 0;      proxy->current_groupsz = MIN(proxy->current_groupsz * 1.1, 525小时在线接单图片00000 / (proxy->senddelay + 1));      proxy->current_groupsz = MIN(proxy->max_groupsz, proxy->current_groupsz);     }    if (o.debugging > 1)   &25小时在线接单图片 nbsp;  log_write(LOG_STDOUT, "-> %f/%d\n", proxy->current_groupsz, proxy->senddelay);}  static int idlescan_countopen2(struct idle_proxy_info *proxy, Target *target, u16 *ports, int numports, struct timeval *sent_time, struct timeval *rcv_time){ #if 0   int i;  for(i=0; i < numports; i++)     if (ports[i] == 22)       return 1;   return 0; #endif   int openports;   int tries;   int proxyprobes_sent = 0;    int proxyprobes_rcvd = 0;    int sent, rcvd;   int ipid_dist;   struct timeval start, end, latestchange, now;   struct timeval probe_times[4];   int pr0be;   static u32 seq = 0;   int newipid = 0;   int sleeptime;   int lasttry = 0;   int dotry3 = 0;   struct eth_nfo eth;   if (seq == 0) seq = get_random_u32();   memset(&end, 0, sizeof(end));   memset(&latestchange, 0, sizeof(latestchange));   gettimeofday(&start,25小时在线接单图片  NULL);   if (sent_time) memset(sent_time, 0, sizeof(*sent_time));   if (rcv_time) memset(rcv_time, 0, sizeof(*rcv_time));   if (proxy->rawsd < 0) {     if (!setTargetNextHopMAC(target))       fatal("%s: Failed to determine dst MAC address for Idle proxy",      __func__);     memcpy(eth.srcmac, target->SrcMACAddress(), 6);    memcpy(eth.dstmac, target->NextHopMACAddress(), 6);    eth.ethsd = eth_open_cached(target->deviceName());    if (eth.ethsd == NULL)      fatal("%s: Failed to open ethernet device (%s)", __func__, target->deviceName());  } else eth.ethsd = NULL;     for(pr0be = 0; pr0be < numports; pr0be++) {     if (o.scan_delay) enforce_scan_delay(NULL);     else if (proxy->senddelay && pr0be > 0) usleep(proxy-&25小时在线接单图片 gt;senddelay);         send_tcp_raw(proxy->rawsd, eth.ethsd? ð : NULL,     proxy->host.v4hostip(), target->v4hostip(), o.ttl, false, o.ipoptions, o.ipoptionslen, proxy->probe_port, ports[pr0be], seq, 0, 0, TH_SYN, 0, 0, (u8 *) "\x02\x04\x05\xb4", 4, o.extra_payload, o.extra_payload_length);  }  gettimeofday(&end, NULL);   openports = -1;  tries = 0;  TIMEVAL_MSEC_ADD(probe_times[0], start, MAX(25小时在线接单图片 50, (target->to.srtt * 3/4) / 1000));  TIMEVAL_MSEC_ADD(probe_times[1], start, target->to.srtt / 1000 );  TIMEVAL_MSEC_ADD(probe_times[2], end, MAX(75, (2 * target->to.srtt +    target->to.rttvar) / 1000));  TIMEVAL_MSEC_ADD(probe_times[3], end, MIN(4000, (2 * target->to.srtt +      (target->to.rttvar << 2 )) / 1000));   do {     if (tries == 2) dotry3 = (get_random_u8() > 200);    if (tries == 3 && !dotry3)      break;     if (tries == 3 || (tries == 2 && !dotry3))      lasttry = 1;     gettimeofday(&now, NULL);    sleeptime = TIMEVAL_SU *** RACT(probe_times[tries], now);    if (!lasttry && proxyprobes_sent > 0 && sleeptime < 50000)      continue;      if (tries == 0 && sleeptime < 500)       sleeptime = 500;     if (o.debugging > 1) error("In preparation for idle scan probe try #%d, sleeping for %d usecs", tries, sleeptime);    if (sleeptime > 0)      usleep(sleeptime);     newipid = ipid_proxy_probe(proxy, &sent, &rcvd);    proxyprobes_sent += sent;    proxyprobes_rcvd += rcvd;     if (newipid > 0) {      ipid_dist = ipid_distance(proxy->seqclass, proxy->latestid, newipid);            if (ipid_dist < proxyprobes_sent) {  if (o.debugging)            error("%s: Must have lost a sent packet because ipid_dist is %d while proxyprobes_sent is %d.", __func__, ipid_dist, proxyprobes_sent);         }       ipid_dist -= proxyprobes_sent;       if (ipid_dist > openports) { openports = ipid_dist; gettimeofday(&latestchange, NULL);&25小时在线接单图片nbsp;     } else if (ipid_dist < openports && ipid_dist >= 0) { if (o.debugging > 1) { 25小时在线接单图片   error("%s: Counted %d open ports in try #%d, but counted %d earlier ... probably a proxy_probe problem", __func__, ipid_dist, tries, openports); }       }    }     if (openports > numports || (numports <= 2 && (openports == 25小时在线接单图片numports)))      break;  } while(tries++ < 3);   if (proxyprobes_sent > proxyprobes_rcvd) {        if (o.debugging) {      error("%s: Sent %d probes; only %d responses.  Slowing scan.", __func__, proxyprobes_sent, proxyprobes_rcvd);    }    proxy->senddelay += 5000;    proxy->senddelay = MIN(proxy->max_senddelay, proxy->senddelay);        proxy->current_groupsz = MAX(proxy->min_groupsz, MIN(proxy->current_groupsz, 500000 / (proxy->senddelay+1)));  } else {        proxy->senddelay = (int) (proxy->senddelay * 0.95);    if (proxy->senddelay < 500) proxy->senddelay = 0;    proxy->current_groupsz = MAX(proxy->min_groupsz, MIN(proxy->current_groupsz, 500000 / (proxy->senddelay+1)));  }   if ((openports > 0) && (openports <= numports)) {          if (o.debugging > 2) error("%s:  found %d open ports (out of %d) in %lu usecs", __func__, openports, numports, (unsigned long) TIMEVAL_SU *** RACT(latestchange, start));    if (sent_time) *sent_time = start;    if (rcv_time) *rcv_time = latestchange;  }  if (newipid > 0) proxy->latestid = newipid; &25小时在线接单图片 nbsp;if (eth.ethsd) { eth.ethsd = NULL; }   return openports;} static int idlescan_countopen(struct idle_proxy_info *proxy,        Target *target, u16 *ports, int numports,        struct timeval *sent_time, struct timeval *rcv_time) {  int tries = 0;  int openports;   do {    openports = idlescan_countopen2(proxy, target, ports, numports, sent_time,     rcv_time);    tries++;    if (tries == 6 || (openports >= 0 && openports <= numports))       break;     if (o.debugging) {&25小时在线接单图片 nbsp;      error("%s: In try #%d, counted %d open ports out of %d.  Retrying", __func__, tries, openports, numports);     }          sleep(tries * tries);  &25小时在线接单图片 nbsp;  if (tries == 5)       sleep(45);           proxy->latestid = ipid_proxy_probe(proxy, NULL, NULL);  } while(1);   if (openports < 0 || openports > numports ) {        fatal("Idle scan is unable to obtain meaningful results from proxy %s (%s).  I'm sorry it didn't work out.", proxy->host.HostName(),   proxy->host.targetipstr());  }   if (o.debugging > 2) error("%s: %d ports found open out of %d, starting with %hu", __func__, openports, numports, ports[0]);   return openports;}  static int idle_treescan(struct idle_proxy_info *proxy, Target *target,  u16 *ports, int numports, int expectedopen) {   int firstHalfSz = (numports + 1)/2;  int secondHalfSz = numports - firstHalfSz;  int flatcount1, flatcount2;  int deepcount1 = -1, deepcount2 = -1;  struct timeval sentTime1, rcvTime1, sentTime2, rcvTime2;  int retrycount = -1, retry2 = -1;  int totalfound = 0;     if (o.debugging > 1) {    error("%s: Called against %s with %d ports, starting with %hu. expectedopen: %d", __func__, target->targetipstr(), numports, ports[0], expectedopen);    error("IDLE SCAN TIMING: grpsz: %.3f delay: %d srtt: %d rttvar: %d",   proxy->current_groupsz, 25小时在线接单图片 proxy->senddelay, target->to.srtt,   target->to.rttvar);  }   flatcount1 = idlescan_countopen(proxy, target, ports, firstHalfSz,   &sentTime1, &rcvTime1);   if (firstHalfSz > 1 && flatcount1 > 0) {        deepcount1 = idle_treescan(proxy, target, ports, firstHalfSz, flatcount1);        adjust_idle_timing(proxy, target, flatcount1, deepcount1);  }      flatcount2 = idlescan_countopen(proxy, target, ports 25小时在线接单图片 + firstHalfSz,   secondHalfSz, &sentTime2, &rcvTime2);   if ((secondHalfSz) > 1 && flatcount2 > 0) {        deepcount2 = idle_treescan(proxy, target, ports + firstHalfSz,        secondHalfSz, flatcount2);        adjust_idle_timing(proxy, target, flatcount2, deepcount2);  }   totalfound = (deepcount1 == -1)? flatcount1 : deepcount1;  totalfound += (deepcount2 == -1)? flatcount2 : deepcount2;   if ((flatcount1 + flatcount2 == totalfound) &&      (expectedopen == totalfound || expectedopen == -1)) {     if (flatcount1 > 0) {      if (o.debugging > 1) { error("Adjusting timing -- idlescan_countopen correctly found %d open ports (out of %d, starting with %hu)", flatcount1, firstHalfSz, ports[0]);      }      adjust_timeouts2(25小时在线接单图片 &sentTime1, &rcvTime1, &(target->to));    }     if (flatcount2 > 0) {      if (o.debugging > 2) { error("Adjusting timing -- idlescan_25小时在线接单图片 countopen correctly found %d open ports (out of %d, starting with %hu)", flatcount2, secondHalfSz,       ports[firstHalfSz]);      }      adjust_timeouts2(&sentTime2, &rcvTime2, &(target->to));    }  }   if (totalfound != expectedopen) {    if (deepcount1 == -1) {      retrycount = idlescan_countopen(proxy, target, ports, firstHalfSz, NULL,       NULL);      if (retrycount != flatcount1) { if (firstHalfSz > 1 && retrycount > 0) {   retry2 = retrycount;   retrycount = idle_treescan(proxy, target, ports, firstHalfSz,      retrycount);   adjust_idle_timing(proxy, target, retry2, retrycount); } else {   if (o.debugging)     error("Adjusting timing because my first scan of %d ports, starting with %hu found %d open, while second scan yielded %d", firstHalfSz, ports[0], flatcount1, retrycount);   adjust_idle_timing(proxy, target, flatcount1, retrycount); } totalfound += retrycount - flatcount1; flatcount1 = retrycount;  if (firstHalfSz == 1 && flatcount1 == 1 && retrycount == 0)   target->ports.forgetPort(ports[0], IPPROTO_TCP);       }    }&25小时在线接单图片 nbsp;    if (deepcount2 == -1) {      retrycount = idlescan_countopen(proxy, target, ports + firstHalfSz,       secondHalfSz, NULL, NULL);   &25小时在线接单图片nbsp;  if (retrycount != flatcount2) { if (secondHalfSz > 1 && retrycount > 0) {   retry2 = retrycount;   retrycount = idle_treescan(proxy, target, ports + 25小时在线接单图片 firstHalfSz,      secondHalfSz, retrycount);   adjust_idle_timing(proxy, target, retry2, retrycount); } else {   if (o.debugging)     error("Adjusting timing because my first scan of %d ports, starting with %hu found %d open, while second scan yeilded %d", secondHalfSz, ports[firstHalfSz], flatcount2, retrycount);   adjust_idle_timing(proxy, target, 25小时在线接单图片 flatcount2, retrycount); }  totalfound += retrycount - flatcount2; flatcount2 = retrycount;  if (secondHalfSz == 1 && flatcount2 == 1 && retrycount == 0)   target->ports.forgetPort(ports[firstHalfSz], IPPROTO_TCP);       }    }  }   if (firstHalfSz == 1 && flatcount1 == 1)    target->ports.setPortState(ports[0], IPPROTO_TCP, PORT_OPEN);   if ((secondHalfSz == 1) && flatcount2 == 1)    target->ports.setPortState(ports[firstHalfSz], IPPROTO_TCP, PORT_OPEN);  return totalfound; } void idle_scan(Target *target, u16 *portarray, int numports,        char *proxyName, const struct scan_lists * ports) {   static char lastproxy[MAXHOSTNAMELEN + 1] = "";   static struct idle_proxy_info proxy;  int groupsz;  int portidx = 0;   int portsleft;  char scanname[128];  Snprintf(scanname, sizeof(scanname), "idle scan against %s", target->NameIP());  ScanProgressMeter SPM(scanname);   if (numports == 0) return;   if (!proxyName) fatal("idle scan requires a proxy host");   if (*lastproxy && strcmp(proxyName, lastproxy))    fatal("%s: You are not allowed to change proxies midstream.  Sorry", __func__);  assert(target);   if (target->timedOut(NULL))    return;   if (target->ifType() ==25小时在线接单图片  devt_loopback) {    log_write(LOG_STDOUT, "Skipping Idle Scan against %s -- you can't idle scan your own machine (localhost).\n", target->NameIP());    return;  }   target->startTimeOutClock(NULL);     if (!*lastproxy) {    initialize_idleproxy(&proxy, proxyName, target->v4hostip(), ports);    strncpy(lastproxy, proxyName, sizeof(lastproxy));  }     if (target->to.srtt == -1 && target->to.rttvar == -1) {    target->to.srtt = MAX(200000,2 * proxy.host.to.srtt);    target->to.rttvar = MAX(10000, MIN(proxy.host.to.rttvar, 2000000));    target->to.timeout = target->to.srtt + (target->to.rttvar << 2);   } else {     target->to.srtt = MAX(25小时在线接单图片 target->to.srtt, proxy.host.to.srtt);    target->to.rttvar = MAX(target->to.rttvar, proxy.host.to.rttvar);    target->to.timeout = target->to.srtt + (target->to.rttvar << 2);  25小时在线接单图片 }     while(portidx < numports) {    portsleft = numports - portidx;        groupsz = MIN(portsleft, (int) (proxy.current_groupsz * 2));    idle_treescan(&proxy, target, portarray + portidx, groupsz, -1);    portidx += groupsz;  }   char additional_info[14];  Snprintf(additional_info, sizeof(additional_info), "%d ports", numports);  SPM.endTask(NULL, additional_info);     for(portidx = 0; portidx < numports; portidx++) {     if (target->ports.portIsDefault(portarray[portidx], IPPROTO_TCP)) {      target->ports.setPortState(portarray[portidx], IPPROTO_TCP, PORT_CLOSEDFILTERED);      target->ports.setStateReason(portarray[portidx], IPPROTO_TCP, ER_NOIPIDCHANGE, 0, NULL);    } else      target->ports.setStateReason(portarray[25小时在线接单图片 portidx], IPPROTO_TCP, ER_IPIDCHANGE, 0, NULL);  }   target->stopTimeOutClock(NULL);  return;}

 

 

 

 

 

IP协议扫描

 

 

IP协议扫描可以让您确定哪些IP协议(TCP,ICMP,25小时在线接单图片 IGMP等)是目标机器的支持。这不是技术上的端口扫描,因为只是IP协议号的循环而不是TCP或UDP端口号。

 

 

命令:NMAP -sO 目标

 

 

 

 

 

 

FTP弹跳扫描

 

 

这允许用户连接到一个FTP服务器,然后文件被发送到目标主机。NMAP会发送文件到你指定的目标主机上的端口,通过错误消息判断该端口的状态。这是绕过防火墙的好 *** ,因为相对于Internet主机,组织的FTP服务器经常被放置在可被内网访问的范围中。它的格25小时在线接单图片 式为<username>:<password>@<server>:<port>。 <server>是一个脆弱的FTP服务器的名称或IP地址。

 

 

命令:NMAP –b ftp rely host

 

 

NMAP -T0-b username:password@ftpserver.tld:21 victim.tld

 

 

这将使用用户名“username”,密码为“password”,FTP服务器“FTP server.tld”,ftp端口则是21,用于扫描的文件是服务器上的victim.tld。

 

 

如果FTP服务器支持匿名登录,就不用填写“username:password@”部分。如果FTP端口是默认的21,也可以省略不写,但如果FTP端口是21之外的必须得指明。

 

 

端口规范和扫描顺序

 

 

除了所有的前面讨论的扫描 *** ,NMAP提供选项用于指定被扫描的端口和扫描顺序是随机的或顺序的。默认情况下NMAP扫描最常见的1000个端口。

 

 

-p<端口范围>(只扫描指定的端口)

 

 

此选项指定要扫描的端口范围,并覆盖默认。单个端口号都行,因为是用连字符(例如1-1023)分割范围。范围的起始或25小时在线接单图片 结束可以被省略,NMAP会分别使用1和65535。所以你可以指定-p-,相当于从1到65535进行扫描。

 

 

 NMAP -p1-1023 目标

 

 

你可以指定用于端口扫描的协议类型,比如T代表TCP,U代表UDP,S代表SCTP,P代表IP。

 

 

NMAP -p U:53,111,137,T:21-25,80,139,8080 目标

 

 

-F(快速(有限的端口)扫描)

 

 

指定比默认情况下更少的端口数。通常情况下的NMAP扫描每个扫描协议中最常见的1000个端口。用-F将会减少到100个。

 

 

NMAP -F 目标

 

 

-r(不要随机端口)

 

 

默认情况下NMAP会随机扫描端口,但您25小时在线接单图片可以指定-r为顺序(从更低到更高排序)端口扫描来代替。

 

 

NMAP -r 目标

 

 

在接下来的部分,我将使用NMAP绕过防火墙,创建自定义利用程序。

 

 

引用内容:

 

 

http://www.kyuzz.org/antirez/papers/dumbscan.html

 

&25小时在线接单图片nbsp;

http://www.kyuzz.org/antirez/papers/moreipid.html

 

 

http://en. *** .org/wiki/Idle_scan

 

 

*参考来源:infosecinstitute

现在互联网上还无法正确查询车辆的户口的详细信息.公安交管信息网在公安内部已经是全国联网了,外人进不去.你也可以托你的公安朋友帮你查询,也只能这样。求一个黑客大神的联系方式

有信誉的25小时在线接单图片黑客联系方式多少钱目前黑客只有两条路可走:一条是白道,可以扬名立万;一条是黑道,通过违法手段赚取收入,这条路会受到各国法律的严惩。当然,黑客从良也被一些坚守理想。

求一个黑客大神的联系方式那要看看那位黑客大侠的最终目的了。黑客攻击网站一般就是要瘫痪系统,使其不能按设计者的意图正常的工作。如果骇客黑掉了某个系统,并改变了他的目标指向。

入侵,获得webshell,查找数据库链接账号密码,链接数据库,download数据表,关键在于拿webshell,只要拿了shell,其他的都基本上算成功了90%了,一般对于论坛来说。

入侵到银行的终端数据服务器,可以对于余款25小时在线接单图片进行修改真正的黑客都是做技术的人而做技术的人电脑窗口不可能太炫你要知道越炫的窗口,需要占的资源越多而大多数做技术的人,追求的是效率。而不是。求一个黑客大神的联系方式

*** 雪茄店暗号曾经用过Apple,但现在一般也买不到了,除非是多年老客户私下交易,因为有关部门禁止在 *** 上出售烟草产。

求一个黑客大神的联系方式越南《半岛国防》杂志发表评论,越南陆军副总参谋长阮哈一在上周接受《半岛国防》专访时表示:越南的军事现代化程度已经超过中国,再也不是70年代的水平,如果。

标签:

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。