You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

332 lines
15 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Minima -->
<!-- Hexo theme created by @adisaktijrs -->
<!-- Basic Page Needs
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta charset="utf-8">
<title>Data about data</title>
<link rel="sitemap" href="https://tim.kicker.devsitemap.xml" />
<link rel="canonical" href="https://tim.kicker.dev/2023/05/18/whatsapp-analyze/">
<meta name="description" content="I am a huge fan of gathering, analyzing and evaluating data. Creating statistics and colorful graphs just has something to it. But the interesting par">
<meta name="author" content="Tim Kicker">
<meta property="og:image" content="https://tim.kicker.devundefined">
<meta property="og:site_name" content="Tim&#39;s Blog" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Data about data" />
<meta property="og:description" content="I am a huge fan of gathering, analyzing and evaluating data. Creating statistics and colorful graphs just has something to it. But the interesting par">
<meta property="og:url" content="https://tim.kicker.dev/2023/05/18/whatsapp-analyze/" />
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Data about data">
<meta name="twitter:description" content="I am a huge fan of gathering, analyzing and evaluating data. Creating statistics and colorful graphs just has something to it. But the interesting par">
<meta name="twitter:image" content="https://tim.kicker.devundefined">
<meta name="twitter:url" content="https://tim.kicker.dev/2023/05/18/whatsapp-analyze/" />
<!-- Mobile Specific Metas
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Preload fonts
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="preload" href="../fonts/dm-serif-display-v4-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="../fonts/inter-v2-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
<!-- CSS
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="stylesheet" href="/css/normalize.css">
<link rel="stylesheet" href="/css/skeleton.css">
<link rel="stylesheet" href="/css/custom.css">
<link rel="stylesheet" href="/css/prism-dark.css">
<link rel="stylesheet" href="/css/prism-line-numbers.css">
<!-- User css -->
<link rel="stylesheet" href="/css/user.css">
<!-- Favicon
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="icon" type="image/png" href="/images/teddy-bear-apple.webp">
<!-- Custom Theme Color Style
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<style>
a:not(.icon) {
text-decoration-color: #0FA0CE;
background-image: linear-gradient(
to bottom,
rgba(0, 0, 0, 0) 50%,
#0FA0CE 50%
);
}
blockquote {
border-left: 8px solid #0FA0CE;
}
.nanobar .bar {
background: #0FA0CE;
}
.button.button-primary:hover,
button.button-primary:hover,
input[type="submit"].button-primary:hover,
input[type="reset"].button-primary:hover,
input[type="button"].button-primary:hover,
.button.button-primary:focus,
button.button-primary:focus,
input[type="submit"].button-primary:focus,
input[type="reset"].button-primary:focus,
input[type="button"].button-primary:focus {
background-color: #0FA0CE;
border-color: #0FA0CE;
}
input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
border: 1px solid #0FA0CE;
}
</style>
<!-- Google Analytics (With Privacy Settings On)
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Tim's Blog" type="application/atom+xml">
</head>
<body>
<div class="container">
<div class="row">
<div>
<script async src="https://stats.kicker.dev/script.js" data-website-id="295db5f5-27a1-42e8-9783-1e410896a596"></script>
<script data-goatcounter="https://altstats.kicker.dev/count" async src="//altstats.kicker.dev/count.js"></script>
<meta name="google-site-verification" content="B4hZCJh4Uz6qdaXiH65DRXUpjVTHBcblzZaXZjUo7AE" />
<div class="row">
<div class="two columns" style="max-width: 50px">
<h1 class="mt-2 mode">
<div onclick=setDarkMode(true) id="darkBtn">🌑</div>
<div onclick=setDarkMode(false) id="lightBtn" class=hidden>☀️</div>
<script >
if (localStorage.getItem('preferredTheme') == 'dark') {
setDarkMode(true)
}
function setDarkMode(isDark) {
var darkBtn = document.getElementById('darkBtn')
var lightBtn = document.getElementById('lightBtn')
if (isDark) {
lightBtn.style.display = "block"
darkBtn.style.display = "none"
localStorage.setItem('preferredTheme', 'dark');
} else {
lightBtn.style.display = "none"
darkBtn.style.display = "block"
localStorage.removeItem('preferredTheme');
}
document.body.classList.toggle("darkmode");
}
</script>
</h1>
</div>
<div class="six columns ml-1">
<h1 class="mt-2">
<div onclick=navigateHome()>Hello World.</div>
<script >
function navigateHome() {
window.location.replace('https://tim.kicker.dev');
}
</script>
</h1>
</div>
<!--
<div class="six columns ml-1">
<h1 class="mt-2">
<a class="mt-2" href="/">Hello World.</a>
</h1>
</div>
-->
<div class="twelve columns">
<div class="row">
<div class="nine columns left">
<a href="/">Home</a>
<a href="/archives" class="ml">Blog</a>
<a href="/About" class="ml">About</a>
<a href="mailto:[email protected]" target="_blank" class="ml">Email</a>
</div>
</div>
<hr style="margin-bottom: 2.6rem">
</div>
</div>
<div class="trans">
<h2>Data about data</h2>
<p>I am a huge fan of gathering, analyzing and evaluating data. Creating statistics and colorful graphs just has something to it. But the interesting part is not necessarily the data itself, it’s the data about the data. How often does something occur, at which time and by whom are very important characteristics when it comes to creating patterns.</p>
<p>For example, let’s look at the two weekday-graphs of two different WhatsApp chats of mine.</p>
<p><strong>Weekdays Chat A</strong></p>
<img src="/2023/05/18/whatsapp-analyze/hourchartA.png" class="">
<p><strong>Weekdays Chat B</strong></p>
<img src="/2023/05/18/whatsapp-analyze/hourchartB.png" class="">
<p>It is not that hard to figure out the difference between those two graphs. The number of daily messages in A is pretty stable except for Friday and Monday, which are two extremes. Maybe this could be about a friend group planning what they’re going to do on the weekend? The general quantity of messages is also lower as in figure B. The second chat also has a huge gap between Sunday and Saturday. Could this be a group chat related to work? Or is it someone close who happens to live in the same house?</p>
<p>You can see that it is possible to gather connections and create assumptions about certain topics without even looking at the data itself. Now let’s take a deeper look.</p>
<p><strong>Days-Heatmap Chat A</strong></p>
<img src="/2023/05/18/whatsapp-analyze/heatmapA.png" class="" title="This is an example image">
<p>How interesting. We can see that the group is most active between the end of January till May and spikes again in October. If you happen to live in Austria, you probably know what that means. See, in most areas, the Austrian summer break for students lasts from June till the beginning of September while Christmas lasts from December to January. There is also one small break during November. You can clearly see that this could be a chat between friends who happen to be students but don’t have the same classes together. They probably spend a lot of their free time together, which explains the lack of data during the breaks. No one texts another person while they’re sitting next to them… right?</p>
<p><strong>Days-Heatmap Chat B</strong></p>
<img src="/2023/05/18/whatsapp-analyze/heatmapB.png" class="" title="This is an example image">
<p>We can see that the amount of messages remains pretty stable. This could prove our theory of two people in the same household as true. Maybe the gap in August could be a planned vacation?</p>
<p>It would be pretty frighting if I told you all our assumptions were correct. Right? You may now probably recognize that metadata is a lot more valuable than you originally thought. But what conclusions can we draw from this newly gained awareness? </p>
<p>Most people rely on the encryption of their messaging apps. If no one can read my data then I am safe, right? No. As we can see, an attacker does not need access to your communication in order to gather valuable information.</p>
<p>Just keep that in mind. </p>
<p> — May 18, 2023</p>
<hr>
<section id="comments" class="mt-2 mb-3">
<div id="disqus_thread">
<a href="#" class="button button-primary" onclick="loadDisqus();return false;">View / Make Comments</a>
</div>
<script>
var disqus_config = function() {
this.page.url = 'https://tim.kicker.dev/2023/05/18/whatsapp-analyze/index.html';
this.page.identifier = '2023/05/18/whatsapp-analyze/index.html';
this.page.title = 'Data about data';
};
var is_disqus_loaded = false;
function loadDisqus() {
if (!is_disqus_loaded) {
is_disqus_loaded = true;
var d = document,
s = d.createElement('script');
s.src = 'https://tim-kicker-dev.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
}
}
</script>
<noscript>Please enable JavaScript to view the <a target="_blank" rel="noopener" href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</section>
<div class="row mt-2">
<div class="eight columns">
<p id="madewith">
#<a href="https://git.kicker.dev/tim/tim.kicker.dev" target="_blank" rel="noreferrer">opensource</a></p>
</div>
<!-- Sepcial thanks to https://simpleicons.org/ for the icons -->
<div class="four columns mb-3 posisi" >
<a class="ml-0 footer-link icon" href="https://twitter.com/timjkicker/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="Twitter">
<svg class="twitter svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg>
</a>
<a class="ml-0 footer-link icon" href="https://github.com/timkicker" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="GitHub">
<svg class="github svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
</a>
<a class="ml-0 footer-link icon" href="https://www.linkedin.com/in/tim-kicker-5438b1237/" target="_blank" style="text-decoration: none" rel="noreferrer" aria-label="LinkedIn">
<svg class="linkedin svg-hov" width="18" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/nanobar.min.js"></script>
<script>
var options = {
classname: 'nanobar',
id: 'myNanobar'
};
var nanobar = new Nanobar(options);
nanobar.go(30);
nanobar.go(76);
nanobar.go(100);
</script>
<script>(function(w,d, s, id) {w.webpushr=w.webpushr||function(){(w.webpushr.q=w.webpushr.q||[]).push(arguments)};var js, fjs = d.getElementsByTagName(s)[0];js = d.createElement(s); js.id = id;js.src = 'https://cdn.webpushr.com/app.min.js';fjs.parentNode.appendChild(js);}(window,document, 'script', 'webpushr-jssdk'));webpushr('init','BLrRztSWnClZ_Jjg50n_ziB6VHz0Wcp721ZbAl9So1t0DMi4ChlDXQ1Ta2wKVYebMjm1l2HQNdZBkaLwBeNoQ2Y');</script></body>
</html>