a7e349dd by Jeff Balicki

pen test

Signed-off-by: Jeff <jeff@gotenzing.com>
1 parent e4e4091c
Showing 19 changed files with 2881 additions and 0 deletions
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*Updating database after verifying signature failed*/
function Beagle_WP_auto_Verify(){
global $wpdb;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$getTokenFromTbl = $wpdb->get_results( $wpdb->prepare ("SELECT * FROM $Beagle_WP_scan_table"));
$Beagle_WP_application_token = $getTokenFromTbl[0]->application_token;
$updateData = $wpdb->query( $wpdb->prepare("UPDATE $Beagle_WP_scan_table SET autoVerify = %d WHERE application_token = %s",1, $Beagle_WP_application_token));
try{
if($updateData) {
echo json_encode("succeess");
exit;
} else {
echo json_encode("failed");
exit;
}
} catch (Exception $e) {
console.log('Message: ' .$e->getMessage());
}
}
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*delete the application only after the verification*/
function Beagle_WP_delete_Test() {
global $wpdb;
global $deleteID;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$result =$wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table "));
foreach ( $result as $print ){
$deleteID = $print->id;
}
try {
$updateData = $wpdb->query($wpdb->prepare("DELETE FROM $Beagle_WP_scan_table WHERE id=%d", $deleteID));
echo json_encode($updateData);
exit;
}
catch(Exception $e) {
}
}
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*to get status of currently running test*/
function Beagle_WP_getResultOf_CurrentTestData() {
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$getTableData = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
foreach ( $getTableData as $entryOne ){
$Beagle_WP_access_token = $entryOne->access_token;
$Beagle_WP_application_token = $entryOne->application_token;
$BWP_result_token = $entryOne->result_token;
}
try {
if($Beagle_WP_access_token != null || $Beagle_WP_application_token != null) {
$beaglrURL = $apiServerBaseUrl.'test/result';
$getStatusDataTest = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "result_token" => $BWP_result_token);
$request = wp_remote_post($beaglrURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($getStatusDataTest),
'method' => 'POST',
'data_format' => 'body',
));
$statusResponse = json_decode(wp_remote_retrieve_body( $request ));
try {
if($statusResponse){
$updateData = $wpdb->query( $wpdb->prepare("UPDATE $Beagle_WP_scan_table SET runningStatus = %s WHERE application_token = %s","notRunning", $Beagle_WP_application_token));
}
}
catch(Exception $e) {
}
echo json_encode($statusResponse);
exit;
}
}
catch(Exception $e) {
}
}
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*to get status of an ongoing test*/
function Beagle_WP_getStatusOf_CurrentTestData()
{
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix . "beagleScanData";
$getTableData = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
foreach ($getTableData as $entryOne) {
$Beagle_WP_access_token = $entryOne->access_token;
$Beagle_WP_application_token = $entryOne->application_token;
$BWP_result_token = $entryOne->result_token;
}
try {
if ($Beagle_WP_access_token != null && $Beagle_WP_application_token != null && $BWP_result_token != null) {
$beaglrURL = $apiServerBaseUrl . 'test/status';
$getStatusDataTest = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "result_token" => $BWP_result_token);
$request = wp_remote_post($beaglrURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($getStatusDataTest),
'method' => 'POST',
'data_format' => 'body',
));
$statusResponse = json_decode(wp_remote_retrieve_body($request));
try {
if ($statusResponse) {
$updateData = $wpdb->query($wpdb->prepare("UPDATE $Beagle_WP_scan_table SET status = %s WHERE application_token = %s", $statusResponse->status, $Beagle_WP_application_token));
}
echo json_encode($statusResponse);
exit;
} catch (Exception $e) {
}
}
} catch (Exception $e) {
}
}
<?php
/*
Beagle Security - WP Security, Advanced Penetration Testing, 2021 Beagle Security
This plugin is distributed under the terms of the GNU GPL
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; If not, see {License URI}.
*/
?>
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*To post the signature in the wordpress root directory*/
function Beagle_WP_addDataTo_DB()
{
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix . "beagleScanData";
$Beagle_WP_access_token = sanitize_text_field($_POST['access_token']);
$Beagle_WP_application_token = sanitize_text_field($_POST['application_token']);
try {
if (isset($_POST['startVerify'])) {
$Beagle_WP_dataInDB = $wpdb->get_results("SELECT * FROM $Beagle_WP_scan_table WHERE `application_token`='$Beagle_WP_application_token'");
try {
if (!$Beagle_WP_dataInDB) {
$beaglrURL = $apiServerBaseUrl . 'test/signature';
$getverifiedToken = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token);
$request = wp_remote_post($beaglrURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($getverifiedToken),
'method' => 'POST',
'data_format' => 'body',
));
$statusResponse = json_decode(wp_remote_retrieve_body($request));
try {
$dateLog = date("Y-m-d");
if ($statusResponse->status == "Failed") {
try {
$Beagle_WP_log_save_path = plugin_dir_path(__FILE__) . '../log.txt';
if (is_writable($Beagle_WP_log_save_path)) {
$Beagle_WP_log_open = fopen($Beagle_WP_log_save_path, "a");
$Beagle_WP_log_write = fputs($Beagle_WP_log_open, "\n" .$dateLog. " -> " .$statusResponse->message. + "\n");
fclose($Beagle_WP_log_open);
}
} catch (Exception $e) {
}
?>
<script>
function appExist() {
var errorMsg = setTimeout("document.getElementById('errMsg').style.display='none';", 4000);
}
appExist()
</script>
<div class="errormsg">
<p id="errMsg">Invalid credentials. Please try again!</p>
</div>
<?php
} else if($statusResponse == null) {
try {
$Beagle_WP_log_save_path = plugin_dir_path(__FILE__) . '../log.txt';
if (is_writable($Beagle_WP_log_save_path)) {
$Beagle_WP_log_open = fopen($Beagle_WP_log_save_path, "a");
$Beagle_WP_log_write = fputs($Beagle_WP_log_open, "\n" .$dateLog. "-> User not authorized. \n");
fclose($Beagle_WP_log_open);
}
} catch (Exception $e) {
}
?>
<script>
function appExist() {
var errorMsg = setTimeout("document.getElementById('errMsg').style.display='none';", 4000);
}
appExist()
</script>
<div class="errormsg">
<p id="errMsg">User not authorized!</p>
</div>
<?php
}
else if ($statusResponse->status == "NotVerified") {
$verifyText = $statusResponse->signature;
try {
$Beagle_WP_file_save_path = plugin_dir_path(__FILE__) . '../' . $verifyText . '.txt';
$Beagle_WP_file_save_path_test = plugin_dir_path(__FILE__) . '../fileWrightTest.txt';
if (is_writable($Beagle_WP_file_save_path_test)) {
$Beagle_WP_file_open = fopen($Beagle_WP_file_save_path, "a");
$Beagle_WP_file_write = fputs($Beagle_WP_file_open, $verifyText);
fclose($Beagle_WP_file_open);
if ($Beagle_WP_file_write) {
$wpdb->insert($Beagle_WP_scan_table, array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "verified" => 0, "title" => $statusResponse->title, "url" => $statusResponse->url, "runningStatus" => "notRunning", "autoVerify" => "0"), array("%s", "%s", "%d", "%s", "%s", "%s", "%d"));
} else {
?>
<script>
function appExist() {
var errorMsg = setTimeout("document.getElementById('errMsg').style.display='none';", 4000);
}
appExist()
</script>
<div class="errormsg">
<p id="errMsg">An unexpected error occurred. Please try again!</p>
</div>
<?php
}
}else {
$wpdb->insert($Beagle_WP_scan_table, array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "verified" => 0, "title" => $statusResponse->title, "url" => $statusResponse->url, "runningStatus" => "notRunning", "autoVerify" => "1"), array("%s", "%s", "%d", "%s", "%s", "%s", "%d"));
}
} catch (Exception $e) {
}
} else {
$wpdb->insert($Beagle_WP_scan_table, array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "verified" => 1, "title" => $statusResponse->title, "url" => $statusResponse->url, "runningStatus" => "notRunning", "autoVerify" => "0"), array("%s", "%s", "%d", "%s", "%s", "%s", "%d"));
}
} catch (Exception $e) {
}
}
} catch (Exception $e) {
}
}
} catch (Exception $e) {
}
}
<?php
function Beagle_WP_Page_Content()
{
// define('__ROOT__', dirname(dirname(__FILE__)));
require_once(sanitize_file_name('style.php'));
require_once(sanitize_file_name('progressRound.php'));
require_once(sanitize_file_name('script.php'));
require_once(sanitize_file_name('gplLicense.php'));
$beagleUrl = "https://beaglesecurity.com/";
$beagleHelp = "https://help.beaglesecurity.com/article/30/where-to-find-access-token-and-application-token";
$beagleDetReport = "https://beaglesecurity.com/dashboard/home";
$beagleHeaderImage = "data:image/png;base64,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";
?>
<div class="header">
<a href=<?php echo esc_url($beagleUrl); ?> target="_blank">
<img src="<?php echo $beagleHeaderImage; ?>" alt="Beagle Security">
</a>
</div>
<?php
global $wpdb;
$Beagle_WP_scan_table = $wpdb->prefix . "beagleScanData";
$getDataFromDb = $wpdb->get_results("SELECT * FROM $Beagle_WP_scan_table");
if (!$getDataFromDb) { ?>
<form method="POST" class="input-form font-monte">
<div class="form-group access">
<label class="label mb-0">Access token</label>
<input class="form-control" type="text" minlength="32" name="access_token" id="access_token" placeholder="Enter Access Token" required>
</div>
<div class="form-group appdiv">
<label class="label my-0">Application token</label>
<input class="form-control" type="text" minlength="32" name="application_token" placeholder="Enter Application Token" id="application_token" required>
</div>
<div class="form-group m-auto">
<button class="startBtn" type="submit" name="startVerify" onclick="BeagleWP_Token_Input()">
<span id="continueSave">CONTINUE</span>
<span id="spinnerSave" style="display: none;" class="loaderFirst"></span>
</button>
</div>
<div class="form-group help">
<a href="<?php echo esc_url($beagleHelp); ?>" target="_blank">Need help on tokens?</a>
</div>
</form>
<?php
}
if ($getDataFromDb) { ?>
<div class="row w-100 justify-content-center font-monte">
<div class="container mx-auto">
<div class="col-sm-12 d-flex mb-2 w-100 mx-auto head-main">
<div class="col-sm p-0 app-image my-auto">
<div class="application-image">
</div>
</div>
<div class="col-sm-10 px-4 my-auto">
<div class="row w-100">
<span class="col-sm-5 d-block">
<div class="row titledomain">
<?php echo $getDataFromDb[0]->title; ?>
</div>
<div class="row urldomain">
<div class="form-group px-0">
<label class="form-check-label"><?php echo $getDataFromDb[0]->url; ?></label>
<?php
if ($getDataFromDb[0]->verified == 1) {
echo '<span class="dashicons dashicons-yes verify-icon ml-2" title="Domain verification completed successfully."></span>';
}?>
</div>
</div>
</span>
<span class="col-sm-7 d-flex my-auto">
<?php
if ($getDataFromDb[0]->verified == 0) {
echo '<span class="dashicons dashicons-no-alt close-icon " title="Domain verification not completed." id="notverifyiedicon"></span>';
if ($getDataFromDb[0]->autoVerify == 0) {
echo '<button class="btn verify-domain my-auto" id="verifyDomain" onclick="BeagleWP_verifyDomain_ByUser()">
VERIFY DOMAIN</button>
<button class="btn verify-domain my-auto startVerify" id="verifyDomainHide" disabled>
<span class="spinner-border spinner-border-sm my-auto" role="status" aria-hidden="true"></span>
<span class="my-auto">Verifying...</span>
</button>
';
} else {
echo '<span class="my-auto">
<span class="errorMsg my-auto">Domain verification failed!</span>
<span onclick="BeagleWP_show_Msg()" class="dashicons dashicons-info-outline infoicon my-auto"></span>
</span>';
}
}
?>
<span id="verifyError" class="my-auto" style="display: none;">
<span class="errorMsg my-auto" id="verificationFailMsg">Domain verification failed!</span>
<span onclick="BeagleWP_show_Msg()" class="dashicons dashicons-info-outline infoicon my-auto"></span>
</span>
</span>
</div>
</div>
<div class="col-sm p-0 my-auto d-flex justify-content-end">
<?php
if ($getDataFromDb[0]->runningStatus == "notRunning") {
echo '<span class="dashicons dashicons-trash delete-icon" title="remove test" onclick="BeagleWP_delete_Confirm()"></span>';
} else {
echo '<span class="dashicons dashicons-trash delete-icon-hide" title="Test in running status"></span>';
}
?>
</div>
</div>
<form method="POST" class="col-sm-12 d-flex justify-content-center test-box">
<?php
if ($getDataFromDb[0]->verified == "0") {
echo '<button class="btn hidden-test" disabled>START TEST</button>';
} else {
if ($getDataFromDb[0]->runningStatus == "Running") {
echo '<button type="submit" name="stopBeagleTest" class="btn stop-test">STOP TEST</button>';
} else {
if ($getDataFromDb[0]->status == "completed") {
echo '<button type="submit" name="restartBeagleTest" class="btn start-test">RESTART TEST</button>';
} else {
echo '<button type="submit" name="startBeagleTest" class="btn start-test">START TEST</button>';
}
}
}
?>
</form>
<?php
if ($getDataFromDb[0]->verified == "1" && $getDataFromDb[0]->runningStatus == "Running") { ?>
<div class="col-sm-12 d-block justify-content-center status-box" id="statusbar">
<div class="row">
<div class="col-sm-6">
<span class="ststustest" id="status"></span>
<span class="test-msg" id="message"></span>
</div>
<div class="col-sm-6 d-flex justify-content-end">
</div>
</div>
<div class="row">
<div class="col-md-11 progressdiv my-auto">
<div class="progress">
<div id="progress" class="progress-bar" role="progressbar"></div>
</div>
</div>
<div class="col-md-1 reloadicon my-auto float-left">
<span name="statusGet" id="statusGet" onclick="BeagleWP_getStatus_Data()" class="dashicons dashicons-image-rotate rotate-icon reload-icon"></span>
<span class="loadingRe" style="display: none;" id="spinner">
<div class="loader"></div>
</span>
</div>
</div>
</div>
<?php
} ?>
<div class="row px-3 resultblock" id="resultData">
<div class="col-sm-12 score progressround d-flex justify-content-center">
Your score is
</div>
<div class="col-sm-12 pt-2 progressround d-flex justify-content-center">
<div class="c100 small" id="progressClass">
<span id="progressCount"></span>
<div class="slice">
<div class="bar"></div>
<div class="fill" id="fill"></div>
</div>
</div>
</div>
<div class="row p-0 m-0 w-100">
<div class="col px-0 py-2 gentxt" id="resulttext">
Last test result
</div>
<div class="col px-0 py-2 d-flex justify-content-end gendate align-items-baseline">
Generated date: <span id="genDate"></span>
</div>
</div>
<div class="col-sm-2 m-auto critical">
<div class="row m-auto justify-content-center countnumber" id="criticalBug">
</div>
<div class="row m-auto justify-content-center counttext">
Critical
</div>
</div>
<div class="col-sm-2 m-auto high">
<div class="row m-auto justify-content-center countnumber" id="highBug">
</div>
<div class="row m-auto justify-content-center counttext">
High
</div>
</div>
<div class="col-sm-2 m-auto medium">
<div class="row m-auto justify-content-center countnumber" id="mediumBug">
</div>
<div class="row m-auto justify-content-center counttext">
Medium
</div>
</div>
<div class="col-sm-2 m-auto low">
<div class="row m-auto justify-content-center countnumber" id="lowBug">
</div>
<div class="row m-auto justify-content-center counttext">
Low
</div>
</div>
<div class="col-sm-2 m-auto verylow">
<div class="row m-auto justify-content-center countnumber" id="verylowBug">
</div>
<div class="row m-auto justify-content-center counttext">
Very Low
</div>
</div>
<div class="col-sm-2 m-auto total">
<div class="row m-auto justify-content-center countnumber" id="totalBug">
</div>
<div class="row m-auto justify-content-center counttext">
Total
</div>
</div>
<div class="col-sm-12 pt-2 progressround d-flex justify-content-end">
<div class="goto">For a detailed test report, go to <a href="<?php echo esc_url($beagleDetReport); ?>" target="_blank">Beagle Security</a></div>
</div>
</div>
</div>
</div>
<?php
if ($getDataFromDb[0]->verified == "1" && $getDataFromDb[0]->status != "completed") { ?>
<script>
function BeagleWP_getStatus_Data() {
document.getElementById("statusGet").style.display = "none";
document.getElementById("spinner").style.display = "block";
BeagleWP_get_Data();
}
BeagleWP_get_Data();
var timerVar = setInterval(BeagleWP_get_Data, 10000);
<?php
if($getDataFromDb[0]->status == "completed"){?>
clearInterval(timerVar);
<?php } ?>
</script>
<?php } else if ($getDataFromDb[0]->verified == "1" && $getDataFromDb[0]->status == "completed") { ?>
<script>
BeagleWP_get_Result();
</script>
<?php }
}
}
<style>
.rect-auto,
.c100.p51 .slice,
.c100.p52 .slice,
.c100.p53 .slice,
.c100.p54 .slice,
.c100.p55 .slice,
.c100.p56 .slice,
.c100.p57 .slice,
.c100.p58 .slice,
.c100.p59 .slice,
.c100.p60 .slice,
.c100.p61 .slice,
.c100.p62 .slice,
.c100.p63 .slice,
.c100.p64 .slice,
.c100.p65 .slice,
.c100.p66 .slice,
.c100.p67 .slice,
.c100.p68 .slice,
.c100.p69 .slice,
.c100.p70 .slice,
.c100.p71 .slice,
.c100.p72 .slice,
.c100.p73 .slice,
.c100.p74 .slice,
.c100.p75 .slice,
.c100.p76 .slice,
.c100.p77 .slice,
.c100.p78 .slice,
.c100.p79 .slice,
.c100.p80 .slice,
.c100.p81 .slice,
.c100.p82 .slice,
.c100.p83 .slice,
.c100.p84 .slice,
.c100.p85 .slice,
.c100.p86 .slice,
.c100.p87 .slice,
.c100.p88 .slice,
.c100.p89 .slice,
.c100.p90 .slice,
.c100.p91 .slice,
.c100.p92 .slice,
.c100.p93 .slice,
.c100.p94 .slice,
.c100.p95 .slice,
.c100.p96 .slice,
.c100.p97 .slice,
.c100.p98 .slice,
.c100.p99 .slice,
.c100.p100 .slice {
clip: rect(auto, auto, auto, auto);
}
.pie,
.c100 .bar,
.c100.p51 .fill,
.c100.p52 .fill,
.c100.p53 .fill,
.c100.p54 .fill,
.c100.p55 .fill,
.c100.p56 .fill,
.c100.p57 .fill,
.c100.p58 .fill,
.c100.p59 .fill,
.c100.p60 .fill,
.c100.p61 .fill,
.c100.p62 .fill,
.c100.p63 .fill,
.c100.p64 .fill,
.c100.p65 .fill,
.c100.p66 .fill,
.c100.p67 .fill,
.c100.p68 .fill,
.c100.p69 .fill,
.c100.p70 .fill,
.c100.p71 .fill,
.c100.p72 .fill,
.c100.p73 .fill,
.c100.p74 .fill,
.c100.p75 .fill,
.c100.p76 .fill,
.c100.p77 .fill,
.c100.p78 .fill,
.c100.p79 .fill,
.c100.p80 .fill,
.c100.p81 .fill,
.c100.p82 .fill,
.c100.p83 .fill,
.c100.p84 .fill,
.c100.p85 .fill,
.c100.p86 .fill,
.c100.p87 .fill,
.c100.p88 .fill,
.c100.p89 .fill,
.c100.p90 .fill,
.c100.p91 .fill,
.c100.p92 .fill,
.c100.p93 .fill,
.c100.p94 .fill,
.c100.p95 .fill,
.c100.p96 .fill,
.c100.p97 .fill,
.c100.p98 .fill,
.c100.p99 .fill,
.c100.p100 .fill {
position: absolute;
border: 0.08em solid #307bbb;
width: 0.84em;
height: 0.84em;
clip: rect(0em, 0.5em, 1em, 0em);
border-radius: 50%;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-ms-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
}
.pie-fill,
.c100.p51 .bar:after,
.c100.p51 .fill,
.c100.p52 .bar:after,
.c100.p52 .fill,
.c100.p53 .bar:after,
.c100.p53 .fill,
.c100.p54 .bar:after,
.c100.p54 .fill,
.c100.p55 .bar:after,
.c100.p55 .fill,
.c100.p56 .bar:after,
.c100.p56 .fill,
.c100.p57 .bar:after,
.c100.p57 .fill,
.c100.p58 .bar:after,
.c100.p58 .fill,
.c100.p59 .bar:after,
.c100.p59 .fill,
.c100.p60 .bar:after,
.c100.p60 .fill,
.c100.p61 .bar:after,
.c100.p61 .fill,
.c100.p62 .bar:after,
.c100.p62 .fill,
.c100.p63 .bar:after,
.c100.p63 .fill,
.c100.p64 .bar:after,
.c100.p64 .fill,
.c100.p65 .bar:after,
.c100.p65 .fill,
.c100.p66 .bar:after,
.c100.p66 .fill,
.c100.p67 .bar:after,
.c100.p67 .fill,
.c100.p68 .bar:after,
.c100.p68 .fill,
.c100.p69 .bar:after,
.c100.p69 .fill,
.c100.p70 .bar:after,
.c100.p70 .fill,
.c100.p71 .bar:after,
.c100.p71 .fill,
.c100.p72 .bar:after,
.c100.p72 .fill,
.c100.p73 .bar:after,
.c100.p73 .fill,
.c100.p74 .bar:after,
.c100.p74 .fill,
.c100.p75 .bar:after,
.c100.p75 .fill,
.c100.p76 .bar:after,
.c100.p76 .fill,
.c100.p77 .bar:after,
.c100.p77 .fill,
.c100.p78 .bar:after,
.c100.p78 .fill,
.c100.p79 .bar:after,
.c100.p79 .fill,
.c100.p80 .bar:after,
.c100.p80 .fill,
.c100.p81 .bar:after,
.c100.p81 .fill,
.c100.p82 .bar:after,
.c100.p82 .fill,
.c100.p83 .bar:after,
.c100.p83 .fill,
.c100.p84 .bar:after,
.c100.p84 .fill,
.c100.p85 .bar:after,
.c100.p85 .fill,
.c100.p86 .bar:after,
.c100.p86 .fill,
.c100.p87 .bar:after,
.c100.p87 .fill,
.c100.p88 .bar:after,
.c100.p88 .fill,
.c100.p89 .bar:after,
.c100.p89 .fill,
.c100.p90 .bar:after,
.c100.p90 .fill,
.c100.p91 .bar:after,
.c100.p91 .fill,
.c100.p92 .bar:after,
.c100.p92 .fill,
.c100.p93 .bar:after,
.c100.p93 .fill,
.c100.p94 .bar:after,
.c100.p94 .fill,
.c100.p95 .bar:after,
.c100.p95 .fill,
.c100.p96 .bar:after,
.c100.p96 .fill,
.c100.p97 .bar:after,
.c100.p97 .fill,
.c100.p98 .bar:after,
.c100.p98 .fill,
.c100.p99 .bar:after,
.c100.p99 .fill,
.c100.p100 .bar:after,
.c100.p100 .fill {
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);
}
.c100 {
position: relative;
font-size: 120px;
width: 1em;
height: 1em;
border-radius: 50%;
float: left;
margin: 0 0.1em 0.1em 0;
background-color: #cccccc;
}
.c100 *,
.c100 *:before,
.c100 *:after {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.c100.center {
float: none;
margin: 0 auto;
}
.c100.big {
font-size: 240px;
}
.c100.small {
font-size: 80px;
}
.c100 > span {
position: absolute;
width: 100%;
z-index: 1;
left: 0;
top: 0;
width: 5em;
line-height: 5em;
font-size: 0.2em;
color: #000;
display: block;
text-align: center;
white-space: nowrap;
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: 0.2s;
-moz-transition-duration: 0.2s;
-o-transition-duration: 0.2s;
transition-duration: 0.2s;
-webkit-transition-timing-function: ease-out;
-moz-transition-timing-function: ease-out;
-o-transition-timing-function: ease-out;
transition-timing-function: ease-out;
}
.c100:after {
position: absolute;
top: 0.08em;
left: 0.08em;
display: block;
content: " ";
border-radius: 50%;
background-color: #f5f5f5;
width: 0.84em;
height: 0.84em;
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: 0.2s;
-moz-transition-duration: 0.2s;
-o-transition-duration: 0.2s;
transition-duration: 0.2s;
-webkit-transition-timing-function: ease-in;
-moz-transition-timing-function: ease-in;
-o-transition-timing-function: ease-in;
transition-timing-function: ease-in;
}
.c100 .slice {
position: absolute;
width: 1em;
height: 1em;
clip: rect(0em, 1em, 1em, 0.5em);
}
.c100.p1 .bar {
-webkit-transform: rotate(3.6deg);
-moz-transform: rotate(3.6deg);
-ms-transform: rotate(3.6deg);
-o-transform: rotate(3.6deg);
transform: rotate(3.6deg);
}
.c100.p2 .bar {
-webkit-transform: rotate(7.2deg);
-moz-transform: rotate(7.2deg);
-ms-transform: rotate(7.2deg);
-o-transform: rotate(7.2deg);
transform: rotate(7.2deg);
}
.c100.p3 .bar {
-webkit-transform: rotate(10.8deg);
-moz-transform: rotate(10.8deg);
-ms-transform: rotate(10.8deg);
-o-transform: rotate(10.8deg);
transform: rotate(10.8deg);
}
.c100.p4 .bar {
-webkit-transform: rotate(14.4deg);
-moz-transform: rotate(14.4deg);
-ms-transform: rotate(14.4deg);
-o-transform: rotate(14.4deg);
transform: rotate(14.4deg);
}
.c100.p5 .bar {
-webkit-transform: rotate(18deg);
-moz-transform: rotate(18deg);
-ms-transform: rotate(18deg);
-o-transform: rotate(18deg);
transform: rotate(18deg);
}
.c100.p6 .bar {
-webkit-transform: rotate(21.6deg);
-moz-transform: rotate(21.6deg);
-ms-transform: rotate(21.6deg);
-o-transform: rotate(21.6deg);
transform: rotate(21.6deg);
}
.c100.p7 .bar {
-webkit-transform: rotate(25.2deg);
-moz-transform: rotate(25.2deg);
-ms-transform: rotate(25.2deg);
-o-transform: rotate(25.2deg);
transform: rotate(25.2deg);
}
.c100.p8 .bar {
-webkit-transform: rotate(28.8deg);
-moz-transform: rotate(28.8deg);
-ms-transform: rotate(28.8deg);
-o-transform: rotate(28.8deg);
transform: rotate(28.8deg);
}
.c100.p9 .bar {
-webkit-transform: rotate(32.4deg);
-moz-transform: rotate(32.4deg);
-ms-transform: rotate(32.4deg);
-o-transform: rotate(32.4deg);
transform: rotate(32.4deg);
}
.c100.p10 .bar {
-webkit-transform: rotate(36deg);
-moz-transform: rotate(36deg);
-ms-transform: rotate(36deg);
-o-transform: rotate(36deg);
transform: rotate(36deg);
}
.c100.p11 .bar {
-webkit-transform: rotate(39.6deg);
-moz-transform: rotate(39.6deg);
-ms-transform: rotate(39.6deg);
-o-transform: rotate(39.6deg);
transform: rotate(39.6deg);
}
.c100.p12 .bar {
-webkit-transform: rotate(43.2deg);
-moz-transform: rotate(43.2deg);
-ms-transform: rotate(43.2deg);
-o-transform: rotate(43.2deg);
transform: rotate(43.2deg);
}
.c100.p13 .bar {
-webkit-transform: rotate(46.800000000000004deg);
-moz-transform: rotate(46.800000000000004deg);
-ms-transform: rotate(46.800000000000004deg);
-o-transform: rotate(46.800000000000004deg);
transform: rotate(46.800000000000004deg);
}
.c100.p14 .bar {
-webkit-transform: rotate(50.4deg);
-moz-transform: rotate(50.4deg);
-ms-transform: rotate(50.4deg);
-o-transform: rotate(50.4deg);
transform: rotate(50.4deg);
}
.c100.p15 .bar {
-webkit-transform: rotate(54deg);
-moz-transform: rotate(54deg);
-ms-transform: rotate(54deg);
-o-transform: rotate(54deg);
transform: rotate(54deg);
}
.c100.p16 .bar {
-webkit-transform: rotate(57.6deg);
-moz-transform: rotate(57.6deg);
-ms-transform: rotate(57.6deg);
-o-transform: rotate(57.6deg);
transform: rotate(57.6deg);
}
.c100.p17 .bar {
-webkit-transform: rotate(61.2deg);
-moz-transform: rotate(61.2deg);
-ms-transform: rotate(61.2deg);
-o-transform: rotate(61.2deg);
transform: rotate(61.2deg);
}
.c100.p18 .bar {
-webkit-transform: rotate(64.8deg);
-moz-transform: rotate(64.8deg);
-ms-transform: rotate(64.8deg);
-o-transform: rotate(64.8deg);
transform: rotate(64.8deg);
}
.c100.p19 .bar {
-webkit-transform: rotate(68.4deg);
-moz-transform: rotate(68.4deg);
-ms-transform: rotate(68.4deg);
-o-transform: rotate(68.4deg);
transform: rotate(68.4deg);
}
.c100.p20 .bar {
-webkit-transform: rotate(72deg);
-moz-transform: rotate(72deg);
-ms-transform: rotate(72deg);
-o-transform: rotate(72deg);
transform: rotate(72deg);
}
.c100.p21 .bar {
-webkit-transform: rotate(75.60000000000001deg);
-moz-transform: rotate(75.60000000000001deg);
-ms-transform: rotate(75.60000000000001deg);
-o-transform: rotate(75.60000000000001deg);
transform: rotate(75.60000000000001deg);
}
.c100.p22 .bar {
-webkit-transform: rotate(79.2deg);
-moz-transform: rotate(79.2deg);
-ms-transform: rotate(79.2deg);
-o-transform: rotate(79.2deg);
transform: rotate(79.2deg);
}
.c100.p23 .bar {
-webkit-transform: rotate(82.8deg);
-moz-transform: rotate(82.8deg);
-ms-transform: rotate(82.8deg);
-o-transform: rotate(82.8deg);
transform: rotate(82.8deg);
}
.c100.p24 .bar {
-webkit-transform: rotate(86.4deg);
-moz-transform: rotate(86.4deg);
-ms-transform: rotate(86.4deg);
-o-transform: rotate(86.4deg);
transform: rotate(86.4deg);
}
.c100.p25 .bar {
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
.c100.p26 .bar {
-webkit-transform: rotate(93.60000000000001deg);
-moz-transform: rotate(93.60000000000001deg);
-ms-transform: rotate(93.60000000000001deg);
-o-transform: rotate(93.60000000000001deg);
transform: rotate(93.60000000000001deg);
}
.c100.p27 .bar {
-webkit-transform: rotate(97.2deg);
-moz-transform: rotate(97.2deg);
-ms-transform: rotate(97.2deg);
-o-transform: rotate(97.2deg);
transform: rotate(97.2deg);
}
.c100.p28 .bar {
-webkit-transform: rotate(100.8deg);
-moz-transform: rotate(100.8deg);
-ms-transform: rotate(100.8deg);
-o-transform: rotate(100.8deg);
transform: rotate(100.8deg);
}
.c100.p29 .bar {
-webkit-transform: rotate(104.4deg);
-moz-transform: rotate(104.4deg);
-ms-transform: rotate(104.4deg);
-o-transform: rotate(104.4deg);
transform: rotate(104.4deg);
}
.c100.p30 .bar {
-webkit-transform: rotate(108deg);
-moz-transform: rotate(108deg);
-ms-transform: rotate(108deg);
-o-transform: rotate(108deg);
transform: rotate(108deg);
}
.c100.p31 .bar {
-webkit-transform: rotate(111.60000000000001deg);
-moz-transform: rotate(111.60000000000001deg);
-ms-transform: rotate(111.60000000000001deg);
-o-transform: rotate(111.60000000000001deg);
transform: rotate(111.60000000000001deg);
}
.c100.p32 .bar {
-webkit-transform: rotate(115.2deg);
-moz-transform: rotate(115.2deg);
-ms-transform: rotate(115.2deg);
-o-transform: rotate(115.2deg);
transform: rotate(115.2deg);
}
.c100.p33 .bar {
-webkit-transform: rotate(118.8deg);
-moz-transform: rotate(118.8deg);
-ms-transform: rotate(118.8deg);
-o-transform: rotate(118.8deg);
transform: rotate(118.8deg);
}
.c100.p34 .bar {
-webkit-transform: rotate(122.4deg);
-moz-transform: rotate(122.4deg);
-ms-transform: rotate(122.4deg);
-o-transform: rotate(122.4deg);
transform: rotate(122.4deg);
}
.c100.p35 .bar {
-webkit-transform: rotate(126deg);
-moz-transform: rotate(126deg);
-ms-transform: rotate(126deg);
-o-transform: rotate(126deg);
transform: rotate(126deg);
}
.c100.p36 .bar {
-webkit-transform: rotate(129.6deg);
-moz-transform: rotate(129.6deg);
-ms-transform: rotate(129.6deg);
-o-transform: rotate(129.6deg);
transform: rotate(129.6deg);
}
.c100.p37 .bar {
-webkit-transform: rotate(133.20000000000002deg);
-moz-transform: rotate(133.20000000000002deg);
-ms-transform: rotate(133.20000000000002deg);
-o-transform: rotate(133.20000000000002deg);
transform: rotate(133.20000000000002deg);
}
.c100.p38 .bar {
-webkit-transform: rotate(136.8deg);
-moz-transform: rotate(136.8deg);
-ms-transform: rotate(136.8deg);
-o-transform: rotate(136.8deg);
transform: rotate(136.8deg);
}
.c100.p39 .bar {
-webkit-transform: rotate(140.4deg);
-moz-transform: rotate(140.4deg);
-ms-transform: rotate(140.4deg);
-o-transform: rotate(140.4deg);
transform: rotate(140.4deg);
}
.c100.p40 .bar {
-webkit-transform: rotate(144deg);
-moz-transform: rotate(144deg);
-ms-transform: rotate(144deg);
-o-transform: rotate(144deg);
transform: rotate(144deg);
}
.c100.p41 .bar {
-webkit-transform: rotate(147.6deg);
-moz-transform: rotate(147.6deg);
-ms-transform: rotate(147.6deg);
-o-transform: rotate(147.6deg);
transform: rotate(147.6deg);
}
.c100.p42 .bar {
-webkit-transform: rotate(151.20000000000002deg);
-moz-transform: rotate(151.20000000000002deg);
-ms-transform: rotate(151.20000000000002deg);
-o-transform: rotate(151.20000000000002deg);
transform: rotate(151.20000000000002deg);
}
.c100.p43 .bar {
-webkit-transform: rotate(154.8deg);
-moz-transform: rotate(154.8deg);
-ms-transform: rotate(154.8deg);
-o-transform: rotate(154.8deg);
transform: rotate(154.8deg);
}
.c100.p44 .bar {
-webkit-transform: rotate(158.4deg);
-moz-transform: rotate(158.4deg);
-ms-transform: rotate(158.4deg);
-o-transform: rotate(158.4deg);
transform: rotate(158.4deg);
}
.c100.p45 .bar {
-webkit-transform: rotate(162deg);
-moz-transform: rotate(162deg);
-ms-transform: rotate(162deg);
-o-transform: rotate(162deg);
transform: rotate(162deg);
}
.c100.p46 .bar {
-webkit-transform: rotate(165.6deg);
-moz-transform: rotate(165.6deg);
-ms-transform: rotate(165.6deg);
-o-transform: rotate(165.6deg);
transform: rotate(165.6deg);
}
.c100.p47 .bar {
-webkit-transform: rotate(169.20000000000002deg);
-moz-transform: rotate(169.20000000000002deg);
-ms-transform: rotate(169.20000000000002deg);
-o-transform: rotate(169.20000000000002deg);
transform: rotate(169.20000000000002deg);
}
.c100.p48 .bar {
-webkit-transform: rotate(172.8deg);
-moz-transform: rotate(172.8deg);
-ms-transform: rotate(172.8deg);
-o-transform: rotate(172.8deg);
transform: rotate(172.8deg);
}
.c100.p49 .bar {
-webkit-transform: rotate(176.4deg);
-moz-transform: rotate(176.4deg);
-ms-transform: rotate(176.4deg);
-o-transform: rotate(176.4deg);
transform: rotate(176.4deg);
}
.c100.p50 .bar {
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);
}
.c100.p51 .bar {
-webkit-transform: rotate(183.6deg);
-moz-transform: rotate(183.6deg);
-ms-transform: rotate(183.6deg);
-o-transform: rotate(183.6deg);
transform: rotate(183.6deg);
}
.c100.p52 .bar {
-webkit-transform: rotate(187.20000000000002deg);
-moz-transform: rotate(187.20000000000002deg);
-ms-transform: rotate(187.20000000000002deg);
-o-transform: rotate(187.20000000000002deg);
transform: rotate(187.20000000000002deg);
}
.c100.p53 .bar {
-webkit-transform: rotate(190.8deg);
-moz-transform: rotate(190.8deg);
-ms-transform: rotate(190.8deg);
-o-transform: rotate(190.8deg);
transform: rotate(190.8deg);
}
.c100.p54 .bar {
-webkit-transform: rotate(194.4deg);
-moz-transform: rotate(194.4deg);
-ms-transform: rotate(194.4deg);
-o-transform: rotate(194.4deg);
transform: rotate(194.4deg);
}
.c100.p55 .bar {
-webkit-transform: rotate(198deg);
-moz-transform: rotate(198deg);
-ms-transform: rotate(198deg);
-o-transform: rotate(198deg);
transform: rotate(198deg);
}
.c100.p56 .bar {
-webkit-transform: rotate(201.6deg);
-moz-transform: rotate(201.6deg);
-ms-transform: rotate(201.6deg);
-o-transform: rotate(201.6deg);
transform: rotate(201.6deg);
}
.c100.p57 .bar {
-webkit-transform: rotate(205.20000000000002deg);
-moz-transform: rotate(205.20000000000002deg);
-ms-transform: rotate(205.20000000000002deg);
-o-transform: rotate(205.20000000000002deg);
transform: rotate(205.20000000000002deg);
}
.c100.p58 .bar {
-webkit-transform: rotate(208.8deg);
-moz-transform: rotate(208.8deg);
-ms-transform: rotate(208.8deg);
-o-transform: rotate(208.8deg);
transform: rotate(208.8deg);
}
.c100.p59 .bar {
-webkit-transform: rotate(212.4deg);
-moz-transform: rotate(212.4deg);
-ms-transform: rotate(212.4deg);
-o-transform: rotate(212.4deg);
transform: rotate(212.4deg);
}
.c100.p60 .bar {
-webkit-transform: rotate(216deg);
-moz-transform: rotate(216deg);
-ms-transform: rotate(216deg);
-o-transform: rotate(216deg);
transform: rotate(216deg);
}
.c100.p61 .bar {
-webkit-transform: rotate(219.6deg);
-moz-transform: rotate(219.6deg);
-ms-transform: rotate(219.6deg);
-o-transform: rotate(219.6deg);
transform: rotate(219.6deg);
}
.c100.p62 .bar {
-webkit-transform: rotate(223.20000000000002deg);
-moz-transform: rotate(223.20000000000002deg);
-ms-transform: rotate(223.20000000000002deg);
-o-transform: rotate(223.20000000000002deg);
transform: rotate(223.20000000000002deg);
}
.c100.p63 .bar {
-webkit-transform: rotate(226.8deg);
-moz-transform: rotate(226.8deg);
-ms-transform: rotate(226.8deg);
-o-transform: rotate(226.8deg);
transform: rotate(226.8deg);
}
.c100.p64 .bar {
-webkit-transform: rotate(230.4deg);
-moz-transform: rotate(230.4deg);
-ms-transform: rotate(230.4deg);
-o-transform: rotate(230.4deg);
transform: rotate(230.4deg);
}
.c100.p65 .bar {
-webkit-transform: rotate(234deg);
-moz-transform: rotate(234deg);
-ms-transform: rotate(234deg);
-o-transform: rotate(234deg);
transform: rotate(234deg);
}
.c100.p66 .bar {
-webkit-transform: rotate(237.6deg);
-moz-transform: rotate(237.6deg);
-ms-transform: rotate(237.6deg);
-o-transform: rotate(237.6deg);
transform: rotate(237.6deg);
}
.c100.p67 .bar {
-webkit-transform: rotate(241.20000000000002deg);
-moz-transform: rotate(241.20000000000002deg);
-ms-transform: rotate(241.20000000000002deg);
-o-transform: rotate(241.20000000000002deg);
transform: rotate(241.20000000000002deg);
}
.c100.p68 .bar {
-webkit-transform: rotate(244.8deg);
-moz-transform: rotate(244.8deg);
-ms-transform: rotate(244.8deg);
-o-transform: rotate(244.8deg);
transform: rotate(244.8deg);
}
.c100.p69 .bar {
-webkit-transform: rotate(248.4deg);
-moz-transform: rotate(248.4deg);
-ms-transform: rotate(248.4deg);
-o-transform: rotate(248.4deg);
transform: rotate(248.4deg);
}
.c100.p70 .bar {
-webkit-transform: rotate(252deg);
-moz-transform: rotate(252deg);
-ms-transform: rotate(252deg);
-o-transform: rotate(252deg);
transform: rotate(252deg);
}
.c100.p71 .bar {
-webkit-transform: rotate(255.6deg);
-moz-transform: rotate(255.6deg);
-ms-transform: rotate(255.6deg);
-o-transform: rotate(255.6deg);
transform: rotate(255.6deg);
}
.c100.p72 .bar {
-webkit-transform: rotate(259.2deg);
-moz-transform: rotate(259.2deg);
-ms-transform: rotate(259.2deg);
-o-transform: rotate(259.2deg);
transform: rotate(259.2deg);
}
.c100.p73 .bar {
-webkit-transform: rotate(262.8deg);
-moz-transform: rotate(262.8deg);
-ms-transform: rotate(262.8deg);
-o-transform: rotate(262.8deg);
transform: rotate(262.8deg);
}
.c100.p74 .bar {
-webkit-transform: rotate(266.40000000000003deg);
-moz-transform: rotate(266.40000000000003deg);
-ms-transform: rotate(266.40000000000003deg);
-o-transform: rotate(266.40000000000003deg);
transform: rotate(266.40000000000003deg);
}
.c100.p75 .bar {
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-ms-transform: rotate(270deg);
-o-transform: rotate(270deg);
transform: rotate(270deg);
}
.c100.p76 .bar {
-webkit-transform: rotate(273.6deg);
-moz-transform: rotate(273.6deg);
-ms-transform: rotate(273.6deg);
-o-transform: rotate(273.6deg);
transform: rotate(273.6deg);
}
.c100.p77 .bar {
-webkit-transform: rotate(277.2deg);
-moz-transform: rotate(277.2deg);
-ms-transform: rotate(277.2deg);
-o-transform: rotate(277.2deg);
transform: rotate(277.2deg);
}
.c100.p78 .bar {
-webkit-transform: rotate(280.8deg);
-moz-transform: rotate(280.8deg);
-ms-transform: rotate(280.8deg);
-o-transform: rotate(280.8deg);
transform: rotate(280.8deg);
}
.c100.p79 .bar {
-webkit-transform: rotate(284.40000000000003deg);
-moz-transform: rotate(284.40000000000003deg);
-ms-transform: rotate(284.40000000000003deg);
-o-transform: rotate(284.40000000000003deg);
transform: rotate(284.40000000000003deg);
}
.c100.p80 .bar {
-webkit-transform: rotate(288deg);
-moz-transform: rotate(288deg);
-ms-transform: rotate(288deg);
-o-transform: rotate(288deg);
transform: rotate(288deg);
}
.c100.p81 .bar {
-webkit-transform: rotate(291.6deg);
-moz-transform: rotate(291.6deg);
-ms-transform: rotate(291.6deg);
-o-transform: rotate(291.6deg);
transform: rotate(291.6deg);
}
.c100.p82 .bar {
-webkit-transform: rotate(295.2deg);
-moz-transform: rotate(295.2deg);
-ms-transform: rotate(295.2deg);
-o-transform: rotate(295.2deg);
transform: rotate(295.2deg);
}
.c100.p83 .bar {
-webkit-transform: rotate(298.8deg);
-moz-transform: rotate(298.8deg);
-ms-transform: rotate(298.8deg);
-o-transform: rotate(298.8deg);
transform: rotate(298.8deg);
}
.c100.p84 .bar {
-webkit-transform: rotate(302.40000000000003deg);
-moz-transform: rotate(302.40000000000003deg);
-ms-transform: rotate(302.40000000000003deg);
-o-transform: rotate(302.40000000000003deg);
transform: rotate(302.40000000000003deg);
}
.c100.p85 .bar {
-webkit-transform: rotate(306deg);
-moz-transform: rotate(306deg);
-ms-transform: rotate(306deg);
-o-transform: rotate(306deg);
transform: rotate(306deg);
}
.c100.p86 .bar {
-webkit-transform: rotate(309.6deg);
-moz-transform: rotate(309.6deg);
-ms-transform: rotate(309.6deg);
-o-transform: rotate(309.6deg);
transform: rotate(309.6deg);
}
.c100.p87 .bar {
-webkit-transform: rotate(313.2deg);
-moz-transform: rotate(313.2deg);
-ms-transform: rotate(313.2deg);
-o-transform: rotate(313.2deg);
transform: rotate(313.2deg);
}
.c100.p88 .bar {
-webkit-transform: rotate(316.8deg);
-moz-transform: rotate(316.8deg);
-ms-transform: rotate(316.8deg);
-o-transform: rotate(316.8deg);
transform: rotate(316.8deg);
}
.c100.p89 .bar {
-webkit-transform: rotate(320.40000000000003deg);
-moz-transform: rotate(320.40000000000003deg);
-ms-transform: rotate(320.40000000000003deg);
-o-transform: rotate(320.40000000000003deg);
transform: rotate(320.40000000000003deg);
}
.c100.p90 .bar {
-webkit-transform: rotate(324deg);
-moz-transform: rotate(324deg);
-ms-transform: rotate(324deg);
-o-transform: rotate(324deg);
transform: rotate(324deg);
}
.c100.p91 .bar {
-webkit-transform: rotate(327.6deg);
-moz-transform: rotate(327.6deg);
-ms-transform: rotate(327.6deg);
-o-transform: rotate(327.6deg);
transform: rotate(327.6deg);
}
.c100.p92 .bar {
-webkit-transform: rotate(331.2deg);
-moz-transform: rotate(331.2deg);
-ms-transform: rotate(331.2deg);
-o-transform: rotate(331.2deg);
transform: rotate(331.2deg);
}
.c100.p93 .bar {
-webkit-transform: rotate(334.8deg);
-moz-transform: rotate(334.8deg);
-ms-transform: rotate(334.8deg);
-o-transform: rotate(334.8deg);
transform: rotate(334.8deg);
}
.c100.p94 .bar {
-webkit-transform: rotate(338.40000000000003deg);
-moz-transform: rotate(338.40000000000003deg);
-ms-transform: rotate(338.40000000000003deg);
-o-transform: rotate(338.40000000000003deg);
transform: rotate(338.40000000000003deg);
}
.c100.p95 .bar {
-webkit-transform: rotate(342deg);
-moz-transform: rotate(342deg);
-ms-transform: rotate(342deg);
-o-transform: rotate(342deg);
transform: rotate(342deg);
}
.c100.p96 .bar {
-webkit-transform: rotate(345.6deg);
-moz-transform: rotate(345.6deg);
-ms-transform: rotate(345.6deg);
-o-transform: rotate(345.6deg);
transform: rotate(345.6deg);
}
.c100.p97 .bar {
-webkit-transform: rotate(349.2deg);
-moz-transform: rotate(349.2deg);
-ms-transform: rotate(349.2deg);
-o-transform: rotate(349.2deg);
transform: rotate(349.2deg);
}
.c100.p98 .bar {
-webkit-transform: rotate(352.8deg);
-moz-transform: rotate(352.8deg);
-ms-transform: rotate(352.8deg);
-o-transform: rotate(352.8deg);
transform: rotate(352.8deg);
}
.c100.p99 .bar {
-webkit-transform: rotate(356.40000000000003deg);
-moz-transform: rotate(356.40000000000003deg);
-ms-transform: rotate(356.40000000000003deg);
-o-transform: rotate(356.40000000000003deg);
transform: rotate(356.40000000000003deg);
}
.c100.p100 .bar {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
.c100.criticalBug .bar,
.c100.criticalBug .fill {
border-color: #F24747 !important;
}
.c100.highBug .bar,
.c100.highBug .fill {
border-color: #EE9336 !important;
}
.c100.mediumBug .bar,
.c100.mediumBug .fill {
border-color: #FDC431 !important;
}
.c100.lowBug .bar,
.c100.lowBug .fill {
border-color: #4CAE4C !important;
}
.c100.verylowBug .bar,
.c100.verylowBug .fill {
border-color: #357ABD !important;
}
</style>
\ No newline at end of file
<script>
// for first loader button
function BeagleWP_Token_Input() {
var access_token = document.getElementById("access_token").value;
var application_token = document.getElementById("application_token").value;
if (access_token.length == 32 && application_token.length == 32) {
document.getElementById("continueSave").style.display = "none";
document.getElementById("spinnerSave").style.display = "block";
}
}
// for delete application
function BeagleWP_delete_Confirm() {
Swal.fire({
text: 'Are you sure you want to delete this application?',
icon: 'warning',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#d33',
confirmButtonText: 'Delete'
}).then((result) => {
if (result.isConfirmed) {
// ajax call
var data = {
'action': 't4a_ajax_call_delete'
};
jQuery.post(ajaxurl, data, function(response) {
// analyse response
try {
var deleteDataResponse = JSON.parse(response);
if (deleteDataResponse == true || deleteDataResponse == 1 || deleteDataResponse != null) {
Swal.fire(
'Application deleted!',
'',
'success'
);
location.reload();
} else {
Swal.fire({
icon: 'error',
title: 'Delete failed!',
text: 'Something went wrong!',
});
}
} catch (err) {
console.log(err);
}
})
}
});
}
// for verify domain
function BeagleWP_verifyDomain_ByUser() {
document.getElementById("verifyDomain").style.display = "none";
document.getElementById("verifyDomainHide").style.display = "block";
var data = {
'action': 't4a_ajax_call_verify'
};
jQuery.post(ajaxurl, data, function(response) {
try {
var verifyResponse = JSON.parse(response);
if (verifyResponse.status != "Failed") {
var data = {
'action': 't4a_ajax_call_verify_update'
};
jQuery.post(ajaxurl, data, function(response) {
location.reload();
});
} else {
var data = {
'action': 't4a_ajax_call_verify_update_failed'
};
jQuery.post(ajaxurl, data, function(response) {});
document.getElementById("verifyDomainHide").style.display = "none";
document.getElementById("verifyError").style.display = "block";
}
} catch (err) {
}
});
}
// for automatic domain verify fail info
function BeagleWP_show_Msg() {
Swal.fire({
title: '',
text: "Domain verification failed. Try the other verification methods available by logging in to your Beagle Security account.",
icon: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
confirmButtonText: 'LOG IN'
}).then((result) => {
if (result.isConfirmed) {
window.open("https://beaglesecurity.com/login", '_blank');
}
})
}
// for status
function BeagleWP_get_Data() {
try {
document.getElementById("statusGet").style.display = "none";
document.getElementById("spinner").style.display = "block";
// ajax call
var data = {
'action': 't4a_ajax_call'
};
jQuery.post(ajaxurl, data, function(response) {
// analyse response
try {
var dataresponse = JSON.parse(response);
if (dataresponse.status != null || dataresponse.status != 'undefined') {
var width = dataresponse.progress;
var status = dataresponse.status;
document.getElementById("progress").style.width = width + "%";
document.getElementById("progress").innerText = width + "%";
document.getElementById("status").innerText = dataresponse.status + " : ";
document.getElementById("message").innerText = dataresponse.message;
document.getElementById("statusGet").style.display = "block";
document.getElementById("spinner").style.display = "none";
if (status == 'completed') {
document.getElementById("statusbar").style.display = "none";
location.reload();
BeagleWP_get_Result();
} else {
document.getElementById("resultData").style.display = "none";
}
} else {
console.log("Error occures!.");
}
} catch (err) {
}
});
} catch (err) {
}
}
// for get result
function BeagleWP_get_Result() {
try {
document.getElementById("statusbar").style.display = "none";
} catch (err) {
}
document.getElementById("resultData").style.display = "flex";
var data = {
'action': 't4a_ajax_call_result'
};
jQuery.post(ajaxurl, data, function(response) {
try {
var data = {
'action': 't4a_ajax_call_result'
};
jQuery.post(ajaxurl, data, function(response) {
var dataresponse = JSON.parse(response);
var dataResult = JSON.parse(dataresponse.result);
if(dataResult!=null) {
var totalBug = dataResult.vulnerability_summary.critical + dataResult.vulnerability_summary.high + dataResult.vulnerability_summary.medium + dataResult.vulnerability_summary.low + dataResult.vulnerability_summary.very_low;
var score = dataResult.score;
if(score <= 2){
document.getElementById("progressClass").classList.add('p' + dataResult.score + '0');
document.getElementById("progressClass").classList.add('criticalBug');
} else if(score <= 4){
document.getElementById("progressClass").classList.add('p' + dataResult.score + '0');
document.getElementById("progressClass").classList.add('highBug');
} else if(score <= 6){
document.getElementById("progressClass").classList.add('p' + dataResult.score + '0');
document.getElementById("progressClass").classList.add('mediumBug');
} else if(score <= 8){
document.getElementById("progressClass").classList.add('p' + dataResult.score + '0');
document.getElementById("progressClass").classList.add('lowBug');
} else if(score <= 10){
document.getElementById("progressClass").classList.add('p' + dataResult.score + '0');
document.getElementById("progressClass").classList.add('verylowBug');
}
document.getElementById("progressCount").innerText = dataResult.score;
document.getElementById("criticalBug").innerText = dataResult.vulnerability_summary.critical;
document.getElementById("highBug").innerText = dataResult.vulnerability_summary.high;
document.getElementById("mediumBug").innerText = dataResult.vulnerability_summary.medium;
document.getElementById("lowBug").innerText = dataResult.vulnerability_summary.low;
document.getElementById("verylowBug").innerText = dataResult.vulnerability_summary.very_low;
document.getElementById("totalBug").innerText = totalBug;
document.getElementById("genDate").innerText = " " + dataResult.generated_date;
}
});
} catch (err) {
}
});
}
</script>
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*To start the test after verifying the application*/
function Beagle_WP_start_Test() {
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$getTokenFromTbl = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
foreach ( $getTokenFromTbl as $print ){
$Beagle_WP_access_token = $print->access_token;
$Beagle_WP_application_token = $print->application_token;
}
$beaglrURL = $apiServerBaseUrl.'test/start';
$scanStartData = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token);
$startRequest = wp_remote_post($beaglrURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($scanStartData),
'method' => 'POST',
'data_format' => 'body',
));
$startMsgResponse = json_decode(wp_remote_retrieve_body( $startRequest ));
try {
if( $startMsgResponse ) {
try {
if ($startMsgResponse->status == 'Failed') {
$updateData = $wpdb->query($wpdb->prepare("UPDATE $Beagle_WP_scan_table SET status = %s WHERE application_token = %s",$startMsgResponse->status, $Beagle_WP_application_token));
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="errormsg">
<p id="errMsg"><?php echo $startMsgResponse->message;?></p>
</div>
<?php
}else {
$resultToken = $startMsgResponse->result_token;
$updateData = $wpdb->query( $wpdb->prepare("UPDATE $Beagle_WP_scan_table SET status = %s , result_token = %s, runningStatus = %s WHERE application_token = %s",$startMsgResponse->status, $startMsgResponse->result_token, "Running", $Beagle_WP_application_token));
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="message">
<p id="errMsg">Test started successfully.</p>
</div>
<?php
}
}
catch(Exception $e) {
}
}
else {
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="errormsg">
<p id="errMsg">Test start failed!</p>
</div>
<?php
}
}catch(Exception $e) {
}
}
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*to stop the ongoing test*/
function Beagle_WP_stop_Test() {
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$getTokenFromTbl = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
foreach ( $getTokenFromTbl as $print ){
$Beagle_WP_access_token = $print->access_token;
$Beagle_WP_application_token = $print->application_token;
}
try {
if($Beagle_WP_access_token != null || $Beagle_WP_application_token != null) {
try {
if(isset($_POST['stopBeagleTest']) || isset($_POST['restartBeagleTest'])){
$_POST = array();
$beaglrURL = $apiServerBaseUrl.'test/stop';
$scanStopData = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token);
$request = wp_remote_post($beaglrURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($scanStopData),
'method' => 'POST',
'data_format' => 'body',
));
$stopResponse = json_decode(wp_remote_retrieve_body( $request ));
try {
if( $stopResponse->status == "Failed" ) {
$updateData = $wpdb->query($wpdb->prepare("UPDATE $Beagle_WP_scan_table SET status = %s WHERE application_token = %s",$stopResponse->status, $Beagle_WP_application_token));
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="errormsg">
<p id="errMsg">Test stop failed!</p>
</div>
<?php
} else {
$updateData = $wpdb->query( $wpdb->prepare("UPDATE $Beagle_WP_scan_table SET status = %s, runningStatus = %s WHERE application_token = %s",$stopResponse->status, "notRunning" , $Beagle_WP_application_token));
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="message">
<p id="errMsg">Test stopped successfully</p>
</div>
<?php
}
}catch (Exception $e) {
}
}
}catch (Exception $e) {
}
}else {
?>
<script>
function app_Exist(){
var errorMsg=setTimeout("document.getElementById('errMsg').style.display='none';",4000);
}
app_Exist()
</script>
<div class="errormsg">
<p id="errMsg">Error!</p>
</div>
<?php
}
}
catch (Exception $e) {
}
}
\ No newline at end of file
<?php
include sanitize_file_name('bootstrap.php');
?>
<style>
.font-monte {
font-family: 'Montserrat', sans-serif;
}
.header {
width: 100%;
margin: 4rem auto 1rem auto;
justify-content: center !important;
display: flex;
overflow-x: hidden;
overflow-y: auto;
}
.header a {
text-decoration: none;
}
.header a img {
outline: none;
}
.header img {
width: 200px;
height: auto;
}
.errormsg p {
padding: 1rem;
color: #fff;
position: fixed;
background-color: red;
top: 3rem;
right: 0px;
font-size: 14px;
font-family: "Georgia";
font-weight: 500;
width: 300px;
z-index: 999;
}
.message p {
padding: 1rem;
color: #fff;
background-color: green;
position: fixed;
top: 3rem;
right: 0px;
font-size: 14px;
font-family: "Georgia";
font-weight: 500;
width: 300px;
z-index: 999;
}
.input-form {
width: 25rem;
margin: 2rem auto;
justify-content: center !important;
display: block;
padding: 1rem;
}
.help {
padding-top: 1rem;
font-size: 12px;
color: #006eeb;
text-decoration: none;
}
.help a {
text-decoration: none;
outline: none !important;
}
.help a:focus {
text-decoration: none;
outline: none !important;
}
.label {
font-size: 14px;
color: #676767;
margin: 24px 0 10px 0px;
font-weight: 400;
}
.form-control {
display: flex;
width: 100%;
border-radius: 4px;
padding: 0.5rem 1rem !important;
margin-top: 10px;
font-size: 14px;
height: 50px;
background-color: #f5f5f5;
border: 1px solid #cfd8dc;
}
.access {
margin-bottom: 24px !important;
}
.form-group {
display: block;
width: 100%;
margin: auto;
}
.appdiv {
margin-bottom: 46px;
}
.startBtn {
background-color: #14bc53;
border: 1px solid #1fca5f;
border-radius: 4px;
padding: 12px 16px;
color: #fff;
font-size: 16px;
font-weight: 600;
width: 100%;
position: relative;
display: flex;
justify-content: center;
align-items: center;
transition: all .2s ease-in-out;
cursor: pointer;
}
.startBtn:focus {
outline: transparent;
}
.container {
padding: 7px;
overflow-x: hidden;
margin-top: 52px;
width: 50rem;
background-color: #f2f4f8;
border-radius: 12px;
box-shadow: 0px 1px 4px 0px #d2d2d2;
padding-bottom: 2rem;
}
.head-main {
height: 135px;
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0px 2px 3px 0px #d0d0d0;
padding: 2rem;
}
.head-block {
padding: auto 24px !important;
}
.titledomain {
font-size: 18px;
color: #3d3d3d;
line-height: 25px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsi
}
.urldomain {
font-size: 14px;
color: #006eeb;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsi
}
.app-image {
max-width: 50px;
}
.delete-icon {
height: 36px;
width: 36px;
background-color: #e9e9e9;
border-radius: 50%;
padding: 8px 4px;
color: #eb0000;
cursor: pointer;
}
.delete-icon:hover {
box-shadow: 0px 1px 6px 0px;
}
.delete-icon-hide {
height: 36px;
width: 36px;
background-color: #e9e9e9;
border-radius: 50%;
padding: 8px 4px;
color: #a0a0a0;
cursor: pointer;
}
.verify-icon {
height: 16px;
width: 16px;
border: 1px solid #1cd160;
border-radius: 50%;
border-radius: 50%;
color: #1cd160;
font-size: 12px;
margin-left: 10px !important;
margin-top: 3px !important;
padding: 1px !important;
}
.close-icon {
height: 36px;
width: 36px;
border-radius: 50%;
padding: 6px 4px;
color: #eb0000;
border: 2px solid #eb0000;
}
.errorMsg {
font-family: 'Montserrat';
font-size: 12px;
color: #eb0000;
margin-left: 20px;
}
.infoicon {
color: #3fa9f5;
cursor: pointer;
margin-left: 8px;
}
.btn {
height: 52px;
width: 168px;
border-radius: 8px;
color: #fff;
}
.start-test {
background-color: #006eeb;
}
.hidden-test {
background-color: #006eeb;
opacity: 0.5;
}
.stop-test {
background-color: #eb0000;
}
.btn:hover {
color: #fff;
font-weight: 500;
}
.verify-domain {
height: 32px;
background-color: #e6f4ff;
border: 1px solid #d7edff;
border-radius: 4px;
color: #1f1f1f !important;
margin-left: 20px;
font-size: 12px;
width: 135px;
}
.verify-domain:hover {
box-shadow: 0px 1px 6px 0px #006eeb;
}
.verify-domain:focus {
outline: transparent;
}
.test-box {
padding: 1.5rem;
}
.status-box {
padding-left: 14px;
}
.ststustest {
text-transform: uppercase;
font-family: 'Montserrat';
font-size: 14px;
color: #676767;
}
.test-msg {
font-family: 'Montserrat';
font-size: 14px;
color: #1f1f1f;
}
.reload-icon {
cursor: pointer;
height: 30px;
width: 30px;
background-color: #ffffff;
font-size: 20px;
color: #006eeb;
border-radius: 50%;
padding: 5px;
}
.score {
font-size: 14px;
}
.progressdiv {
width: 90%;
}
.progress {
background-color: #dfe4ef;
}
.progress-bar {
background-color: #006eeb;
}
.progress,
.progress-bar {
font-size: 10px;
border-radius: 10px;
}
.reloadicon {
width: 10%;
}
.critical {
background-color: #F24747;
border: 1px solid #F24747;
border-radius: 8px 0px 0px 8px;
padding-top: 14px;
padding-bottom: 12px;
}
.high {
background-color: #EE9336;
border: 1px solid #EE9336;
padding-top: 14px;
padding-bottom: 12px;
}
.medium {
background-color: #FDC431;
border: 1px solid #FDC431;
padding-top: 14px;
padding-bottom: 12px;
}
.low {
background-color: #4CAE4C;
border: 1px solid #4CAE4C;
padding-top: 14px;
padding-bottom: 12px;
}
.verylow {
background-color: #357ABD;
border: 1px solid #357ABD;
padding-top: 14px;
padding-bottom: 12px;
}
.total {
background-color: #ffffff;
border: 1px solid #DFE4EF;
border-radius: 0px 8px 8px 0px;
padding-top: 14px;
padding-bottom: 12px;
}
.total .countnumber {
color: #000;
font-weight: 500;
font-size: 24px;
line-height: 0.95;
}
.countnumber {
color: #fff;
font-weight: 500;
font-size: 24px;
line-height: 0.95;
}
.total .counttext {
font-size: 12px;
padding-top: 8px;
color: #006eeb;
}
.counttext {
font-size: 12px;
padding-top: 5px;
color: #fff;
}
.startVerify {
display: none;
}
.spinner-border {
width: 20px;
height: 20px;
margin: auto;
}
.resultblock {
display: none;
}
.loadingRe {
display: flex;
cursor: pointer;
height: 30px;
width: 30px;
background-color: #ffffff;
font-size: 20px;
color: #006eeb;
border-radius: 50%;
padding: 5px;
}
.gendate {
font-size: 12px;
color: #1f1f1f;
}
.gentxt {
font-size: 14px;
color: #1f1f1f;
}
.gentxt span {
font-size: 12px;
color: #676767;
}
.goto {
font-size: 12px;
}
.goto a {
text-decoration: none;
}
.loader {
border: 5px solid transparent;
background-color: transparent;
border-radius: 50%;
border-top: 3px solid #006eeb;
width: 20px;
height: 20px;
-webkit-animation: spin 2s linear infinite;
/* Safari */
animation: spin 2s linear infinite;
}
.loaderFirst {
border: 5px solid transparent;
background-color: transparent;
border-radius: 50%;
border-top: 5px solid #fff;
width: 20px;
height: 20px;
-webkit-animation: spin 2s linear infinite;
/* Safari */
animation: spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/montserrat/v15/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
.application-image {
margin: auto;
width: 50px;
height: 50px;
background-size: 50px 50px;
background-repeat: no-repeat;
background-image: url('data:image/png;base64,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');
}
</style>
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*Updating database after verifying signature*/
function Beagle_WP_verify_Token_Update(){
global $wpdb;
$Beagle_WP_scan_table = $wpdb->prefix."beagleScanData";
$getTokenFromTbl = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
$Beagle_WP_application_token = $getTokenFromTbl[0]->application_token;
$updateData = $wpdb->query( $wpdb->prepare("UPDATE $Beagle_WP_scan_table SET verified = %d WHERE application_token = %s",1, $Beagle_WP_application_token));
try{
if($updateData) {
echo json_encode("succeess");
exit;
} else {
echo json_encode("failed");
exit;
}
} catch (Exception $e) {
}
}
\ No newline at end of file
<?php
//GPL license
include sanitize_file_name('gplLicense.php');
/*to verify the signature token*/
function Beagle_WP_verify_Token()
{
global $wpdb;
global $apiServerBaseUrl;
$Beagle_WP_scan_table = $wpdb->prefix . "beagleScanData";
$getTokenFromTbl = $wpdb->get_results($wpdb->prepare("SELECT * FROM $Beagle_WP_scan_table"));
foreach ($getTokenFromTbl as $print) {
$Beagle_WP_access_token = $print->access_token;
$Beagle_WP_application_token = $print->application_token;
}
$beagleVerifyURL = $apiServerBaseUrl . 'test/signature/verify';
$verifySignature = array("access_token" => $Beagle_WP_access_token, "application_token" => $Beagle_WP_application_token, "type" => "WORDPRESS");
$verifyResponse = wp_remote_post($beagleVerifyURL, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($verifySignature),
'method' => 'POST',
'data_format' => 'body',
));
$statusResponse = json_decode(wp_remote_retrieve_body($verifyResponse));
try {
echo json_encode($statusResponse);
exit;
} catch (Exception $e) {
}
}
This is a status check file.
██████ ███████ █████ ██████ ██ ███████ ██ ██ ████████
██ ██ ██ ██ ██ ██ ██ ██ █ ██ ██ ██ ██
██████ █████ ███████ ██ ███ ██ █████ ██ ██ ██ ████████
██ ██ ██ ██ ██ ██ ██ ██ ██ █ ██ █ █ ██ ██
██████ ███████ ██ ██ ██████ ███████ ███████ ███ ███ ██
\ No newline at end of file
This is a log file.
=========================================================================
██████ ███████ █████ ██████ ██ ███████ ██ ██ ████████
██ ██ ██ ██ ██ ██ ██ ██ █ ██ ██ ██ ██
██████ █████ ███████ ██ ███ ██ █████ ██ ██ ██ ████████
██ ██ ██ ██ ██ ██ ██ ██ ██ █ ██ █ █ ██ ██
██████ ███████ ██ ██ ██████ ███████ ███████ ███ ███ ██
=========================================================================
=== Beagle Security - WP Security, Advanced Penetration Testing ===
Contributors: Jishu Vijayan C K, Dileep Achuthan, Nayana EN
Tags: security, security plugin, website security, wordpress security, security testing
Donate link: https://beaglesecurity.com/
Requires at least: 5.2
Tested up to: 6.0
Requires PHP: 7.2
Stable tag: 1.0.7
License: GPLv2
License URI: https://www.gnu.org/licenses/gpl-2.0.html
== Description ==
##### SECURE YOUR WEBSITE FROM THE LATEST VULNERABILITIES WITH THE EASY TO USE WEBSITE PENETRATION TESTING TOOL
**[Beagle Security](https://beaglesecurity.com/ "Beagle Security")** is a web application penetration testing tool that helps you to identify vulnerabilities on your WordPress website before hackers exploit them.
35% of the web is built on WordPress and it's a favorite target for hackers. Vulnerabilities in the WordPress core, plugins, and themes can all leave your website prone to a cyber attack leading to loss of critical data and financial losses.
That is why you need to proactively tackle WordPress website security and make sure you’re secure from common WordPress security vulnerabilities like cross-site scripting (XSS), SQL injection, file inclusion exploits, directory traversal, and many more.
With Beagle Security, you can find complex attack vectors WordPress vulnerability scanners fail to detect. Vulnerability scanners give you quick scan results, but they are not designed to identify modern security threats.
By leveraging an AI-powered core, Beagle Security does in-depth penetration tests on your website and discovers all the loopholes in it. With evidence-based vulnerability reporting, you get insights into the occurrence of each vulnerability on your website and actionable recommendations on how to fix the discovered security issues and secure your website.
### Beagle Security’s free plugin helps you to:
* Connect securely to your Beagle Security account
* Complete domain verification with just a button’s click
* Start/stop tests from your WP admin console
* See the progress of running tests
* View test results with total vulnerabilities in your website
* Understand the classification of vulnerabilities according to the severity
* Know the security score of your website
### WHY CHOOSE BEAGLE SECURITY
* Compliant with global security standards like OWASP and SANS
* Set up in less than 5 minutes- no coding required
* Constantly updated vulnerability database with latest threats and zero-day vulnerabilities
* AI-powered core for human-like decision making
* Lowest false positives
* Authenticated testing for complex websites with login module
* Ensure security compliance with continuous vulnerability assessments
### GETTING STARTED
You’ll need to have an account on Beagle Security to use this plugin. You can sign up [here](https://beaglesecurity.com/signup "Beagle Security Signup"). Installing the plugin is easy and all you need is to add the access token and application token from your Beagle Security account to finish the setup.
== Installation ==
* Step 1: Search Beagle Security - WP Security, Advanced Penetration Testing in the plugin search bar.
* Step 2: Click **Install** to add the plugin to your WordPress website.
* Step 3: Go to the Plugins page and activate Beagle Security - WP Security, Advanced Penetration Testing plugin.
* Step 4: Provide access token and application token to start the security test.
== Frequently Asked Questions ==
For support related articles, kindly visit the **[Help Center](https://help.beaglesecurity.com/category/1/general "Beagle Security Help Center")**.
== Screenshots ==
1. Connect easily by setting up an access token and application token
2. One-click domain verification
3. Start tests from your WP admin console
4. See the progress of running tests
5. Know the security score of your website, view test results and classification of vulnerabilities according to the severity
== Changelog ==
Version 1.0.3
*API update.
Version 1.0.4
*Bug Fixes
Version 1.0.5
*Bug Fixes
Version 1.0.6
*Bug Fixes
== Upgrade Notice ==
Version 1.0.7
<?php
/**
* @link https://beaglesecurity.com/
* @since 1.0.7
* @package Beagle Security
*
* @wordpress-plugin
* Plugin Name: Beagle Security - WP Security, Advanced Penetration Testing
* Plugin URI: https://beaglesecurity.com/wordpress-security-testing
* Description: Secure your WordPress website from the latest vulnerabilities with automated in-depth penetration testing.
* Version: 1.0.7
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Beagle Security
* Author URI: https://beaglesecurity.com/
* License: GPL v2
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: Beagle wordpress scan
* Domain Path: /languages
*/
/*
Beagle Security - WP Security, Advanced Penetration Testing, 2021 Beagle Security
This plugin is distributed under the terms of the GNU GPL
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; If not, see {License URI}.
*/
/* Basic Securtiy*/
defined('ABSPATH') or die("No Access");
if (!defined('ABSPATH')) {
define('ABSPATH', dirname(__FILE__), '/');
}
class Beagle_WordPress_Scan
{
function __construct()
{
add_action('init', array($this, 'Beagle_WP_table_create'));
}
// for plugin activate
function activate_Beagle_plugin()
{
flush_rewrite_rules();
}
// for plugin deactivate
function deactivate_Beagle_plugin()
{
global $wpdb;
$Beagle_WP_scan_table = $wpdb->prefix . 'beagleScanData';
$sql = "DROP TABLE IF EXISTS $Beagle_WP_scan_table";
$wpdb->query($sql);
delete_option("my_plugin_db_version");
flush_rewrite_rules();
}
function Beagle_WP_table_create()
{
flush_rewrite_rules();
global $wpdb;
$Beagle_WP_scan_table = $wpdb->prefix . "beagleScanData";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $Beagle_WP_scan_table( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, access_token VARCHAR(50) NOT NULL, application_token VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL, result_token VARCHAR(50), verified BOOLEAN NOT NULL,title VARCHAR(20),url VARCHAR(50),runningStatus VARCHAR(10), autoVerify BOOLEAN)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;";
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
dbDelta($sql);
}
}
if (class_exists('Beagle_WordPress_Scan')) {
$beagleWPscanStart = new Beagle_WordPress_Scan();
// activation hook
register_deactivation_hook(__FILE__, array($beagleWPscanStart, 'activate_Beagle_plugin'));
// deactivation hook
register_deactivation_hook(__FILE__, array($beagleWPscanStart, 'deactivate_Beagle_plugin'));
}
add_action('admin_menu', 'Beagle_Menu_Page');
/*Adding submenu page of plugin to the main menu*/
function Beagle_Menu_Page()
{
add_menu_page('Beagle Plugin', 'Beagle Security', 'manage_options', 'Beagle_Plugin', 'Beagle_WP_Page_Content', 'data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE4IiB2aWV3Qm94PSIwIDAgMTYgMTgiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDE2IDE4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4gIDxpbWFnZSBpZD0iaW1hZ2UwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTgiIHg9IjAiIHk9IjAiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBU0NBUUFBQUQ0TXBiaEFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOIEFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFBbUpMUjBRQS80ZVB6TDhBQUFBSmNFaFogY3dBQUxFb0FBQ3hLQVhkNmRFMEFBQUFIZEVsTlJRZmxBZ1lMTGhvdnhqT2FBQUFCWlVsRVFWUW96MlhRTVV2VkFSaEc4ZC8vZWlXaiBEREZNc1lLa1JOU2kybHFpV1FLaENPb2pKRG0xRkxRVlJOUVUxQllFUWREUUlFUXVJVVFOaWxRUWtxRmxpU0Jva2c2Smx4THYwMkoyIG83T2U4L0xDVXdSbzB1T1lSdXZLWnJ3elp3TUtSYmJwZEZpelJSL00rcWxGdDA2RkdST1dDa1VHclpqdzJacS9GTnIxNnZhaW1DeXIgOXhoMWVqUnQ2bFZmelpzMzc2akpzaldVRExxaWNUTlk5TWdUMHlwUUJxZGMwN0wxSUpyMStXNkRLS2xxYzZORy8zSlhwNm96dW15aiB5SUQ5cmlwcTdqOXBOK0syYmwwaXR6S1YvNm5rYktRakl5Vzc3VlRMRHd0b2NFNmRXY01scmI3OEU2d2J0b3J0NHBCcVNhOHBIMnVDIFpoMUdWVHkxVjUvbkplLzFHL05hZFNzNVljNjRIYTRiTjExeVI4VUZTNGEyeHE0MzVySmxiN3hGaXB6UHR5U3Y4akFMU1pKbjJaWGUgWE1xZW9BaUYwMjQ2WXRwTHJaYmQxMmFmSVl2Rm4yVWlCM012SzFuSXlSelBRUHJTRUZFelhxUSsvUm5OZzF6TWdWcjVHMzRucUZHTyBSOWpIQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ESXhMVEF5TFRBMlZERXhPalEyT2pJMkt6QXlPakF3U2pPczNRQUFBQ1YwIFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeU1TMHdNaTB3TmxReE1UbzBOam95Tmlzd01qb3dNRHR1RkdFQUFBQUFTVVZPUks1Q1lJST0iLz4KPC9zdmc+');
}
/*to declare the apis globally*/
global $apiServerBaseUrl;
$apiServerBaseUrl = "https://api.beaglesecurity.com/v1/";
/*calling the option menu to enter access token and application token and to submit it*/
require plugin_dir_path(__FILE__) . 'Admin/optionPageContent.php';
/*hooks the post method to start the test when the user clicks 'start test' button*/
if (isset($_POST['startBeagleTest'])) {
$_POST = array();
add_action('admin_init', 'Beagle_WP_start_Test');
}
/*hooks the post method to stop the test when the user clicks 'stop test' button*/
if (isset($_POST['stopBeagleTest'])) {
add_action('admin_init', 'Beagle_WP_stop_Test');
}
/*hooks the post method to restart the test when the user clicks 'start test' button after pressing stop button*/
if (isset($_POST['restartBeagleTest'])) {
add_action('admin_init', 'Beagle_WP_stop_Test');
}
/*erases the data in database when the user wants to delete the test details*/
if (isset($_POST['delete'])) {
add_action('admin_init', 'Beagle_WP_delete_Test');
}
/*hooks the post method to verify the domain*/
if (isset($_POST['startVerify'])) {
add_action('admin_init', 'Beagle_WP_addDataTo_DB');
}
if (isset($_POST['verify'])) {
add_action('admin_init', 'Beagle_WP_verify_Token');
}
/*calling startTest.php file to begin test*/
require plugin_dir_path(__FILE__) . 'Admin/startTest.php';
/*calling stopTest.php file to stop test*/
require plugin_dir_path(__FILE__) . 'Admin/stopTest.php';
/*calling deleteTest.php file to delete the data of test*/
require plugin_dir_path(__FILE__) . 'Admin/deleteTest.php';
/*calling insertInToTable.php file to add data to db*/
require plugin_dir_path(__FILE__) . 'Admin/insertInToTable.php';
/*calling getStatus.php file to get status of test*/
require plugin_dir_path(__FILE__) . 'Admin/getStatus.php';
/*calling getResultData.php file to get result of test*/
require plugin_dir_path(__FILE__) . 'Admin/getResultData.php';
/*calling verify.php */
require plugin_dir_path(__FILE__) . 'Admin/verifyToken.php';
/*calling updateVerify.php */
require plugin_dir_path(__FILE__) . 'Admin/updateVerify.php';
/*calling updateVerifyFailed.php */
require plugin_dir_path(__FILE__) . 'Admin/autoVerifyFailed.php';
// for status data
add_action('wp_ajax_t4a_ajax_call', 'Beagle_WP_getStatusOf_CurrentTestData');
// for result data
add_action('wp_ajax_t4a_ajax_call_result', 'Beagle_WP_getResultOf_CurrentTestData');
// for delete application
add_action('wp_ajax_t4a_ajax_call_delete', 'Beagle_WP_delete_Test');
// for verify application
add_action('wp_ajax_t4a_ajax_call_verify', 'Beagle_WP_verify_Token');
// for update verify application
add_action('wp_ajax_t4a_ajax_call_verify_update', 'Beagle_WP_verify_Token_Update');
// for update verify failed condition
add_action('wp_ajax_t4a_ajax_call_verify_update_failed', 'Beagle_WP_auto_Verify');