Apr 16, 2025 by Cylab researcher | 139 views
https://cylab.be/blog/411/shadow-analysis-1-the-osint-trick-behind-telling-time-from-a-picture
This is the question I asked myself when I saw a whole bunch of videos that talked about it quickly but never really explained it. But the answer is simple: to calculate the time a photo was taken. By the end of this blog you’ll be able to work out not only when a photo was taken, but also the logic behind this OSINT technique. Indeed, this technique lies one of the oldest instruments created by man: the sundial.
To fully understand how our analysis works, we need to understand the logic behind measuring the time from a picture. This comes from one of mankind’s oldest inventions, the sundial. If you place a stick on the ground, its shadow will change during the day as the Earth revolves around the sun. Moreover, since the sun rises in the east and sets in the west, we’ll build our sundial in a specific way. First, we draw a line running from north to south and place a stick in the middle to cast its shadow during the day. Its shadow will therefore not be in the same place at the beginning of the morning as at the end of the afternoon. We can therefore draw hour lines on our sundial in relation to this shadow.
So much for the basics. However, it’s important to add that since the earth revolves around the sun, the earth’s axis in relation to the sun will change, giving us the seasons. In winter, the sun will be much lower, which tends to extend the shadows. In summer, the sun is higher in the sky, so the shadows tend to be shorter. This also has an influence on how the gnomon is set. As we can see on most sundials, the stick is not perpendicular to the plane, but is tilted. It’s not tilted in any way, it’s parallel to the tilt of the earth.
But why? Well, because if we put the stick perpendicular to the ground, it wouldn’t have its shadow in the same place in summer as in winter. It is therefore necessary to place the stick on the same axis as the Earth, which explains why they are not perpendicular in sundials. However, in an OSINT cases, the studied object such as buildings or people are perpendicular to the sun.
Which consequences? This means that we have to take into account the position of the sun in the sky. To do this, 2 parameters need to be taken into account: the azimuth and the altitude, which will vary according to the season and the year. If the objects we were analysing were constantly in line with the earth during our analyses, then we wouldn’t need these parameters.
In sum, with a classic sundial, the stick is parallel to the Earth’s axis of rotation. This makes it possible to follow its shadow throughout the day to find out what time it is at any given moment in the year. In an OSINT scenario, the object being studied is not parallel to the Earth’s axis, so we need to calculate the position of the sun in the sky. To do this, we need to calculate the sun’s altitude and azimuth.
For this blog, we’re going to take a fairly simple situation. Here’s a photo I took next to our research lab in the Parc du Cinquentenaire in Brussels. It’s a classic dustbin and its shadow. We’re starting from an easy situation in which we know the size of the bin and its shadow. In a real investigation, we could do the same thing with a person. To do this, we could find out the average height of a person in the target country and measure the size of the shadow using Google maps with an aerial view.
Bin size: 107cm
Shadow size: 140cm
The 2 elements we need to calculate are
Figure taken from https://www.researchgate.net/figure/Azimuth-and-altitude-angle_fig2_282271883
From here, we need to calculate angle θ, which represents altitude. This is necessary because it determines the height of the sun in the sky and therefore influences the size of the shadows and their vertical orientation. In addition, it is much higher in summer and much lower in winter. The time at which the photo was taken therefore has an impact on the height of the sun in the sky. To calculate the sun’s altitude, we’re going to use good old-fashioned trigonometry.
We know that tan(θ) = opposite⁄adjacent
So, using a site like mathway, we can see that
tan(θ) = 107⁄140
θ = 37.3901
Our altitude will therefore be 37.4°.
Next, we need to calculate the azimuth, which is the position of the sun in relation to North. In winter its arc will be much shorter and in summer it will be much longer. It is therefore necessary to take this into account to get the correct position of the sun.
This time, we’re not going to calculate it using trigonometry rules, but by estimating its position using Google Earth. To do this, we first draw a line representing the direction of our object’s shadow. Next, we draw a line opposite the shadow, representing the azimuth of the sun. If we click on it, we can see that the azimuth is 187.19°.
Now that we have all the measurements we need, we can use suncalc. With some fairly basic OSINT, we can easily find the exact precision of the bin which is 50°50’31.0 “N 4°23’22.0 “E or converted 50.841944 longitude and 4.389444 latitude that we can put directly in the parameter of the suncalc URL https://www.suncalc.org/#/50.8419,4.3894,19/2025.04.16/10:44/1/1
To highlight the importance of the 2 calculations we’ve just made, let’s skip the azimuth and go back to today’s data. If we set ourselves to the date of writing this blog, we can find 10.45am, which corresponds to our parameters. The size of the object is 107cm, the size of the shadow is 140cm and the altitude is 35.5°. But the photo was not taken on Wednesday 16 April 2025, and even less at 10.45am.
Now that we’ve paid attention to the azimuth, we can try navigating through the dates. We’ll do it manually, but it’s perfectly possible to use an API. We finally find a date with the correct azimuth of 187.19°. So we have a correct time stamp. The photo was taken on 18 March 2025 at 13:13 local time.
In conclusion, the OSINT method for determining what time an image was taken is based on the sundial concept. The difference is that in a sundial, the gnomon is parallel to the Earth’s axis of rotation, whereas in an OSINT analysis it is perpendicular to the plane of the Earth. We therefore calculate the altitude and azimuth so that we can then enter this data in suncalc. Once this data has been entered, we navigate through the dates until we find the right date with the right time.
This blog bias is deliberately easy to understand the basics of using shadows in an OSINT scenario. However, knowing the size of an object and its shadow is not easy to deduce. Part 2 of this blog will therefore look at this problem. How can we deduce the time the photo was taken if we don’t know the size of the object or the shadow? Finally, part 3 will look at geolocating an image using shadows and a timestamp.
This blog post is licensed under
CC BY-SA 4.0