updated code to produce Flask sql
Normalised column names, added primary index to sql etc.
Этот коммит содержится в:
родитель
8bb63006b6
Коммит
9a20c113b3
Двоичные данные
AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx
Двоичные данные
AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx
Двоичный файл не отображается.
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@ -0,0 +1,113 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Generate AMITT github files\n",
|
||||
"\n",
|
||||
"Generate all the AMITT github files from the AMITT master spreadsheet, being careful to reatin any comments people have made below the \"don't write above this\" line in them. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_red_framework.md\n",
|
||||
"updated ../amitt_red_framework_clickable.html\n",
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n",
|
||||
"updated ../phases_index.md\n",
|
||||
"updated ../tactics_index.md\n",
|
||||
"updated ../techniques_index.md\n",
|
||||
"updated ../tasks_index.md\n",
|
||||
"updated ../incidents_index.md\n",
|
||||
"updated ../counters_index.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"updated ../metatechniques_index.md\n",
|
||||
"updated ../actortypes_index.md\n",
|
||||
"Updating ../actortypes/A001.md\n",
|
||||
"Updating ../actortypes/A002.md\n",
|
||||
"Updating ../actortypes/A003.md\n",
|
||||
"Updating ../actortypes/A004.md\n",
|
||||
"Updating ../actortypes/A005.md\n",
|
||||
"Updating ../actortypes/A006.md\n",
|
||||
"Updating ../actortypes/A007.md\n",
|
||||
"Updating ../actortypes/A008.md\n",
|
||||
"Updating ../actortypes/A009.md\n",
|
||||
"Updating ../actortypes/A010.md\n",
|
||||
"Updating ../actortypes/A011.md\n",
|
||||
"Updating ../actortypes/A012.md\n",
|
||||
"Updating ../actortypes/A013.md\n",
|
||||
"Updating ../actortypes/A014.md\n",
|
||||
"Updating ../actortypes/A015.md\n",
|
||||
"Updating ../actortypes/A016.md\n",
|
||||
"Updating ../actortypes/A017.md\n",
|
||||
"Updating ../actortypes/A018.md\n",
|
||||
"Updating ../actortypes/A019.md\n",
|
||||
"Updating ../actortypes/A020.md\n",
|
||||
"Updating ../actortypes/A021.md\n",
|
||||
"Updating ../actortypes/A022.md\n",
|
||||
"Updating ../actortypes/A023.md\n",
|
||||
"Updating ../actortypes/A024.md\n",
|
||||
"Updating ../actortypes/A025.md\n",
|
||||
"Updating ../actortypes/A026.md\n",
|
||||
"Updating ../actortypes/A027.md\n",
|
||||
"Updating ../actortypes/A028.md\n",
|
||||
"Updating ../actortypes/A029.md\n",
|
||||
"Updating ../actortypes/A030.md\n",
|
||||
"Updating ../actortypes/A031.md\n",
|
||||
"Updating ../actortypes/A032.md\n",
|
||||
"Updating ../actortypes/A033.md\n",
|
||||
"updated ../responsetype_index.md\n",
|
||||
"updated ../detections_index.md\n",
|
||||
"updated ../tactics_by_responsetype_table.md\n",
|
||||
"updated ../metatechniques_by_responsetype_table.md\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()\n",
|
||||
"amitt.generate_and_write_datafiles()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
@ -1,283 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_red_framework.md\n",
|
||||
"updated ../amitt_red_framework_clickable.html\n",
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n",
|
||||
"updated ../phases_index.md\n",
|
||||
"updated ../tactics_index.md\n",
|
||||
"Updating ../tactics/TA06.md\n",
|
||||
"Updating ../tactics/TA12.md\n",
|
||||
"updated ../techniques_index.md\n",
|
||||
"Updating ../techniques/T0025.md\n",
|
||||
"Updating ../techniques/T0062.md\n",
|
||||
"Updating ../techniques/T0063.md\n",
|
||||
"Updating ../techniques/T0064.md\n",
|
||||
"updated ../tasks_index.md\n",
|
||||
"Updating ../tasks/.md\n",
|
||||
"updated ../incidents_index.md\n",
|
||||
"updated ../counters_index.md\n",
|
||||
"updated ../metatechniques_index.md\n",
|
||||
"Updating ../metatechniques/M001.md\n",
|
||||
"updated ../actors_index.md\n",
|
||||
"updated ../responsetype_index.md\n",
|
||||
"updated ../detections_index.md\n",
|
||||
"updated ../tactics_by_responsetype_table.md\n",
|
||||
"updated ../metatechniques_by_responsetype_table.md\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()\n",
|
||||
"amitt.generate_and_write_datafiles()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"dict_keys(['df_phases', 'df_techniques', 'df_tasks', 'df_incidents', 'df_counters', 'df_detections', 'df_actors', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actors', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actorid'])\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'TA01': 'Strategic Planning',\n",
|
||||
" 'TA02': 'Objective Planning',\n",
|
||||
" 'TA03': 'Develop People',\n",
|
||||
" 'TA04': 'Develop Networks',\n",
|
||||
" 'TA05': 'Microtargeting',\n",
|
||||
" 'TA06': 'Develop Content',\n",
|
||||
" 'TA07': 'Channel Selection',\n",
|
||||
" 'TA08': 'Pump Priming',\n",
|
||||
" 'TA09': 'Exposure',\n",
|
||||
" 'TA10': 'Go Physical',\n",
|
||||
" 'TA11': 'Persistence',\n",
|
||||
" 'TA12': 'Measure Effectiveness'}"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Check which amitt variables we can see from here\n",
|
||||
"print('{}'.format(vars(amitt).keys()))\n",
|
||||
"vars(amitt)['tactics']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# TEST AREA"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_red_framework.md\n",
|
||||
"updated ../amitt_red_framework_clickable.html\n",
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"amitt.write_amitt_frameworks()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"amitt.write_amitt_blue_framework_file(outfile = '../amitt_blue_framework.md')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"10"
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"max(amitt.df_tactics['technique_ids'].apply(len))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0 [T0001, T0002, T0003, T0004]\n",
|
||||
"1 [T0005, T0006]\n",
|
||||
"2 [T0007, T0008, T0009]\n",
|
||||
"3 [T0010, T0011, T0012, T0013, T0014, T0015]\n",
|
||||
"4 [T0016, T0017, T0018]\n",
|
||||
"5 [T0019, T0020, T0021, T0022, T0023, T0024, T00...\n",
|
||||
"6 [T0029, T0030, T0031, T0032, T0033, T0034, T00...\n",
|
||||
"7 [T0039, T0040, T0041, T0042, T0043, T0044, T00...\n",
|
||||
"8 [T0047, T0048, T0049, T0050, T0051, T0052, T00...\n",
|
||||
"9 [T0057, T0061]\n",
|
||||
"10 [T0058, T0059, T0060]\n",
|
||||
"11 \n",
|
||||
"Name: technique_ids, dtype: object"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"amitt.df_tactics['technique_ids']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"12"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"len(amitt.padded_techniques_tactics_table)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"12"
|
||||
]
|
||||
},
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"amitt.max_num_techniques_per_tactic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'xx'"
|
||||
]
|
||||
},
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
1019
HTML_GENERATING_CODE/AMITT_code_testbed.ipynb
Обычный файл
1019
HTML_GENERATING_CODE/AMITT_code_testbed.ipynb
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
113
HTML_GENERATING_CODE/Generate_AMITT_github_files.ipynb
Обычный файл
113
HTML_GENERATING_CODE/Generate_AMITT_github_files.ipynb
Обычный файл
@ -0,0 +1,113 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Generate AMITT github files\n",
|
||||
"\n",
|
||||
"Generate all the AMITT github files from the AMITT master spreadsheet, being careful to reatin any comments people have made below the \"don't write above this\" line in them. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_red_framework.md\n",
|
||||
"updated ../amitt_red_framework_clickable.html\n",
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n",
|
||||
"updated ../phases_index.md\n",
|
||||
"updated ../tactics_index.md\n",
|
||||
"updated ../techniques_index.md\n",
|
||||
"updated ../tasks_index.md\n",
|
||||
"updated ../incidents_index.md\n",
|
||||
"updated ../counters_index.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"updated ../metatechniques_index.md\n",
|
||||
"updated ../actortypes_index.md\n",
|
||||
"Updating ../actortypes/A001.md\n",
|
||||
"Updating ../actortypes/A002.md\n",
|
||||
"Updating ../actortypes/A003.md\n",
|
||||
"Updating ../actortypes/A004.md\n",
|
||||
"Updating ../actortypes/A005.md\n",
|
||||
"Updating ../actortypes/A006.md\n",
|
||||
"Updating ../actortypes/A007.md\n",
|
||||
"Updating ../actortypes/A008.md\n",
|
||||
"Updating ../actortypes/A009.md\n",
|
||||
"Updating ../actortypes/A010.md\n",
|
||||
"Updating ../actortypes/A011.md\n",
|
||||
"Updating ../actortypes/A012.md\n",
|
||||
"Updating ../actortypes/A013.md\n",
|
||||
"Updating ../actortypes/A014.md\n",
|
||||
"Updating ../actortypes/A015.md\n",
|
||||
"Updating ../actortypes/A016.md\n",
|
||||
"Updating ../actortypes/A017.md\n",
|
||||
"Updating ../actortypes/A018.md\n",
|
||||
"Updating ../actortypes/A019.md\n",
|
||||
"Updating ../actortypes/A020.md\n",
|
||||
"Updating ../actortypes/A021.md\n",
|
||||
"Updating ../actortypes/A022.md\n",
|
||||
"Updating ../actortypes/A023.md\n",
|
||||
"Updating ../actortypes/A024.md\n",
|
||||
"Updating ../actortypes/A025.md\n",
|
||||
"Updating ../actortypes/A026.md\n",
|
||||
"Updating ../actortypes/A027.md\n",
|
||||
"Updating ../actortypes/A028.md\n",
|
||||
"Updating ../actortypes/A029.md\n",
|
||||
"Updating ../actortypes/A030.md\n",
|
||||
"Updating ../actortypes/A031.md\n",
|
||||
"Updating ../actortypes/A032.md\n",
|
||||
"Updating ../actortypes/A033.md\n",
|
||||
"updated ../responsetype_index.md\n",
|
||||
"updated ../detections_index.md\n",
|
||||
"updated ../tactics_by_responsetype_table.md\n",
|
||||
"updated ../metatechniques_by_responsetype_table.md\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()\n",
|
||||
"amitt.generate_and_write_datafiles()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
Двоичный файл не отображается.
Двоичные данные
HTML_GENERATING_CODE/amitt_sqlite.db
Обычный файл
Двоичные данные
HTML_GENERATING_CODE/amitt_sqlite.db
Обычный файл
Двоичный файл не отображается.
@ -29,7 +29,7 @@ Reads 1 excel file: ../AMITT_MASTER_DATA/AMITT_TTPs_MASTER.xlsx with sheets:
|
||||
* incidenttechniques
|
||||
* tactics
|
||||
* countermeasures
|
||||
* actors
|
||||
* actortypes
|
||||
* resources
|
||||
* responsetypes
|
||||
|
||||
@ -95,13 +95,13 @@ class Amitt:
|
||||
self.df_techniques = metadata['techniques']
|
||||
self.df_tasks = metadata['tasks']
|
||||
self.df_incidents = metadata['incidents']
|
||||
self.df_counters = metadata['countermeasures'].sort_values('id')
|
||||
self.df_counters = metadata['countermeasures'].sort_values('amitt_id')
|
||||
self.df_counters[['tactic_id', 'tactic_name']] = self.df_counters['tactic'].str.split(' ', 1, expand=True)
|
||||
self.df_counters[['metatechnique_id', 'metatechnique_name']] = self.df_counters['metatechnique'].str.split(' ', 1, expand=True)
|
||||
self.df_detections = metadata['detections']
|
||||
self.df_detections[['tactic_id', 'tactic_name']] = self.df_detections['tactic'].str.split(' ', 1, expand=True)
|
||||
# self.df_detections[['metatechnique_id', 'metatechnique_name']] = self.df_detections['metatechnique'].str.split(' ', 1, expand=True) #FIXIT
|
||||
self.df_actors = metadata['actors']
|
||||
self.df_actortypes = metadata['actortypes']
|
||||
self.df_resources = metadata['resources']
|
||||
self.df_responsetypes = metadata['responsetypes']
|
||||
self.df_metatechniques = metadata['metatechniques']
|
||||
@ -109,10 +109,10 @@ class Amitt:
|
||||
self.df_tactics = metadata['tactics']
|
||||
|
||||
# Add columns containing lists of techniques and counters to the tactics dataframe
|
||||
self.df_techniques_per_tactic = self.df_techniques.groupby('tactic_id')['id'].apply(list).reset_index().rename({'id':'technique_ids'}, axis=1)
|
||||
self.df_counters_per_tactic = self.df_counters.groupby('tactic_id')['id'].apply(list).reset_index().rename({'id':'counter_ids'}, axis=1)
|
||||
self.df_tactics = self.df_tactics.merge(self.df_techniques_per_tactic, left_on='id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1)
|
||||
self.df_tactics = self.df_tactics.merge(self.df_counters_per_tactic, left_on='id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1)
|
||||
self.df_techniques_per_tactic = self.df_techniques.groupby('tactic_id')['amitt_id'].apply(list).reset_index().rename({'amitt_id':'technique_ids'}, axis=1)
|
||||
self.df_counters_per_tactic = self.df_counters.groupby('tactic_id')['amitt_id'].apply(list).reset_index().rename({'amitt_id':'counter_ids'}, axis=1)
|
||||
self.df_tactics = self.df_tactics.merge(self.df_techniques_per_tactic, left_on='amitt_id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1)
|
||||
self.df_tactics = self.df_tactics.merge(self.df_counters_per_tactic, left_on='amitt_id', right_on='tactic_id', how='left').fillna('').drop('tactic_id', axis=1)
|
||||
|
||||
# Add simple dictionaries (id -> name) for objects
|
||||
self.phases = self.make_object_dictionary(self.df_phases)
|
||||
@ -120,38 +120,38 @@ class Amitt:
|
||||
self.techniques = self.make_object_dictionary(self.df_techniques)
|
||||
self.counters = self.make_object_dictionary(self.df_counters)
|
||||
self.metatechniques = self.make_object_dictionary(self.df_metatechniques)
|
||||
self.actors = self.make_object_dictionary(self.df_actors)
|
||||
self.actortypes = self.make_object_dictionary(self.df_actortypes)
|
||||
self.resources = self.make_object_dictionary(self.df_resources)
|
||||
|
||||
# Create the data table for each framework file
|
||||
self.num_tactics = len(self.df_tactics)
|
||||
|
||||
# Create counters cross-tables
|
||||
self.cross_counterid_techniqueid = self.create_cross_table(self.df_counters[['id', 'techniques']],
|
||||
self.cross_counterid_techniqueid = self.create_cross_table(self.df_counters[['amitt_id', 'techniques']],
|
||||
'techniques', 'technique', '\n')
|
||||
self.cross_counterid_resourceid = self.create_cross_table(self.df_counters[['id', 'resources_needed']],
|
||||
self.cross_counterid_resourceid = self.create_cross_table(self.df_counters[['amitt_id', 'resources_needed']],
|
||||
'resources_needed', 'resource', ',')
|
||||
self.cross_counterid_actorid = self.create_cross_table(self.df_counters[['id', 'actors']],
|
||||
'actors', 'actor', ',')
|
||||
self.cross_counterid_actortypeid = self.create_cross_table(self.df_counters[['amitt_id', 'actortypes']],
|
||||
'actortypes', 'actortype', ',')
|
||||
|
||||
|
||||
def create_incident_technique_crosstable(self, it_metadata):
|
||||
# Generate full cross-table between incidents and techniques
|
||||
|
||||
it = it_metadata
|
||||
it.index=it['id']
|
||||
it = it['technique_ids'].str.split(',').apply(lambda x: pd.Series(x)).stack().reset_index(level=1, drop=True).to_frame('technique_id').reset_index().merge(it.drop('id', axis=1).reset_index()).drop('technique_ids', axis=1)
|
||||
it = it.merge(self.df_incidents[['id','name']],
|
||||
left_on='incident_id', right_on='id',
|
||||
it.index=it['amitt_id']
|
||||
it = it['technique_ids'].str.split(',').apply(lambda x: pd.Series(x)).stack().reset_index(level=1, drop=True).to_frame('technique_id').reset_index().merge(it.drop('amitt_id', axis=1).reset_index()).drop('technique_ids', axis=1)
|
||||
it = it.merge(self.df_incidents[['amitt_id','name']],
|
||||
left_on='incident_id', right_on='amitt_id',
|
||||
suffixes=['','_incident']).drop('incident_id', axis=1)
|
||||
it = it.merge(self.df_techniques[['id','name']],
|
||||
left_on='technique_id', right_on='id',
|
||||
it = it.merge(self.df_techniques[['amitt_id','name']],
|
||||
left_on='technique_id', right_on='amitt_id',
|
||||
suffixes=['','_technique']).drop('technique_id', axis=1)
|
||||
return(it)
|
||||
|
||||
|
||||
def make_object_dictionary(self, df):
|
||||
return(pd.Series(df.name.values,index=df.id).to_dict())
|
||||
return(pd.Series(df.name.values,index=df.amitt_id).to_dict())
|
||||
|
||||
|
||||
def create_cross_table(self, df, col, newcol, divider=','):
|
||||
@ -176,10 +176,10 @@ class Amitt:
|
||||
| -------- | -------------------- |
|
||||
'''
|
||||
incirow = '| [{0} {1}](../incidents/{0}.md) | {2} |\n'
|
||||
its = self.it[self.it['id_technique']==techniqueid]
|
||||
for index, row in its[['id_incident', 'name_incident']].drop_duplicates().sort_values('id_incident').iterrows():
|
||||
techstring = ', '.join(its[its['id_incident']==row['id_incident']]['name'].to_list())
|
||||
incidentstr += incirow.format(row['id_incident'], row['name_incident'], techstring)
|
||||
its = self.it[self.it['amitt_id_technique']==techniqueid]
|
||||
for index, row in its[['amitt_id_incident', 'name_incident']].drop_duplicates().sort_values('amitt_id_incident').iterrows():
|
||||
techstring = ', '.join(its[its['amitt_id_incident']==row['amitt_id_incident']]['name'].to_list())
|
||||
incidentstr += incirow.format(row['amitt_id_incident'], row['name_incident'], techstring)
|
||||
return incidentstr
|
||||
|
||||
|
||||
@ -190,10 +190,10 @@ class Amitt:
|
||||
| --------- | ------------------------- |
|
||||
'''
|
||||
techrow = '| [{0} {1}](../techniques/{0}.md) | {2} {3} |\n'
|
||||
techlist = self.it[self.it['id_incident'] == incidentid]
|
||||
for index, row in techlist.sort_values('id_technique').iterrows():
|
||||
techstr += techrow.format(row['id_technique'], row['name_technique'],
|
||||
row['id'], row['name'])
|
||||
techlist = self.it[self.it['amitt_id_incident'] == incidentid]
|
||||
for index, row in techlist.sort_values('amitt_id_technique').iterrows():
|
||||
techstr += techrow.format(row['amitt_id_technique'], row['name_technique'],
|
||||
row['amitt_id'], row['name'])
|
||||
return techstr
|
||||
|
||||
|
||||
@ -205,8 +205,8 @@ class Amitt:
|
||||
'''
|
||||
tactic_tasks = self.df_tasks[self.df_tasks['tactic_id']==tactic_id]
|
||||
task_string = '| [{0} {1}](../tasks/{0}.md) |\n'
|
||||
for index, row in tactic_tasks.sort_values('id').iterrows():
|
||||
table_string += task_string.format(row['id'], row['name'])
|
||||
for index, row in tactic_tasks.sort_values('amitt_id').iterrows():
|
||||
table_string += task_string.format(row['amitt_id'], row['name'])
|
||||
return table_string
|
||||
|
||||
|
||||
@ -218,8 +218,8 @@ class Amitt:
|
||||
'''
|
||||
tactic_techniques = self.df_techniques[self.df_techniques['tactic_id']==tactic_id]
|
||||
row_string = '| [{0} {1}](../techniques/{0}.md) |\n'
|
||||
for index, row in tactic_techniques.sort_values('id').iterrows():
|
||||
table_string += row_string.format(row['id'], row['name'])
|
||||
for index, row in tactic_techniques.sort_values('amitt_id').iterrows():
|
||||
table_string += row_string.format(row['amitt_id'], row['name'])
|
||||
return table_string
|
||||
|
||||
|
||||
@ -230,8 +230,8 @@ class Amitt:
|
||||
'''
|
||||
object_counters = self.df_counters[self.df_counters[objectcolumn]==object_id]
|
||||
row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n'
|
||||
for index, row in object_counters.sort_values(['responsetype', 'id']).iterrows():
|
||||
table_string += row_string.format(row['id'], row['name'], row['responsetype'])
|
||||
for index, row in object_counters.sort_values(['responsetype', 'amitt_id']).iterrows():
|
||||
table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype'])
|
||||
return table_string
|
||||
|
||||
def create_technique_counters_string(self, technique_id):
|
||||
@ -240,34 +240,34 @@ class Amitt:
|
||||
| -------- | -------------- |
|
||||
'''
|
||||
technique_counters = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['technique_id']==technique_id]
|
||||
technique_counters = pd.merge(technique_counters, self.df_counters[['id', 'name', 'responsetype']])
|
||||
technique_counters = pd.merge(technique_counters, self.df_counters[['amitt_id', 'name', 'responsetype']])
|
||||
row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n'
|
||||
for index, row in technique_counters.sort_values('id').iterrows():
|
||||
table_string += row_string.format(row['id'], row['name'], row['responsetype'])
|
||||
for index, row in technique_counters.sort_values('amitt_id').iterrows():
|
||||
table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype'])
|
||||
return table_string
|
||||
|
||||
def create_counter_actors_string(self, counter_id):
|
||||
def create_counter_actortypes_string(self, counter_id):
|
||||
table_string = '''
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
'''
|
||||
counter_actors = self.cross_counterid_actorid[self.cross_counterid_actorid['id']==counter_id]
|
||||
counter_actors = pd.merge(counter_actors, self.df_actors[['id', 'name', 'sector']], left_on='actor_id', right_on='id')
|
||||
row_string = '| [{0} {1}](../actors/{0}.md) | {2} |\n'
|
||||
for index, row in counter_actors.sort_values('actor_id').iterrows():
|
||||
table_string += row_string.format(row['actor_id'], row['name'], row['sector'])
|
||||
counter_actortypes = self.cross_counterid_actortypeid[self.cross_counterid_actortypeid['amitt_id']==counter_id]
|
||||
counter_actortypes = pd.merge(counter_actortypes, self.df_actortypes[['amitt_id', 'name', 'sector']], left_on='actortype_id', right_on='amitt_id')
|
||||
row_string = '| [{0} {1}](../actortypes/{0}.md) | {2} |\n'
|
||||
for index, row in counter_actortypes.sort_values('actortype_id').iterrows():
|
||||
table_string += row_string.format(row['actortype_id'], row['name'], row['sector'])
|
||||
return table_string
|
||||
|
||||
def create_actor_counters_string(self, actor_id):
|
||||
def create_actortype_counters_string(self, actortype_id):
|
||||
table_string = '''
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
'''
|
||||
actor_counters = self.cross_counterid_actorid[self.cross_counterid_actorid['actor_id']==actor_id]
|
||||
actor_counters = pd.merge(actor_counters, self.df_counters[['id', 'name', 'responsetype']])
|
||||
actortype_counters = self.cross_counterid_actortypeid[self.cross_counterid_actortypeid['actortype_id']==actortype_id]
|
||||
actortype_counters = pd.merge(actortype_counters, self.df_counters[['amitt_id', 'name', 'responsetype']])
|
||||
row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n'
|
||||
for index, row in actor_counters.sort_values('id').iterrows():
|
||||
table_string += row_string.format(row['id'], row['name'], row['responsetype'])
|
||||
for index, row in actortype_counters.sort_values('amitt_id').iterrows():
|
||||
table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype'])
|
||||
return table_string
|
||||
|
||||
def create_resource_counters_string(self, resource_id):
|
||||
@ -276,10 +276,10 @@ class Amitt:
|
||||
| -------- | -------------- |
|
||||
'''
|
||||
resource_counters = self.cross_counterid_resourceid[self.cross_counterid_resourceid['resource_id']==resource_id]
|
||||
resource_counters = pd.merge(resource_counters, self.df_counters[['id', 'name', 'responsetype']])
|
||||
resource_counters = pd.merge(resource_counters, self.df_counters[['amitt_id', 'name', 'responsetype']])
|
||||
row_string = '| [{0} {1}](../counters/{0}.md) | {2} |\n'
|
||||
for index, row in actor_counters.sort_values('id').iterrows():
|
||||
table_string += row_string.format(row['id'], row['name'], row['responsetype'])
|
||||
for index, row in actortype_counters.sort_values('amitt_id').iterrows():
|
||||
table_string += row_string.format(row['amitt_id'], row['name'], row['responsetype'])
|
||||
return table_string
|
||||
|
||||
|
||||
@ -290,8 +290,8 @@ class Amitt:
|
||||
'''
|
||||
# tactic_counters = self.df_counters[self.df_counters['tactic_id']==tactic_id]
|
||||
# row_string = '| {0} | [{1} {2}](../counters/{1}.md) |\n'
|
||||
# for index, row in tactic_counters.sort_values(['responsetype', 'id']).iterrows():
|
||||
# table_string += row_string.format(row['responsetype'], row['id'], row['name'])
|
||||
# for index, row in tactic_counters.sort_values(['responsetype', 'amitt_id']).iterrows():
|
||||
# table_string += row_string.format(row['responsetype'], row['amitt_id'], row['name'])
|
||||
return table_string
|
||||
|
||||
def create_counter_techniques_string(self, counter_id):
|
||||
@ -299,10 +299,10 @@ class Amitt:
|
||||
| Counters these Techniques |
|
||||
| ------------------------- |
|
||||
'''
|
||||
counter_techniques = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['id']==counter_id]
|
||||
counter_techniques = pd.merge(counter_techniques, self.df_techniques[['id', 'name']].rename(columns={'id': 'technique_id'}))
|
||||
counter_techniques = self.cross_counterid_techniqueid[self.cross_counterid_techniqueid['amitt_id']==counter_id]
|
||||
counter_techniques = pd.merge(counter_techniques, self.df_techniques[['amitt_id', 'name']].rename(columns={'amitt_id': 'technique_id'}))
|
||||
row_string = '| [{0} {1}](../techniques/{0}.md) |\n'
|
||||
for index, row in counter_techniques.sort_values('id').iterrows():
|
||||
for index, row in counter_techniques.sort_values('amitt_id').iterrows():
|
||||
table_string += row_string.format(row['technique_id'], row['name'])
|
||||
return table_string
|
||||
|
||||
@ -313,15 +313,15 @@ class Amitt:
|
||||
'''
|
||||
# tactic_counters = self.df_counters[self.df_counters['tactic_id']==tactic_id]
|
||||
# row_string = '| {0} | [{1} {2}](../counters/{1}.md) |\n'
|
||||
# for index, row in tactic_counters.sort_values(['responsetype', 'id']).iterrows():
|
||||
# table_string += row_string.format(row['responsetype'], row['id'], row['name'])
|
||||
# for index, row in tactic_counters.sort_values(['responsetype', 'amitt_id']).iterrows():
|
||||
# table_string += row_string.format(row['responsetype'], row['amitt_id'], row['name'])
|
||||
return table_string
|
||||
|
||||
|
||||
def write_object_index_to_file(self, objectname, objectcols, dfobject, outfile):
|
||||
''' Write HTML version of incident list to markdown file
|
||||
|
||||
Assumes that dfobject has columns named 'id' and 'name'
|
||||
Assumes that dfobject has columns named 'amitt_id' and 'name'
|
||||
'''
|
||||
|
||||
html = '''# AMITT {}:
|
||||
@ -331,14 +331,14 @@ class Amitt:
|
||||
'''.format(objectname.capitalize())
|
||||
|
||||
# Create header row
|
||||
html += '<th>{}</th>\n'.format('id')
|
||||
html += '<th>{}</th>\n'.format('amitt_id')
|
||||
html += ''.join(['<th>{}</th>\n'.format(col) for col in objectcols])
|
||||
html += '</tr>\n'
|
||||
|
||||
# Add row for each object
|
||||
for index, row in dfobject[dfobject['name'].notnull()].iterrows():
|
||||
html += '<tr>\n'
|
||||
html += '<td><a href="{0}/{1}.md">{1}</a></td>\n'.format(objectname, row['id'])
|
||||
html += '<td><a href="{0}/{1}.md">{1}</a></td>\n'.format(objectname, row['amitt_id'])
|
||||
html += ''.join(['<td>{}</td>\n'.format(row[col]) for col in objectcols])
|
||||
html += '</tr>\n'
|
||||
html += '</table>\n'
|
||||
@ -379,7 +379,7 @@ class Amitt:
|
||||
'incident': self.df_incidents,
|
||||
'counter': self.df_counters,
|
||||
'metatechnique': self.df_metatechniques,
|
||||
'actor': self.df_actors,
|
||||
'actortype': self.df_actortypes,
|
||||
#'resource': self.df_resources,
|
||||
#'responsetype': self.df_responsetypes,
|
||||
#'detection': self.df_detections
|
||||
@ -390,12 +390,12 @@ class Amitt:
|
||||
'tactic': ['name', 'summary', 'phase_id'],
|
||||
'technique': ['name', 'summary', 'tactic_id'],
|
||||
'task': ['name', 'summary', 'tactic_id'],
|
||||
'incident': ['name', 'type', 'Year Started', 'To country', 'Found via'],
|
||||
'incident': ['name', 'type', 'year_started', 'to_country', 'found_via'],
|
||||
'counter': ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'],
|
||||
'detection': ['name', 'summary', 'metatechnique', 'tactic', 'responsetype'],
|
||||
'responsetype': ['name', 'summary'],
|
||||
'metatechnique': ['name', 'summary'],
|
||||
'actor': ['name', 'summary', 'sector'],
|
||||
'actortype': ['name', 'summary', 'sector'],
|
||||
'resource': ['name', 'summary', 'resource type']
|
||||
}
|
||||
|
||||
@ -417,7 +417,7 @@ class Amitt:
|
||||
# First read in the file - if it exists - and grab everything
|
||||
# below the "do not write about this line". Will write this
|
||||
# out below new metadata.
|
||||
datafile = '../{}/{}.md'.format(objecttypeplural, row['id'])
|
||||
datafile = '../{}/{}.md'.format(objecttypeplural, row['amitt_id'])
|
||||
oldmetatext = ''
|
||||
if os.path.exists(datafile):
|
||||
with open(datafile) as f:
|
||||
@ -434,52 +434,52 @@ class Amitt:
|
||||
|
||||
# Now populate datafiles with new metadata plus old userdata
|
||||
if objecttype == 'phase':
|
||||
metatext = template.format(type='Phase', id=row['id'], name=row['name'], summary=row['summary'])
|
||||
metatext = template.format(type='Phase', id=row['amitt_id'], name=row['name'], summary=row['summary'])
|
||||
if objecttype == 'tactic':
|
||||
metatext = template.format(type = 'Tactic', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type = 'Tactic', id=row['amitt_id'], name=row['name'],
|
||||
phase=row['phase_id'], summary=row['summary'],
|
||||
tasks=self.create_tactic_tasks_string(row['id']),
|
||||
techniques=self.create_tactic_techniques_string(row['id']),
|
||||
counters=self.create_object_counters_string('tactic_id', row['id']))
|
||||
tasks=self.create_tactic_tasks_string(row['amitt_id']),
|
||||
techniques=self.create_tactic_techniques_string(row['amitt_id']),
|
||||
counters=self.create_object_counters_string('tactic_id', row['amitt_id']))
|
||||
if objecttype == 'task':
|
||||
metatext = template.format(type='Task', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type='Task', id=row['amitt_id'], name=row['name'],
|
||||
tactic=row['tactic_id'], summary=row['summary'])
|
||||
if objecttype == 'technique':
|
||||
metatext = template.format(type = 'Technique', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type = 'Technique', id=row['amitt_id'], name=row['name'],
|
||||
tactic=row['tactic_id'], summary=row['summary'],
|
||||
incidents=self.create_technique_incidents_string(row['id']),
|
||||
counters=self.create_technique_counters_string(row['id']))
|
||||
incidents=self.create_technique_incidents_string(row['amitt_id']),
|
||||
counters=self.create_technique_counters_string(row['amitt_id']))
|
||||
if objecttype == 'counter':
|
||||
metatext = template.format(type = 'Counter', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type = 'Counter', id=row['amitt_id'], name=row['name'],
|
||||
tactic=row['tactic_id'], summary=row['summary'],
|
||||
playbooks=row['playbooks'], metatechnique=row['metatechnique'],
|
||||
actors=self.create_counter_actors_string(row['id']),
|
||||
playbooks='', metatechnique=row['metatechnique'],
|
||||
actortypes=self.create_counter_actortypes_string(row['amitt_id']),
|
||||
resources_needed=row['resources_needed'],
|
||||
tactics=self.create_counter_tactics_string(row['id']),
|
||||
techniques=self.create_counter_techniques_string(row['id']),
|
||||
incidents=self.create_counter_incidents_string(row['id']))
|
||||
tactics=self.create_counter_tactics_string(row['amitt_id']),
|
||||
techniques=self.create_counter_techniques_string(row['amitt_id']),
|
||||
incidents=self.create_counter_incidents_string(row['amitt_id']))
|
||||
if objecttype == 'incident':
|
||||
metatext = template.format(type = 'Incident', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type = 'Incident', id=row['amitt_id'], name=row['name'],
|
||||
incidenttype=row['type'], summary=row['summary'],
|
||||
yearstarted=row['Year Started'],
|
||||
fromcountry=row['From country'],
|
||||
tocountry=row['To country'],
|
||||
foundvia=row['Found via'],
|
||||
dateadded=row['When added'],
|
||||
techniques=self.create_incident_techniques_string(row['id']))
|
||||
if objecttype == 'actor':
|
||||
metatext = template.format(type = 'Actor', id=row['id'], name=row['name'],
|
||||
yearstarted=row['year_started'],
|
||||
fromcountry=row['from_country'],
|
||||
tocountry=row['to_country'],
|
||||
foundvia=row['found_via'],
|
||||
dateadded=row['when_added'],
|
||||
techniques=self.create_incident_techniques_string(row['amitt_id']))
|
||||
if objecttype == 'actortype':
|
||||
metatext = template.format(type = 'Actor', id=row['amitt_id'], name=row['name'],
|
||||
summary=row['summary'], sector=row['sector'],
|
||||
viewpoint=row['viewpoint'],
|
||||
counters=self.create_actor_counters_string(row['id']))
|
||||
counters=self.create_actortype_counters_string(row['amitt_id']))
|
||||
if objecttype == 'resource':
|
||||
metatext = template.format(type = 'Resource', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type = 'Resource', id=row['amitt_id'], name=row['name'],
|
||||
summary=row['summary'], resource_type=row['resource_type'],
|
||||
counters=self.create_resource_counters_string(row['id']))
|
||||
counters=self.create_resource_counters_string(row['amitt_id']))
|
||||
if objecttype == 'metatechnique':
|
||||
metatext = template.format(type='Metatechnique', id=row['id'], name=row['name'],
|
||||
metatext = template.format(type='Metatechnique', id=row['amitt_id'], name=row['name'],
|
||||
summary=row['summary'],
|
||||
counters=self.create_object_counters_string('metatechnique_id', row['id']))
|
||||
counters=self.create_object_counters_string('metatechnique_id', row['amitt_id']))
|
||||
|
||||
# Make sure the user data goes in
|
||||
if (metatext + warntext) != oldmetatext:
|
||||
@ -502,7 +502,7 @@ class Amitt:
|
||||
arr = [['' for i in range(self.num_tactics)] for j in range(numrows)]
|
||||
for index, tactic in self.df_tactics.iterrows():
|
||||
arr[0][index] = tactic['phase_id']
|
||||
arr[1][index] = tactic['id']
|
||||
arr[1][index] = tactic['amitt_id']
|
||||
if tactic[ttp_col] == '':
|
||||
continue
|
||||
for index2, technique in enumerate(tactic[ttp_col]):
|
||||
@ -643,14 +643,14 @@ function handleTechniqueClick(box) {{
|
||||
|
||||
|
||||
def print_technique_incidents(self):
|
||||
for id_technique in self.df_techniques['id'].to_list():
|
||||
for id_technique in self.df_techniques['amitt_id'].to_list():
|
||||
print('{}\n{}'.format(id_technique,
|
||||
self.create_incidentstring(id_technique)))
|
||||
return
|
||||
|
||||
|
||||
def print_incident_techniques(self):
|
||||
for id_incident in self.df_incidents['id'].to_list():
|
||||
for id_incident in self.df_incidents['amitt_id'].to_list():
|
||||
print('{}\n{}'.format(id_incident,
|
||||
self.create_techstring(id_incident)))
|
||||
return
|
||||
@ -669,10 +669,10 @@ function handleTechniqueClick(box) {{
|
||||
|
||||
def analyse_coverage(self, technique_id_list, counter_id_list):
|
||||
ct = self.cross_counterid_techniqueid.copy()
|
||||
ct = ct[ct['technique_id'].isin(self.df_techniques['id'].to_list()) & ct['id'].isin(self.df_counters['id'].to_list())]
|
||||
ct = ct[ct['technique_id'].isin(self.df_techniques['amitt_id'].to_list()) & ct['amitt_id'].isin(self.df_counters['amitt_id'].to_list())]
|
||||
possible_counters_for_techniques = ct[ct['technique_id'].isin(technique_id_list)]
|
||||
possible_techniques_for_counters = ct[ct['technique_id'].isin(counter_id_list)]
|
||||
coverage = ct[(ct['id'].isin(counter_id_list)) & (ct['technique_id'].isin(technique_id_list))]
|
||||
coverage = ct[(ct['amitt_id'].isin(counter_id_list)) & (ct['technique_id'].isin(technique_id_list))]
|
||||
return coverage, possible_counters_for_techniques, possible_techniques_for_counters
|
||||
|
||||
|
||||
@ -714,7 +714,7 @@ function handleTechniqueClick(box) {{
|
||||
''' Write course of action matrix for tactics vs responsetype
|
||||
'''
|
||||
|
||||
counts_table = pd.pivot_table(self.df_counters[['responsetype', 'tactic_id','id']],
|
||||
counts_table = pd.pivot_table(self.df_counters[['responsetype', 'tactic_id','amitt_id']],
|
||||
index='tactic_id', columns='responsetype', aggfunc=len,
|
||||
fill_value=0)
|
||||
counts_table['TOTALS'] = counts_table.sum(axis=1)
|
||||
@ -725,7 +725,7 @@ function handleTechniqueClick(box) {{
|
||||
|
||||
def write_metatechniques_responsetype_table_file(self, outfile = '../metatechniques_by_responsetype_table.md'):
|
||||
|
||||
counts_table = pd.pivot_table(self.df_counters[['responsetype', 'metatechnique_id','id']],
|
||||
counts_table = pd.pivot_table(self.df_counters[['responsetype', 'metatechnique_id','amitt_id']],
|
||||
index='metatechnique_id', columns='responsetype', aggfunc=len,
|
||||
fill_value=0)
|
||||
counts_table['TOTALS'] = counts_table.sum(axis=1)
|
||||
@ -737,7 +737,7 @@ function handleTechniqueClick(box) {{
|
||||
def write_resources_responsetype_table_file(self, outfile = '../resources_by_responsetype_table.md'):
|
||||
|
||||
# dirty hack because there are lots of -blanks?- in the cross-table that should have been filtered out
|
||||
crosstable_with_responsetype = self.cross_counterid_resourceid.merge(self.df_counters[['id', 'responsetype']])
|
||||
crosstable_with_responsetype = self.cross_counterid_resourceid.merge(self.df_counters[['amitt_id', 'responsetype']])
|
||||
crosstable_with_responsetype = crosstable_with_responsetype[crosstable_with_responsetype['responsetype'].isin(self.resources.keys())]
|
||||
counts_table = pd.pivot_table(crosstable_with_responsetype,
|
||||
index='resource_id', columns='responsetype', aggfunc=len,
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
* **Belongs to tactic stage**: {tactic}
|
||||
|
||||
{actors}
|
||||
{actortypes}
|
||||
|
||||
{tactics}
|
||||
|
||||
|
||||
@ -1,203 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"updated ../amitt_red_framework.md\n",
|
||||
"updated ../amitt_red_framework_clickable.html\n",
|
||||
"updated ../amitt_blue_framework.md\n",
|
||||
"updated ../amitt_blue_framework_clickable.html\n",
|
||||
"updated ../phases_index.md\n",
|
||||
"updated ../tactics_index.md\n",
|
||||
"Updating ../tactics/TA01.md\n",
|
||||
"Updating ../tactics/TA06.md\n",
|
||||
"Updating ../tactics/TA07.md\n",
|
||||
"Updating ../tactics/TA08.md\n",
|
||||
"Updating ../tactics/TA09.md\n",
|
||||
"Updating ../tactics/TA11.md\n",
|
||||
"Updating ../tactics/TA12.md\n",
|
||||
"updated ../techniques_index.md\n",
|
||||
"Updating ../techniques/T0001.md\n",
|
||||
"Updating ../techniques/T0002.md\n",
|
||||
"Updating ../techniques/T0003.md\n",
|
||||
"Updating ../techniques/T0007.md\n",
|
||||
"Updating ../techniques/T0008.md\n",
|
||||
"Updating ../techniques/T0009.md\n",
|
||||
"Updating ../techniques/T0010.md\n",
|
||||
"Updating ../techniques/T0011.md\n",
|
||||
"Updating ../techniques/T0013.md\n",
|
||||
"Updating ../techniques/T0014.md\n",
|
||||
"Updating ../techniques/T0015.md\n",
|
||||
"Updating ../techniques/T0016.md\n",
|
||||
"Updating ../techniques/T0017.md\n",
|
||||
"Updating ../techniques/T0018.md\n",
|
||||
"Updating ../techniques/T0020.md\n",
|
||||
"Updating ../techniques/T0021.md\n",
|
||||
"Updating ../techniques/T0022.md\n",
|
||||
"Updating ../techniques/T0024.md\n",
|
||||
"Updating ../techniques/T0025.md\n",
|
||||
"Updating ../techniques/T0026.md\n",
|
||||
"Updating ../techniques/T0027.md\n",
|
||||
"Updating ../techniques/T0029.md\n",
|
||||
"Updating ../techniques/T0039.md\n",
|
||||
"Updating ../techniques/T0044.md\n",
|
||||
"Updating ../techniques/T0045.md\n",
|
||||
"Updating ../techniques/T0046.md\n",
|
||||
"Updating ../techniques/T0048.md\n",
|
||||
"Updating ../techniques/T0049.md\n",
|
||||
"Updating ../techniques/T0051.md\n",
|
||||
"Updating ../techniques/T0052.md\n",
|
||||
"Updating ../techniques/T0053.md\n",
|
||||
"Updating ../techniques/T0054.md\n",
|
||||
"Updating ../techniques/T0055.md\n",
|
||||
"Updating ../techniques/T0056.md\n",
|
||||
"Updating ../techniques/T0057.md\n",
|
||||
"Updating ../techniques/T0061.md\n",
|
||||
"Updating ../techniques/T0063.md\n",
|
||||
"updated ../tasks_index.md\n",
|
||||
"updated ../incidents_index.md\n",
|
||||
"updated ../counters_index.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"Updating ../counters/C00006.md\n",
|
||||
"Updating ../counters/C00012.md\n",
|
||||
"Updating ../counters/C00026.md\n",
|
||||
"Updating ../counters/C00030.md\n",
|
||||
"Updating ../counters/C00056.md\n",
|
||||
"Updating ../counters/C00073.md\n",
|
||||
"Updating ../counters/C00090.md\n",
|
||||
"Updating ../counters/C00101.md\n",
|
||||
"Updating ../counters/C00103.md\n",
|
||||
"Updating ../counters/C00107.md\n",
|
||||
"Updating ../counters/C00111.md\n",
|
||||
"Updating ../counters/C00117.md\n",
|
||||
"Updating ../counters/C00122.md\n",
|
||||
"Updating ../counters/C00139.md\n",
|
||||
"Updating ../counters/C00144.md\n",
|
||||
"Updating ../counters/C00149.md\n",
|
||||
"Updating ../counters/C00172.md\n",
|
||||
"Updating ../counters/C00174.md\n",
|
||||
"Updating ../counters/C00178.md\n",
|
||||
"Updating ../counters/C00182.md\n",
|
||||
"Updating ../counters/C00188.md\n",
|
||||
"Updating ../counters/C00190.md\n",
|
||||
"Updating ../counters/C00195.md\n",
|
||||
"Updating ../counters/C00200.md\n",
|
||||
"Updating ../counters/C00211.md\n",
|
||||
"updated ../metatechniques_index.md\n",
|
||||
"Updating ../metatechniques/M001.md\n",
|
||||
"Updating ../metatechniques/M002.md\n",
|
||||
"Updating ../metatechniques/M003.md\n",
|
||||
"Updating ../metatechniques/M004.md\n",
|
||||
"Updating ../metatechniques/M005.md\n",
|
||||
"Updating ../metatechniques/M007.md\n",
|
||||
"Updating ../metatechniques/M008.md\n",
|
||||
"Updating ../metatechniques/M010.md\n",
|
||||
"updated ../actors_index.md\n",
|
||||
"Updating ../actors/A006.md\n",
|
||||
"Updating ../actors/A018.md\n",
|
||||
"Updating ../actors/A020.md\n",
|
||||
"Updating ../actors/A021.md\n",
|
||||
"Updating ../actors/A027.md\n",
|
||||
"Updating ../actors/A028.md\n",
|
||||
"Updating ../actors/A031.md\n",
|
||||
"updated ../responsetype_index.md\n",
|
||||
"updated ../detections_index.md\n",
|
||||
"updated ../tactics_by_responsetype_table.md\n",
|
||||
"updated ../metatechniques_by_responsetype_table.md\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()\n",
|
||||
"amitt.generate_and_write_datafiles()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Check which amitt variables we can see from here\n",
|
||||
"print('{}'.format(vars(amitt).keys()))\n",
|
||||
"vars(amitt)['tactics']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# TEST AREA"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from generate_amitt_ttps import Amitt\n",
|
||||
"amitt = Amitt()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"ct = amitt.cross_counterid_techniqueid\n",
|
||||
"ct['Weight'] = 1\n",
|
||||
"ct = ct[ct['technique_id'].str.len() > 0]\n",
|
||||
"ct.to_csv('../visualisations/cross_counterid_techniqueid.csv', index=False, header=['Source','Target', 'Weight'])\n",
|
||||
"ct"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
16
actortypes/A001.md
Обычный файл
16
actortypes/A001.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A001: data scientist
|
||||
|
||||
* **Summary:** Person who can wrangle data, implement machine learning algorithms etc
|
||||
|
||||
* **Sector:** All
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00092 Establish a truth teller reputation score for influencers](../counters/C00092.md) | D7 Deter |
|
||||
| [C00160 find and train influencers](../counters/C00160.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
14
actortypes/A002.md
Обычный файл
14
actortypes/A002.md
Обычный файл
@ -0,0 +1,14 @@
|
||||
# Actor A002: target
|
||||
|
||||
* **Summary:** Person being targeted by disinformation campaign
|
||||
|
||||
* **Sector:** All
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A003.md
Обычный файл
15
actortypes/A003.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A003: trusted authority
|
||||
|
||||
* **Summary:** Influencer
|
||||
|
||||
* **Sector:** All
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00128 Create friction by marking content with ridicule or other "decelerants"](../counters/C00128.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A004.md
Обычный файл
16
actortypes/A004.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A004: activist
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00052 Infiltrate platforms](../counters/C00052.md) | D4 Degrade |
|
||||
| [C00197 remove suspicious accounts](../counters/C00197.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A005.md
Обычный файл
15
actortypes/A005.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A005: community group
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
20
actortypes/A006.md
Обычный файл
20
actortypes/A006.md
Обычный файл
@ -0,0 +1,20 @@
|
||||
# Actor A006: educator
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00009 Educate high profile influencers on best practices](../counters/C00009.md) | D2 Deny |
|
||||
| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny |
|
||||
| [C00051 Counter social engineering training](../counters/C00051.md) | D2 Deny |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
| [C00188 Newsroom/Journalist training to counter influence moves](../counters/C00188.md) | D3 Disrupt |
|
||||
| [C00212 build public resilience by making civil society more vibrant](../counters/C00212.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A007.md
Обычный файл
16
actortypes/A007.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A007: factchecker
|
||||
|
||||
* **Summary:** Someone with the skills to verify whether information posted is factual
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00008 Create shared fact-checking database](../counters/C00008.md) | D4 Degrade |
|
||||
| [C00014 Real-time updates to fact-checking database](../counters/C00014.md) | D4 Degrade |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A008.md
Обычный файл
15
actortypes/A008.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A008: library
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A009.md
Обычный файл
15
actortypes/A009.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A009: NGO
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A010.md
Обычный файл
15
actortypes/A010.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A010: religious organisation
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
14
actortypes/A011.md
Обычный файл
14
actortypes/A011.md
Обычный файл
@ -0,0 +1,14 @@
|
||||
# Actor A011: school
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Civil Society
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A012.md
Обычный файл
15
actortypes/A012.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A012: account owner
|
||||
|
||||
* **Summary:** Anyone who owns an account online
|
||||
|
||||
* **Sector:** General Public
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A013.md
Обычный файл
15
actortypes/A013.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A013: content creator
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** General Public
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00111 Reduce polarisation by connecting and presenting sympathetic renditions of opposite views](../counters/C00111.md) | D4 Degrade |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A014.md
Обычный файл
15
actortypes/A014.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A014: elves
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** General Public
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
18
actortypes/A015.md
Обычный файл
18
actortypes/A015.md
Обычный файл
@ -0,0 +1,18 @@
|
||||
# Actor A015: general public
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** General Public
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00114 Don't engage with payloads](../counters/C00114.md) | D2 Deny |
|
||||
| [C00124 Don't feed the trolls](../counters/C00124.md) | D3 Disrupt |
|
||||
| [C00143 (botnet) DMCA takedown requests to waste group time](../counters/C00143.md) | D4 Degrade |
|
||||
| [C00190 open engagement with civil society](../counters/C00190.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
17
actortypes/A016.md
Обычный файл
17
actortypes/A016.md
Обычный файл
@ -0,0 +1,17 @@
|
||||
# Actor A016: influencer
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** General Public
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00009 Educate high profile influencers on best practices](../counters/C00009.md) | D2 Deny |
|
||||
| [C00160 find and train influencers](../counters/C00160.md) | D2 Deny |
|
||||
| [C00200 Respected figure (influencer) disavows misinfo](../counters/C00200.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A017.md
Обычный файл
15
actortypes/A017.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A017: coordinating body
|
||||
|
||||
* **Summary:** For example the DHS
|
||||
|
||||
* **Sector:** Government
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
20
actortypes/A018.md
Обычный файл
20
actortypes/A018.md
Обычный файл
@ -0,0 +1,20 @@
|
||||
# Actor A018: government
|
||||
|
||||
* **Summary:** Government agencies
|
||||
|
||||
* **Sector:** Government
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny |
|
||||
| [C00156 Better tell your country or organization story](../counters/C00156.md) | D3 Disrupt |
|
||||
| [C00203 Stop offering press credentials to propaganda outlets](../counters/C00203.md) | D3 Disrupt |
|
||||
| [C00205 strong dialogue between the federal government and private sector to encourage better reporting](../counters/C00205.md) | D3 Disrupt |
|
||||
| [C00207 Run a competing disinformation campaign - not recommended](../counters/C00207.md) | D7 Deter |
|
||||
| [C00212 build public resilience by making civil society more vibrant](../counters/C00212.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A019.md
Обычный файл
15
actortypes/A019.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A019: military
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Government
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00156 Better tell your country or organization story](../counters/C00156.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
18
actortypes/A020.md
Обычный файл
18
actortypes/A020.md
Обычный файл
@ -0,0 +1,18 @@
|
||||
# Actor A020: policy maker
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Government
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00010 Enhanced privacy regulation for social media](../counters/C00010.md) | D2 Deny |
|
||||
| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny |
|
||||
| [C00060 Legal action against for-profit engagement factories](../counters/C00060.md) | D3 Disrupt |
|
||||
| [C00065 Reduce political targeting](../counters/C00065.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
21
actortypes/A021.md
Обычный файл
21
actortypes/A021.md
Обычный файл
@ -0,0 +1,21 @@
|
||||
# Actor A021: media organisation
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Media
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00017 Repair broken social connections](../counters/C00017.md) | D3 Disrupt |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
| [C00111 Reduce polarisation by connecting and presenting sympathetic renditions of opposite views](../counters/C00111.md) | D4 Degrade |
|
||||
| [C00124 Don't feed the trolls](../counters/C00124.md) | D3 Disrupt |
|
||||
| [C00154 Ask media not to report false information](../counters/C00154.md) | D2 Deny |
|
||||
| [C00174 Create a healthier news environment](../counters/C00174.md) | D2 Deny |
|
||||
| [C00188 Newsroom/Journalist training to counter influence moves](../counters/C00188.md) | D3 Disrupt |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
14
actortypes/A022.md
Обычный файл
14
actortypes/A022.md
Обычный файл
@ -0,0 +1,14 @@
|
||||
# Actor A022: company
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A023.md
Обычный файл
16
actortypes/A023.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A023: adtech provider
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00105 Buy more advertising than misinformation creators](../counters/C00105.md) | D3 Disrupt |
|
||||
| [C00216 Use advertiser controls to stem flow of funds to bad actors](../counters/C00216.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A024.md
Обычный файл
16
actortypes/A024.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A024: developer
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny |
|
||||
| [C00103 Create a bot that engages / distract trolls](../counters/C00103.md) | D5 Deceive |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A025.md
Обычный файл
15
actortypes/A025.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A025: funding_site_admin
|
||||
|
||||
* **Summary:** Funding site admin
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00155 Ban incident actors from funding sites](../counters/C00155.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A026.md
Обычный файл
15
actortypes/A026.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A026: games designer
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** both
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00011 Media literacy. Games to identify fake news](../counters/C00011.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A027.md
Обычный файл
16
actortypes/A027.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A027: information security
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00153 Take pre-emptive action against actors' infrastructure](../counters/C00153.md) | D3 Disrupt |
|
||||
| [C00182 Redirection / malware detection/ remediation](../counters/C00182.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
16
actortypes/A028.md
Обычный файл
16
actortypes/A028.md
Обычный файл
@ -0,0 +1,16 @@
|
||||
# Actor A028: platform administrator
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade |
|
||||
| [C00074 Identify and delete or rate limit identical content](../counters/C00074.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A029.md
Обычный файл
15
actortypes/A029.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A029: server admininistrator
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Other Tech Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00131 Seize and analyse botnet servers](../counters/C00131.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
14
actortypes/A030.md
Обычный файл
14
actortypes/A030.md
Обычный файл
@ -0,0 +1,14 @@
|
||||
# Actor A030: platforms
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Social Media Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
32
actortypes/A031.md
Обычный файл
32
actortypes/A031.md
Обычный файл
@ -0,0 +1,32 @@
|
||||
# Actor A031: social media platform adminstrator
|
||||
|
||||
* **Summary:** Person with the authority to make changes to algorithms, take down content etc.
|
||||
|
||||
* **Sector:** Social Media Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00006 Charge for social media](../counters/C00006.md) | D2 Deny |
|
||||
| [C00006 Censorship](../counters/C00006.md) | D2 Deny |
|
||||
| [C00044 Keep people from posting to social media immediately](../counters/C00044.md) | D3 Disrupt |
|
||||
| [C00053 Delete old accounts / Remove unused social media accounts](../counters/C00053.md) | D4 Degrade |
|
||||
| [C00074 Identify and delete or rate limit identical content](../counters/C00074.md) | D2 Deny |
|
||||
| [C00097 Require use of verified identities to contribute to poll or comment](../counters/C00097.md) | D2 Deny |
|
||||
| [C00098 Revocation of allowlisted or "verified" status](../counters/C00098.md) | D2 Deny |
|
||||
| [C00099 Strengthen verification methods](../counters/C00099.md) | D2 Deny |
|
||||
| [C00101 Create friction by rate-limiting engagement](../counters/C00101.md) | D4 Degrade |
|
||||
| [C00107 Content moderation](../counters/C00107.md) | D2 Deny |
|
||||
| [C00122 Content moderation](../counters/C00122.md) | D2 Deny |
|
||||
| [C00133 Deplatform Account*](../counters/C00133.md) | D3 Disrupt |
|
||||
| [C00135 Deplatform message groups and/or message boards](../counters/C00135.md) | D3 Disrupt |
|
||||
| [C00142 Platform adds warning label and decision point when sharing content](../counters/C00142.md) | D4 Degrade |
|
||||
| [C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)](../counters/C00147.md) | D3 Disrupt |
|
||||
| [C00148 Add random links to network graphs](../counters/C00148.md) | D4 Degrade |
|
||||
| [C00172 social media source removal](../counters/C00172.md) | D2 Deny |
|
||||
| [C00197 remove suspicious accounts](../counters/C00197.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
15
actortypes/A032.md
Обычный файл
15
actortypes/A032.md
Обычный файл
@ -0,0 +1,15 @@
|
||||
# Actor A032: social media platform outreach
|
||||
|
||||
* **Summary:**
|
||||
|
||||
* **Sector:** Social Media Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00073 Inoculate populations through media literacy training](../counters/C00073.md) | D2 Deny |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
19
actortypes/A033.md
Обычный файл
19
actortypes/A033.md
Обычный файл
@ -0,0 +1,19 @@
|
||||
# Actor A033: social media platform owner
|
||||
|
||||
* **Summary:** Person with authority to make changes to a social media company’s business model
|
||||
|
||||
* **Sector:** Social Media Company
|
||||
|
||||
* **Viewpoint:** blue
|
||||
|
||||
|
||||
| Counters | Response types |
|
||||
| -------- | -------------- |
|
||||
| [C00006 Charge for social media](../counters/C00006.md) | D2 Deny |
|
||||
| [C00006 Censorship](../counters/C00006.md) | D2 Deny |
|
||||
| [C00012 Platform regulation](../counters/C00012.md) | D2 Deny |
|
||||
| [C00205 strong dialogue between the federal government and private sector to encourage better reporting](../counters/C00205.md) | D3 Disrupt |
|
||||
| [C00207 Run a competing disinformation campaign - not recommended](../counters/C00207.md) | D7 Deter |
|
||||
|
||||
|
||||
DO NOT EDIT ABOVE THIS LINE - PLEASE ADD NOTES BELOW
|
||||
208
actortypes_index.md
Обычный файл
208
actortypes_index.md
Обычный файл
@ -0,0 +1,208 @@
|
||||
# AMITT Actortypes:
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>amitt_id</th>
|
||||
<th>name</th>
|
||||
<th>summary</th>
|
||||
<th>sector</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A001.md">A001</a></td>
|
||||
<td>data scientist </td>
|
||||
<td>Person who can wrangle data, implement machine learning algorithms etc</td>
|
||||
<td>All</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A002.md">A002</a></td>
|
||||
<td>target</td>
|
||||
<td>Person being targeted by disinformation campaign</td>
|
||||
<td>All</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A003.md">A003</a></td>
|
||||
<td>trusted authority </td>
|
||||
<td>Influencer</td>
|
||||
<td>All</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A004.md">A004</a></td>
|
||||
<td>activist</td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A005.md">A005</a></td>
|
||||
<td>community group</td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A006.md">A006</a></td>
|
||||
<td>educator</td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A007.md">A007</a></td>
|
||||
<td>factchecker</td>
|
||||
<td>Someone with the skills to verify whether information posted is factual</td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A008.md">A008</a></td>
|
||||
<td>library</td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A009.md">A009</a></td>
|
||||
<td>NGO</td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A010.md">A010</a></td>
|
||||
<td>religious organisation </td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A011.md">A011</a></td>
|
||||
<td>school </td>
|
||||
<td></td>
|
||||
<td>Civil Society</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A012.md">A012</a></td>
|
||||
<td>account owner</td>
|
||||
<td>Anyone who owns an account online</td>
|
||||
<td>General Public</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A013.md">A013</a></td>
|
||||
<td>content creator </td>
|
||||
<td></td>
|
||||
<td>General Public</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A014.md">A014</a></td>
|
||||
<td>elves</td>
|
||||
<td></td>
|
||||
<td>General Public</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A015.md">A015</a></td>
|
||||
<td>general public</td>
|
||||
<td></td>
|
||||
<td>General Public</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A016.md">A016</a></td>
|
||||
<td>influencer</td>
|
||||
<td></td>
|
||||
<td>General Public</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A017.md">A017</a></td>
|
||||
<td>coordinating body</td>
|
||||
<td>For example the DHS</td>
|
||||
<td>Government</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A018.md">A018</a></td>
|
||||
<td>government </td>
|
||||
<td>Government agencies</td>
|
||||
<td>Government</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A019.md">A019</a></td>
|
||||
<td>military </td>
|
||||
<td></td>
|
||||
<td>Government</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A020.md">A020</a></td>
|
||||
<td>policy maker</td>
|
||||
<td></td>
|
||||
<td>Government</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A021.md">A021</a></td>
|
||||
<td>media organisation</td>
|
||||
<td></td>
|
||||
<td>Media</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A022.md">A022</a></td>
|
||||
<td>company</td>
|
||||
<td></td>
|
||||
<td>Other Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A023.md">A023</a></td>
|
||||
<td>adtech provider</td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A024.md">A024</a></td>
|
||||
<td>developer</td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A025.md">A025</a></td>
|
||||
<td>funding_site_admin</td>
|
||||
<td>Funding site admin</td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A026.md">A026</a></td>
|
||||
<td>games designer</td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A027.md">A027</a></td>
|
||||
<td>information security</td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A028.md">A028</a></td>
|
||||
<td>platform administrator</td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A029.md">A029</a></td>
|
||||
<td>server admininistrator </td>
|
||||
<td></td>
|
||||
<td>Other Tech Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A030.md">A030</a></td>
|
||||
<td>platforms </td>
|
||||
<td></td>
|
||||
<td>Social Media Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A031.md">A031</a></td>
|
||||
<td>social media platform adminstrator</td>
|
||||
<td>Person with the authority to make changes to algorithms, take down content etc. </td>
|
||||
<td>Social Media Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A032.md">A032</a></td>
|
||||
<td>social media platform outreach </td>
|
||||
<td></td>
|
||||
<td>Social Media Company</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="actortypes/A033.md">A033</a></td>
|
||||
<td>social media platform owner</td>
|
||||
<td>Person with authority to make changes to a social media company’s business model</td>
|
||||
<td>Social Media Company</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -52,7 +52,7 @@
|
||||
<td><a href="counters/C00130.md">C00130 Mentorship: elders, youth, credit. Learn vicariously.</a></td>
|
||||
<td><a href="counters/C00071.md">C00071 Block source of pollution</a></td>
|
||||
<td><a href="counters/C00098.md">C00098 Revocation of allowlisted or "verified" status</a></td>
|
||||
<td><a href="counters/C00113.md">C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert</a></td>
|
||||
<td><a href="counters/C00113.md">C00113 Debunk and defuse a fake expert / credentials.</a></td>
|
||||
<td><a href="counters/C00123.md">C00123 Remove or rate limit botnets</a></td>
|
||||
<td> </td>
|
||||
<td><a href="counters/C00139.md">C00139 Weaponise youtube content matrices</a></td>
|
||||
@ -107,7 +107,7 @@
|
||||
<td><a href="counters/C00135.md">C00135 Deplatform message groups and/or message boards</a></td>
|
||||
<td> </td>
|
||||
<td><a href="counters/C00076.md">C00076 Prohibit images in political discourse channels</a></td>
|
||||
<td><a href="counters/C00105.md">C00105 Buy more advertising than the adversary to shift influence and algorithms</a></td>
|
||||
<td><a href="counters/C00105.md">C00105 Buy more advertising than misinformation creators</a></td>
|
||||
<td><a href="counters/C00117.md">C00117 Downgrade / de-amplify so message is seen by fewer people</a></td>
|
||||
<td><a href="counters/C00128.md">C00128 Create friction by marking content with ridicule or other "decelerants"</a></td>
|
||||
<td> </td>
|
||||
@ -136,8 +136,8 @@
|
||||
<td> </td>
|
||||
<td><a href="counters/C00080.md">C00080 Create competing narrative</a></td>
|
||||
<td> </td>
|
||||
<td><a href="counters/C00119.md">C00119 Engage payload and debunk. Provide link to facts. </a></td>
|
||||
<td><a href="counters/C00147.md">C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days)</a></td>
|
||||
<td><a href="counters/C00119.md">C00119 Engage payload and debunk. </a></td>
|
||||
<td><a href="counters/C00147.md">C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)</a></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
|
||||
@ -87,7 +87,7 @@ function handleTechniqueClick(box) {
|
||||
<td id="C00130">C00130 Mentorship: elders, youth, credit. Learn vicariously.<input type="checkbox" id="C00130check" onclick="handleTechniqueClick('C00130')"></td>
|
||||
<td id="C00071">C00071 Block source of pollution<input type="checkbox" id="C00071check" onclick="handleTechniqueClick('C00071')"></td>
|
||||
<td id="C00098">C00098 Revocation of allowlisted or "verified" status<input type="checkbox" id="C00098check" onclick="handleTechniqueClick('C00098')"></td>
|
||||
<td id="C00113">C00113 Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert<input type="checkbox" id="C00113check" onclick="handleTechniqueClick('C00113')"></td>
|
||||
<td id="C00113">C00113 Debunk and defuse a fake expert / credentials.<input type="checkbox" id="C00113check" onclick="handleTechniqueClick('C00113')"></td>
|
||||
<td id="C00123">C00123 Remove or rate limit botnets<input type="checkbox" id="C00123check" onclick="handleTechniqueClick('C00123')"></td>
|
||||
<td bgcolor=white> </td>
|
||||
<td id="C00139">C00139 Weaponise youtube content matrices<input type="checkbox" id="C00139check" onclick="handleTechniqueClick('C00139')"></td>
|
||||
@ -142,7 +142,7 @@ function handleTechniqueClick(box) {
|
||||
<td id="C00135">C00135 Deplatform message groups and/or message boards<input type="checkbox" id="C00135check" onclick="handleTechniqueClick('C00135')"></td>
|
||||
<td bgcolor=white> </td>
|
||||
<td id="C00076">C00076 Prohibit images in political discourse channels<input type="checkbox" id="C00076check" onclick="handleTechniqueClick('C00076')"></td>
|
||||
<td id="C00105">C00105 Buy more advertising than the adversary to shift influence and algorithms<input type="checkbox" id="C00105check" onclick="handleTechniqueClick('C00105')"></td>
|
||||
<td id="C00105">C00105 Buy more advertising than misinformation creators<input type="checkbox" id="C00105check" onclick="handleTechniqueClick('C00105')"></td>
|
||||
<td id="C00117">C00117 Downgrade / de-amplify so message is seen by fewer people<input type="checkbox" id="C00117check" onclick="handleTechniqueClick('C00117')"></td>
|
||||
<td id="C00128">C00128 Create friction by marking content with ridicule or other "decelerants"<input type="checkbox" id="C00128check" onclick="handleTechniqueClick('C00128')"></td>
|
||||
<td bgcolor=white> </td>
|
||||
@ -171,8 +171,8 @@ function handleTechniqueClick(box) {
|
||||
<td bgcolor=white> </td>
|
||||
<td id="C00080">C00080 Create competing narrative<input type="checkbox" id="C00080check" onclick="handleTechniqueClick('C00080')"></td>
|
||||
<td bgcolor=white> </td>
|
||||
<td id="C00119">C00119 Engage payload and debunk. Provide link to facts. <input type="checkbox" id="C00119check" onclick="handleTechniqueClick('C00119')"></td>
|
||||
<td id="C00147">C00147 Make amplification of social media ports expire (e.g. can't like/ retweet after n days)<input type="checkbox" id="C00147check" onclick="handleTechniqueClick('C00147')"></td>
|
||||
<td id="C00119">C00119 Engage payload and debunk. <input type="checkbox" id="C00119check" onclick="handleTechniqueClick('C00119')"></td>
|
||||
<td id="C00147">C00147 Make amplification of social media posts expire (e.g. can't like/ retweet after n days)<input type="checkbox" id="C00147check" onclick="handleTechniqueClick('C00147')"></td>
|
||||
<td bgcolor=white> </td>
|
||||
<td bgcolor=white> </td>
|
||||
<td bgcolor=white> </td>
|
||||
@ -477,7 +477,7 @@ function handleTechniqueClick(box) {
|
||||
<li id="C00130text" style="display:none">C00130: Mentorship: elders, youth, credit. Learn vicariously.</li>
|
||||
<li id="C00071text" style="display:none">C00071: Block source of pollution</li>
|
||||
<li id="C00098text" style="display:none">C00098: Revocation of allowlisted or "verified" status</li>
|
||||
<li id="C00113text" style="display:none">C00113: Debunk and defuse a fake expert / credentials. Attack audience quality of fake expert</li>
|
||||
<li id="C00113text" style="display:none">C00113: Debunk and defuse a fake expert / credentials.</li>
|
||||
<li id="C00123text" style="display:none">C00123: Remove or rate limit botnets</li>
|
||||
<li id="C00139text" style="display:none">C00139: Weaponise youtube content matrices</li>
|
||||
<li id="C00149text" style="display:none">C00149: Poison the monitoring & evaluation data</li>
|
||||
@ -513,7 +513,7 @@ function handleTechniqueClick(box) {
|
||||
<li id="C00048text" style="display:none">C00048: Name and Shame Influencers</li>
|
||||
<li id="C00135text" style="display:none">C00135: Deplatform message groups and/or message boards</li>
|
||||
<li id="C00076text" style="display:none">C00076: Prohibit images in political discourse channels</li>
|
||||
<li id="C00105text" style="display:none">C00105: Buy more advertising than the adversary to shift influence and algorithms</li>
|
||||
<li id="C00105text" style="display:none">C00105: Buy more advertising than misinformation creators</li>
|
||||
<li id="C00117text" style="display:none">C00117: Downgrade / de-amplify so message is seen by fewer people</li>
|
||||
<li id="C00128text" style="display:none">C00128: Create friction by marking content with ridicule or other "decelerants"</li>
|
||||
<li id="C00019text" style="display:none">C00019: Reduce effect of division-enablers</li>
|
||||
@ -529,8 +529,8 @@ function handleTechniqueClick(box) {
|
||||
<li id="C00058text" style="display:none">C00058: Report crowdfunder as violator</li>
|
||||
<li id="C00172text" style="display:none">C00172: social media source removal</li>
|
||||
<li id="C00080text" style="display:none">C00080: Create competing narrative</li>
|
||||
<li id="C00119text" style="display:none">C00119: Engage payload and debunk. Provide link to facts. </li>
|
||||
<li id="C00147text" style="display:none">C00147: Make amplification of social media ports expire (e.g. can't like/ retweet after n days)</li>
|
||||
<li id="C00119text" style="display:none">C00119: Engage payload and debunk. </li>
|
||||
<li id="C00147text" style="display:none">C00147: Make amplification of social media posts expire (e.g. can't like/ retweet after n days)</li>
|
||||
<li id="C00022text" style="display:none">C00022: Innoculate. Positive campaign to promote feeling of safety</li>
|
||||
<li id="C00144text" style="display:none">C00144: Buy out troll farm employees / offer them jobs</li>
|
||||
<li id="C00067text" style="display:none">C00067: Denigrate the recipient/ project (of online funding)</li>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00006: Censorship
|
||||
|
||||
* **Summary**: Alter and/or block the publication/dissemination of adversary controlled information
|
||||
* **Summary**: Alter and/or block the publication/dissemination of information controlled by disinformation creators. Not recommended.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,10 +11,10 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company |
|
||||
| [A033 social media platform owner](../actors/A033.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company |
|
||||
| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00008: Create shared fact-checking database
|
||||
|
||||
* **Summary**: Snopes is best-known example
|
||||
* **Summary**: Share fact-checking resources - tips, responses, countermessages, across respose groups. Snopes is best-known example of fact-checking sites.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A007 factchecker](../actors/A007.md) | Civil Society |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A007 factchecker](../actortypes/A007.md) | Civil Society |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00009: Educate high profile influencers on best practices
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Find online influencers. Provide training in the mechanisms of disinformation, how to spot campaigns, and/or how to contribute to responses by countermessaging, boosting information sites etc.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,10 +11,10 @@
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A006 educator](../actors/A006.md) | Civil Society |
|
||||
| [A016 influencer](../actors/A016.md) | General Public |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A006 educator](../actortypes/A006.md) | Civil Society |
|
||||
| [A016 influencer](../actortypes/A016.md) | General Public |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00010: Enhanced privacy regulation for social media
|
||||
|
||||
* **Summary**: Privacy standards
|
||||
* **Summary**: Implement stronger privacy standards, to reduce the ability to microtarget community members.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A020 policy maker](../actors/A020.md) | Government |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A020 policy maker](../actortypes/A020.md) | Government |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
# Counter C00011: Media literacy. Games to identify fake news
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Create and use games to show people the mechanics of disinformation, and how to counter them.
|
||||
|
||||
* **Playbooks**: Game Mechanics:
|
||||
-Show examples of fake news and train the user to identify them on the basis of various types of indicators
|
||||
-Use a crowd-sourced mechanism so that the public can categorize newly spreading news sources or articles ala Re-Captcha
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M001 - resilience
|
||||
|
||||
@ -13,11 +11,11 @@
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A006 educator](../actors/A006.md) | Civil Society |
|
||||
| [A024 developer](../actors/A024.md) | Other Tech Company |
|
||||
| [A026 games designer](../actors/A026.md) | Other Tech Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A006 educator](../actortypes/A006.md) | Civil Society |
|
||||
| [A024 developer](../actortypes/A024.md) | Other Tech Company |
|
||||
| [A026 games designer](../actortypes/A026.md) | Other Tech Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
* **Summary**: Empower existing regulators to govern social media. Also covers Destroy. Includes: Include the role of social media in the regulatory framework for media - The European Union created significant new regulations in 2018; the U.S. approach will need to be carefully crafted to protect First Amendment principles, create needed transparency, ensure liability, and impose costs for noncompliance. Includes Create policy that makes social media police disinformation - example: German model: facebook forced to police content by law. Includes: Use fraud legislation to clean up social media
|
||||
|
||||
* **Playbooks**: P0001: Develop a regulatory body like the CFPB to regulate and enforce regulation for digital organizations. P0002: Government regulation. Government shutdown.
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M007 - metatechnique
|
||||
|
||||
@ -11,11 +11,11 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A018 government ](../actors/A018.md) | Government |
|
||||
| [A020 policy maker](../actors/A020.md) | Government |
|
||||
| [A033 social media platform owner](../actors/A033.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A018 government ](../actortypes/A018.md) | Government |
|
||||
| [A020 policy maker](../actortypes/A020.md) | Government |
|
||||
| [A033 social media platform owner](../actortypes/A033.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00014: Real-time updates to fact-checking database
|
||||
|
||||
* **Summary**: existing examples at Buzzfeed and Fema, especially during disasters
|
||||
* **Summary**: Update fact-checking databases and resources in real time. Especially import for time-limited events like natural disasters. Existing examples at Buzzfeed and Fema.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A007 factchecker](../actors/A007.md) | Civil Society |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A007 factchecker](../actortypes/A007.md) | Civil Society |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00017: Repair broken social connections
|
||||
|
||||
* **Summary**: For example, use a media campaign to promote in-group to out-group in person communication / activities . Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen.
|
||||
* **Summary**: Technique could be in terms of forcing a reality-check by talking to people instead of reading about bogeymen.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A021 media organisation](../actors/A021.md) | Media |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A021 media organisation](../actortypes/A021.md) | Media |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,12 +2,7 @@
|
||||
|
||||
* **Summary**: includes Promote constructive communication by shaming division-enablers, and Promote playbooks to call out division-enablers
|
||||
|
||||
* **Playbooks**: Spread Infographics & Training Material teaching ways to identify and counter divisive rhetorical techniques and content, by stimulating their sense of outrage at being manipulated. Show them how to address the rhetorical technique rather than the content
|
||||
|
||||
-Twitter hashtags & paid advertising
|
||||
-Teach people to identify non-civil/unconstructive conversations and call them out
|
||||
-Popularize (via memes, infographics) and get the centrists demographic who are tired of polarization to identify such messaging, call it out and display their outrage on the basis of divisive rhetorical techniques rather than merely arguing about the content
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M003 - daylight
|
||||
|
||||
@ -16,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00021: Encourage in-person communication
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Encourage offline communication
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,10 +2,7 @@
|
||||
|
||||
* **Summary**: This is passive. Includes promoting civility as an identity that people will defend.
|
||||
|
||||
* **Playbooks**: Playbook 1: Recruit respected thought leaders to model behavior
|
||||
Playbook 2: Feature established respected thought leaders to model behavior
|
||||
Playbook 3: Promote dialog from communities with disparate viewpoints
|
||||
Playbook 4: Establish facilitation guidelines for "civil" interaction.
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M001 - resilience
|
||||
|
||||
@ -14,8 +11,8 @@ Playbook 4: Establish facilitation guidelines for "civil" interaction.
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -13,8 +13,8 @@ This could be used to adjust upvote weight via a trust factor of people and orga
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,12 +1,8 @@
|
||||
# Counter C00029: Create fake website to issue counter narrative and counter narrative through physical merchandise
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Create websites in disinformation voids - spaces where people are looking for known disinformation.
|
||||
|
||||
* **Playbooks**: -Identify ignorant agents (ex: anti-vaxx people willing to pay money to advertise their cause)
|
||||
-Sell physical merchandise that has instructive counter-effect
|
||||
|
||||
Secondary Objective:
|
||||
-Obtain real-life identity of ignorant agents, to further disrupt their influence activities
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M002 - diversion
|
||||
|
||||
@ -15,8 +11,8 @@ Secondary Objective:
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -12,8 +12,8 @@ https://www.isdglobal.org/wp-content/uploads/2016/06/Counter-narrative-Handbook_
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,8 +2,7 @@
|
||||
|
||||
* **Summary**: Create competing narratives. Included "Facilitate State Propaganda" as diluting the narrative could have an effect on the pro-state narrative used by volunteers, or lower their involvement.
|
||||
|
||||
* **Playbooks**: Playbook 1: Create multiple versions of the narrative and amplify.
|
||||
Playbook 2: Dissect narrative, piecemeal the components and then amplify
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M009 - dilution
|
||||
|
||||
@ -12,8 +11,8 @@ Playbook 2: Dissect narrative, piecemeal the components and then amplify
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,8 +2,7 @@
|
||||
|
||||
* **Summary**: Link to platform
|
||||
|
||||
* **Playbooks**: Playbook 1: Hijack hashtag and redirect conversation to truth based content.
|
||||
Playbook 2: Hijack (man in the middle) redirect from bad content to good content
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M002 - diversion
|
||||
|
||||
@ -12,8 +11,8 @@ Playbook 2: Hijack (man in the middle) redirect from bad content to good content
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,9 +2,7 @@
|
||||
|
||||
* **Summary**: All of these would be highly affected by infiltration or false-claims of infiltration.
|
||||
|
||||
* **Playbooks**: -Discredit via backstopped blogs/websites showing their past activity and opinions as being opposite to their current ingroup
|
||||
-Create a trail of commentary about their idea of infiltrating the enemy (current in-group)
|
||||
-Publicize this by targeting their in-group competitors (ignorant agents)
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M013 - targeting
|
||||
|
||||
@ -13,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,9 +2,7 @@
|
||||
|
||||
* **Summary**: counters fake experts
|
||||
|
||||
* **Playbooks**: - Verify personal credentials
|
||||
- Syndicated reputation management (fact-checking syndication)
|
||||
- Academia ISAO
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M011 - verification
|
||||
|
||||
@ -13,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00042: Address truth contained in narratives
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Focus on and boost truths in misinformation narratives, removing misinformation from them.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
# Counter C00044: Keep people from posting to social media immediately
|
||||
|
||||
* **Summary**: My interpretation is that this is method would be used to slow down activities or force a small delay between posts or replies to new posts.
|
||||
* **Summary**: Use this to slow down activities or force a small delay between posts or replies to new posts.
|
||||
|
||||
* **Playbooks**: Rate restrict via regulation posting above a statistical threshold
|
||||
Unless account is de-anonymized and advertised as automated messaging
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M004 - friction
|
||||
|
||||
@ -12,9 +11,9 @@ Unless account is de-anonymized and advertised as automated messaging
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00046: Marginalise and discredit extremist groups
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Reduce the credibility of extremist groups posting misinformation.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00047: Coordinated inauthentics
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Flood disinformation spaces with obviously fake content, to dilute core misinformation narratives in them.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
* **Summary**: Think about the different levels: individual vs state-sponsored account. Includes “call them out” and “name and shame”. Note that USAID operations were at a different level. Identify social media accounts as sources of propaganda—“calling them out”— might be helpful to prevent the spread of their message to audiences that otherwise would consider them factual. USAID has been restructuring its programs to address predatory Chinese development projects and the information operations that support them. USAID’s new strategy has tailored programs to counter Chinese educational exchange programs and to support free and fair elections, youth empowerment, democratic governance, and free press. USAID’s Russia regional teams have also been compiling a strategy for Russia’s information operations. One strong point of USAID’s programming is a system of indicators and measurements for a country’s vulnerability to foreign influence and information operations. Identify, monitor, and, if necessary, target externally-based nonattributed social media accounts. Impact of and Dealing with Trolls - "Chatham House has observed that trolls also sometimes function as decoys, as a way of “keeping the infantry busy” that “aims to wear down the other side” (Lough et al., 2014). Another type of troll involves “false accounts posing as authoritative information sources on social media”.
|
||||
|
||||
* **Playbooks**: Identify the accounts, the real person's name and shame them on social media.
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M003 - daylight
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A006 educator](../actors/A006.md) | Civil Society |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A006 educator](../actortypes/A006.md) | Civil Society |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A004 activist](../actors/A004.md) | Civil Society |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A004 activist](../actortypes/A004.md) | Civil Society |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
# Counter C00053: Delete old accounts / Remove unused social media accounts
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: remove or remove access to (e.g. stop the ability to update) old social media accounts, to reduce the pool of accounts available for takeover, botnets etc.
|
||||
|
||||
* **Playbooks**: Social media companies remove inactive accounts. Account holders remove accounts they're no longer using. Influencers encourage people to remove their inactive accounts "Do you really need that old account" campaign, world-war-two poster-style. Create alternative memorial websites for accounts of deceased people, so their accounts can't be reactivated on 'live' sites. Educate/scare users on the risks of losing control over a dormant account (would their employer be forgiving if an account associated with the user suddenly starting posting extremist content?).
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M012 - cleaning
|
||||
|
||||
@ -11,11 +11,11 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A012 account owner](../actors/A012.md) | General Public |
|
||||
| [A028 platform administrator](../actors/A028.md) | Other Tech Company |
|
||||
| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A012 account owner](../actortypes/A012.md) | General Public |
|
||||
| [A028 platform administrator](../actortypes/A028.md) | Other Tech Company |
|
||||
| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00056: Get off social media
|
||||
|
||||
* **Summary**: We don't expect this to work
|
||||
* **Summary**: Encourage people to leave spcial media. We don't expect this to work
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00059: Verification of project before posting (counters funding campaigns)
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: third-party verification of projects posting funding campaigns before those campaigns can be posted.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00060: Legal action against for-profit engagement factories
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Take legal action against for-profit "factories" creating misinformation.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A020 policy maker](../actors/A020.md) | Government |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A020 policy maker](../actortypes/A020.md) | Government |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA04
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,9 +11,9 @@
|
||||
* **Belongs to tactic stage**: TA05
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A020 policy maker](../actors/A020.md) | Government |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A020 policy maker](../actortypes/A020.md) | Government |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00066: Co-opt a hashtag and drown it out (hijack it back)
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Flood a disinformation-related hashtag with other content. Examples include kPop stans flooding extremist hashtags with pop videos and images.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA05
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00067: Denigrate the recipient/ project (of online funding)
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Reduce the credibility of groups behind misinformation-linked funding campaigns.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -19,8 +19,8 @@ T0046 - Search Engine Optimization: Sub-optimal website performance affect its s
|
||||
* **Belongs to tactic stage**: TA02
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00071: Block source of pollution
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Block websites, accounts, groups etc connected to misinformation and other information pollution.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00072: Remove non-relevant content from special interest groups – not recommended
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Check special-interest groups (e.g. medical, knitting) for unrelated and misinformation-linked content, and remove it.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,16 +11,16 @@
|
||||
* **Belongs to tactic stage**: TA01
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A005 community group](../actors/A005.md) | Civil Society |
|
||||
| [A006 educator](../actors/A006.md) | Civil Society |
|
||||
| [A008 library](../actors/A008.md) | Civil Society |
|
||||
| [A009 NGO](../actors/A009.md) | Civil Society |
|
||||
| [A010 religious organisation ](../actors/A010.md) | Civil Society |
|
||||
| [A017 coordinating body](../actors/A017.md) | Government |
|
||||
| [A021 media organisation](../actors/A021.md) | Media |
|
||||
| [A032 social media platform outreach ](../actors/A032.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A005 community group](../actortypes/A005.md) | Civil Society |
|
||||
| [A006 educator](../actortypes/A006.md) | Civil Society |
|
||||
| [A008 library](../actortypes/A008.md) | Civil Society |
|
||||
| [A009 NGO](../actortypes/A009.md) | Civil Society |
|
||||
| [A010 religious organisation ](../actortypes/A010.md) | Civil Society |
|
||||
| [A017 coordinating body](../actortypes/A017.md) | Government |
|
||||
| [A021 media organisation](../actortypes/A021.md) | Media |
|
||||
| [A032 social media platform outreach ](../actortypes/A032.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,14 +1,9 @@
|
||||
# Counter C00074: Identify and delete or rate limit identical content
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Search for repeated content (text, images, videos etc); check for misinformation, rate-limit or delete repeats.
|
||||
|
||||
|
||||
* **Playbooks**: In all cases some checks need to prevent deplatforming of highly correlated organic traffic such as a community group copy/pasting their bake sale advert.
|
||||
Playbook 1: Platform adds a hash of the post to the post metadata and make it publicly available (content addressing). Scrape for duplicate content and deplatform the content/users across affected platforms.
|
||||
Playbook 2: Platform adds plagiarism score metadata to a post and makes it publicly available. Scrape for duplicate content and deplatform the content/users across affected platforms.
|
||||
Playbook 3: Use message hashing and fuzzy hashing to detect identical/similar content.
|
||||
Playbook 4: Use plagiarism algorithm to detect similar blog posts.
|
||||
Playbook 5: Use basic web scraping techniques, Google dorks, etc to identify similar head lines, uniques phrases, authorship, embedded links and any other correlating data point.
|
||||
* **Playbooks**:
|
||||
|
||||
* **Metatechnique**: M012 - cleaning
|
||||
|
||||
@ -17,10 +12,10 @@ Playbook 5: Use basic web scraping techniques, Google dorks, etc to identify sim
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| [A028 platform administrator](../actors/A028.md) | Other Tech Company |
|
||||
| [A031 social media platform adminstrator](../actors/A031.md) | Social Media Company |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
| [A028 platform administrator](../actortypes/A028.md) | Other Tech Company |
|
||||
| [A031 social media platform adminstrator](../actortypes/A031.md) | Social Media Company |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00075: normalise language
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: normalise the language around disinformation and misinformation; give people the words for artifact and effect types.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00076: Prohibit images in political discourse channels
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Make political discussion channels text-only.
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00077: Active defence: run TA03 "develop people” - not recommended
|
||||
|
||||
* **Summary**:
|
||||
* **Summary**: Develop networks of communities and influencers around counter-misinformation. Match them to misinformation creators
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA03
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Counter C00080: Create competing narrative
|
||||
|
||||
* **Summary**: Could also be degrade
|
||||
* **Summary**: Create counternarratives, or narratives that compete in the same spaces as misinformation narratives. Could also be degrade
|
||||
|
||||
* **Playbooks**:
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* **Belongs to tactic stage**: TA06
|
||||
|
||||
|
||||
| Actors | Sectors |
|
||||
| ------ | ------- |
|
||||
| Actor types | Sectors |
|
||||
| ----------- | ------- |
|
||||
|
||||
|
||||
|
||||
|
||||
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
x
Ссылка в новой задаче
Block a user