
[{"content":"Nyx is an open-source orbital dynamics library built for scalable, efficient, and flexible space mission analysis. It emphasizes precision modeling and modular design, making it ideal for integrating advanced estimation features like the one I\u0026rsquo;m currently working on.\n🎯 The Problem: Ground Station Biases # In orbit determination (OD), ground station biases—especially in Doppler and range measurements—can significantly distort the results. Nyx models these biases using a first-order Gauss-Markov (GM) process, but does not yet estimate the constant offsets they may include.\nThis can lead to instability and noise in the OD solution when such biases are present.\n🛠️ My Ongoing Work # I’m currently designing and implementing a feature to estimate the constant offset component of the GM process used for ground station biases.\n🔗 Related Issue #326 – Support estimation of ground station biases\n📌 Status: In development\nI discussed this with Christopher Rabotin, who gave me helpful information on the existing GaussMarkov implementation and how to extend it for bias estimation.\n✔️ Requirements # Extend GM process to include a constant offset. Support independent bias estimation per station and per measurement type. Allow enabling/disabling of bias estimation. Ensure correct initialization even in the case of frequency mismatches (especially for Doppler). 🧪 Test Plan # Inject known biases and verify their estimation from tracking data. Ensure configurability across stations and measurement types. 📐 Design Challenges # Nyx uses statically sized matrices and vectors for performance reasons, which makes dynamically adding estimated states (like these biases) non-trivial. I’m currently:\nAnalyzing how to embed the biases within the existing state vector and Jacobian structure. Exploring generic or templated ways to extend the system state without breaking existing models. This contribution will allow Nyx to produce more accurate orbit determination estimates under real-world ground station conditions. Once finalized, I’ll link the pull request and add a more detailed breakdown of the implementation.\nStay tuned!\n📂 See my other contributions: github.com/Assstra\n","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/2025-24-06-nyxspace-contrib/","section":"Open-Sources","summary":"","title":"[WIP] Feat: Ground Station Bias Estimation in Nyx","type":"open-source"},{"content":"OpenTelemetry JS is the JavaScript implementation of the OpenTelemetry observability framework, enabling standardized tracing and metrics in distributed systems.\nIt provides tools to collect and export telemetry data (traces, metrics) from applications to various backends, helping developers monitor and debug distributed systems effectively.\n🧩 My Contribution: OTLP Exporter Node Example Bug Fix # The goal of this contribution was to correct an issue in the example code where provider.register() was incorrectly called, leading to a runtime error.\nI contributed to the OpenTelemetry JS repository by fixing a bug in the OTLP exporter node example:\n🔗 Pull Request: #5586 – fix(examples): use correct node tracer provider function\n🔗 Related Issue: #5569 – provider.register is not a function\n📌 Status: Merged and Closed\n🔧 What I Fixed # Corrected the usage of the tracer provider in the OTLP exporter example (examples/otlp-exporter-node/tracing.js). Removed the invalid call to provider.register() which caused a runtime error. Ensured the example runs correctly with current OpenTelemetry APIs and Node.js versions. This fix helps keep example code in sync with the evolving OpenTelemetry API and prevents errors for users trying out the examples.\n💡 Why It Matters # 🛠️ Ensures that new users can run the example without runtime errors. 📚 Maintains up-to-date documentation and examples. 📚 Improves code consistency and maintainability across the project. 📂 See my other contributions: github.com/Assstra\n","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/2025-24-06-opentelemetry-contrib/","section":"Open-Sources","summary":"","title":"Bug Fix: OTLP Exporter Node Example in OpenTelemetry JS","type":"open-source"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/bugfix/","section":"Tags","summary":"","title":"Bugfix","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/contribution/","section":"Tags","summary":"","title":"Contribution","type":"tags"},{"content":"Prefligit is a tool to manage and run Git hooks efficiently, helping enforce code quality and commit standards. It\u0026rsquo;s a clone of the popular precommit project, but refactored in Rust for better performance and reliability.\n🧩 My Contribution: Script Language Support for Prefligit Hooks # The goal of this contribution was to enhance Prefligit by allowing users to define and run custom scripts as Git hooks, such as pre-commit and commit-msg. I worked on adding the \u0026ldquo;script\u0026rdquo; language support for these hooks.\nI contributed to the Prefligit repository by adding script language support for hook scripts:\n🔗 Pull Request: #252 – feat(script): add script hooks support to prefligit\n🔗 Related issue: #45 – Support for script hooks\n📌 Status: Merged and Closed\n🔧 What I Implemented # Added the ability to run scripts as hooks, e.g. for git hooks like pre-commit and commit-msg. Supported testing with sample scripts including: Precommit trailing spaces check Commit-msg conventional commit verb validation (feat, misc, etc.) Provided example test repository: precommit-hooks-test 💡 Why It Matters # 🛠️ Extends Prefligit’s flexibility by allowing custom scripting in hooks. 🔒 Helps teams enforce commit standards and code hygiene automatically. 📂 See my other contributions: github.com/Assstra\n","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/2025-24-06-prefligit-contrib/","section":"Open-Sources","summary":"","title":"Feat: Added Script Language Support for Prefligit Hooks","type":"open-source"},{"content":"Puter is an experimental High-Level Distributed Operating System (HLDOS). Unlike traditional OSs that manage local hardware, Puter focuses on coordinating access to networked services — like APIs, cloud tools, and third-party platforms.\nIt introduces a novel driver system where integrations (called drivers) represent services (e.g., chat, weather, TTS). These drivers follow common interfaces, making it easy to plug in various providers under a unified API.\n🧩 My Contribution: Weather Driver # Puter works with various online services through a driver system, allowing developers to integrate APIs seamlessly. My goal was to create a Weather Driver that provides a standardized way to access weather data across different providers.\nI contributed to the Puter repository by adding a Weather Driver:\n🔗 Pull Request: #1313 – feat(weather_service): add weather service to puter #\n🔗 Related Issue: #1143 – Weather Driver\n📌 Status: Closed (The issue was closed without notice)\n🔧 What I Implemented # Created a driver interface for fetching weather data. Supported multiple backend integrations under the same weather interface. Placed the driver inside a new utility module, as per Puter’s architectural guidelines. This driver followed the system used by other drivers in the project (like OCR, LLMs, and TTS), helping standardize access to weather services.\n💡 Why It Matters # 🧱 It lays the foundation for weather applications in Puter (dashboards, assistants, automations, etc.). 🔌 Makes it easy to plug in services like OpenWeatherMap or WeatherAPI without changing the client-side logic. 🛠️ Contributes to Puter\u0026rsquo;s goal of modular, pluggable access to third-party platforms. Even though the PR was closed without merging, it was a great learning opportunity in designing modular interfaces and contributing to an OS project.\n📂 See my other contributions: github.com/Assstra\n","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/2025-24-06-puter-contrib/","section":"Open-Sources","summary":"","title":"Feat: Weather Driver for Puter","type":"open-source"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/git-hooks/","section":"Tags","summary":"","title":"Git-Hooks","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/mocha/","section":"Tags","summary":"","title":"Mocha","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/nodejs/","section":"Tags","summary":"","title":"Nodejs","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/nyx/","section":"Tags","summary":"","title":"Nyx","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/open-source/","section":"Tags","summary":"","title":"Open-Source","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/","section":"Open-Sources","summary":"","title":"Open-Sources","type":"open-source"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/opentelemetry/","section":"Tags","summary":"","title":"Opentelemetry","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/orbit-dynamics/","section":"Tags","summary":"","title":"Orbit-Dynamics","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/","section":"Payloads \u0026 Payloads","summary":"","title":"Payloads \u0026 Payloads","type":"page"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/prefligit/","section":"Tags","summary":"","title":"Prefligit","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/puter/","section":"Tags","summary":"","title":"Puter","type":"tags"},{"content":"OpenTelemetry JS is the JavaScript implementation of the OpenTelemetry observability framework, enabling standardized tracing and metrics in distributed systems.\nIt provides tools to collect and export telemetry data (traces, metrics) from applications to various backends, helping developers monitor and debug distributed systems effectively.\n🧩 My Contribution: Refactor Instrumentation Tests # This project uses Mocha as the test framework. However, many tests were written using arrow functions, which prevent access to Mocha\u0026rsquo;s test context (this), limiting some testing capabilities.\nI contributed to the OpenTelemetry JS repository by refactoring the instrumentation package tests:\n🔗 Pull Request: #5591 – refactor(instrumentation): change tests to allow use of mocha context\n🔗 Related Issue: #5572 – Refactor tests to allow use of mocha context\n📌 Status: Merged and Closed\n🔧 What I Did # Converted arrow functions in test files to traditional function() expressions. Ensured all tests run successfully with npm run test. This refactor allows test authors to use Mocha\u0026rsquo;s this context, improving flexibility and aligning with Mocha best practices.\n💡 Why It Matters # 📚 Improves code consistency and maintainability in the test suite. 🛠️ Helps future contributors write better tests aligned with framework recommendations. 📂 See my other contributions: github.com/Assstra\n","date":"24 June 2025","externalUrl":null,"permalink":"/open-source/2025-24-06-opentelemetry-contrib2/","section":"Open-Sources","summary":"","title":"Refactor: Enable Mocha Context in OpenTelemetry Instrumentation Tests","type":"open-source"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/space/","section":"Tags","summary":"","title":"Space","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/testing/","section":"Tags","summary":"","title":"Testing","type":"tags"},{"content":"","date":"24 June 2025","externalUrl":null,"permalink":"/tags/weather/","section":"Tags","summary":"","title":"Weather","type":"tags"},{"content":"","date":"6 June 2025","externalUrl":null,"permalink":"/japanese/","section":"Japaneses","summary":"","title":"Japaneses","type":"japanese"},{"content":"","date":"3 June 2025","externalUrl":null,"permalink":"/tags/japan/","section":"Tags","summary":"","title":"Japan","type":"tags"},{"content":"","date":"3 June 2025","externalUrl":null,"permalink":"/tags/japanese/","section":"Tags","summary":"","title":"Japanese","type":"tags"},{"content":"","date":"3 June 2025","externalUrl":null,"permalink":"/tags/learning/","section":"Tags","summary":"","title":"Learning","type":"tags"},{"content":" Introduction # I\u0026rsquo;m in Japan for 3 month and started to learn japanese to understand things. Thie issue is that japanese are not very good at english (sorry for them x), so learning japanese really helps. My goal is not to be able to read or speak freely, but to get the maximum I can in 3 month, giving me the ability to understand written and spoken sentences with context.\nJapanese basics # Alphabet # Yes, you may already know that but japanese does not use the latin alphabet. They have their own alphabet, well multiples:\nHiragana: Used to write words in a simple form (for children) and for links between words (more later) Katakana: Used to write words coming from a foreign language (usually english). For example, the word カメラ (kamera) is written using katagana. Arabiasuji: These are the latin number, used as a majority in japanese to write dates for example. Note that romaji are not a japanese alphabet but are a way for foreigners to read japanese using latin alphabet.\nCombinations # Ok, we have a lot of sounds to work with. But how are we supposed to write 牛乳 (gyuunyuu, milk) or 東京 (Tokyo, East capital city) if we only have 46 hiragana and 46 katakana?\nTo \u0026ldquo;extend\u0026rdquo; the available sounds, we can use combinations of hiragana or katakana. We can combine all the hiragana or katakana that ends in -i with a small や (ya), ゆ (yu), or よ (yo) to create new sounds.\nHere is a table to write down every hiragana combinations:\nBase kana ゃ (ya) ゅ (yu) ょ (yo) き (ki) きゃ (kya) きゅ (kyu) きょ (kyo) ぎ (gi) ぎゃ (gya) ぎゅ (gyu) ぎょ (gyo) し (shi) しゃ (sha) しゅ (shu) しょ (sho) じ (ji) じゃ (ja) じゅ (ju) じょ (jo) ち (chi) ちゃ (cha) ちゅ (chu) ちょ (cho) ぢ (ji) ぢゃ (ja) ぢゅ (ju) ぢょ (jo) に (ni) にゃ (nya) にゅ (nyu) にょ (nyo) ひ (hi) ひゃ (hya) ひゅ (hyu) ひょ (hyo) び (bi) びゃ (bya) びゅ (byu) びょ (byo) ぴ (pi) ぴゃ (pya) ぴゅ (pyu) ぴょ (pyo) み (mi) みゃ (mya) みゅ (myu) みょ (myo) り (ri) りゃ (rya) りゅ (ryu) りょ (ryo) Pauses # In Japanese, we can use a small つ (tsu) to indicate a pause in the word. This is called a \u0026ldquo;sokuon\u0026rdquo; and is used to indicate a double consonant. For example, the word きって (kitte, stamp) has a pause between the き (ki) and the て (te). This is written with a small つ: きっ (ki) + て (te).\nKanji # Kanji are a way to write words using ideograms. So, in a Japanese sentence, you usually will have kanji or katakana combined with hiragana.\ne.g. 私がカメラいる (watashi wa kamera motte iru). Here, 私 (watashi) is written in kanji, カメラ (kamera) is written in katakana, and the rest is written in hiragana.\nA kanji can have multiple readings, depending on the context. For example, the kanji 日 can be read as にち (nichi) when it means \u0026ldquo;day\u0026rdquo; or as ひ (hi) when it means \u0026ldquo;sun\u0026rdquo;.\n","date":"3 June 2025","externalUrl":null,"permalink":"/japanese/2025-07-06-learning-japanese-part-1/","section":"Japaneses","summary":"","title":"Learning Japanese I - Introduction","type":"japanese"},{"content":"","date":"12 May 2025","externalUrl":null,"permalink":"/tags/communication/","section":"Tags","summary":"","title":"Communication","type":"tags"},{"content":" Radio Frequency (RF) Basics # Just got me a HackRF One and I’m diving into the world of radio frequencies (RF) communication. This post serves as a primer on RF concepts, particularly in the context of satellite communication.\nWhat is RF? # Radio Frequency (RF) refers to the electromagnetic waves in the frequency range of 3 kHz to 300 GHz.\nRF are used to transmit information wirelessly over distances. They can travel through air and vacuum. It is used for radio, television, wifi, and satellite communication for example.\nSource: Byjus - Electromagnetic Spectrum\nWe are later going to explore the latter, as it is a key component of modern communication systems, enabling the transmission of data over long distances without the need for physical connections.\nAs they are photons, RF waves travel at the speed of light (approximately 299,792 km/s in a vacuum). This means that RF signals can cover vast distances quickly, making them ideal for communication applications.\nNote that even if radiofrequency is a radiation, it does not have enough energy to ionize atoms or molecules, which means it does not cause the same kind of damage as ionizing radiation (like X-rays or gamma rays).\nSome definitions # When talking about RF, there are some key terms and concepts to understand:\nFrequency: The number of cycles per second of a wave, measured in Hertz (Hz). RF frequencies range from 3 kHz to 300 GHz.\nWavelength: The distance between two consecutive peaks of a wave, inversely related to frequency. It is calculated as the speed of light divided by the frequency (λ = c/f).\nSine Wave: A smooth, periodic oscillation that represents a single frequency. It is the basic waveform used in RF communication.\nAmplitude: The height of the wave, representing the strength of the signal. In RF communication, amplitude can be modulated to carry information.\nSource: Researchgate - Sine Wave\nUsing a carrier wave (usually a sine wave), we can encode information by \u0026ldquo;adding\u0026rdquo; another signal to it. This process is called modulation, and it allows us to transmit encoded information over RF waves.\nRF Spectrum # The RF spectrum is divided into several bands, each with its own frequency range and applications. Here are some common bands:\nBand Name Abbreviation ITU Band Number Frequency Wavelength Example Uses Extremely low frequency ELF 1 3–30 Hz 100,000–10,000 km Communication with submarines Super low frequency SLF 2 30–300 Hz 10,000–1,000 km Communication with submarines Ultra low frequency ULF 3 300–3,000 Hz 1,000–100 km Submarine communication, communication within mines Very low frequency VLF 4 3–30 kHz 100–10 km Navigation, time signals, submarine communication, wireless heart rate monitors, geophysics Low frequency LF 5 30–300 kHz 10–1 km Navigation, time signals, AM longwave broadcasting (Europe and Asia), RFID, amateur radio Medium frequency MF 6 300–3,000 kHz 1,000–100 m AM (medium-wave) broadcasts, amateur radio, avalanche beacons High frequency HF 7 3–30 MHz 100–10 m Shortwave broadcasts, CB radio, amateur radio, aviation communications, RFID, over-the-horizon radar, ALE/NVIS, marine and mobile radio telephony Very high frequency VHF 8 30–300 MHz 10–1 m FM, TV broadcasts, aircraft communication, land/mobile/maritime comms, amateur radio, weather radio Ultra high frequency UHF 9 300–3,000 MHz 1–0.1 m TV, microwave devices, radio astronomy, phones, WLAN, Bluetooth, ZigBee, GPS, 2-way radios, satellite radio, RC systems, ADS-B Super high frequency SHF 10 3–30 GHz 100–10 mm Radio astronomy, microwave devices/comms, WLAN, DSRC, radar, comms satellites, cable/satellite TV, DBS, amateur \u0026amp; satellite radio Extremely high frequency EHF 11 30–300 GHz 10–1 mm Radio astronomy, microwave relays, remote sensing, amateur radio, directed-energy weapons, millimeter wave scanners, WLAN (802.11ad) How it works ? # Note that my explaination is simplified and does not cover all the details of RF communication, but it should give you a good understanding of the basic concepts.\nLet\u0026rsquo;s send data ! # RF are electromagnetic like we said earlier. Getting back into you science classe course, you might remember that electromagnetic waves are made of electric and magnetic fields oscillating perpendicular to each other and to the direction of propagation.\nWe call them electromagnetic waves because they are a close relationship between electricity and magnetism. When an electric current flows through a conductor, it generates a magnetic field around it.\nWith an alternating current (AC), at the correct frequency, we make the electrons oscillate back and forth, creating a magnetic field.\nImagine a rope. You transform your energy into a wave by shaking the rope up and down. The wave travels along the rope, carrying energy with it. In RF communication, we do something similar with electromagnetic waves.\n\u0026ldquo;Roger, over and out\u0026rdquo; # As we said again, electricity and magnetism are the expression of the same thing: electromagnetism. When the RF reaches the antenna, the electrons start to move, thus creating an alternating current that we can measure.\nWhat about antennas then ? # For the signal to be received correctly, the antenna must be tuned to the frequency of the RF signal. This is done by adjusting the length of the antenna to match the wavelength (or a fraction) of the signal.\nIt\u0026rsquo;s important to note that every antenna have gain dependingon its design. This means that some antennas are better at receiving signals from certain directions than others.\nFor example, a dipole antenna is omnidirectional, meaning it can receive signals from all directions equally. But it may be uneffective for deep space communication because it can pick up noise from all directions, making it harder to isolate the desired signal.\nDirectional antennas, like Yagi-Uda or parabolic dish antennas, are designed to focus the signal in a specific direction, increasing the gain and reducing interference from other directions.\nSome physical concepts # Low frequencies (LF) have longer wavelengths and can travel longer distances, but they are more susceptible to interference from obstacles like buildings and trees. High frequencies (HF) have shorter wavelengths and can carry more data, but they are limited in range and can be affected by atmospheric conditions.\nAs they are low frequencies signals, AM radio waves can travel long distances, even around the curvature of the Earth. This is because they can reflect off the ionosphere, a layer of charged particles in the upper atmosphere. During the night, solar winds pull out the ionosphere, allowing AM radio waves to travel even further. With the perfect conditions, you could receive AM radio signals from thousands of kilometers away.\nModulation # Amplitude Modulation (AM) and Frequency Modulation (FM) are two common methods of modulating RF signals.\nAM: In AM, the amplitude of the carrier wave is varied in proportion to the message signal. This method is commonly used for AM radio broadcasting. FM: In FM, the frequency of the carrier wave is varied in proportion to the message signal. This method is commonly used for FM radio broadcasting and television audio. Note: PM: Phase Modulation (PM) is a technique where the phase of the carrier wave is varied in accordance with the message signal. PM is often used in digital communication systems.\nKnowledge application # Let\u0026rsquo;s say I want to receive a signal from the International Space Station (ISS).\nWe need to know a few things:\nFrequency: The ISS transmits signals in the VHF band, specifically around 145.800 MHz for voice communication. Wave length: Calculated from the frequency. Location: The ISS orbits the Earth at an altitude of about 400 km, so we need to be able to receive signals from that height. With the ISS value, wave length is about 2.07 m (calculated as c/f, where c is the speed of light and f is the frequency). This means that the antenna should measure 2.07 m or a fraction of it (like 1/4 or 1/2) to be tuned to the frequency of the ISS signal.\nThe modulation used by the ISS is typically FM for voice communication, which means that the frequency of the carrier wave is varied to carry the audio signal.\n","date":"12 May 2025","externalUrl":null,"permalink":"/space/2025-05-7-radio-frequency/","section":"Spaces","summary":"","title":"Intro to RF","type":"space"},{"content":"","date":"12 May 2025","externalUrl":null,"permalink":"/tags/rf/","section":"Tags","summary":"","title":"Rf","type":"tags"},{"content":"","date":"12 May 2025","externalUrl":null,"permalink":"/tags/satellite/","section":"Tags","summary":"","title":"Satellite","type":"tags"},{"content":"","date":"12 May 2025","externalUrl":null,"permalink":"/space/","section":"Spaces","summary":"","title":"Spaces","type":"space"},{"content":"","date":"26 April 2025","externalUrl":null,"permalink":"/tags/od/","section":"Tags","summary":"","title":"Od","type":"tags"},{"content":" Orbit Determination # In this post, I’ll dive into orbit determination — the science of estimating the position and velocity of a satellite in space. This is part of my ongoing research and contributions to an open-source project called Nyx, a Rust-based astrodynamics toolkit.\nWhy Is Orbit Determination Important? # Orbit determination is essential for space missions. It allows us to track and predict the movement of satellites using measurements from ground stations. The \u0026ldquo;state\u0026rdquo; of a satellite includes its position and velocity — both of which are needed to determine its orbit.\nSatellite Position # Definition # The satellite’s position is defined by a position vector — a 3D vector from the center of the Earth to the satellite. It\u0026rsquo;s typically expressed in the Earth-Centered Inertial (ECI) frame, which considers Earth’s rotation.\nTo determine this vector, we often rely on three observational measurements from ground stations:\nAzimuth: The angle between the satellite and the North, measured clockwise (in degrees). Elevation: The angle between the satellite and the horizon (in degrees). Range: The straight-line distance between the ground station and the satellite (in kilometers). These values are obtained via radio signals. The round-trip time of the signal gives us the range, assuming the speed of light is constant.\nFigure 1: Azimuth and elevation of a satellite. Source\nExample Calculation # Let’s say our satellite is located at point A(-2.8, 4.13, 4). Using measured azimuth, elevation, and range, we can derive this position with trigonometry:\nGiven:\nDistance = 6.39 km Elevation = 38.74° Azimuth = 235.86° Altitude (z-axis) # let distance = 6.39; let elevation = 38.74; let altitude = distance * elevation.to_radians().sin(); Result: altitude ≈ 3.99 km (close to actual z = 4)\nx Coordinate # let azimuth = 235.86; let x = distance * elevation.to_radians().cos() * azimuth.to_radians().sin(); Result: x ≈ -2.8 km\ny Coordinate # let azimuth = 63.26; let y = distance * azimuth.to_radians().cos() * elevation.to_radians().cos(); Result: y ≈ 4.13 km\nThis shows how trigonometric relations using elevation and azimuth angles help convert observations into position vectors.\nFigure 2: Visual representation of satellite position derived from measurements.\nFigure 3: Observing satellite position and velocity using azimuth, elevation, and Doppler effect.\nSatellite Velocity # Doppler Effect # The Doppler effect is the change in frequency of a wave due to the relative motion between the transmitter (satellite) and the receiver (ground station). When a satellite moves toward a ground station, the received frequency increases; when it moves away, the frequency decreases.\nThis shift can be used to determine radial velocity — the component of velocity along the line of sight. By combining Doppler measurements with position data, we can compute the full velocity vector.\n(WIP)\n","date":"26 April 2025","externalUrl":null,"permalink":"/space/2025-04-26-orbit-determination/","section":"Spaces","summary":"","title":"Orbit determination","type":"space"},{"content":"","date":"15 April 2025","externalUrl":null,"permalink":"/cyber_security/","section":"Cyber_securities","summary":"","title":"Cyber_securities","type":"cyber_security"},{"content":"","date":"10 April 2025","externalUrl":null,"permalink":"/tags/cybersecurity/","section":"Tags","summary":"","title":"Cybersecurity","type":"tags"},{"content":"","date":"10 April 2025","externalUrl":null,"permalink":"/tags/htb/","section":"Tags","summary":"","title":"Htb","type":"tags"},{"content":" Penetration Testing - Introduction # Table of Contents # Legend Penetration Test vs Red Team vs Vulnerability Assessment Risk Management Types of Penetration Testing Testing Types: Blackbox / Greybox / Whitebox Laws \u0026amp; Regulations Penetration Testing Stages 1. Pre-Engagement 2. Information Gathering 3. Vulnerability Assessment 4. Exploitation 5. Post-Exploitation 6. Proof of Concept 7. Post-Engagement 8. Data Retention 9. Close Out Legend # ! Important Note\nPenetration Test vs Red Team vs Vulnerability Assessment # Penetration Test: A structured, authorized attempt to identify and exploit all vulnerabilities in a system. Red Team Assessment: Scenario-based, focused on reaching a specific goal using stealth and creativity. Vulnerability Assessment: A lighter version of a penetration test using only automated tools (e.g., Nessus, Qualys, OpenVAS). Risk Management # Risk management involves identifying, evaluating, and mitigating risks that could harm a company.\nRisk Mitigation Strategies:\nTransfer: Shift responsibility to a third-party (e.g., cloud provider). Reduce: Apply preventative measures and controls. Accept: Use financial instruments or tolerate low-risk scenarios. Types of Penetration Testing # External Testing: Simulates an attack from an outsider (e.g., over the internet). Internal Testing: Performed from within the company’s internal network. Testing Types: Blackbox / Greybox / Whitebox # Blackbox: Only minimal public info is provided. Greybox: Partial access to documentation and internal info. Whitebox: Full knowledge including source code and credentials. Laws \u0026amp; Regulations # Categories USA Europe UK India China Protecting critical information infrastructure and personal data Cybersecurity Information Sharing Act (CISA) General Data Protection Regulation (GDPR) Data Protection Act 2018 Information Technology Act 2000 Cyber Security Law Criminalizing malicious computer usage and unauthorized access to computer systems Computer Fraud and Abuse Act (CFAA) Network and Information Systems Directive (NISD 2) Computer Misuse Act 1990 Information Technology Act 2000 National Security Law Prohibiting circumventing technological measures to protect copyrighted works Digital Millennium Copyright Act (DMCA) Cybercrime Convention of the Council of Europe Anti-Terrorism Law Regulating the interception of electronic communications Electronic Communications Privacy Act (ECPA) E-Privacy Directive 2002/58/EC Human Rights Act 1998 (HRA) Indian Evidence Act of 1872 Governing the use and disclosure of protected health information Health Insurance Portability and Accountability Act (HIPAA) Police and Justice Act 2006 Indian Penal Code of 1860 Regulating the collection of personal information from children Children\u0026rsquo;s Online Privacy Protection Act (COPPA) Investigatory Powers Act 2016 (IPA) A framework for cooperation between countries in investigating and prosecuting cybercrime Regulation of Investigatory Powers Act 2000 (RIPA) Outlining individuals\u0026rsquo; legal rights and protections regarding their personal data Personal Data Protection Bill 2019 Measures for the Security Assessment of Cross-border Transfer of Personal Information and Important Data Outlining individuals\u0026rsquo; fundamental rights and freedoms State Council Regulation on the Protection of Critical Information Infrastructure Security Penetration Testing Stages # 1. Pre-Engagement # Goals: Define scope, objectives, and rules of the test.\nKey Documents:\nNon-Disclosure Agreement (NDA) Scoping questionnaire \u0026amp; document Penetration Testing Proposal Rules of Engagement Contractors Agreement 2. Information Gathering # Steps:\nOSINT: Open-source information collection Infrastructure Enumeration: Identify networks, firewalls Service/Host Enumeration Pillaging: Look for sensitive data on compromised systems 3. Vulnerability Assessment # Analyze gathered data (manually and with tools) Identify weak services (e.g., FTP on port 2121) Use public databases for known CVEs: Vulners NVD Exploit-DB Packet Storm CVE Details 4. Exploitation # Objectives:\nExploit discovered vulnerabilities Prioritize based on: Success probability (CVSS) Exploit complexity Risk of causing damage Tips:\nTest exploits in a local VM Ask for client permission when unsure 5. Post-Exploitation # Objectives:\nEscalate privileges Establish persistence Continue pillaging and vulnerability assessment Techniques:\nEvasive, hybrid, or non-evasive Identify internal network structure Look for credentials, sensitive documents 6. Proof of Concept # Document exploit steps Provide scripts if necessary Ensure PoC is understandable and reproducible 7. Post-Engagement # Checklist:\nCleanup of tools/scripts from target Document findings and provide mitigation advice Report review meeting with client Deliver draft and final reports Post-remediation testing (if applicable) 8. Data Retention # Secure storage of data collected during engagement Retain data for reference, verification, or re-testing 9. Close Out # Final meeting to review findings Share full report and supporting data Provide next steps for remediation Penetration test stages # Pre-Engagement: create and review contracts (goals, scope, time estimation, rules) Information Gathering: Info about target company, software and hardware Vulnerability assessment: Analyze results from information gathering stage (manually and automated) Exploitation: Test attacks against identified vectors Post-exploitation: Escalation of privileges, searching for sensitive data Lateral Movement: Use a machine to access additional hosts at the same of a higher privilege Proof-of-Concept: document step by step how to achieve level of access (Path) Post-engagement: documentation and cleaning and meeting Pre-engagement # This is the stage of preparation for the current penetration test. This stage needs 3 elements :\nScoping questionnaire (define the scope during the 1st meeting) Pre-engagement meeting Kick-off meeting Documents needed are:\nNon-Disclosure Agreement Scoping Questionnaire (internal, social engineering, web, physical) Scoping document (live hosts, users, activities out of scope, IPs, domains, box, evsion (hide)) Penetration testing proposal (NDA, goals, scope, type, methods, remote, internal, time, third parties, evasion, risks, payment terms) Rules of Engagement (contractor, pentesters, goals, scope) Contractors Agreement Reports Information Gathering # Steps:\nOpen-Source Intelligence: OSINT, Information online Infrastructure Enumeration: Server\u0026rsquo;s map, identify firewall Service Enumeration: Services we can communicate with Host Enumeration Pillaging: Collect sensitive information locally on an exploited target Vulnerability Assessment # This stage\u0026rsquo;s goal is to analyze the information gathered from the previous stage and identify the vulnerabilities that can be exploited.\nFor example, a TCP port 2121 is open. This port is not standard as it\u0026rsquo;s not in the system ports range between 0 and 1023. See service name \u0026amp; protocol number registry\nHowever, this port number resembles the FTP port number 21. The service running on this port could be a custom or a misconfigured FTP server.\nVulnerability research:\nIn this part, we look for known vulnerabilities in the software and services running on the target system.\nHere is a list of some of the most common vulnerability databases:\nVulners NVD Exploit-DB Packet Storm Security CVEdetails Exploitation # The goal of this step is to adapt the weaknesses found to exploit the vulnerabilities from the previous step.\nNote that this step is closely connected to the previous one.\nPrioritize possible attack vectors\nWe can prioritize the attack vectors based on the following criteria:\nProbability of success: CVSS scoring, NVD calculator (risk vs severity) Complexity: time, effort and research needed Probability of damage: avoid any damage to the system (no DoS) Note: You can use a matrix to prioritize the attack vectors depending on the above criterias.\nPreparation for the attack\nIf you can\u0026rsquo;t find a proof of concept for the vulnerability, a solution is to mirror the host environment on a local VM. This way you can test the exploit without damaging the target system.\nImportant !: If in doubt about the exploit, ask the client for permission to test it, providing them with the data they need to make a decision.\nPost-exploitation # In this part, we assume that we have successfully exploited a vulnerability on the target system.\nThe objective here is to get sensitive and/or security related information from the compromised system.\nEvasive Testing\nEvasive testing is a technique used to avoid detection by security systems and tools.\nThere are 3 different categories:\nEvasive: Techniques designed to completely avoid detection by security tools. Hybrid evasive: A combination of evasive and non-evasive techniques, balancing stealth and functionality. Non-evasive: Techniques that do not attempt to avoid detection but focus on exploiting vulnerabilities directly. Information gathering\nNow you can get back to the information gathering \u0026amp; vulnerability assessment stage with the newly acquired information.\nWe can now restart the process from the local perspective.\nPillaging\nPillaging is the stage where we examine the role of the host in the corporate network.\nThe information we are looking for are but are not limited to:\nInterfaces Routing ARP VPN IP Subnets Subnets Network traffic Services DNS The main goals of pillaging are either to show the impact of a successful attack or to find a way to escalate privileges with documents, passwords, configuration, etc..\nPersistence\nNext step in the timeline is to maintain access to the compromised system. This step can be done when needed and depending on the situation. If used a buffer overflow vulnerability, you may not be able to access the system the same way if you loose the connection.\nVulnerarility assessment\nHaving a foothold in the system, we can now start looking for internal vulnerabilities.\nPrivilege escalation\nPrivilege escalation is the process of gaining higher privileges on a system. Note that this process does not always have to occur locally, as we could get some credentials from the compromised system and use them to access other systems on the network.\nData exfiltration\nData exfiltration is the process of transferring sensitive data from the compromised system to an external location. This process can be done in several ways, including:\nUsing a reverse shell Using a VPN Using a proxy Using a remote desktop connection Proof of concept\nThe proof of concept can be a document of the vulnerabilities found, or a more pratical version of a PoC like a script or a code that automatically exploits a vulnerability.\nNote that the script option may not be the only way to exploit a vulnerability. It\u0026rsquo;s important that developers or cyber security experts are able to understand the code and the logic behind it. The vulnerability may be exploitable in several ways, and the script may not express the only way to exploit it.\nPost-engagement\nCleanup: clean tools, script and files used during the pentest on the target systems. Documentation: write a report of the pentest, including the vulnerabilities found, the impact of the attack and the recommendations to fix them. This includes command output, screenshots. Don\u0026rsquo;t expose any Personal Identifiable Information (PII) in the report but provide a list of the findings. e.g. Attack chain, findings with risk rating, recommendations, remediation steps, etc. Report review meeting: review the report with the client and discuss the findings and recommendations. Deliverable Acceptance: deliver the report to the client and provide them with a copy of a draft report. Post-remediation testing: review the documentation \u0026amp; test the remediation steps taken by the client to fix the vulnerabilities found during the pentest. Data retention\nData rentention is the process of keeping the data collected during the pentest for a certain period of time. This process is important to ensure that the data is not lost or destroyed during the pentest.\nClose Out\nThis is the final step of the pentest. This step includes the following tasks:\nReview the report with the client and discuss the findings and recommendations. Provide the client with a copy of the report and the data collected during the pentest. ","date":"10 April 2025","externalUrl":null,"permalink":"/cyber_security/penetration_testing_intro/","section":"Cyber_securities","summary":"","title":"Penetration Testing Introduction","type":"cyber_security"},{"content":"","date":"10 April 2025","externalUrl":null,"permalink":"/tags/pentest/","section":"Tags","summary":"","title":"Pentest","type":"tags"},{"content":"","date":"21 January 2025","externalUrl":null,"permalink":"/devops/","section":"Devops","summary":"","title":"Devops","type":"devops"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]