Because of the high traffic, i decided to reformat the chapters and upload everything to my blog at danielgorbe.com/en/tags/ceh/ to be more readable.
But I need YOUR help!
If you have anything to append to the chapters, please do a pull request, open an issue or contact me. Every help is warmly welcome!
I try to include examples to the chapters.
These examples are for Linux users only!
You can always run those examples on danielgorbe.com, but please, dont be a d*ckhead!
https://docs.google.com/document/d/1YvAOM1o6qkgFEdzJpn01rLRBGV8JPfK4cHvfgRiAgEM/edit
https://arc.bukancoder.co/Certified-Ethical-Hacker-Module-V9/
https://github.com/yeahhub/cehv9
https://github.com/Brute-f0rce/CEH
https://yeahhub.com/cehv9-practice-exam-questions/chapter0-assessment.php
- Complete chapter 1,2,11,12
The base and the structure provided by IPSpecialst's CEH v10 book (It's worth to buy and read it!)
The details is got from DuckDuckGo
These chapters source code can be found on GitHub
Threat Modelling: https://github.com/hysnsec/awesome-threat-modelling
Penetration testing books: https://github.com/enaqx/awesome-pentest#android-utilities https://github.com/iAnonymous3000/awesome-pentest-checklist https://steflan-security.com/penetration-testing-interview-questions-cheat-sheet/
PenTesting companies: https://www.breachlock.com/ https://www.nccgroup.com/us/
Pen testing reports by orgs: https://github.com/juliocesarfort/public-pentesting-reports
ISTQB: https://github.com/mfaisalkhatri/awesome-learning https://github.com/elenastef/proj01/blob/master/Foundations%20of%20software%20testing%20-%20ISTQB%20Certification%20book.pdf https://gist.github.com/KondrotM/2fd4131b1395c63bde1e688d626dbac1 https://github.com/bloomikko/ISTQB-CTFL-V4.0
S/w testing books: https://github.com/btc-fan/SoftwareTestingBooks https://github.com/orensrauch/The_Software_Testing_Router?tab=readme-ov-file#Automation-testing-libraries-and-frameworks
Example in Java using OpenCV to compare two images by calculating the Mean Squared Error (MSE) and Structural Similarity Index (SSIM). This will help you determine how similar or different two images are.
Requirements:
- OpenCV Java bindings installed and configured in your project.
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class ImageComparator {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
// Load the images
Mat img1 = Imgcodecs.imread("image1.jpg");
Mat img2 = Imgcodecs.imread("image2.jpg");
// Check if images loaded
if (img1.empty() || img2.empty()) {
System.out.println("Cannot read one of the images");
return;
}
// Convert to grayscale
Mat gray1 = new Mat();
Mat gray2 = new Mat();
Imgproc.cvtColor(img1, gray1, Imgproc.COLOR_BGR2GRAY);
Imgproc.cvtColor(img2, gray2, Imgproc.COLOR_BGR2GRAY);
// Resize images to be the same size (if necessary)
if (gray1.size().equals(gray2.size()) == false) {
Imgproc.resize(gray2, gray2, gray1.size());
}
// Calculate Mean Squared Error (MSE)
double mse = getMSE(gray1, gray2);
System.out.println("MSE: " + mse);
// Calculate Structural Similarity Index (SSIM)
double ssim = getSSIM(gray1, gray2);
System.out.println("SSIM: " + ssim);
}
// Function to calculate Mean Squared Error
public static double getMSE(Mat img1, Mat img2) {
Mat diff = new Mat();
Core.absdiff(img1, img2, diff);
diff.convertTo(diff, CvType.CV_32F);
diff = diff.mul(diff);
Scalar sumScalar = Core.sumElems(diff);
double sse = sumScalar.val[0];
double mse = sse / (double)(img1.total());
return mse;
}
// Function to calculate SSIM (simplified version)
public static double getSSIM(Mat img1, Mat img2) {
Mat img1_32 = new Mat();
Mat img2_32 = new Mat();
img1.convertTo(img1_32, CvType.CV_32F);
img2.convertTo(img2_32, CvType.CV_32F);
Mat mu1 = new Mat();
Mat mu2 = new Mat();
Imgproc.GaussianBlur(img1_32, mu1, new Size(11, 11), 1.5);
Imgproc.GaussianBlur(img2_32, mu2, new Size(11, 11), 1.5);
Mat mu1_sq = mu1.mul(mu1);
Mat mu2_sq = mu2.mul(mu2);
Mat mu1_mu2 = mu1.mul(mu2);
Mat sigma1_sq = new Mat();
Mat sigma2_sq = new Mat();
Mat sigma12 = new Mat();
Imgproc.GaussianBlur(img1_32.mul(img1_32), sigma1_sq, new Size(11, 11), 1.5);
Core.subtract(sigma1_sq, mu1_sq, sigma1_sq);
Imgproc.GaussianBlur(img2_32.mul(img2_32), sigma2_sq, new Size(11, 11), 1.5);
Core.subtract(sigma2_sq, mu2_sq, sigma2_sq);
Imgproc.GaussianBlur(img1_32.mul(img2_32), sigma12, new Size(11, 11), 1.5);
Core.subtract(sigma12, mu1_mu2, sigma12);
double C1 = 6.5025, C2 = 58.5225;
Mat t1 = new Mat();
Mat t2 = new Mat();
Mat t3 = new Mat();
Core.addWeighted(mu1_mu2, 2, new Mat(), 0, C1, t1);
Core.addWeighted(sigma12, 2, new Mat(), 0, C2, t2);
t1 = t1.mul(t2);
Core.add(mu1_sq, mu2_sq, t2);
Core.add(t2, new Scalar(C1), t2);
Core.add(sigma1_sq, sigma2_sq, t3);
Core.add(t3, new Scalar(C2), t3);
t2 = t2.mul(t3);
Mat ssim_map = new Mat();
Core.divide(t1, t2, ssim_map);
Scalar mssim = Core.mean(ssim_map);
return mssim.val[0];
}
}How it works:
- Loads two images.
- Converts them to grayscale and resizes if necessary.
- Computes MSE and SSIM, printing the results.
Dependencies:
- Make sure to include OpenCV JARs and native libraries in your project’s build path.
Note:
This is a basic example. For more robust or color image comparison, you can extend the logic to process each channel separately or use advanced metrics.