Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions sslscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1038,7 +1038,8 @@ int testHeartbleed(struct sslCheckOptions *options, const SSL_METHOD *sslMethod)
{

// Credit to Jared Stafford ([email protected])
char hello[] = {0x16,0x03,0x00,0x00,0xdc,0x01,0x00,0x00,0xd8,0x03,0x02,0x53,0x43,0x5b,0x90,0x9d,0x9b,0x72,0x0b,0xbc,0x0c,0xbc,0x2b,0x92,0xa8,0x48,0x97,0xcf,0xbd,0x39,0x04,0xcc,0x16,0x0a,0x85,0x03,0x90,0x9f,0x77,0x04,0x33,0xd4,0xde,0x00,0x00,0x66,0xc0,0x14,0xc0,0x0a,0xc0,0x22,0xc0,0x21,0x00,0x39,0x00,0x38,0x00,0x88,0x00,0x87,0xc0,0x0f,0xc0,0x05,0x00,0x35,0x00,0x84,0xc0,0x12,0xc0,0x08,0xc0,0x1c,0xc0,0x1b,0x00,0x16,0x00,0x13,0xc0,0x0d,0xc0,0x03,0x00,0x0a,0xc0,0x13,0xc0,0x09,0xc0,0x1f,0xc0,0x1e,0x00,0x33,0x00,0x32,0x00,0x9a,0x00,0x99,0x00,0x45,0x00,0x44,0xc0,0x0e,0xc0,0x04,0x00,0x2f,0x00,0x96,0x00,0x41,0xc0,0x11,0xc0,0x07,0xc0,0x0c,0xc0,0x02,0x00,0x05,0x00,0x04,0x00,0x15,0x00,0x12,0x00,0x09,0x00,0x14,0x00,0x11,0x00,0x08,0x00,0x06,0x00,0x03,0x00,0xff,0x01,0x00,0x00,0x49,0x00,0x0b,0x00,0x04,0x03,0x00,0x01,0x02,0x00,0x0a,0x00,0x34,0x00,0x32,0x00,0x0e,0x00,0x0d,0x00,0x19,0x00,0x0b,0x00,0x0c,0x00,0x18,0x00,0x09,0x00,0x0a,0x00,0x16,0x00,0x17,0x00,0x08,0x00,0x06,0x00,0x07,0x00,0x14,0x00,0x15,0x00,0x04,0x00,0x05,0x00,0x12,0x00,0x13,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x0f,0x00,0x10,0x00,0x11,0x00,0x23,0x00,0x00,0x00,0x0f,0x00,0x01,0x01};
char hello[] = {0x16,0x03,0x00,0x00,0xdc,0x01,0x00,0x00,0xd8,0x03,0x02,0x53,0x43,0x5b,0x90,0x9d,0x9b,0x72,0x0b,0xbc,0x0c,0xbc,0x2b,0x92,0xa8,0x48,0x97,0xcf,0xbd,0x39,0x04,0xcc,0x16,0x0a,0x85,0x03,0x90,0x9f,0x77,0x04,0x33,0xd4,0xde,0x00,0x00,0x66,0xc0,0x14,0xc0,0x0a,0xc0,0x22,0xc0,0x21,0x00,0x39,0x00,0x38,0x00,0x88,0x00,0x87,0xc0,0x0f,0xc0,0x05,0x00,0x35,0x00,0x84,0xc0,0x12,0xc0,0x08,0xc0,0x1c,0xc0,0x1b,0x00,0x16,0x00,0x13,0xc0,0x0d,0xc0,0x03,0x00,0x0a,0xc0,0x13,0xc0,0x09,0xc0,0x1f,0xc0,0x1e,0x00,0x33,0x00,0x32,0x00,0x9a,0x00,0x99,0x00,0x45,0x00,0x44,0xc0,0x0e,0xc0,0x04,0x00,0x2f,0x00,0x96,0x00,0x41,0xc0,0x11,0xc0,0x07,0xc0,0x0c,0xc0,0x02,0x00,0x05,0x00,0x04,0x00,0x15,0x00,0x12,0x00,0x09,0x00,0x14,0x00,0x11,0x00,0x08,0x00,0x06,0x00,0x03,0x00,0xff,0x01,0x00,0x00,0x49,0x00,0x0b,0x00,0x04,0x03,0x00,0x01,0x02,0x00,0x0a,0x00,0x34,0x00,0x32,0x00,0x0e,0x00,0x0d,0x00,0x19,0x00,0x0b,0x00,0x0c,0x00,0x18,0x00,0x09,0x00,0x0a,0x00,0x16,0x00,0x17,0x00,0x08,0x00,0x06,0x00,0x07,0x00,0x14,0x00,0x15,0x00,0x04,0x00,0x05,
0x00,0x12,0x00,0x13,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x0f,0x00,0x10,0x00,0x11,0x00,0x23,0x00,0x00,0x00,0x0f,0x00,0x01,0x01};

if (sslMethod == TLSv1_client_method())
{
Expand Down Expand Up @@ -1215,6 +1216,7 @@ int testCipher(struct sslCheckOptions *options, struct sslCipher *sslCipherPoint
char requestBuffer[200];
char buffer[50];
int resultSize = 0;
char *safetyLevel;
const char *sslMethod = printableSslMethod(sslCipherPointer->sslMethod);

// Create request buffer...
Expand Down Expand Up @@ -1383,33 +1385,40 @@ int testCipher(struct sslCheckOptions *options, struct sslCipher *sslCipherPoint
if (strstr(sslCipherPointer->name, "NULL"))
{
printf("%s%-29s%s", COL_RED_BG, sslCipherPointer->name, RESET);
safetyLevel = "red_bg";
}
else if (strstr(sslCipherPointer->name, "ADH") || strstr(sslCipherPointer->name, "AECDH"))
{
printf("%s%-29s%s", COL_PURPLE, sslCipherPointer->name, RESET);
safetyLevel = "purple";
}
else if (strstr(sslCipherPointer->name, "EXP") || (sslCipherPointer->sslMethod == SSLv3_client_method() && !strstr(sslCipherPointer->name, "RC4")))
{
printf("%s%-29s%s", COL_RED, sslCipherPointer->name, RESET);
safetyLevel = "red";
}
else if (strstr(sslCipherPointer->name, "RC4"))
{
printf("%s%-29s%s", COL_YELLOW, sslCipherPointer->name, RESET);
safetyLevel = "yellow";
}
else if (strstr(sslCipherPointer->name, "GCM"))
{
printf("%s%-29s%s", COL_GREEN, sslCipherPointer->name, RESET);
safetyLevel = "green";
}
else
{
printf("%-29s", sslCipherPointer->name);
safetyLevel = "gray";
}
if (options->cipher_details == true)
{
ssl_print_tmp_key(options, ssl);
}
printf_xml(" safety-level=\"%s\" />\n", safetyLevel);
printf("\n");
printf_xml(" />\n");

}

// Disconnect SSL over socket
Expand Down
3 changes: 2 additions & 1 deletion sslscan.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ const char *program_banner = " _\n"
" ___ ___| |___ ___ __ _ _ __\n"
" / __/ __| / __|/ __/ _` | '_ \\\n"
" \\__ \\__ \\ \\__ \\ (_| (_| | | | |\n"
" |___/___/_|___/\\___\\__,_|_| |_|\n\n";
" |___/___/_|___/\\___\\__,_|_| |_|\n\n"
" Little Fork by Janiko71 \n\n";

struct sslCipher
{
Expand Down
130 changes: 130 additions & 0 deletions sslscan.xsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<head>
<link href="janiko.css" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700,700italic' rel='stylesheet' type='text/css' />
</head>
<body class='mediawiki skin-janiko'>

<!-- Hostname -->
<h2><xsl:value-of select="document/ssltest/@host"/>:<xsl:value-of select="document/ssltest/@port"/></h2>

<!-- Compression -->
<xsl:choose>
<xsl:when test="document/ssltest/compression/@supported='0'">
<p><xsl:text>La compression TLS n'est pas supportée.</xsl:text></p>
</xsl:when>
<xsl:when test="document/ssltest/compression/@supported='1'">
<p><xsl:text>La compression TLS est supportée.</xsl:text></p>
</xsl:when>
</xsl:choose>

<!-- Renégociation, sécurisée ou pas -->
<xsl:variable name= "renego" select="document/ssltest/renegotiation/@supported"/>
<xsl:variable name= "renego_secure" select="document/ssltest/renegotiation/@secure"/>
<xsl:choose>
<xsl:when test="$renego='0'">
<p><xsl:text>La renégociation n'est pas supportée.</xsl:text></p>
</xsl:when>
<xsl:when test="$renego='1'">
<p style='display:inline;'><xsl:text>La renégociation est supportée de façon </xsl:text>
<xsl:choose>
<xsl:when test="$renego_secure='0'">
<div class="invalide"><xsl:text>non sécurisée !</xsl:text></div>
</xsl:when>
<xsl:when test="$renego_secure='1'">
<div class="valide"><xsl:text>sécurisée.</xsl:text></div>
</xsl:when>
</xsl:choose>
</p>
</xsl:when>
</xsl:choose>

<!-- Faille heartbleed -->
<xsl:variable name= "heart_TLS10" select="document/ssltest/heartbleed[@sslversion='TLSv1.0']/@vulnerable"/>
<xsl:variable name= "heart_TLS11" select="document/ssltest/heartbleed[@sslversion='TLSv1.1']/@vulnerable"/>
<xsl:variable name= "heart_TLS12" select="document/ssltest/heartbleed[@sslversion='TLSv1.2']/@vulnerable"/>
<!-- Si vulnérable -->
<xsl:choose>
<xsl:when test="$heart_TLS10='1'">
<div class="invalide">Vulnérable</div> à HeartBleed en TLS 1.0.<br/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="$heart_TLS11='1'">
<div class="invalide">Vulnérable</div> à HeartBleed en TLS 1.1.<br/>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="$heart_TLS12='1'">
<div class="invalide">Vulnérable</div> à HeartBleed en TLS 1.2.<br/>
</xsl:when>
</xsl:choose>
<!-- Si pas vulnérable -->
<xsl:choose>
<xsl:when test="$heart_TLS10='1'"/>
<xsl:when test="$heart_TLS11='1'"/>
<xsl:when test="$heart_TLS12='1'"/>
<xsl:otherwise>Non vulnérable à la faille HeartBleed.</xsl:otherwise>
</xsl:choose>

<!-- Algos préférés -->
<h4>Algorithmes préférés</h4>
<table class='table_algos'>
<tr>
<th style="width:80px;" >Version SSL</th>
<th style="width:300px;">Algorithme</th>
<th style="width:100px;">Longueur (bits)</th>
</tr>
<xsl:for-each select="document/ssltest/defaultcipher">
<tr>
<td><xsl:value-of select="@sslversion"/></td>
<td><xsl:value-of select="@cipher"/></td>
<td><xsl:value-of select="@bits"/></td>
</tr>
</xsl:for-each>
</table>

<!-- Algos supportés -->
<h4>Algorithmes supportés</h4>
<table class='table_algos'>
<tr>
<th style="width:80px;" >Version SSL</th>
<th style="width:300px;">Algorithme</th>
<th style="width:100px;">Longueur (bits)</th>
</tr>
<xsl:for-each select="document/ssltest/cipher">
<tr>
<td><xsl:value-of select="@sslversion"/></td>
<xsl:choose>
<xsl:when test="@safety-level='red_bg'">
<td class='red_bg'><xsl:value-of select="@cipher"/></td>
</xsl:when>
<xsl:when test="@safety-level='red'">
<td class='red'><xsl:value-of select="@cipher"/></td>
</xsl:when>
<xsl:when test="@safety-level='green'">
<td class='green'><xsl:value-of select="@cipher"/></td>
</xsl:when>
<xsl:when test="@safety-level='purple'">
<td class='purple'><xsl:value-of select="@cipher"/></td>
</xsl:when>
<xsl:when test="@safety-level='yellow'">
<td class='yellow'><xsl:value-of select="@cipher"/></td>
</xsl:when>
<xsl:otherwise>
<td class='gray'><xsl:value-of select="@cipher"/></td>
</xsl:otherwise>
</xsl:choose>
<td><xsl:value-of select="@bits"/></td>
</tr>
</xsl:for-each>
</table>

</body>
</html>
</xsl:template>
</xsl:stylesheet>