IPv4 address
159.65.201.104
Last fetched
159.65.201.104 is announced in 159.65.192.0/20 by DIGITALOCEAN-ASN - DigitalOcean, LLC and geolocates to NL. 159.65.201.104 is listed by 2 threat feeds; reconciled level LOW.
Threat posture
4.28threat score (procedure-native scale)
LOWListed by 2 threat feeds.
- Threat feeds listing this
- 2
- Verdict coverage
- ambiguous
- First seen on a feed
- Mon, 28 Sep 2026 08:20:34 GMT
- Last seen on a feed
- Tue, 29 Sep 2026 23:55:54 GMT
Nutrition Label
Attribution
- Announced prefix
- 159.65.192.0/20
- Announcing network
- DIGITALOCEAN-ASN - DigitalOcean, LLC
- RIR-registered prefix
- 159.65.0.0/16
- RPKI
- valid
Anycast detection
This does not appear to be an anycast address on the three signals Canon evaluates: reverse DNS, announced-prefix width and the announcing network's peer count.
Reverse DNS
Geographic detail
- City
- Amsterdam, NL
- Country
- NL
Threat-feed listings
- stamparm-ipsum · blacklists
- duggytuxy-datashield-critical · blacklists
Threat-feed evidence
History
Related pages
Pivot from 159.65.201.104 into the prefix, network and country that carry it.
Queries
This address's full card — routing attribution, reverse DNS and listed feeds.
MATCH (ip:IPV4 {name: $ip})
OPTIONAL MATCH (ip)-[:BELONGS_TO]->(rp:REGISTERED_PREFIX)
OPTIONAL MATCH (ip)-[:ANNOUNCED_BY]->(ap:ANNOUNCED_PREFIX)
OPTIONAL MATCH (a:ASN)-[:ROUTES]->(ap)
OPTIONAL MATCH (a)-[:HAS_NAME]->(an:ASN_NAME)
OPTIONAL MATCH (ip)-[:LOCATED_IN]->(city:CITY)
OPTIONAL MATCH (ip)-[:HAS_COUNTRY]->(ipc:COUNTRY)
WITH ip, rp, ap, a, an, city, ipc
LIMIT 10
WITH ip,
collect(rp.name) AS registeredPrefixes,
collect({prefix: ap.name, asn: a.name, network: an.name, isMoas: ap.isMoas, rpkiStatus: ap.rpkiStatus, isAnycast: ap.isAnycast, dominantCity: ap.dominantCity}) AS announcements,
collect(city.name) AS cities,
collect(ipc.name) AS countries,
collect(a.name) AS announcerNames,
head(collect(a)) AS primaryAsn,
head(collect(ap)) AS primaryPrefix
OPTIONAL MATCH (primaryPrefix)-[:CONFLICTS_WITH]->(conflict:ASN)
WITH ip, registeredPrefixes, announcements, cities, countries, announcerNames, primaryAsn,
collect(conflict.name) AS conflictAsns
CALL { WITH primaryAsn MATCH (primaryAsn)-[:ROUTES]->(p:ANNOUNCED_PREFIX) RETURN count(p) AS asnPrefixCount }
CALL { WITH primaryAsn MATCH (primaryAsn)-[:BGP_NEIGHBOR]-(peer:ASN) RETURN count(peer) AS asnPeerCount }
RETURN ip.name AS name,
ip.verdictLevel AS verdictLevel,
ip.verdictScore AS verdictScore,
ip.verdictBlocking AS verdictBlocking,
ip.verdictCoverage AS verdictCoverage,
ip.verdictAdvisory AS verdictAdvisory,
ip.threatSources AS threatSources,
ip.threatFirstSeen AS threatFirstSeen,
ip.threatLastSeen AS threatLastSeen,
ip.isTor AS isTor,
ip.isVpn AS isVpn,
ip.isProxy AS isProxy,
ip.isC2 AS isC2,
ip.isPhishing AS isPhishing,
registeredPrefixes, announcements, cities, countries, announcerNames, conflictAsns,
asnPrefixCount, asnPeerCountRun yourself →Or query Whisper from your own LLM workflow via the Whisper MCP server.