Remise en place de cyberday et lab docker
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
body {
|
||||
background-color: #282c34;
|
||||
color: white;
|
||||
}
|
||||
|
||||
body a {
|
||||
color: #61dafb;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import logo from './images/logo.png';
|
||||
import './App.css';
|
||||
import {level1, level2} from './data';
|
||||
|
||||
// Components :
|
||||
|
||||
import Level1 from './Component/Level1';
|
||||
import Level2 from './Component/Level2';
|
||||
|
||||
function App() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<header className="flex items-center justify-center mt-4">
|
||||
<img src={logo} className="w-16 m-2 rounded-full" alt="logo" />
|
||||
<h1 className="text-3xl m-2 font-bold">Crack the hash</h1>
|
||||
</header>
|
||||
|
||||
<main className='mt-12 container mx-auto sm:px-2 md:px-24 lg:px-48'>
|
||||
<Level1 passwordList={level1} />
|
||||
<Level2 passwordList={level2} />
|
||||
</main>
|
||||
|
||||
<footer className='text-center p-4'>
|
||||
Retrouvez le vrai challenge sur <a href='https://tryhackme.com/room/crackthehash'>tryhackme.com</a>
|
||||
</footer>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
||||
@@ -0,0 +1,15 @@
|
||||
import Questions from '../Questions'
|
||||
|
||||
function Level1({passwordList}) {
|
||||
return (
|
||||
<section className='border-b-2 pb-4 m-4 border-[#61dafb]'>
|
||||
<h2 className="text-2xl m-4 font-bold underline">Level 1</h2>
|
||||
<p className='py-2 m-4 border-b-2 border-[#61dafb]'>Pouvez-vous accomplir les tâches du level 1 en déchiffrant ces hachages ?</p>
|
||||
{passwordList.map((password) => (
|
||||
<Questions key={password.id} id={password.id} hash={password.hash} response={password.response} help={password.help} />
|
||||
))}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default Level1;
|
||||
@@ -0,0 +1,20 @@
|
||||
import Questions from '../Questions'
|
||||
|
||||
function Level2({passwordList}) {
|
||||
return (
|
||||
<section className="border-b-2 pb-4 m-4 border-[#61dafb]">
|
||||
<h2 className="text-2xl m-4 font-bold underline">Level 2</h2>
|
||||
<p className='py-2 m-4 border-b-2 border-[#61dafb]'>
|
||||
On augmente la difficulté.<br />
|
||||
Toutes les réponses se trouvent dans la liste des mots de passe de <a href='https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt'>Rock You</a>.<br />
|
||||
Il vous faudra peut-être utiliser Hashcat plutôt que des outils en ligne.<br />
|
||||
Consulter des exemples de hachages sur la page de <a href='https://hashcat.net/wiki/doku.php?id=example_hashes'>Hashcat</a> pourrait également s'avérer utile.<br />
|
||||
</p>
|
||||
{passwordList.map((password) => (
|
||||
<Questions key={password.id} id={password.id} hash={password.hash} response={password.response} help={password.help} />
|
||||
))}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default Level2;
|
||||
@@ -0,0 +1,56 @@
|
||||
import { useState } from "react";
|
||||
import logoHelp from "../../images/help.png"
|
||||
|
||||
function Questions({id, hash, response, help}) {
|
||||
|
||||
const [inputContent, setInputContent] = useState("");
|
||||
const [buttonContent, setButtonContent] = useState("Envoyer");
|
||||
const [helperView, setHelperView] = useState(false);
|
||||
const [isValid, setisValid] = useState(false);
|
||||
|
||||
const checkResponse = (responseSend) => {
|
||||
let inputSelect = document.querySelector('#response_'+id);
|
||||
if(responseSend === response){
|
||||
setButtonContent("Correct !")
|
||||
inputSelect.style.backgroundColor = '#81dd81ff';
|
||||
setisValid(true)
|
||||
}
|
||||
else{
|
||||
inputSelect.style.backgroundColor = '#fbd6d0';
|
||||
setInputContent('Mauvaise réponse')
|
||||
}
|
||||
}
|
||||
|
||||
const hundelInput = (evt) => {
|
||||
setInputContent(evt.target.value)
|
||||
}
|
||||
|
||||
const hundelSubmit = (evt) => {
|
||||
evt.preventDefault();
|
||||
checkResponse(inputContent)
|
||||
}
|
||||
|
||||
const hundelMouseEnter = (evt) => {
|
||||
setHelperView(true)
|
||||
}
|
||||
|
||||
const hundelMouseLeave = (evt) => {
|
||||
setHelperView(false)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="m-2 ">
|
||||
<h3 className="text-xl" >{hash}</h3>
|
||||
<form onSubmit={hundelSubmit} className="flex items-center">
|
||||
<input id={"response_"+id} disabled={isValid} className="rounded-lg w-1/2 m-2 text-[#282c34]" value={inputContent} onChange={hundelInput} />
|
||||
<input type="submit" id={"button_"+id} value={buttonContent} className="m-2" />
|
||||
<div className="flex static">
|
||||
<img onMouseEnter={hundelMouseEnter} onMouseLeave={hundelMouseLeave} src={logoHelp} className="w-8 m-2 rounded-full bg-[#ff8a00]" alt="logo" />
|
||||
{helperView && <div className="ml-12 mt-2 absolute">{help}</div> }
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Questions;
|
||||
@@ -0,0 +1,59 @@
|
||||
export let level1 = [
|
||||
{
|
||||
id: 1,
|
||||
hash: "48bb6e862e54f2a795ffc4e541caed4d",
|
||||
response: "easy",
|
||||
help: "md5",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
hash: "CBFDAC6008F9CAB4083784CBD1874F76618D2A97 ",
|
||||
response: "password123",
|
||||
help: "sha.. but which version",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
hash: "1C8BFE8F801D79745C4631D09FFF36C82AA37FC4CCE4FC946683D7B336B63032",
|
||||
response: "letmein",
|
||||
help: "sha..",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
hash: "$2y$12$Dwt1BZj6pcyc3Dy1FWZ5ieeUznr71EeNkJkUlypTsgbX1H68wsRom",
|
||||
response: "bleh",
|
||||
help: "Search the hashcat examples page (https://hashcat.net/wiki/doku.php?id=example_hashes) for $2y$. This type of hash can take a very long time to crack, so either filter rockyou for four character words, or use a mask for four lower case alphabetical characters.",
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
hash: "279412f945939ba78ce0758d3fd83daa",
|
||||
response: "Eternity22",
|
||||
help: "md4",
|
||||
}
|
||||
];
|
||||
|
||||
export let level2 = [
|
||||
{
|
||||
id: 6,
|
||||
hash: "Hash: F09EDCB1FCEFC6DFB23DC3505A882655FF77375ED8AA2D1C13F640FCCC2D0C85",
|
||||
response: "paule",
|
||||
help: "md5",
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
hash: "Hash: 1DFECA0C002AE40B8619ECF94819CC1B ",
|
||||
response: "n63umy8lkf4i",
|
||||
help: "sha.. but which version",
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
hash: "Hash: $6$aReallyHardSalt$6WKUTqzq.UQQmrm0p/T7MPpMbGNnzXPMAXi4bJMl9be.cfi3/qxIf.hsGpS41BqMhSrHVXgMpdjS6xeKZAs02.",
|
||||
response: "waka99",
|
||||
help: "Salt: aReallyHardSalt",
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
hash: "Hash: e5d8870e5bdd26602cab8dbe07a942c8669e56d6",
|
||||
response: "481616481616",
|
||||
help: "Salt: tryhackme",
|
||||
},
|
||||
];
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,17 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||
sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||
monospace;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import reportWebVitals from './reportWebVitals';
|
||||
|
||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
);
|
||||
|
||||
// If you want to start measuring performance in your app, pass a function
|
||||
// to log results (for example: reportWebVitals(console.log))
|
||||
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
||||
reportWebVitals();
|
||||
@@ -0,0 +1,13 @@
|
||||
const reportWebVitals = onPerfEntry => {
|
||||
if (onPerfEntry && onPerfEntry instanceof Function) {
|
||||
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
||||
getCLS(onPerfEntry);
|
||||
getFID(onPerfEntry);
|
||||
getFCP(onPerfEntry);
|
||||
getLCP(onPerfEntry);
|
||||
getTTFB(onPerfEntry);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default reportWebVitals;
|
||||
@@ -0,0 +1,5 @@
|
||||
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
||||
// allows you to do things like:
|
||||
// expect(element).toHaveTextContent(/react/i)
|
||||
// learn more: https://github.com/testing-library/jest-dom
|
||||
import '@testing-library/jest-dom';
|
||||
Reference in New Issue
Block a user