Help
RSS
API
Feed
Maltego
Contact
Domain > mythicalmysfits.houessou.com
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2021-06-26
13.226.178.103
(
ClassC
)
2024-07-03
204.246.191.52
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Wed, 03 Jul 2024 02:40:46 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://mythicalmysfits.houessou.com/X-Cache: Redirect from cloudfrontVia: 1.1 c75880e5e3f6403effb11a38f7413360.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO50-C2X-Amz-Cf-Id: UiPWBGxjVmXp6rja3Y_hTmAQSexrK0834jkWI7VUT_mrBCOHA1qGwA html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 23040Connection: keep-aliveDate: Wed, 03 Jul 2024 02:40:47 GMTLast-Modified: Fri, 02 Jul 2021 15:32:01 GMTETag: 50ed792c8b1ad16b1d5b2fbddd83cb6bAccept-Ranges: bytesServer: AmazonS3X-Cache: Miss from cloudfrontVia: 1.1 1b3d71a6a953237249e639f3f6ef9c3c.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO50-C2X-Amz-Cf-Id: 569bYL7v3YV0WpotjPMS_jeJaOD7RuPu1oLUYWRuN3BqE5gY9WMWzg !DOCTYPE html>html langen> head> !-- A new version of the Mythical Mysfits API that includes updated JavaScript code to send an additional PUT request whenever a mysfit profile is viewed by a user. --> title>Mythical Mysfits/title> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> script srchttps://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js>/script> script srchttps://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js>/script> script srchttps://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js>/script> script srchttps://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js>/script> link relstylesheet hrefhttps://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css> script srchttps://sdk.amazonaws.com/js/aws-sdk-2.135.0.min.js>/script> script srcjs/aws-cognito-sdk.min.js>/script> script srcjs/amazon-cognito-identity.min.js>/script> /head> body ng-appmysfitsApp stylebackground-color:#EBEBEB> style> @media (max-width: 800px) { img { max-width: 300px; } } /style> br> div styletext-align: center> img srchttps://www.mythicalmysfits.com/images/mysfits_banner.gif width800px aligncenter> /div> div classcontainer> div classbtn-toolbar float-right> button typebutton idlogInButton classbtn btn-info btn-lg data-togglemodal data-target#loginModal>Log In / Register/button> button typebutton idlogOutButton classbtn btn-danger btn-lg d-none>Log Out/button> button typebutton idaskQuestionButton classbtn btn-success btn-lg data-togglemodal data-target#questionModal>Contact Us/button> /div> /div> div classmodal fade idloginModal tabindex-1 roledialog aria-hiddentrue> div classmodal-dialog> div classmodal-content> !-- Modal Header --> div classmodal-header> button typebutton classclose data-dismissmodal> span aria-hiddentrue>×/span> span classsr-only>Close/span> /button> /div> !-- Modal Body --> div classmodal-body> form idloginForm> input typetext id email nameemail placeholderEmail /> input typepassword idpwd namepwd placeholderPassword /> input typesubmit idlogin-modal-button namelogin classbtn btn-info valueLogin/ > /form> div classlogin-help> a hrefregister.html>Register/a> /div> /div> /div> /div> /div> div classmodal fade idquestionModal tabindex-1 roledialog aria-hiddentrue> div classmodal-dialog> div classmodal-content> !-- Modal Header --> div classmodal-header> button typebutton classclose data-dismissmodal> span aria-hiddentrue>×/span> span classsr-only>Close/span> /button> /div> !-- Modal Body --> div classmodal-body> form idquestionForm> label forquestionModalEmail>Email Address:/label> input typetext id questionModalEmail namequestionModalEmail placeholderEmail /> br> br> label forquestionModalQuestionText>Question/Comment:/label> textarea classform-control idquestionModalQuestionText >/textarea> br> input typesubmit idquestion-modal-button namequestionButton classbtn btn-info valueSubmit /> /form> /div> /div> /div> /div> div classcontainer ng-controllermysfitsFilterController> div idfilterMenu> ul classnav nav-pills> li classnav-item dropdown ng-repeatfilterCategory in filterOptionsList.categories> a classnav-link dropdown-toggle data-toggledropdown href#! rolebutton aria-haspopuptrue aria-expandedfalse>{{filterCategory.title}}/a> div classdropdown-menu > button classdropdown-item ng-repeatfilterCategorySelection in filterCategory.selections ng-clickqueryMysfits(filterCategory.title, filterCategorySelection)>{{filterCategorySelection}}/button> /div> /li> li classnav-item > button typebutton classbtn btn-success ng-clickremoveFilter()>View All/button> /li> /ul> /div> /div> br> div classcontainer> div idmysfitsGrid classrow ng-controllermysfitsListController> div classcol-md-4 border border-warning ng-repeatmysfit in mysfits> br> p aligncenter> strong> {{mysfit.name}}/strong> br> img src{{mysfit.thumbImageUri}} alt{{mysfit.Name}}> br> br> button typebutton classbtn btn-primary data-togglemodal data-target#profileModal data-mysfitid{{mysfit.mysfitId}}>View Profile/button> /p> p> br> b>Species:/b> {{mysfit.species}} br> b>Good/Evil:/b> {{mysfit.goodevil}} br> b>Lawful/Chaotic:/b> {{mysfit.lawchaos}} span stylefloat:right;> img id{{mysfit.mysfitId}}LikeIcon ng-clicklikeClicked(mysfit.mysfitId) srchttps://www.mythicalmysfits.com/images/like_icon_false.png onmouseover stylecursor: pointer;> img id{{mysfit.mysfitId}}AlreadyLikedIcon classd-none srchttps://www.mythicalmysfits.com/images/like_icon_true.png > /span> /p> /div> /div> /div> div classmodal fade bd-example-modal-lg idprofileModal tabindex-1 aria-hiddentrue ng-controllermysfitProfileController> div classmodal-dialog modal-lg> div classmodal-content> !-- Modal Header --> div classmodal-header> h3>Mysfit Profile/h3> button typebutton classclose data-dismissmodal> span aria-hiddentrue>×/span> span classsr-only>Close/span> /button> /div> !-- Modal Body --> div classmodal-body> p aligncenter> img idprofileImage src{{profileMysfit.profileImageUri}} aligncenter /> /p> br> p idprofileName>b>Name:/b> {{profileMysfit.name}}/p> p idprofileSpecies>b>Species:/b> {{profileMysfit.species}}/p> p idprofileGoodEvil>b>Good/Evil:/b> {{profileMysfit.goodevil}} /p> p idprofileLawChaos>b>Lawful/Chaotic:/b>{{profileMysfit.lawchaos}} /p> p idprofileAge>b>Age:/b> {{profileMysfit.age}}/p> p idprofileDescription>b>Description:/b> {{profileMysfit.description}}/p> p idprofileLikes>b>Likes:/b> {{profileMysfit.likes}}/p> p aligncenter> button idadoptButton aligncenter typebutton ng-clickadoptClicked(profileMysfit.mysfitId) classbtn btn-primary>Adopt Me Now!/button> button idalreadyAdoptedButton aligncenter typebutton classbtn btn-primary d-none disabled>Mysfit Adopted!/button> /p> /div> div classmodal-footer> button typebutton classbtn btn-secondary data-dismissmodal>Close/button> /div> /div> /div> /div> p> br> br> This site is a clone of AWS Mythical Mysifts created for the AWS Modern Application Workshop. a hrefhttps://hpfpv.houessou.com/aws-modern-application>Please see details here./a> /p> /body> script> var mysfitsApiEndpoint https://dyof9wtqac.execute-api.us-east-1.amazonaws.com/dev; // example: https://abcd12345.execute-api.us-east-1.amazonaws.com/prod var streamingApiEndpoint REPLACE_ME; // example: https://abcd12345.execute-api.us-east-1.amazonaws.com/prod var questionsApiEndpoint https://lo1kjbvfwd.execute-api.us-east-1.amazonaws.com/dev; // example: https://abcd12345.execute-api.us-east-1.amazonaws.com/prod var cognitoUserPoolId us-east-1_7LokaUhvT; // example: us-east-1_abcd12345 var cognitoUserPoolClientId 29j0actm0ituvqkdnb0mlnmqcq; // example: abcd12345abcd12345abcd12345 var awsRegion us-east-1; // example: us-east-1 or eu-west-1 etc. var app angular.module(mysfitsApp, ); var gridScope; var filterScope; var profileScope; initializeStorage(); var configString localStorage.getItem(awsConfig); var config JSON.parse(configString); if(config ! null) { refreshAWSCredentials(); loggedInDisplay(); } function loggedInDisplay() { $(#loginModal).modal(hide); $(#logInButton).addClass(d-none); $(#logOutButton).removeClass(d-none); } function initializeStorage() { var identityPoolId cognitoUserPoolId;// var userPoolId cognitoUserPoolId; // var clientId cognitoUserPoolClientId;// var loginPrefix cognito-idp. + awsRegion + .amazonaws.com/ + identityPoolId; localStorage.setItem(identityPoolId, identityPoolId); localStorage.setItem(userPoolId, userPoolId); localStorage.setItem(clientId, clientId); localStorage.setItem(loginPrefix, loginPrefix); } $(document).on(click, #logOutButton, function(event) { localStorage.clear(); document.location.reload(); }); function loginUser() { var userPoolId localStorage.getItem(userPoolId); var clientId localStorage.getItem(clientId); var identityPoolId localStorage.getItem(identityPoolId); var loginPrefix localStorage.getItem(loginPrefix); var poolData { UserPoolId : userPoolId, // Your user pool id here ClientId : clientId // Your client id here }; var userPool new AmazonCognitoIdentity.CognitoUserPool(poolData); var email document.getElementById(email).value; var pwd document.getElementById(pwd).value; var authenticationData { UserName: email, Password: pwd } var userData { Username : email, Pool : userPool }; var authenticationDetails new AmazonCognitoIdentity.AuthenticationDetails(authenticationData); var cognitoUser new AmazonCognitoIdentity.CognitoUser(userData); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { console.log(access token + \n + result.getAccessToken().getJwtToken()); var sessionTokens { IdToken: result.getIdToken(), AccessToken: result.getAccessToken(), RefreshToken: result.getRefreshToken() }; localStorage.setItem(sessionTokens, JSON.stringify(sessionTokens)); //POTENTIAL: Region needs to be set if not already set previously elsewhere. AWS.config.region us-east-1; AWS.config.credentials new AWS.CognitoIdentityCredentials({ IdentityPoolId : identityPoolId, // your identity pool id here Logins : { // Change the key below according to the specific region your user pool is in. loginPrefix : sessionTokens.IdToken.jwtToken } }); localStorage.setItem(awsConfig, JSON.stringify(AWS.config)); localStorage.setItem(email, email); cognitoUser.getUserAttributes(function(err, result) { if (err) { alert(err); return; } for (i 0; i result.length; i++) { console.log(attribute + resulti.getName() + has value + resulti.getValue()); if (resulti.getName() sub) { console.log(Overwriting userId into local storage); localStorage.setItem(userId, resulti.getValue()); } } }); loggedInDisplay(); }, onFailure: function(err) { alert(err.message); }, }); } function refreshAWSCredentials() { var userPoolId localStorage.getItem(userPoolId); var clientId localStorage.getItem(clientId); var identityPoolId localStorage.getItem(identityPoolId); var loginPrefix localStorage.getItem(loginPrefix); var poolData { UserPoolId : userPoolId, // Your user pool id here ClientId : clientId // Your client id here }; var userPool new AmazonCognitoIdentity.CognitoUserPool(poolData); var cognitoUser userPool.getCurrentUser(); if (cognitoUser ! null) { cognitoUser.getSession(function(err, result) { if (result) { console.log(You are now logged in.); cognitoUser.refreshSession(result.getRefreshToken(), function(err, result) { if (err) {//throw err; console.log(In the err: +err); } else{ localStorage.setItem(awsConfig, JSON.stringify(AWS.config)); var sessionTokens { IdToken: result.getIdToken(), AccessToken: result.getAccessToken(), RefreshToken: result.getRefreshToken() }; localStorage.setItem(sessionTokens, JSON.stringify(sessionTokens)); } }); } }); } } $(#loginForm).submit(function(event) { event.preventDefault(); loginUser(); }); $(#questionForm).submit(function(event) { event.preventDefault(); $(#questionModal).modal(toggle) var emailAddress document.getElementById(questionModalEmail).value; var questionText document.getElementById(questionModalQuestionText).value; submitQuestion(emailAddress, questionText ); }); app.controller(clearFilterController, function($scope) { }); app.controller(mysfitsFilterController, function($scope) { filterScope $scope; // The possible options for Mysfits to populate the dropdown filters. $scope.filterOptionsList { categories: { title: Good/Evil, selections: Good, Neutral, Evil }, { title: Lawful/Chaotic, selections: Lawful, Neutral, Chaotic } }; $scope.removeFilter function() { allMysfits getAllMysfits(applyGridScope); } $scope.queryMysfits function(filterCategory, filterValue) { var filterCategoryQS ; if (filterCategoryGood/Evil) { filterCategoryQS GoodEvil; } else { filterCategoryQS LawChaos } var mysfitsApi mysfitsApiEndpoint + /mysfits? + filterCategoryQS + + filterValue; $.ajax({ url : mysfitsApi, type : GET, success : function(response) { applyGridScope(response.mysfits) }, error : function(response) { console.log(could not retrieve mysfits list.); if (response.status 401) { refreshAWSCredentials(); } } }); } }); app.controller(mysfitsListController, function($scope) { gridScope $scope; getAllMysfits(applyGridScope); $scope.likeClicked function(mysfitId) { console.log(clicked: + mysfitId); likeMysfit(mysfitId, updateLikeIcons); } }); app.controller(mysfitProfileController, function($scope) { profileScope $scope; $scope.adoptClicked function(mysfitId) { console.log(adopt clicked: + mysfitId); adoptMysfit(mysfitId, markAdopted); } }); /* A new event handling funciton if the profile modal is triggered, to record that click event and sent it to our new streaming service backend. */ $(#profileModal).on(show.bs.modal, function (event) { var button $(event.relatedTarget); var mysfitId button.data(mysfitid); getMysfit(mysfitId, updateModalText); recordProfileClick(mysfitId) }); function updateModalText(profileMysfit) { applyProfileScope(profileMysfit); if (profileMysfit.adopted true) { markAdopted(); } else { markNotAdopted(); } } function markAdopted() { $(#adoptButton).addClass(d-none); $(#alreadyAdoptedButton).removeClass(d-none); } function markNotAdopted() { $(#adoptButton).removeClass(d-none); $(#alreadyAdoptedButton).addClass(d-none); } function updateLikeIcons(mysfitId) { likeIconId # + mysfitId + LikeIcon; $(likeIconId).addClass(d-none); alreadyLikedIconId # + mysfitId + AlreadyLikedIcon; $(alreadyLikedIconId).removeClass(d-none); } function applyGridScope(mysfitsList) { gridScope.mysfits mysfitsList; gridScope.$apply(); } function applyProfileScope(mysfit) { profileScope.profileMysfit mysfit; profileScope.$apply(); } function likeMysfit(mysfitId, callback) { try { var mysfitsApi mysfitsApiEndpoint + /mysfits/ + mysfitId + /like; var sessionTokensString localStorage.getItem(sessionTokens); var sessionTokens JSON.parse(sessionTokensString); var IdToken sessionTokens.IdToken; var idJwt IdToken.jwtToken; $.ajax({ url : mysfitsApi, type : POST, headers : {Authorization : idJwt }, success : function(response) { console.log(here + mysfitId); callback(mysfitId); }, error : function(response) { console.log(could not like mysfit); console.log(response); if (response.status 401) { refreshAWSCredentials(); } } }); } catch(err) { alert(You must be logged in to like a mysfit); console.log(err.message); } } function adoptMysfit(mysfitId, callback) { try { var mysfitsApi mysfitsApiEndpoint + /mysfits/ + mysfitId + /adopt; var sessionTokensString localStorage.getItem(sessionTokens); var sessionTokens JSON.parse(sessionTokensString); var IdToken sessionTokens.IdToken; var idJwt IdToken.jwtToken; $.ajax({ url : mysfitsApi, async : false, type : POST, headers : {Authorization : idJwt }, success : function(response) { callback(); }, error : function(response) { console.log(could not adopt mysfit); if (response.status 401) { refreshAWSCredentials(); } } }); } catch(err) { alert(You must be logged in to adopt a mysfit); console.log(err.message); } } function getAllMysfits(callback) { var mysfitsApi mysfitsApiEndpoint + /mysfits; $.ajax({ url : mysfitsApi, type : GET, success : function(response) { callback(response.mysfits); }, error : function(response) { console.log(could not retrieve mysfits list.); if (response.status 401) { refreshAWSCredentials(); } } }); } function getMysfit(mysfitId, callback) { var mysfitsApi mysfitsApiEndpoint + /mysfits/ + mysfitId; $.ajax({ url : mysfitsApi, type : GET, success : function(response) { callback(response); }, error : function(response) { console.log(could not retrieve mysfits list.); if (response.status 401) { refreshAWSCredentials(); } } }); } /* The new JavaScript function created for module-5 that records profile clicks. */ function recordProfileClick(clickedMysfitId) { var clicksApi streamingApiEndpoint + /clicks; var userClick; currentUserId localStorage.getItem(userId); if (currentUserId null) { currentUserId guest; } userClick { userId: currentUserId, mysfitId: clickedMysfitId } console.log(Recording profile click: + userClick); $.ajax({ url : clicksApi, type : PUT, headers : {Content-Type: application/json}, dataType: json, data : JSON.stringify(userClick), success : function(response) { console.log(click recorded!) }, error : function(response) { console.log(could not record click); console.log(response); } }); } /* The new JavaScript function for module 6 that submits questions * to the Mythical Mysfits administrator. * */ function submitQuestion(emailAddress, questionToSubmit) { var questionsApi questionsApiEndpoint + /questions; var question; question { email: emailAddress, questionText: questionToSubmit } $.ajax({ url : questionsApi, type : POST, headers : {Content-Type: application/json}, dataType: json, data : JSON.stringify(question), success : function(response) { console.log(question submitted!) }, error : function(response) { console.log(could not submit question); console.log(response); } }); } /script>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]