Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
geojson-places
Advanced tools
Reverse geocoding to determine the location where it is contained (continent, country, region and state) from the latitude and longitude specified. This module also has tools to get lists of continents, country groupings, countries, regions and states in
This module can do the following tasks:
npm install --save geojson-places
I have prepared a complete implementation of the library to consume from a Node based API geojson-places-api, as an example or to deploy in a production environment. The API is developed with the Fastify framework.
Reverse geocoding to get the region info from latitude/longitude arguments.
const { lookUp } = require("geojson-places");
// Reverse geocoding to get the region info of Valladolid (Spain)
const result = lookUp(41.652349, -4.728602);
Result:
{
continent_code: 'EU',
country_a2: 'ES',
country_a3: 'ESP',
region_code: 'ES-CL',
state_code: 'ES-VA'
}
Get null from a latitude/longitude in the middle of the sea:
const { lookUp } = require("geojson-places");
const result = lookUp(0.0, 0.0);
console.log(result);
// null
Reverse geocoding to get the region geojson from latitude/longitude arguments.
const { lookUpGeoJSON } = require("geojson-places");
// Reverse geocoding to get the region geojson of Monaco
const result = lookUpGeoJSON(43.73828, 7.42542);
Result:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"continent_code": "EU",
"country_a2": "MC",
"country_a3": "MCO",
"region_code": "MC-MC"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[ 7.43745, 43.74336 ],
[ 7.42625, 43.75546 ],
[ 7.40697, 43.76351 ],
[ 7.38754, 43.75790 ],
[ 7.37266, 43.74583 ],
[ 7.36726, 43.73412 ],
[ 7.36575, 43.72273 ],
[ 7.38072, 43.71927 ],
[ 7.40432, 43.71797 ],
[ 7.41796, 43.73090 ],
[ 7.43285, 43.73985 ],
[ 7.43745, 43.74336 ]
]
]
}
}
]
}
Reverse geocoding to get the raw data from latitude/longitude arguments.
This is the original data retrieved from Natural Earth Data without process and clean it.
const { lookUpRaw } = require("geojson-places");
// Reverse geocoding to get the region geojson of Monaco
const result = lookUpRaw(43.73828, 7.42542);
Result:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"adm0_a3": "MCO",
"adm0_label": 5,
"adm0_sr": 5,
"adm1_code": "MCO+00?",
"admin": "Monaco",
"check_me": 20,
"code_hasc": "MC.MC",
"cont_code": "EU",
"cont_name": "Europe",
"datarank": 10,
"diss_me": 10107,
"featurecla": "Admin-1 aggregation",
"geonunit": "Monaco",
"gn_a1_code": "MC.00",
"gn_id": 3319178,
"gn_level": 1,
"gn_name": "Commune de Monaco",
"gu_a3": "MCO",
"iso_3166_2": "MC-X01~",
"iso_a2": "MC",
"labelrank": 20,
"latitude": 43.7461,
"longitude": 7.39979,
"mapcolor13": 12,
"mapcolor9": 2,
"max_label": 18,
"min_label": 18,
"min_zoom": 18,
"name": "Monaco",
"name_ar": "موناكو فيل",
"name_de": "Monaco-Ville",
"name_en": "Monaco-Ville",
"name_es": "Mónaco",
"name_fr": "Monaco-Ville",
"name_hu": "Monaco",
"name_it": "Monaco Vecchia",
"name_ja": "モナコ・ヴィル",
"name_ko": "모나코빌",
"name_len": 6,
"name_nl": "Monaco-Ville",
"name_pl": "Monaco-Ville",
"name_pt": "Monaco-Ville",
"name_ru": "Монако",
"name_sv": "Monaco-Ville",
"name_tr": "Monaco-Ville",
"name_zh": "摩纳哥城",
"ne_id": 1159315589,
"region_code": "MC-MC",
"region_name": "Monaco",
"sameascity": -99,
"scalerank": 10,
"sov_a3": "MCO",
"wikidataid": "Q55115",
"woe_id": 23424892,
"woe_name": "Monaco"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[ 7.43745, 43.74336 ],
[ 7.42625, 43.75546 ],
[ 7.40697, 43.76351 ],
[ 7.38754, 43.75790 ],
[ 7.37266, 43.74583 ],
[ 7.36726, 43.73412 ],
[ 7.36575, 43.72273 ],
[ 7.38072, 43.71927 ],
[ 7.40432, 43.71797 ],
[ 7.41796, 43.73090 ],
[ 7.43285, 43.73985 ],
[ 7.43745, 43.74336 ]
]
]
}
}
]
}
Get geojson continent by continent code.
A simplified version can be retrieved if simplified
argument is true
.
const { getContinentGeoJSONByCode } = require("geojson-places");
// Get the continent geojson of Europe
const result = getContinentGeoJSONByCode('EU');
Result:
{
type: 'Feature',
properties: {
continent_code: 'EU'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get geojson country by iso-3166-2
code.
const { getCountryGeoJSONByAlpha2 } = require("geojson-places");
// Get the country geojson of Spain
const result = getCountryGeoJSONByAlpha2('ES');
Result:
{
type: 'Feature',
properties: {
country_a2: 'ES',
country_a3: 'ESP'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get geojson country by iso-3166-3
code.
const { getCountryGeoJSONByAlpha3 } = require("geojson-places");
// Get the country geojson of Spain
const result = getCountryGeoJSONByAlpha3('ESP');
Result:
{
type: 'Feature',
properties: {
country_a2: 'ES',
country_a3: 'ESP'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get geojson country grouping by grouping code.
A simplified version can be retrieved if simplified
argument is true
.
const { getCountryGroupingGeoJSONByCode } = require("geojson-places");
// Get the country grouping geojson of EMEA
const result = getCountryGroupingGeoJSONByCode('EMEA');
Result:
{
type: 'Feature',
properties: {
grouping_code: 'EMEA'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get geojson country region by region code.
const { getRegionGeoJSONByCode } = require("geojson-places");
// Get the country region geojson of Castilla y León (Spain) with region code ES-CL
const result = getRegionGeoJSONByCode('ES-CL');
Result:
{
type: 'Feature',
properties: {
country_a2: 'ES',
region_code: 'ES-CL'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get geojson country state by state code.
const { getStateGeoJSONByCode } = require("geojson-places");
// Get the country state geojson of Valladolid, Castilla y León (Spain) with state code ES-VA
const result = getStateGeoJSONByCode('ES-VA');
Result:
{
type: 'Feature',
properties: {
country_a2: 'ES',
region_code: 'ES-CL',
state_code: 'ES-VA'
},
geometry: {
type: 'MultiPolygon',
coordinates: [
[ 7.43745, 43.74336 ],
...
]
}
}
Get a list of continents.
The function will return an array of objects with the continent code, name and an array of iso-3166-2
country codes contained in each continent.
Optionally the locale
can be specified as parameter to localize the continent name (English by default).
const { getContinents } = require("geojson-places");
// Get the continent list
const result = getContinents();
Result:
[
{
continent_code: 'AF',
continent_name: 'Afrique',
countries: [
'DZ', 'AO', 'BW', 'BI', 'CM', 'CV', 'CF',
'TD', 'KM', 'YT', 'CG', 'CD', 'BJ', 'GQ',
'ET', 'ER', 'DJ', 'GA', 'GM', 'GH', 'GN',
'CI', 'KE', 'LS', 'LR', 'LY', 'MG', 'MW',
'ML', 'MR', 'MU', 'MA', 'MZ', 'NA', 'NE',
'NG', 'GW', 'RE', 'RW', 'SH', 'ST', 'SN',
'SC', 'SL', 'SO', 'ZA', 'ZW', 'SS', 'EH',
'SD', 'SZ', 'TG', 'TN', 'UG', 'EG', 'TZ',
'BF', 'ZM'
]
},
...
]
Get the specified continent by code.
The function will return an object with the continent code, name and an array of iso-3166-2
country codes contained in the specified continent, always ordered by continent name.
Optionally the locale
can be specified as parameter to localize the continent name (English by default).
const { getContinentByCode } = require("geojson-places");
// Get the Europe continent
const result = getContinentByCode('EU');
Result:
{
continent_code: 'EU',
continent_name: 'Europe',
countries: [
'AL', 'AD', 'AZ', 'AT', 'AM', 'BE', 'BA',
'BG', 'BY', 'HR', 'CY', 'CZ', 'DK', 'EE',
'FO', 'FI', 'AX', 'FR', 'GE', 'DE', 'GI',
'GR', 'VA', 'HU', 'IS', 'IE', 'IT', 'KZ',
'LV', 'LI', 'LT', 'LU', 'MT', 'MC', 'MD',
'ME', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU',
'SM', 'RS', 'SK', 'SI', 'ES', 'SJ', 'SE',
'CH', 'TR', 'UA', 'MK', 'GB', 'GG', 'JE',
'IM'
]
}
Returns boolean value depending on the specified continent code is valid or not.
const { isValidContinentCode } = require("geojson-places");
console.log(isValidContinentCode('EU'));
// true
console.log(isValidContinentCode('XX'));
// false
Get a list of countries.
The function will return an array of objects with the country code in iso-3166-2
and iso-3166-3
format, and name, always ordered by country name.
Optionally the locale
can be specified as parameter to localize the country name (English by default).
const { getCountries } = require("geojson-places");
// Get the country list
const result = getCountries();
Result:
[
{ country_a2: 'AF', country_a3: 'AFG', country_name: 'Afghanistan' },
{ country_a2: 'AX', country_a3: 'ALD', country_name: 'Aland' },
{ country_a2: 'AL', country_a3: 'ALB', country_name: 'Albania' },
...
]
Get the specified country by iso-3166-2 code.
The function will return an object with the country code in iso-3166-2
and iso-3166-3
format, and name.
Optionally the locale
can be specified as parameter to localize the country name (English by default).
const { getCountryByAlpha2 } = require("geojson-places");
// Get the Europe continent
const result = getCountryByAlpha2('AF');
Result:
{
country_a2: 'AF',
country_a3: 'AFG',
country_name: 'Afghanistan'
}
Get the specified country by iso-3166-3 code.
The function will return an object with the country code in iso-3166-2
and iso-3166-3
format, and name.
Optionally the locale
can be specified as parameter to localize the country name (English by default).
const { getCountryByAlpha3 } = require("geojson-places");
// Get the Europe continent
const result = getCountryByAlpha3('AFG');
Result:
{
country_a2: 'AF',
country_a3: 'AFG',
country_name: 'Afghanistan'
}
Returns boolean value depending on the specified country code in iso-3166-2
format, is valid or not.
const { isValidCountryAlpha2 } = require("geojson-places");
console.log(isValidCountryAlpha2('ES'));
// true
console.log(isValidCountryAlpha2('XX'));
// false
Returns boolean value depending on the specified country code in iso-3166-3
format, is valid or not.
const { isValidCountryAlpha3 } = require("geojson-places");
console.log(isValidCountryAlpha3('ESP'));
// true
console.log(isValidCountryAlpha3('XXX'));
// false
Convert country code from iso-3166-3
to iso-3166-2
format.
const { countryAlpha3ToAlpha2 } = require("geojson-places");
console.log(countryAlpha3ToAlpha2('ESP'));
// ES
console.log(countryAlpha3ToAlpha2('XXX'));
// null
Convert country code from iso-3166-2
to iso-3166-3
format.
const { countryAlpha2ToAlpha3 } = require("geojson-places");
console.log(countryAlpha2ToAlpha3('ES'));
// ESP
console.log(countryAlpha2ToAlpha3('XX'));
// null
Get the country list of the specified continent code.
The function will return an array of objects with the country code in iso-3166-2
and iso-3166-3
format, and name.
Optionally the locale
can be specified as parameter to localize the country name (English by default).
const { getCountriesByContinentCode } = require("geojson-places");
// Get the country list of the Europe continent
const result = getCountriesByContinentCode('EU');
Result:
[
{
country_a2: 'AX',
country_a3: 'ALD',
country_name: 'Aland'
},
...
]
Get the country list of the specified country grouping code.
The function will return an array of objects with the country code in iso-3166-2
and iso-3166-3
format, and name.
Optionally the locale
can be specified as parameter to localize the country name (English by default).
const { getCountriesByCountryGroupingCode } = require("geojson-places");
// Get the country list of the EMEA country grouping
const result = getCountriesByCountryGroupingCode('EMEA');
Result:
[
{
country_a2: 'AX',
country_a3: 'ALD',
country_name: 'Aland'
},
...
]
Get a list of country groupings.
Groups of countries or regions are often referred to by a single term (word, phrase, or abbreviation). The origins of such terms include political alliances, intergovernmental organizations, business market areas, and mere colloquialism.
The function will return an array of objects with the country grouping code, name and an array of iso-3166-2
country codes contained in each country grouping.
Optionally the locale
can be specified as parameter to localize the country grouping name (English by default).
const { getCountryGroupings } = require("geojson-places");
// Get the country grouping list
const result = getCountryGroupings('es');
Result:
[
{
grouping_code: 'CEFTA',
grouping_name: 'Acuerdo de libre comercio de Europa Central',
countries: [ 'AL', 'BA', 'MD', 'ME', 'MK', 'RS' ]
},
{
grouping_code: 'DACH',
grouping_name: 'Alemania, Austria, Confederación Suiza',
countries: [ 'AT', 'CH', 'DE' ]
},
{
grouping_code: 'Pacific Alliance',
grouping_name: 'Alianza del Pacífico',
countries: [
'AU', 'CA', 'CL',
'CO', 'MX', 'NZ',
'PE', 'SG'
]
},
...
]
Get the specified country grouping by code.
The function will return an object with the country grouping code, name and an array of iso-3166-2
country codes contained in the specified country grouping, always ordered by country grouping name.
Optionally the locale
can be specified as parameter to localize the country grouping name (English by default).
const { getCountryGroupingByCode } = require("geojson-places");
// Get the EMEA (Europe, the Middle East and Africa) country grouping
const result = getCountryGroupingByCode('EMEA');
Result:
{
grouping_code: 'EMEA',
grouping_name: 'Europe, the Middle East and Africa',
countries: [
'AD', 'AE', 'AL', 'AM', 'AO', 'AT', 'AX', 'AZ', 'BA', 'BE',
'BG', 'BH', 'BI', 'BJ', 'BW', 'BY', 'CF', 'CG', 'CH', 'CI',
'CM', 'CV', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DZ', 'EE', 'EG',
'EH', 'ER', 'ES', 'ET', 'FI', 'FO', 'FR', 'GA', 'GB', 'GE',
'GG', 'GH', 'GI', 'GM', 'GN', 'GR', 'HR', 'HU', 'IE', 'IL',
'IM', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JO', 'KE', 'KM', 'KW',
'KZ', 'LB', 'LI', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA',
'MC', 'MD', 'ME', 'MG', 'MK', 'ML', 'MR', 'MT', 'MU', 'MW',
'MZ', 'NA', 'NE', 'NL', 'NO', 'OM', 'PL', 'PT', 'QA', 'RE',
'RS', 'RU', 'RW', 'SA', 'SC', 'SD', 'SE', 'SH', 'SI', 'SK',
...
]
}
Returns boolean value depending on the specified country grouping code is valid or not.
const { isValidCountryGroupingCode } = require("geojson-places");
console.log(isValidCountryGroupingCode('EMEA'));
// true
console.log(isValidCountryGroupingCode('X'));
// false
Get a list of all regions.
The function will return an array of objects with each country iso-3166-2
code, region code and name, always ordered by region name.
Optionally the locale
can be specified as parameter to localize the region names (English by default).
const { getRegions } = require("geojson-places");
// Get all regions
const result = getRegions();
Result:
[
{ country_a2: 'ES', region_code: 'ES-AN', region_name: 'Andalusia' },
{ country_a2: 'ES', region_code: 'ES-AR', region_name: 'Aragon' },
{ country_a2: 'ES', region_code: 'ES-AS', region_name: 'Asturias' },
...
]
Get a list of all regions with the states of each region.
The function will return an array of objects with each country iso-3166-2
code, region code, name and an array of states, always ordered by region name, and state name.
Optionally the locale
can be specified as parameter to localize the region names and state names (English by default).
const { getRegionsAndStates } = require("geojson-places");
// Get all regions and states
const result = getRegionsAndStates();
Result:
[
{
country_a2: 'ES',
region_code: 'ES-CL',
region_name: 'Castilla y León',
states: [
{ state_code: 'ES-BU', state_name: 'Burgos' },
{ state_code: 'ES-LE', state_name: 'León' },
{ state_code: 'ES-P' , state_name: 'Palencia' },
{ state_code: 'ES-SA', state_name: 'Salamanca' },
{ state_code: 'ES-SG', state_name: 'Segovia' },
{ state_code: 'ES-SO', state_name: 'Soria' },
{ state_code: 'ES-VA', state_name: 'Valladolid' },
{ state_code: 'ES-ZA', state_name: 'Zamora' },
{ state_code: 'ES-AV', state_name: 'Ávila' }
]
},
...
]
Get a list of regions of the specified country by iso-3166-2
code.
The function will return an array of objects with each country iso-3166-2
code, region code and name contained in the specified country, always ordered by region name.
Optionally the locale
can be specified as parameter to localize the region name (English by default).
const { getRegionsByCountryAlpha2 } = require("geojson-places");
// Get the regions of Spain
const result = getRegionsByCountryAlpha2('ES');
Result:
[
{ country_a2: 'ES', region_code: 'ES-AN', region_name: 'Andalusia' },
{ country_a2: 'ES', region_code: 'ES-AR', region_name: 'Aragon' },
{ country_a2: 'ES', region_code: 'ES-AS', region_name: 'Asturias' },
{ country_a2: 'ES', region_code: 'ES-PM', region_name: 'Balears' },
{ country_a2: 'ES', region_code: 'ES-PV', region_name: 'Basque Country' },
{ country_a2: 'ES', region_code: 'ES-CN', region_name: 'Canary Islands' },
{ country_a2: 'ES', region_code: 'ES-CB', region_name: 'Cantabria' },
{ country_a2: 'ES', region_code: 'ES-CL', region_name: 'Castile and León' },
{ country_a2: 'ES', region_code: 'ES-CM', region_name: 'Castilla-La Mancha' },
{ country_a2: 'ES', region_code: 'ES-CT', region_name: 'Catalonia' },
{ country_a2: 'ES', region_code: 'ES-CE', region_name: 'Ceuta' },
{ country_a2: 'ES', region_code: 'ES-MD', region_name: 'Community of Madrid' },
{ country_a2: 'ES', region_code: 'ES-EX', region_name: 'Extremadura' },
{ country_a2: 'ES', region_code: 'ES-GA', region_name: 'Galicia' },
{ country_a2: 'ES', region_code: 'ES-LO', region_name: 'La Rioja' },
{ country_a2: 'ES', region_code: 'ES-ML', region_name: 'Melilla' },
{ country_a2: 'ES', region_code: 'ES-NA', region_name: 'Navarre' },
{ country_a2: 'ES', region_code: 'ES-MU', region_name: 'Region of Murcia' },
{ country_a2: 'ES', region_code: 'ES-VC', region_name: 'Valencian Community' }
]
The same than getRegionsByCountryAlpha2
, get a list of regions of the specified country by iso-3166-3
code.
Get the specified region by code.
The function will return an object with the region of the specified code, name and an array of states contained in the specified region, always ordered by state name.
Optionally the locale
can be specified as parameter to localize the region name and the list of state names (English by default).
const { getRegionByCode } = require("geojson-places");
// Get the region by code ES-CL (Castilla y León, Spain)
const result = getRegionByCode('ES-CL');
Result:
{
country_a2: 'ES',
region_code: 'ES-CL',
region_name: 'Castilla y León',
states: [
{ state_code: 'ES-BU', state_name: 'Burgos' },
{ state_code: 'ES-LE', state_name: 'León' },
{ state_code: 'ES-P' , state_name: 'Palencia' },
{ state_code: 'ES-SA', state_name: 'Salamanca' },
{ state_code: 'ES-SG', state_name: 'Segovia' },
{ state_code: 'ES-SO', state_name: 'Soria' },
{ state_code: 'ES-VA', state_name: 'Valladolid' },
{ state_code: 'ES-ZA', state_name: 'Zamora' },
{ state_code: 'ES-AV', state_name: 'Ávila' }
]
}
Returns boolean value depending on the specified region code is valid or not.
const { isValidRegionCode } = require("geojson-places");
console.log(isValidRegionCode('ES-CL'));
// true
console.log(isValidRegionCode('XX-XX'));
// false
Get a list of states of the specified region by code.
The function will return an array of objects with the state code and name contained in the specified region by code.
Optionally the locale
can be specified as parameter to localize the state names (English by default).
const { getStatesByRegionCode } = require("geojson-places");
// Get the states of the region by code ES-CL (Castilla y León, Spain)
const result = getStatesByRegionCode('ES-CL');
Result:
[
{ state_code: 'ES-BU', state_name: 'Burgos' },
{ state_code: 'ES-LE', state_name: 'León' },
{ state_code: 'ES-P' , state_name: 'Palencia' },
{ state_code: 'ES-SA', state_name: 'Salamanca' },
{ state_code: 'ES-SG', state_name: 'Segovia' },
{ state_code: 'ES-SO', state_name: 'Soria' },
{ state_code: 'ES-VA', state_name: 'Valladolid' },
{ state_code: 'ES-ZA', state_name: 'Zamora' },
{ state_code: 'ES-AV', state_name: 'Ávila' }
]
Get the specified state by code.
The function will return an object with the state code and name of the specified state code.
Optionally the locale
can be specified as parameter to localize the state name (English by default).
const { getStateByCode } = require("geojson-places");
// Get the state by code ES-VA (Valladolid, Castilla y León, Spain)
const result = getStateByCode('ES-VA');
Result:
{
state_code: 'ES-VA',
state_name: 'Valladolid'
}
Returns boolean value depending on the specified state code is valid or not.
const { isValidStateCode } = require("geojson-places");
console.log(isValidStateCode('ES-VA'));
// true
console.log(isValidStateCode('XX-XX'));
// false
We can run this npm script to run all the testing cases:
npm run test
There is a script to regenerate and/or update the following project files:
\data\countries\*
\data\country-groupings\*
\data\continents\*
\data\regions\*
\data\states\*
Note that the country names will be localized using the module i18n-iso-countries.
The project file /data/build.json
must be downloaded from Admin 1 – States, Provinces (click on Download states and provinces
), this is the direct link.
After downloaded the file you need to convert all the collection to a geojson file, using for example the online mapsharper.org tool.
After converting the zip file to json file, the project file /data/build.json
must be replaced by this one.
Now we are ready to launch the build (It may take a couple of days 😮):
npm run build
FAQs
Reverse geocoding to determine the location where it is contained (continent, country, region and state) from the latitude and longitude specified. This module also has tools to get lists of continents, country groupings, countries, regions and states in
The npm package geojson-places receives a total of 1,015 weekly downloads. As such, geojson-places popularity was classified as popular.
We found that geojson-places demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.