Spacetaxi
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
Ich habe auf einer Website, tinder einen code eingegeben und mache mir Sorgen das da was gehackt werden könnte. Hab das im Nachhinein erst mal richtig registriert: Loggen Sie sich einfach über Ihren Browser in Ihr Tinder-Konto ein. Machen Sie dann einen Rechtsklick an einer beliebigen Stelle auf der Webseite und wählen Sie dann aus dem Menü den Eintrag "Untersuchen" aus.
Es öffnet sich dann die Entwicklerkonsole des Browsers. Es ist ganz egal, welchen Browser Sie verwenden, da jede Konsole ähnlich aufgebaut ist. Sie müssen lediglich den Reiter "Konsole" öffnen.
In diesem Textfeld geben Sie nun folgenden Code ein:
hier der Code: async function unblur(){
let c=await fetch("https://api.gotinder.com/v2/fast-match/teasers",{headers:{"X-Auth-Token":localStorage.getItem("TinderWeb/APIToken")}}).then(a=>a.json()).then(a=>a.data.results),b=document.querySelectorAll(".Expand.enterAnimationContainer > div:nth-child(1)");
for(let a=0;a<b.length;++a){let d=c[a],e=b[a],f=d.user.photos[0].url;e.style.backgroundImage=`url(${f})`}
}
async function once(a,b){
return new Promise(c=>{a.addEventListener(b,()=>{a.removeEventListener(b,c),c()})})
}
async function waitForApp(){
let a=a=>a.querySelector(".App"),b=a(document.body);return b||new Promise(c=>{new MutationObserver((_,d)=>{(b=a(document.body))&&(d.disconnect(),c(b))}).observe(document.body,{subtree:!0,childList:!0})})
}
async function main(){
let b=await waitForApp(),a=()=>{["/app/likes-you","/app/gold-home"].includes(location.pathname)&&(console.debug("[TINDER DEBLUR]: Deblurring likes"),unblur())},c=new MutationObserver(a);c.observe(b,{subtree:!0,childList:!0}),setInterval(a,5e3)
}
main().catch(console.error) kann man durch den Code auf den Pc zugreifen oder ist er gefährlich?
Bearbeitet von kB: Forensyntax (Zitat, Code etwas lesbarer formatiert) korrigiert. Moderiert von kB: Aus dem Forum „Sicherheit“ in einen besser passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) im jeweiligen Forum! Danke.
|
tomtomtom
Supporter
Anmeldungsdatum: 22. August 2008
Beiträge: 55345
Wohnort: Berlin
|
|
verdooft
Anmeldungsdatum: 15. September 2012
Beiträge: 4399
|
Verwende nur Code, den du verstehst.
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, ich dachte immer, Tinder wäre mega einfach zu nutzen, weil man nur nach links und rechts wischen muss... Wenn man da Code eingeben muss ist das schon ein mega hohes Hindernis, um zu einem Match zu kommen... Zumal der Code asynchron ist... da wartet man ggf. ewig auf den Callback... Tinder ist doch eher was für die schnelle Nummer, oder? Gruß, noisefloor
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
ich wollte das mal ausprobieren. Da hast Du recht, eher was für die schnelle Nummer oder bezahlen für Fakes. da sind ziemlich viel kaputte dabei, wie gesagt mal ausprobiert, 7 Zage, das hat gereicht.
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
async function unblur(){let c=await fetch("https://api.gotinder.com/v2/fast-match/teasers",{headers:{"X-Auth-Token":localStorage.getItem("TinderWeb/APIToken")}}).then(a=>a.json()).then(a=>a.data.results),b=document.querySelectorAll(".Expand.enterAnimationContainer > div:nth-child(1)");for(let a=0;a<b.length;++a){let d=c[a],e=b[a],f=d.user.photos[0].url;e.style.backgroundImage=`url(${f})`}}async function once(a,b){return new Promise(c=>{a.addEventListener(b,()=>{a.removeEventListener(b,c),c()})})}async function waitForApp(){let a=a=>a.querySelector(".App"),b=a(document.body);return b||new Promise(c=>{new MutationObserver((_,d)=>{(b=a(document.body))&&(d.disconnect(),c(b))}).observe(document.body,{subtree:!0,childList:!0})})}async function main(){let b=await waitForApp(),a=()=>{["/app/likes-you","/app/gold-home"].includes(location.pathname)&&(console.debug("[TINDER DEBLUR]: Deblurring likes"),unblur())},c=new MutationObserver(a);c.observe(b,{subtree:!0,childList:!0}),setInterval(a,5e3)}main().catch(console.error)
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
verdooft schrieb: Verwende nur Code, den du verstehst.
Stimmt, Kind ist jetzt in den Brunnen gefallen, beteilige dich nur weiter wenn Du den Code verstehst und ihn mir erklären kannst!
|
verdooft
Anmeldungsdatum: 15. September 2012
Beiträge: 4399
|
Naja, du wirst den Code ja zu einem bestimmten Zweck eingefügt haben, also wissen, was er macht? Hab mal Phind gefragt:
User: Explain the following source in german language please: Answer | Phind V3 Model: Der gegebene Code besteht aus vier Funktionen: unblur(), once(), waitForApp() und main(). Die Funktionen verwenden async und await für die Verarbeitung asynchroner Aufgaben, wie zum Beispiel das Abrufen von Daten von einer API und das Manipulieren des DOM 1. unblur(): Diese Funktion ruft die Tinder-API auf, um Benutzerprofile abzurufen, und ändert die Hintergrundbilder der entsprechenden DOM-Elemente basierend auf den Profilbildern der Benutzer. Die API-Anfrage erfolgt über die fetch()-Funktion und verwendet await für das Abrufen der JSON-Daten 2. once(): Diese Funktion erstellt eine Promise, die auftritt, wenn ein bestimmtes Ereignis auf einem Element auftritt. Sie entfernt den Event-Listener, sobald das Ereignis auftritt, und löst die Promise 3. waitForApp(): Diese Funktion wartet, bis das Tinder-App-Element im DOM verfügbar ist. Sie verwendet einen MutationObserver, um Änderungen im DOM zu überwachen und die Promise zu lösen, sobald das App-Element gefunden wird 4. main(): Diese Funktion ist der Hauptteil des Codes. Sie ruft waitForApp() auf, um auf das Tinder-App-Element zu warten, und verwendet dann einen MutationObserver, um auf Änderungen im DOM zu hören. Wenn sich der Pfad der aktuellen Seite auf /app/likes-you oder /app/gold-home ändert, wird die unblur()-Funktion aufgerufen, um die Hintergrundbilder zu ändern Schließlich wird main().catch(console.error) aufgerufen, um Fehler im Code abzufangen und in der Konsole anzuzeigen.
https://www.phind.com/search?cache=ghrb53tub4o5ivlwcfhoy8nc Den Cache leere ich irgendwann. Nachtrag:
User: Untersuche den gegegeben Source auf mögliche Sicherheitsrisiken. Answer | Phind V3 Model: Der gegebene Code verwendet verschiedene Techniken, um asynchrone Aufgaben auszuführen und auf DOM-Änderungen zu reagieren. Es gibt jedoch einige mögliche Sicherheitsrisiken, die in Betracht gezogen werden sollten: 1. Verwendung von localStorage: Der Code verwendet localStorage.getItem("TinderWeb/APIToken") zum Abrufen des API-Tokens. Das Speichern von sensiblen Informationen wie API-Tokens im localStorage ist nicht sicher, da sie leicht von anderen Skripten oder Browser-Erweiterungen gelesen werden können. Eine sicherere Alternative wäre die Verwendung von sessionStorage oder einer serverseitigen Authentifizierung. 2. Verwendung von async/await und fetch: Der Code verwendet async/await und fetch zum Abrufen von Daten von einer API. Obwohl fetch und async/await nützliche Techniken für die Verarbeitung asynchroner Aufgaben sind, können sie auch zu Sicherheitsrisiken führen, wenn sie nicht korrekt implementiert werden. Zum Beispiel sollte der Code die Möglichkeit bieten, Fehler abzufangen und zu behandeln, wenn die API nicht verfügbar ist oder ein Fehler auftritt 3. Verwendung von MutationObserver: Der Code verwendet MutationObserver, um auf Änderungen im DOM zu hören. Obwohl MutationObserver eine nützliche Technik zum Erkennen von DOM-Änderungen ist, kann es auch zu unerwarteten Seiteneffekten führen, wenn es falsch verwendet wird. Zum Beispiel sollte der Code sicherstellen, dass die Verwendung von MutationObserver auf das Minimum beschränkt ist und nicht unnötig auf viele Elemente im DOM abonniert wird Um die Sicherheit des Codes zu erhöhen, sollten Sie die oben genannten Punkte beachten und sicherstellen, dass Sie die besten Praktiken für die Verwendung von async/await, fetch, localStorage und MutationObserver befolgen.
https://www.phind.com/search?cache=ghrb53tub4o5ivlwcfhoy8nc Spacetaxi schrieb: kann man durch den Code auf den Pc zugreifen oder ist er gefährlich?
Der Code greift auf den PC zu, nämlich auf das ApiToken in LocalStorage. (Punkt 1)
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
ich habe mein Tinder Profil gelöscht. Bleibt der Code bestehen wenn ich die Tinder website aufrufe. wenn ja, wie kann ich die Standardeinstellungen wieder herstellen, oder geschieht das automatisch nach Löschung meines Profils. Der Sinn der Sache war der, likes einzusehen - die Profilbilder - die nur in der Bezahlversion ersichtlich waren, und durch die Eingabe des Codes in der Freeversion hätten sichtbar werden sollen. Hat obendrauf nicht funktioniert.
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
Spacetaxi schrieb: kann man durch den Code auf den Pc zugreifen oder ist er gefährlich?
Der Code greift auf den PC zu, nämlich auf das ApiToken in LocalStorage. (Punkt 1)
Kann ich den eingegeben Code löschen (Steht nicht wie eingetragen dort wenn ich die website aufrufe, untersuchen anklicke und Code wähle.) Oder ist er nur so lange eingetragen wie der task offen ist? Wenn nein wie kann ich die Standardeinstellungen herstellen?
|
verdooft
Anmeldungsdatum: 15. September 2012
Beiträge: 4399
|
Meiner Einschätzung nach ist das nur was einmaliges, was dann verwendet wurde, während du da gerade auf der Seite warst. Ich hab auch mal testweise css-Zeugs angepasst, da war es ähnlich. Also alles ok jetzt. Das war sowieso nur in deinem Browser, also keine Sicherheitsrisiken für andere. Und dass irgendwelche seitenspezifischen Sachen von LocalStorage gelesen oder da reingeschrieben werden, ist wohl auch normal. Ich habe Phind bei der Bewertung nicht mitgeteilt, dass der Source nur in der Entwicklerkonsole eines Browser eingegeben wurde, vielleicht liest sich das deswegen so gefährlich.
|
Spacetaxi
(Themenstarter)
Anmeldungsdatum: 24. Februar 2014
Beiträge: 3279
|
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4673
Wohnort: Berlin
|
@Spacetaxi: Du hättest auch erwähnen können woher der Code stammt. Scheinbar von Heise.de: Tinder-Likes sehen - auch ohne Abo. Womit das zumindest schon mal deutlich unwahrscheinlicher etwas gefährliches ist, als wenn das von einer Domain wie evalhacker.ru käme. Hier ist der Code mal ”de-minified” und mit sinnvolleren Namen: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 | async function unblur() {
let teasers = await fetch(
'https://api.gotinder.com/v2/fast-match/teasers',
{headers: {'X-Auth-Token': localStorage.getItem('TinderWeb/APIToken')}},
)
.then((response) => response.json())
.then((object) => object.data.results);
let elements = document.querySelectorAll(
'.Expand.enterAnimationContainer > div:nth-child(1)'
);
for (let i = 0; i < elements.length; ++i) {
elements[i].style.backgroundImage = `url(${teasers[i].user.photos[0].url})`;
}
}
async function once(target, type) {
return new Promise((resolve) => {
target.addEventListener(type, () => {
target.removeEventListener(type, resolve);
resolve();
});
});
}
async function waitForApp() {
let getApp = (element) => element.querySelector('.App');
return getApp(document.body) || new Promise((resolve) => {
new MutationObserver((_, observer) => {
let app = getApp(document.body);
if (app) {
observer.disconnect();
resolve(app);
}
}).observe(document.body, {subtree: true, childList: true});
});
}
async function main() {
let app = await waitForApp();
let checkAndUnblur = () => {
if (['/app/likes-you', '/app/gold-home'].includes(location.pathname)) {
console.debug('[TINDER DEBLUR]: Deblurring likes');
unblur();
}
};
let observer = new MutationObserver(checkAndUnblur);
observer.observe(app, {subtree: true, childList: true});
setInterval(checkAndUnblur, 5000);
}
main().catch(console.error);
|
Was macht der Code: Er wartet auf ein Element mit der CSS-Klasse App Und sobald sich etwas in dem Elementbaum dieses Elements etwas ändert, und alle 5 Sekunden wird die Funktion checkAndUnblur() aufgerufen, die prüft ob man auf einer der beiden Unterseiten /app/likes-you oder /app/gold-home ist und falls ja, wird die Funktion unblur() aufgerufen. Die Funktion unblur() lädt dann von Tinder JSON-Daten nach, wo unter anderem die Foto-URLs von den Benutzern enthalten sind die man da sehen will, und setzt diese URLs in den entsprechenden Anzeigeelementen als Hintergrundbild. ”Interessant” ist die Funktion once() die definiert, aber nicht in dem Code verwendet wird. Entweder ersetzt das eine gleichnamige Funktion auf der Tinder-Seite, oder das ist toter Code den man hätte rauskürzen können.
|