From 1bc8d88b63057b59236d5482da6f136e650ee0e0 Mon Sep 17 00:00:00 2001 From: Sara-Jayne Terp Date: Thu, 25 Aug 2022 09:50:52 -0400 Subject: [PATCH] moved to datasets as CSVs Changed from data held in excelfiles to data held in CSV files. This gives us a better view of what's changed in the datasets when we push them to git. --- .DS_Store | Bin 10244 -> 10244 bytes CODE/.DS_Store | Bin 6148 -> 6148 bytes ...create_counters_summaries-checkpoint.ipynb | 459 - ...e_incident_visualisations-checkpoint.ipynb | 268 - .../AMITT_create_website_sql-checkpoint.ipynb | 8443 ----------------- ...ITT_generate_github_files-checkpoint.ipynb | 608 -- .../DISARM_code_testbed-checkpoint.ipynb | 425 - ...heck_DISARM_excel_changes-checkpoint.ipynb | 110 - .../check_new_table_updates-checkpoint.ipynb | 2131 +---- .../generate_DISARM_pages-checkpoint.ipynb | 292 +- .../generate_crosstable_csvs-checkpoint.ipynb | 755 ++ ...sv_versions_of_excelfiles-checkpoint.ipynb | 6 + .../generate_crosstable_csvs.ipynb | 755 ++ .../generate_csv_versions_of_excelfiles.ipynb | 108 + .../generate_csv_versions_of_excelfiles.py | 22 + .../generate_DISARM_pages.cpython-38.pyc | Bin 24854 -> 24746 bytes .../generate_disarm_sql.cpython-38.pyc | Bin 4764 -> 0 bytes CODE/check_new_table_updates.ipynb | 2169 +---- CODE/compare_DISARM_excel_versions.ipynb | 110 +- CODE/compare_disarm_versions.ipynb | 814 ++ CODE/generate_DISARM_pages.ipynb | 44 +- CODE/generate_DISARM_pages.py | 59 +- DISARM_MASTER_DATA/.DS_Store | Bin 6148 -> 6148 bytes .../00_earlier_datasets/.DS_Store | Bin 0 -> 10244 bytes .../AMITT_FRAMEWORKS_MASTER.xlsx | Bin 0 -> 126377 bytes .../DISARM_COMMENTS_MASTER_0_1.csv | 0 .../DISARM_DATA_MASTER_0_1.xlsx | Bin .../DISARM_FRAMEWORKS_MASTER_0_1.xlsx | Bin .../DISARM_COMMENTS_MASTER.csv | 0 .../DISARM_DATA_MASTER.xlsx | Bin 467348 -> 467357 bytes .../DISARM_FRAMEWORKS_MASTER.xlsx | Bin 889121 -> 889207 bytes .../2022-08-24_DISARM_0_1_b}/.DS_Store | Bin 6148 -> 6148 bytes .../ADMIN_DATA_README.csv | 64 + .../ADMIN_FRAMEWORK CODES.csv | 22 + .../ADMIN_FRAMEWORK_README.csv | 40 + .../DISARM_COMMENTS_MASTER.csv | 1755 ++++ .../2022-08-24_DISARM_0_1_b/MOE.csv | 9 + .../2022-08-24_DISARM_0_1_b/MOP.csv | 35 + .../2022-08-24_DISARM_0_1_b/actortypes.csv | 40 + .../countermeasures.csv | 923 ++ .../2022-08-24_DISARM_0_1_b/detections.csv | 217 + .../2022-08-24_DISARM_0_1_b/examples.csv | 74 + .../externalgroupcounters.csv | 824 ++ .../externalgroups.csv | 832 ++ .../2022-08-24_DISARM_0_1_b/forums.csv | 17 + .../2022-08-24_DISARM_0_1_b/frameworks.csv | 4 + .../2022-08-24_DISARM_0_1_b/incidents.csv | 86 + .../incidenttechniques.csv | 214 + .../metatechniques.csv | 15 + .../2022-08-24_DISARM_0_1_b/narratives.csv | 164 + .../2022-08-24_DISARM_0_1_b/phases.csv | 5 + .../2022-08-24_DISARM_0_1_b/playbooks.csv | 121 + .../removed_externalgroups.csv | 6 + .../2022-08-24_DISARM_0_1_b/removed_tools.csv | 5 + .../2022-08-24_DISARM_0_1_b/resources.csv | 7 + .../2022-08-24_DISARM_0_1_b/responsetypes.csv | 8 + .../2022-08-24_DISARM_0_1_b/sectors.csv | 15 + .../suggested_externalgroups.csv | 74 + .../2022-08-24_DISARM_0_1_b/tactics.csv | 22 + .../2022-08-24_DISARM_0_1_b/tasks.csv | 43 + .../2022-08-24_DISARM_0_1_b/techniques.csv | 278 + .../2022-08-24_DISARM_0_1_b/tools.csv | 152 + DISARM_MASTER_DATA/ADMIN_DATA_README.csv | 64 + DISARM_MASTER_DATA/ADMIN_FRAMEWORK CODES.csv | 22 + DISARM_MASTER_DATA/ADMIN_FRAMEWORK_README.csv | 40 + DISARM_MASTER_DATA/MOE.csv | 9 + DISARM_MASTER_DATA/MOP.csv | 35 + DISARM_MASTER_DATA/actortypes.csv | 40 + DISARM_MASTER_DATA/comments.csv | 1755 ++++ DISARM_MASTER_DATA/countermeasures.csv | 154 + .../cross_counter_actortype.csv | 80 + DISARM_MASTER_DATA/cross_counter_resource.csv | 12 + .../cross_counter_technique.csv | 882 ++ .../cross_detection_actortype.csv | 17 + .../cross_detection_resource.csv | 4 + .../cross_detection_technique.csv | 160 + .../cross_externalgroup_counter.csv | 824 ++ .../cross_incident_technique.csv | 214 + DISARM_MASTER_DATA/detections.csv | 106 + DISARM_MASTER_DATA/examples.csv | 74 + DISARM_MASTER_DATA/externalgroups.csv | 832 ++ DISARM_MASTER_DATA/externalgroups_removed.csv | 6 + .../externalgroups_suggested.csv | 74 + DISARM_MASTER_DATA/forums.csv | 17 + DISARM_MASTER_DATA/frameworks.csv | 4 + DISARM_MASTER_DATA/incidents.csv | 86 + DISARM_MASTER_DATA/metatechniques.csv | 15 + DISARM_MASTER_DATA/narratives.csv | 164 + DISARM_MASTER_DATA/phases.csv | 5 + DISARM_MASTER_DATA/playbooks.csv | 121 + DISARM_MASTER_DATA/resources.csv | 7 + DISARM_MASTER_DATA/responsetypes.csv | 8 + DISARM_MASTER_DATA/sectors.csv | 15 + DISARM_MASTER_DATA/tactics.csv | 22 + DISARM_MASTER_DATA/tasks.csv | 43 + DISARM_MASTER_DATA/techniques.csv | 278 + DISARM_MASTER_DATA/tools.csv | 152 + DISARM_MASTER_DATA/tools_removed.csv | 5 + generated_pages/.DS_Store | Bin 6148 -> 6148 bytes 99 files changed, 15137 insertions(+), 14858 deletions(-) delete mode 100644 CODE/.ipynb_checkpoints/AMITT_create_counters_summaries-checkpoint.ipynb delete mode 100644 CODE/.ipynb_checkpoints/AMITT_create_incident_visualisations-checkpoint.ipynb delete mode 100644 CODE/.ipynb_checkpoints/AMITT_create_website_sql-checkpoint.ipynb delete mode 100644 CODE/.ipynb_checkpoints/AMITT_generate_github_files-checkpoint.ipynb delete mode 100644 CODE/.ipynb_checkpoints/DISARM_code_testbed-checkpoint.ipynb delete mode 100644 CODE/.ipynb_checkpoints/check_DISARM_excel_changes-checkpoint.ipynb create mode 100644 CODE/.ipynb_checkpoints/generate_crosstable_csvs-checkpoint.ipynb create mode 100644 CODE/.ipynb_checkpoints/generate_csv_versions_of_excelfiles-checkpoint.ipynb create mode 100644 CODE/ARCHIVED_CODE/generate_crosstable_csvs.ipynb create mode 100644 CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.ipynb create mode 100644 CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.py delete mode 100644 CODE/__pycache__/generate_disarm_sql.cpython-38.pyc create mode 100644 CODE/compare_disarm_versions.ipynb create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/.DS_Store create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-01-01_AMITT/AMITT_FRAMEWORKS_MASTER.xlsx rename DISARM_MASTER_DATA/{ => 00_earlier_datasets}/2022-06-30_DISARM_0_1/DISARM_COMMENTS_MASTER_0_1.csv (100%) rename DISARM_MASTER_DATA/{ => 00_earlier_datasets}/2022-06-30_DISARM_0_1/DISARM_DATA_MASTER_0_1.xlsx (100%) rename DISARM_MASTER_DATA/{ => 00_earlier_datasets}/2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx (100%) rename DISARM_MASTER_DATA/{ => 00_earlier_datasets/2022-08-24_DISARM_0_1_a}/DISARM_COMMENTS_MASTER.csv (100%) rename DISARM_MASTER_DATA/{ => 00_earlier_datasets/2022-08-24_DISARM_0_1_a}/DISARM_DATA_MASTER.xlsx (98%) rename DISARM_MASTER_DATA/{ => 00_earlier_datasets/2022-08-24_DISARM_0_1_a}/DISARM_FRAMEWORKS_MASTER.xlsx (99%) rename {CODE/DISARM-STIX2 => DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b}/.DS_Store (80%) create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/ADMIN_DATA_README.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/ADMIN_FRAMEWORK CODES.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/ADMIN_FRAMEWORK_README.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/DISARM_COMMENTS_MASTER.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/MOE.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/MOP.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/actortypes.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/countermeasures.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/detections.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/examples.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/externalgroupcounters.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/externalgroups.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/forums.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/frameworks.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/incidents.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/incidenttechniques.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/metatechniques.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/narratives.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/phases.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/playbooks.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/removed_externalgroups.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/removed_tools.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/resources.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/responsetypes.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/sectors.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/suggested_externalgroups.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/tactics.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/tasks.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/techniques.csv create mode 100644 DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/tools.csv create mode 100644 DISARM_MASTER_DATA/ADMIN_DATA_README.csv create mode 100644 DISARM_MASTER_DATA/ADMIN_FRAMEWORK CODES.csv create mode 100644 DISARM_MASTER_DATA/ADMIN_FRAMEWORK_README.csv create mode 100644 DISARM_MASTER_DATA/MOE.csv create mode 100644 DISARM_MASTER_DATA/MOP.csv create mode 100644 DISARM_MASTER_DATA/actortypes.csv create mode 100644 DISARM_MASTER_DATA/comments.csv create mode 100644 DISARM_MASTER_DATA/countermeasures.csv create mode 100644 DISARM_MASTER_DATA/cross_counter_actortype.csv create mode 100644 DISARM_MASTER_DATA/cross_counter_resource.csv create mode 100644 DISARM_MASTER_DATA/cross_counter_technique.csv create mode 100644 DISARM_MASTER_DATA/cross_detection_actortype.csv create mode 100644 DISARM_MASTER_DATA/cross_detection_resource.csv create mode 100644 DISARM_MASTER_DATA/cross_detection_technique.csv create mode 100644 DISARM_MASTER_DATA/cross_externalgroup_counter.csv create mode 100644 DISARM_MASTER_DATA/cross_incident_technique.csv create mode 100644 DISARM_MASTER_DATA/detections.csv create mode 100644 DISARM_MASTER_DATA/examples.csv create mode 100644 DISARM_MASTER_DATA/externalgroups.csv create mode 100644 DISARM_MASTER_DATA/externalgroups_removed.csv create mode 100644 DISARM_MASTER_DATA/externalgroups_suggested.csv create mode 100644 DISARM_MASTER_DATA/forums.csv create mode 100644 DISARM_MASTER_DATA/frameworks.csv create mode 100644 DISARM_MASTER_DATA/incidents.csv create mode 100644 DISARM_MASTER_DATA/metatechniques.csv create mode 100644 DISARM_MASTER_DATA/narratives.csv create mode 100644 DISARM_MASTER_DATA/phases.csv create mode 100644 DISARM_MASTER_DATA/playbooks.csv create mode 100644 DISARM_MASTER_DATA/resources.csv create mode 100644 DISARM_MASTER_DATA/responsetypes.csv create mode 100644 DISARM_MASTER_DATA/sectors.csv create mode 100644 DISARM_MASTER_DATA/tactics.csv create mode 100644 DISARM_MASTER_DATA/tasks.csv create mode 100644 DISARM_MASTER_DATA/techniques.csv create mode 100644 DISARM_MASTER_DATA/tools.csv create mode 100644 DISARM_MASTER_DATA/tools_removed.csv diff --git a/.DS_Store b/.DS_Store index b019a3e7da7f6f1f0bea0bb3e93d8cced05ea475..5b0e036e9ed661926aca07b1be9d3c028a735676 100644 GIT binary patch delta 1163 zcmbVLO>7fK7@fEI@$4!l6B64oD`S%olse8ICb&rpY2pMB4Nai=1Fi36gS9@-wNNYGGDAS(3&NJvP)p|f7Asw(x+&S7WY z_kHut%zJN64xJo2Kj^6;gn$r65=-WhL^7S=`1*Hq7hIoyx4yA&YBrfN(r2ujEQquD-`Kix zT>sDOtna;z)~c_)B55whoimoWtg4!tGI?}Nny|t(*~+UGo|X*;b#L>!+^r&5}cF`aOa9H;CD zI%#h{pqQD#BbveYx3AY9l;sIK-lM9T%5PEY^||GPyX67Oexdu#8D(A@Tr#wIC$U=| zqI8N?7UFiRepSz;|4I(qNv0c%dPd3cQ@zWl1(Vjl)ySQ|$FQNKG^?>Xocooml6&MK z`GY(ouTTaTC`7D9H9YX59uYL71zm`v4?D0E0~o<5#xa3O9L5Yjz%1r)49m#k1Ww@- zoQH+a@Fl*&*Z2nC;s$QxNBo4JaR+y?ihFp3$9RILLWxk(BDjS$!UmyEXcF3lcIR{g zcXMIvFV4kDh}t%?EmX9*Fj=rrV8>1=$}RMJZiFkPefV!SVJ=$}x?;O27?J|4jBDw@ zjSU=@a~&P{S~w730{4#tTUrAWE8*@C3u~ic4p9WL*CmOSa+`=N{$^jTSK20Zi?(eU zDHQkg@>aI$^dIz#R#Ua#y6^E$m!pDny&fUX_eL~uzT2=FQEb6BbfX8ooc#g3gCXq2 zJ{-UyOyNB!ocknFFtCK9od4rofm1k*vp9#3aRC=`37_MOf)balQEw1e@(+By0I^=y b)>*s!Tlrtke=F|_y(rBKo@e;~@4EF*E(jqo delta 279 zcmZn(XbG6$FDk^qz`)4BAi$7RUR;orlb;0S@7P#4jeTMR?`C!m77j^}3Kj-u27d+@ z23KTNlX>L|)g`K{%`9{j3=Iuybrh-%4J?dw6wECQYil_Zw)Z{Os5;u@2$iW_deEGxx0 k`JSxuWC3|IM#jnR@&`6HoM7F|uJDUxljv7Q%8b_n0N~_LZU6uP diff --git a/CODE/.DS_Store b/CODE/.DS_Store index 4394659d366f7b0a834e08c3cd999599254be989..286b4fe95d56e537b6628915a1b1321aa00bfb19 100644 GIT binary patch delta 239 zcmZoMXfc@JFDk&mz`)4B0Hiz_!Wdi`To~dRoHq+{EN89J1o8os Tu?8Wt`vwdFk$}Ln2MGNSp)wH2 diff --git a/CODE/.ipynb_checkpoints/AMITT_create_counters_summaries-checkpoint.ipynb b/CODE/.ipynb_checkpoints/AMITT_create_counters_summaries-checkpoint.ipynb deleted file mode 100644 index 960c609..0000000 --- a/CODE/.ipynb_checkpoints/AMITT_create_counters_summaries-checkpoint.ipynb +++ /dev/null @@ -1,459 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create counters summaries\n", - "Create summaries of disinfo countermeasures for use in dataset cleaning etc." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing ../counter_tactics/ALcounters.md\n", - "Writing ../counter_tactics/TA01counters.md\n", - "Writing ../counter_tactics/TA02counters.md\n", - "Writing ../counter_tactics/TA03counters.md\n", - "Writing ../counter_tactics/TA04counters.md\n", - "Writing ../counter_tactics/TA05counters.md\n", - "Writing ../counter_tactics/TA06counters.md\n", - "Writing ../counter_tactics/TA07counters.md\n", - "Writing ../counter_tactics/TA08counters.md\n", - "Writing ../counter_tactics/TA09counters.md\n", - "Writing ../counter_tactics/TA10counters.md\n", - "Writing ../counter_tactics/TA11counters.md\n", - "Writing ../counter_tactics/TA12counters.md\n", - "updated ../counter_tactic_counts.md\n", - "Writing ../counters_metatag/cleaningcounters.md\n", - "Writing ../counters_metatag/countermessagingcounters.md\n", - "Writing ../counters_metatag/data pollutioncounters.md\n", - "Writing ../counters_metatag/daylightcounters.md\n", - "Writing ../counters_metatag/dilutioncounters.md\n", - "Writing ../counters_metatag/diversioncounters.md\n", - "Writing ../counters_metatag/frictioncounters.md\n", - "Writing ../counters_metatag/metatechniquecounters.md\n", - "Writing ../counters_metatag/reduce resourcescounters.md\n", - "Writing ../counters_metatag/removalcounters.md\n", - "Writing ../counters_metatag/resiliencecounters.md\n", - "Writing ../counters_metatag/scoringcounters.md\n", - "Writing ../counters_metatag/targetingcounters.md\n", - "Writing ../counters_metatag/verificationcounters.md\n", - "updated ../counter_metatag_counts.md\n", - "Writing ../counter_resource/DHScounters.md\n", - "Writing ../counter_resource/NGOcounters.md\n", - "Writing ../counter_resource/activistscounters.md\n", - "Writing ../counter_resource/adtechcounters.md\n", - "Writing ../counter_resource/civil_societycounters.md\n", - "Writing ../counter_resource/community_groupscounters.md\n", - "Writing ../counter_resource/companiescounters.md\n", - "Writing ../counter_resource/content_creatorscounters.md\n", - "Writing ../counter_resource/data_scientistcounters.md\n", - "Writing ../counter_resource/datastreamscounters.md\n", - "Writing ../counter_resource/developerscounters.md\n", - "Writing ../counter_resource/educatorscounters.md\n", - "Writing ../counter_resource/elvescounters.md\n", - "Writing ../counter_resource/factcheckerscounters.md\n", - "Writing ../counter_resource/fundingcounters.md\n", - "Writing ../counter_resource/gamesdesignerscounters.md\n", - "Writing ../counter_resource/governmentcounters.md\n", - "Writing ../counter_resource/government:policymakerscounters.md\n", - "Writing ../counter_resource/influencerscounters.md\n", - "Writing ../counter_resource/influencers:trusted_authoritycounters.md\n", - "Writing ../counter_resource/infoseccounters.md\n", - "Writing ../counter_resource/librariescounters.md\n", - "Writing ../counter_resource/mediacounters.md\n", - "Writing ../counter_resource/militarycounters.md\n", - "Writing ../counter_resource/moneycounters.md\n", - "Writing ../counter_resource/platform_admincounters.md\n", - "Writing ../counter_resource/platform_admin:adtechcounters.md\n", - "Writing ../counter_resource/platform_admin:fundingsitescounters.md\n", - "Writing ../counter_resource/platform_admin:socialmediacounters.md\n", - "Writing ../counter_resource/platform_algorithmscounters.md\n", - "Writing ../counter_resource/platform_outreachcounters.md\n", - "Writing ../counter_resource/platformscounters.md\n", - "Writing ../counter_resource/publiccounters.md\n", - "Writing ../counter_resource/public:account_ownerscounters.md\n", - "Writing ../counter_resource/religious_organisationscounters.md\n", - "Writing ../counter_resource/schoolscounters.md\n", - "Writing ../counter_resource/server_admincounters.md\n", - "updated ../counter_resource_counts.md\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IDmetatechniqueTitleDetailsPlaybook(s)Resources neededHow foundReferencesIncidentsTacticResponseTechniquesNOTES
0C00043cleaningDetect hijacked accounts and reallocate themNaNIn all playbooks the platform must force user ...platform_admin,activists,civil_society,money2019-11-workshopNaNNaNTA03 Develop PeopleD3 DisruptT0011 - Hijack accountsNaN
1C00053cleaningDelete old accounts / Remove unused social med...NaNSocial media companies remove inactive account...platform_admin,platform_admin:socialmedia,publ...2019-11-workshop,2019-11-searchNaNI00004TA04 Develop NetworksD4 DegradeT0011 - Hijack accounts\\nTA06 - Develop Conten...NaN
2C00074cleaningIdentify identical content and mass deplatform\\nIn all cases some checks need to prevent depla...platform_admin,platform_admin:socialmedia2019-11-workshopNaNNaNTA06 Develop ContentD2 DenyT0022 - Conspiracy narratives\\nT0026 - Create ...NaN
3C00026countermessagingShore up democracy based messages (peace, free...UnsureNaNNaN2019-11-workshopNaNNaNTA01 Strategic PlanningD4 DegradeT0002 - Facilitate State PropagandaNaN
4C00082countermessagingGround truthing as automated response to pollu...NaNNaNNaN2019-11-workshopNaNNaNTA06 Develop ContentD3 DisruptNaNNaN
..........................................
181C00214metatechniqueCreate policy that makes social media police d...German model: facebook forced to police conten...NaNgovernment:policymakers2019-11-workshopNaNNaNTA07 Channel SelectionD3 DisruptNaNNaN
182C00215metatechniqueUse fraud legislation to clean up social mediaNaNNaNgovernment:policymakers2019-11-workshopNaNNaNTA07 Channel SelectionD3 DisruptNaNNaN
183C00217daylightRegistries alert when large batches of newsy U...NaNNaNplatform_admingrugqNaNNaNTA07 Channel SelectionD2 DenyNaNNaN
184C00218removalCensorshipAlter and/or block the publication/disseminati...NaNplatform_admingrugqTaylor81NaNTA09 ExposureD2 DenyNaNNaN
185C00219daylightAdd metadata to content - out of the control o...NaNAdd date and source to imagesNaNgrugqNaNNaNTA06 Develop ContentD3 DisruptNaNNaN
\n", - "

186 rows × 13 columns

\n", - "
" - ], - "text/plain": [ - " ID metatechnique \\\n", - "0 C00043 cleaning \n", - "1 C00053 cleaning \n", - "2 C00074 cleaning \n", - "3 C00026 countermessaging \n", - "4 C00082 countermessaging \n", - ".. ... ... \n", - "181 C00214 metatechnique \n", - "182 C00215 metatechnique \n", - "183 C00217 daylight \n", - "184 C00218 removal \n", - "185 C00219 daylight \n", - "\n", - " Title \\\n", - "0 Detect hijacked accounts and reallocate them \n", - "1 Delete old accounts / Remove unused social med... \n", - "2 Identify identical content and mass deplatform \n", - "3 Shore up democracy based messages (peace, free... \n", - "4 Ground truthing as automated response to pollu... \n", - ".. ... \n", - "181 Create policy that makes social media police d... \n", - "182 Use fraud legislation to clean up social media \n", - "183 Registries alert when large batches of newsy U... \n", - "184 Censorship \n", - "185 Add metadata to content - out of the control o... \n", - "\n", - " Details \\\n", - "0 NaN \n", - "1 NaN \n", - "2 \\n \n", - "3 Unsure \n", - "4 NaN \n", - ".. ... \n", - "181 German model: facebook forced to police conten... \n", - "182 NaN \n", - "183 NaN \n", - "184 Alter and/or block the publication/disseminati... \n", - "185 NaN \n", - "\n", - " Playbook(s) \\\n", - "0 In all playbooks the platform must force user ... \n", - "1 Social media companies remove inactive account... \n", - "2 In all cases some checks need to prevent depla... \n", - "3 NaN \n", - "4 NaN \n", - ".. ... \n", - "181 NaN \n", - "182 NaN \n", - "183 NaN \n", - "184 NaN \n", - "185 Add date and source to images \n", - "\n", - " Resources needed \\\n", - "0 platform_admin,activists,civil_society,money \n", - "1 platform_admin,platform_admin:socialmedia,publ... \n", - "2 platform_admin,platform_admin:socialmedia \n", - "3 NaN \n", - "4 NaN \n", - ".. ... \n", - "181 government:policymakers \n", - "182 government:policymakers \n", - "183 platform_admin \n", - "184 platform_admin \n", - "185 NaN \n", - "\n", - " How found References Incidents \\\n", - "0 2019-11-workshop NaN NaN \n", - "1 2019-11-workshop,2019-11-search NaN I00004 \n", - "2 2019-11-workshop NaN NaN \n", - "3 2019-11-workshop NaN NaN \n", - "4 2019-11-workshop NaN NaN \n", - ".. ... ... ... \n", - "181 2019-11-workshop NaN NaN \n", - "182 2019-11-workshop NaN NaN \n", - "183 grugq NaN NaN \n", - "184 grugq Taylor81 NaN \n", - "185 grugq NaN NaN \n", - "\n", - " Tactic Response \\\n", - "0 TA03 Develop People D3 Disrupt \n", - "1 TA04 Develop Networks D4 Degrade \n", - "2 TA06 Develop Content D2 Deny \n", - "3 TA01 Strategic Planning D4 Degrade \n", - "4 TA06 Develop Content D3 Disrupt \n", - ".. ... ... \n", - "181 TA07 Channel Selection D3 Disrupt \n", - "182 TA07 Channel Selection D3 Disrupt \n", - "183 TA07 Channel Selection D2 Deny \n", - "184 TA09 Exposure D2 Deny \n", - "185 TA06 Develop Content D3 Disrupt \n", - "\n", - " Techniques NOTES \n", - "0 T0011 - Hijack accounts NaN \n", - "1 T0011 - Hijack accounts\\nTA06 - Develop Conten... NaN \n", - "2 T0022 - Conspiracy narratives\\nT0026 - Create ... NaN \n", - "3 T0002 - Facilitate State Propaganda NaN \n", - "4 NaN NaN \n", - ".. ... ... \n", - "181 NaN NaN \n", - "182 NaN NaN \n", - "183 NaN NaN \n", - "184 NaN NaN \n", - "185 NaN NaN \n", - "\n", - "[186 rows x 13 columns]" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import generate_amitt_counters\n", - "\n", - "counter = generate_amitt_counters.Counter()\n", - "counter.write_tactics_markdown()\n", - "counter.write_metacounts_markdown()\n", - "counter.write_resource_markdown()\n", - "counter.dfcounters" - ] - }, - { - "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": 2 -} diff --git a/CODE/.ipynb_checkpoints/AMITT_create_incident_visualisations-checkpoint.ipynb b/CODE/.ipynb_checkpoints/AMITT_create_incident_visualisations-checkpoint.ipynb deleted file mode 100644 index 59bd892..0000000 --- a/CODE/.ipynb_checkpoints/AMITT_create_incident_visualisations-checkpoint.ipynb +++ /dev/null @@ -1,268 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create AMITT incident visualisations\n", - "\n", - "Many thanks to https://python-graph-gallery.com/91-customize-seaborn-heatmap/" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import seaborn as sns\n", - "import pandas as pd\n", - "import numpy as np\n", - "import generate_amitt_ttps\n", - "\n", - "# Check that heatmap works\n", - "df = pd.DataFrame(np.random.random((10,12)), columns=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\"])\n", - "sns.heatmap(df, annot=True, annot_kws={\"size\": 7})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "amitt = generate_amitt_ttps.Amitt()\n", - "redgrid = amitt.create_padded_framework_table('AMITT Red', 'technique_ids', False)\n", - "\n", - "techcounts = amitt.it[['id_incident','id_technique']].drop_duplicates().groupby('id_technique').count().to_dict()['id_incident']\n", - "techlabels = redgrid[2:][:]\n", - "nrows = len(techlabels)\n", - "ncols = len(techlabels[0])\n", - "techgrid = np.zeros([nrows, ncols], dtype = int)\n", - "\n", - "for row in range(nrows):\n", - " for col in range(ncols):\n", - " if techlabels[row][col] in techcounts:\n", - " techgrid[row][col] = techcounts[techlabels[row][col]]\n", - "\n", - "sns.heatmap(techgrid, annot=True, annot_kws={\"size\": 7})\n", - "techgrid" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "amitt.df_tactics" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "amitt.it" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ct = amitt.cross_counterid_techniqueid\n", - "ct[ct['technique_id'] != '']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ct[(ct['id'] == 'C00197') & (ct['technique_id'].isin(['T0002', 'T0007']))]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ct = ct[ct['technique_id'].isin(amitt.df_techniques['id'].to_list()) & ct['id'].isin(amitt.df_counters['id'].to_list())]\n", - "ct" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "technique_id_list = ['T0007', 'T0008', 'T0022', 'T0023', 'T0043', 'T0052', 'T0036', 'T0037', 'T0038']\n", - "counter_id_list = ['C00009', 'C00008', 'C00042', 'C00030', 'C00093', 'C00193', 'C00073', 'C000197', 'C00174', 'C00205']\n", - "possible_counters_for_techniques = ct[ct['technique_id'].isin(technique_id_list)] \n", - "possible_techniques_for_counters = ct[ct['id'].isin(counter_id_list)] \n", - "coverage = ct[(ct['id'].isin(counter_id_list)) & (ct['technique_id'].isin(technique_id_list))]\n", - "coverage" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "possible_techniques_for_counters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "possible_counters_for_techniques" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "clicked button T0045 8 7\n", - "clicked button T0046 9 7\n", - "clicked button T0049 4 8\n", - "clicked button T0057 2 9\n", - "clicked button T0060 4 10\n", - "clicked button T0029 2 6\n", - "clicked button T0016 2 4\n" - ] - } - ], - "source": [ - "import tkinter as Tk\n", - "import numpy as np\n", - "import generate_amitt_ttps\n", - "\n", - "class Begueradj(Tk.Frame):\n", - " def __init__(self,parent):\n", - " amitt = generate_amitt_ttps.Amitt()\n", - " self.redgrid = amitt.create_padded_framework_table('AMITT Red', 'technique_ids', False)\n", - " self.bluegrid = amitt.create_padded_framework_table('AMITT Blue', 'counter_ids', False)\n", - "\n", - " Tk.Frame.__init__(self, parent)\n", - " self.parent = parent\n", - " self.button= ''\n", - " self.initialize()\n", - " \n", - " def initialize(self):\n", - " '''\n", - " Draw the GUI\n", - " '''\n", - " self.parent.title(\"AMITT FRAMEWORK COVERAGE\") \n", - " self.parent.grid_rowconfigure(1,weight=1)\n", - " self.parent.grid_columnconfigure(1,weight=1)\n", - "\n", - " self.frame = Tk.Frame(self.parent) \n", - " self.frame.pack(fill=Tk.X, padx=5, pady=5)\n", - "\n", - " # Create a 6x7 array of zeros as the one you used\n", - " numrows = len(self.redgrid) - 1\n", - " numcols = len(self.redgrid[0])\n", - " self.buttons = {}\n", - " for row in range(1,numrows):\n", - " for col in range(0,numcols):\n", - " button_id = self.redgrid[row][col]\n", - " self.button = Tk.Button(self.frame, text = button_id, bg='blue', \n", - " command= lambda bid=button_id, row=row, col=col: self.clicked(bid, row, col))\n", - " self.button.grid(row=row, column=col)\n", - " \n", - " def clicked(self, bid, row, col):\n", - " print('clicked button {} {} {}'.format(bid, row, col))\n", - " self.find_in_grid(self.frame, row, col)\n", - "\n", - " def find_in_grid(self, frame, row, column):\n", - " for children in frame.children.values():\n", - " info = children.grid_info()\n", - " #note that rows and column numbers are stored as string\n", - " if info['row'] == str(row) and info['column'] == str(column):\n", - " print('{}'.format(children.get()))\n", - " return None\n", - "\n", - "root=Tk.Tk()\n", - "app = Begueradj(root) \n", - "root.mainloop()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "redgrid" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for row in range(2,len(redgrid)):\n", - " print(len(redgrid[row]))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "redgrid[1][2]" - ] - }, - { - "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": 2 -} diff --git a/CODE/.ipynb_checkpoints/AMITT_create_website_sql-checkpoint.ipynb b/CODE/.ipynb_checkpoints/AMITT_create_website_sql-checkpoint.ipynb deleted file mode 100644 index 21ce1db..0000000 --- a/CODE/.ipynb_checkpoints/AMITT_create_website_sql-checkpoint.ipynb +++ /dev/null @@ -1,8443 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create AMITT website sql\n", - "\n", - "Creates the sqlite file used as a datasource in the AMITT website tests. " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnamesummaryincident_idtechnique_idid
0IT00000001buy FB targeted adsI00002T00181
1IT00000010Targeted FB paid adsI00005T00182
2IT00000057Targeted FB paid adsI00017T00183
3IT00000002Promote \"funding\" campaignI00002T00174
4IT00000003create web-site - information pollutionI00002T00195
5IT00000014RT & Sputnik generate information pollutionI00005T00196
6IT00000031RT & Sputnik generate information pollution (r...I00007T00197
7IT00000037RT & Sputnik generate information pollutionI00009T00198
8IT00000061RT & Sputnik generate information pollutionI00017T00199
9IT00000082RT & Sputnik generate information pollution (s...I00029T001910
10IT00000094RT & Sputnik generate information pollutionI00032T001911
11IT00000120RT & Sputnik generate information pollutionI00044T001912
12IT00000137RT & Sputnik generate information pollution (s...I00049T001913
13IT00000146RT & Sputnik generate information pollution (s...I00050T001914
14IT00000156RT & Sputnik generate information pollutionI00051T001915
15IT00000180RT & Sputnik generate information pollution (s...I00063T001916
16IT00000004create web-site - information pollutionI00002T005617
17IT00000015RT & Sputnik generate information pollutionI00005T005618
18IT00000032RT & Sputnik generate information pollution (r...I00007T005619
19IT00000038RT & Sputnik generate information pollutionI00009T005620
20IT00000062RT & Sputnik generate information pollutionI00017T005621
21IT00000083RT & Sputnik generate information pollution (s...I00029T005622
22IT00000095RT & Sputnik generate information pollutionI00032T005623
23IT00000121RT & Sputnik generate information pollutionI00044T005624
24IT00000138RT & Sputnik generate information pollution (s...I00049T005625
25IT00000147RT & Sputnik generate information pollution (s...I00050T005626
26IT00000157RT & Sputnik generate information pollutionI00051T005627
27IT00000162State-run media seeds foreign influence enviro...I00053T005628
28IT00000181RT & Sputnik generate information pollution (s...I00063T005629
29IT00000005SEO optimisation/manipulation (\"key words\")I00002T004630
30IT00000022SEO optimisation/manipulation (\"key words\")I00005T004631
31IT00000043SEO optimisation/manipulation (\"key words\")I00010T004632
32IT00000071SEO optimisation/manipulation (\"key words\")I00017T004633
33IT00000085SEO optimisation/manipulation (\"key words\")I00029T004634
34IT00000103SEO optimisation/manipulation (\"key words\")I00032T004635
35IT00000125SEO optimisation/manipulation (\"key words\")I00044T004636
36IT00000140SEO optimisation/manipulation (\"key words\")I00049T004637
37IT00000149SEO optimisation/manipulation (\"key words\")I00050T004638
38IT00000161SEO optimisation/manipulation (\"key words\")I00051T004639
39IT00000172SEO optimisation/manipulation (\"key words\")I00056T004640
40IT00000183SEO optimisation/manipulation (\"key words\")I00063T004641
41IT00000006legacy web contentI00002T005842
42IT00000007hard to remove content and/or campaign/exploit...I00002T005843
43IT00000176legacy web contentI00056T005844
44IT00000008Twitter bots amplify & manipulateI00005T005445
45IT00000034Twitter bots amplify & manipulateI00007T005446
46IT00000041Twitter bots amplify & manipulateI00010T005447
47IT00000055Twitter bots amplify & manipulateI00017T005448
48IT00000076Twitter bots amplify & manipulateI00022T005449
49IT00000079Twitter bots amplify & manipulateI00029T005450
50IT00000090Twitter bots amplify & manipulateI00032T005451
51IT00000115Twitter bots amplify & manipulateI00042T005452
52IT00000118Twitter bots amplify & manipulateI00044T005453
53IT00000131Twitter bots amplify & manipulateI00047T005454
54IT00000134Twitter bots amplify & manipulateI00049T005455
55IT00000144Twitter bots amplify & manipulateI00050T005456
56IT00000154Twitter bots amplify & manipulateI00051T005457
57IT00000169Twitter bots amplify & manipulateI00056T005458
58IT00000177Twitter bots amplify & manipulateI00063T005459
59IT00000009Twitter trolls amplify & manipulateI00005T005360
60IT00000035Twitter trolls amplify & manipulateI00007T005361
61IT00000042Twitter trolls amplify & manipulateI00010T005362
62IT00000056Twitter trolls amplify & manipulateI00017T005363
63IT00000077Twitter trolls amplify & manipulateI00022T005364
64IT00000080Twitter trolls amplify & manipulateI00029T005365
65IT00000091Twitter trolls amplify & manipulateI00032T005366
66IT00000119Twitter trolls amplify & manipulateI00044T005367
67IT00000132Twitter trolls amplify & manipulateI00047T005368
68IT00000135Twitter trolls amplify & manipulateI00049T005369
69IT00000145Twitter trolls amplify & manipulateI00050T005370
70IT00000155Twitter trolls amplify & manipulateI00051T005371
71IT00000170Twitter trolls amplify & manipulateI00056T005372
72IT00000178Twitter trolls amplify & manipulateI00063T005373
73IT00000011Fake FB groups + dark contentI00005T000774
74IT00000029Fake twitter profiles to amplifyTwitter bots used to drive visbilityI00006T000775
75IT00000039FB pagesI00009T000776
76IT00000045FB pages/groups/profilesI00010T000777
77IT00000058Fake FB groups + dark contentI00017T000778
78IT00000078Fake FB groups/pages/profiles + dark contentI00022T000779
79IT00000092Fake FB groups/pages/profilesI00032T000780
80IT00000171Fake FB groups/pages/profiles + dark content (...I00056T000781
81IT00000012Digital to physical \"organize+promote\" rallies...I00005T005782
82IT00000059Digital to physical \"organize+promote\" rallies...I00017T005783
83IT00000093Digital to physical \"organize+promote\" rallies...I00032T005784
84IT00000164Events coordinated and promoted across media p...I00053T005785
85IT00000166Extend digital the physical space… gatherings ...I00053T005786
86IT00000013manipulate social media \"online polls\"?I00005T002987
87IT00000060manipulate social media \"online polls\"?I00017T002988
88IT00000016cultivate, manipulate, exploit useful idiotsI00005T001089
89IT00000033cultivate, manipulate, exploit useful idiots (...I00007T001090
90IT00000044cultivate, manipulate, exploit useful idiots (...I00010T001091
91IT00000063cultivate, manipulate, exploit useful idiotsI00017T001092
92IT00000084cultivate, manipulate, exploit useful idiotsI00029T001093
93IT00000104cultivate, manipulate, exploit useful idiots (...I00032T001094
94IT00000126cultivate, manipulate, exploit useful idiots (...I00044T001095
95IT00000139cultivate, manipulate, exploit useful idiots (...I00049T001096
96IT00000148cultivate, manipulate, exploit useful idiots (...I00050T001097
97IT00000158cultivate, manipulate, exploit useful idiotsI00051T001098
98IT00000182cultivate, manipulate, exploit useful idiotsI00063T001099
99IT00000017YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0031100
100IT00000046YouTube; RedditI00010T0031101
101IT00000064YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0031102
102IT00000087YouTube; Reddit;I00029T0031103
103IT00000096YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0031104
104IT00000122YouTube; RedditI00044T0031105
105IT00000142YouTube; Reddit;I00049T0031106
106IT00000151YouTube; Reddit;I00050T0031107
107IT00000159YouTube; RedditI00051T0031108
108IT00000185YouTube; Reddit;I00063T0031109
109IT00000018YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0032110
110IT00000047YouTube; RedditI00010T0032111
111IT00000065YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0032112
112IT00000088YouTube; Reddit;I00029T0032113
113IT00000097YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0032114
114IT00000123YouTube; RedditI00044T0032115
115IT00000143YouTube; Reddit;I00049T0032116
116IT00000152YouTube; Reddit;I00050T0032117
117IT00000160YouTube; RedditI00051T0032118
118IT00000186YouTube; Reddit;I00063T0032119
119IT00000019YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0034120
120IT00000067YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0034121
121IT00000099YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0034122
122IT00000020YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0035123
123IT00000068YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0035124
124IT00000100YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0035125
125IT00000021YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0036126
126IT00000069YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0036127
127IT00000101YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0036128
128IT00000023Memes... anti-immigration; euroskepticism; fea...Meme that ISIS was responsible for a local che...I00005T0021129
129IT00000072Memes... anti-immigration; euroskepticism; fea...I00017T0021130
130IT00000117memesI00042T0021131
131IT00000173Memes... anti-Isreal/USA/West, conspiracy narr...I00056T0021132
132IT00000024Backstop personasWikipedia fake persona \"AmandaGray91\".I00005T0030133
133IT00000074Backstop personasI00017T0030134
134IT00000025Use SMS/text messagesSMS messages sent to local residentsI00006T0043135
135IT00000026Fake video/imagesFake youtube video of ISIS claiming responsibi...I00006T0024136
136IT00000116photoshopped/fake imagesI00042T0024137
137IT00000027Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006T0015138
138IT00000028Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006T0055139
139IT00000030bait journalists/media/politiciansI00006T0039140
140IT00000049journalist/media baitingI00010T0039141
141IT00000053journalist/media baitingI00015T0039142
142IT00000036Using \"expert\"I00009T0045143
143IT00000040News circulated/amplifed by tertiary sites (Ru...I00009T0052144
144IT00000086News circulated/amplifed by tertiary sites (Ru...I00029T0052145
145IT00000141News circulated/amplifed by tertiary sites (Ru...I00049T0052146
146IT00000150News circulated/amplifed by tertiary sites (Mi...I00050T0052147
147IT00000184News circulated/amplifed by tertiary sites (Ru...I00063T0052148
148IT000000484Chan/8Chan - trial contentI00010T0020149
149IT000000704Chan/8Chan - trial contentI00017T0020150
150IT000001024Chan/8Chan - trial contentI00032T0020151
151IT000001244Chan/8Chan - trial contentI00044T0020152
152IT00000050Forge ('release' altered hacked documents)I00015T0025153
153IT00000051hack/leak/manipulate/distortI00015T0025154
154IT00000054hack/leak/manipulate/distortI00017T0025155
155IT00000075hack/leak/manipulate/distortI00022T0025156
156IT00000153hack/leak/manipulate/distortI00051T0025157
157IT00000052Circulate to media via DM, then release publiclyI00015T0044158
158IT00000066YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0033159
159IT00000098YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0033160
160IT00000073Click-bait (economic actors) fake news sites (...I00017T0016161
161IT000000814 D's (dismiss, distort, distract, dismay...Of...I00029T0001162
162IT000001284 D's (dismiss, distort, distract, dismay...Of...I00047T0001163
163IT00000129Russian FSB security service blamed Ukraine fo...I00047T0001164
164IT000001364 D's (dismiss, distort, distract, dismay...Of...I00049T0001165
165IT00000167China also plays victim, innocence, plays by r...I00053T0001166
166IT00000168Chinese ambassador Lu Shaye accused Canada of ...I00053T0001167
167IT000001794 D's (dismiss, distort, distract, dismay...Of...I00063T0001168
168IT00000089Demand insurmountable proofI00029T0040169
169IT00000133Demand insurmountable proofI00047T0040170
170IT000001052,000,000 people (est.) part of state run/spon...I00033T0049171
171IT00000112flood the Facebook pages of Taiwanese politici...I00034T0049172
172IT00000113Democratic Progressive Party (DPP), attracted ...I00034T0049173
173IT00000106fabricated social media commentI00033T0051174
174IT00000107domestic social media influence operations foc...I00033T0050175
175IT00000165Extend digital the physical space… gatherings ...I00053T0050176
176IT00000108cow online opinion leaders into submission, mu...I00033T0047177
177IT00000109cow online opinion leaders into submission, mu...I00033T0048178
178IT00000110facilitate state propaganda and defuse crisesI00033T0002179
179IT00000111Netizens from one of the largest discussion fo...I00034T0002180
180IT00000114“hack” of Qatar’s official news agencyI00042T0011181
181IT00000127Promote fake “experts” with impressive (and sc...I00044T0009182
182IT00000130(Distort) Kremlin-controlled RT cited Russian ...I00047T0023183
183IT00000163Distorted, saccharine “news” about the Chinese...I00053T0023184
184IT00000174Memes... anti-Isreal/USA/West, conspiracy narr...I00056T0022185
185IT00000175Fake news/synthetic web-sitesI00056T0008186
\n", - "
" - ], - "text/plain": [ - " amitt_id name \\\n", - "0 IT00000001 buy FB targeted ads \n", - "1 IT00000010 Targeted FB paid ads \n", - "2 IT00000057 Targeted FB paid ads \n", - "3 IT00000002 Promote \"funding\" campaign \n", - "4 IT00000003 create web-site - information pollution \n", - "5 IT00000014 RT & Sputnik generate information pollution \n", - "6 IT00000031 RT & Sputnik generate information pollution (r... \n", - "7 IT00000037 RT & Sputnik generate information pollution \n", - "8 IT00000061 RT & Sputnik generate information pollution \n", - "9 IT00000082 RT & Sputnik generate information pollution (s... \n", - "10 IT00000094 RT & Sputnik generate information pollution \n", - "11 IT00000120 RT & Sputnik generate information pollution \n", - "12 IT00000137 RT & Sputnik generate information pollution (s... \n", - "13 IT00000146 RT & Sputnik generate information pollution (s... \n", - "14 IT00000156 RT & Sputnik generate information pollution \n", - "15 IT00000180 RT & Sputnik generate information pollution (s... \n", - "16 IT00000004 create web-site - information pollution \n", - "17 IT00000015 RT & Sputnik generate information pollution \n", - "18 IT00000032 RT & Sputnik generate information pollution (r... \n", - "19 IT00000038 RT & Sputnik generate information pollution \n", - "20 IT00000062 RT & Sputnik generate information pollution \n", - "21 IT00000083 RT & Sputnik generate information pollution (s... \n", - "22 IT00000095 RT & Sputnik generate information pollution \n", - "23 IT00000121 RT & Sputnik generate information pollution \n", - "24 IT00000138 RT & Sputnik generate information pollution (s... \n", - "25 IT00000147 RT & Sputnik generate information pollution (s... \n", - "26 IT00000157 RT & Sputnik generate information pollution \n", - "27 IT00000162 State-run media seeds foreign influence enviro... \n", - "28 IT00000181 RT & Sputnik generate information pollution (s... \n", - "29 IT00000005 SEO optimisation/manipulation (\"key words\") \n", - "30 IT00000022 SEO optimisation/manipulation (\"key words\") \n", - "31 IT00000043 SEO optimisation/manipulation (\"key words\") \n", - "32 IT00000071 SEO optimisation/manipulation (\"key words\") \n", - "33 IT00000085 SEO optimisation/manipulation (\"key words\") \n", - "34 IT00000103 SEO optimisation/manipulation (\"key words\") \n", - "35 IT00000125 SEO optimisation/manipulation (\"key words\") \n", - "36 IT00000140 SEO optimisation/manipulation (\"key words\") \n", - "37 IT00000149 SEO optimisation/manipulation (\"key words\") \n", - "38 IT00000161 SEO optimisation/manipulation (\"key words\") \n", - "39 IT00000172 SEO optimisation/manipulation (\"key words\") \n", - "40 IT00000183 SEO optimisation/manipulation (\"key words\") \n", - "41 IT00000006 legacy web content \n", - "42 IT00000007 hard to remove content and/or campaign/exploit... \n", - "43 IT00000176 legacy web content \n", - "44 IT00000008 Twitter bots amplify & manipulate \n", - "45 IT00000034 Twitter bots amplify & manipulate \n", - "46 IT00000041 Twitter bots amplify & manipulate \n", - "47 IT00000055 Twitter bots amplify & manipulate \n", - "48 IT00000076 Twitter bots amplify & manipulate \n", - "49 IT00000079 Twitter bots amplify & manipulate \n", - "50 IT00000090 Twitter bots amplify & manipulate \n", - "51 IT00000115 Twitter bots amplify & manipulate \n", - "52 IT00000118 Twitter bots amplify & manipulate \n", - "53 IT00000131 Twitter bots amplify & manipulate \n", - "54 IT00000134 Twitter bots amplify & manipulate \n", - "55 IT00000144 Twitter bots amplify & manipulate \n", - "56 IT00000154 Twitter bots amplify & manipulate \n", - "57 IT00000169 Twitter bots amplify & manipulate \n", - "58 IT00000177 Twitter bots amplify & manipulate \n", - "59 IT00000009 Twitter trolls amplify & manipulate \n", - "60 IT00000035 Twitter trolls amplify & manipulate \n", - "61 IT00000042 Twitter trolls amplify & manipulate \n", - "62 IT00000056 Twitter trolls amplify & manipulate \n", - "63 IT00000077 Twitter trolls amplify & manipulate \n", - "64 IT00000080 Twitter trolls amplify & manipulate \n", - "65 IT00000091 Twitter trolls amplify & manipulate \n", - "66 IT00000119 Twitter trolls amplify & manipulate \n", - "67 IT00000132 Twitter trolls amplify & manipulate \n", - "68 IT00000135 Twitter trolls amplify & manipulate \n", - "69 IT00000145 Twitter trolls amplify & manipulate \n", - "70 IT00000155 Twitter trolls amplify & manipulate \n", - "71 IT00000170 Twitter trolls amplify & manipulate \n", - "72 IT00000178 Twitter trolls amplify & manipulate \n", - "73 IT00000011 Fake FB groups + dark content \n", - "74 IT00000029 Fake twitter profiles to amplify \n", - "75 IT00000039 FB pages \n", - "76 IT00000045 FB pages/groups/profiles \n", - "77 IT00000058 Fake FB groups + dark content \n", - "78 IT00000078 Fake FB groups/pages/profiles + dark content \n", - "79 IT00000092 Fake FB groups/pages/profiles \n", - "80 IT00000171 Fake FB groups/pages/profiles + dark content (... \n", - "81 IT00000012 Digital to physical \"organize+promote\" rallies... \n", - "82 IT00000059 Digital to physical \"organize+promote\" rallies... \n", - "83 IT00000093 Digital to physical \"organize+promote\" rallies... \n", - "84 IT00000164 Events coordinated and promoted across media p... \n", - "85 IT00000166 Extend digital the physical space… gatherings ... \n", - "86 IT00000013 manipulate social media \"online polls\"? \n", - "87 IT00000060 manipulate social media \"online polls\"? \n", - "88 IT00000016 cultivate, manipulate, exploit useful idiots \n", - "89 IT00000033 cultivate, manipulate, exploit useful idiots (... \n", - "90 IT00000044 cultivate, manipulate, exploit useful idiots (... \n", - "91 IT00000063 cultivate, manipulate, exploit useful idiots \n", - "92 IT00000084 cultivate, manipulate, exploit useful idiots \n", - "93 IT00000104 cultivate, manipulate, exploit useful idiots (... \n", - "94 IT00000126 cultivate, manipulate, exploit useful idiots (... \n", - "95 IT00000139 cultivate, manipulate, exploit useful idiots (... \n", - "96 IT00000148 cultivate, manipulate, exploit useful idiots (... \n", - "97 IT00000158 cultivate, manipulate, exploit useful idiots \n", - "98 IT00000182 cultivate, manipulate, exploit useful idiots \n", - "99 IT00000017 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "100 IT00000046 YouTube; Reddit \n", - "101 IT00000064 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "102 IT00000087 YouTube; Reddit; \n", - "103 IT00000096 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "104 IT00000122 YouTube; Reddit \n", - "105 IT00000142 YouTube; Reddit; \n", - "106 IT00000151 YouTube; Reddit; \n", - "107 IT00000159 YouTube; Reddit \n", - "108 IT00000185 YouTube; Reddit; \n", - "109 IT00000018 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "110 IT00000047 YouTube; Reddit \n", - "111 IT00000065 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "112 IT00000088 YouTube; Reddit; \n", - "113 IT00000097 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "114 IT00000123 YouTube; Reddit \n", - "115 IT00000143 YouTube; Reddit; \n", - "116 IT00000152 YouTube; Reddit; \n", - "117 IT00000160 YouTube; Reddit \n", - "118 IT00000186 YouTube; Reddit; \n", - "119 IT00000019 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "120 IT00000067 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "121 IT00000099 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "122 IT00000020 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "123 IT00000068 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "124 IT00000100 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "125 IT00000021 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "126 IT00000069 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "127 IT00000101 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "128 IT00000023 Memes... anti-immigration; euroskepticism; fea... \n", - "129 IT00000072 Memes... anti-immigration; euroskepticism; fea... \n", - "130 IT00000117 memes \n", - "131 IT00000173 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "132 IT00000024 Backstop personas \n", - "133 IT00000074 Backstop personas \n", - "134 IT00000025 Use SMS/text messages \n", - "135 IT00000026 Fake video/images \n", - "136 IT00000116 photoshopped/fake images \n", - "137 IT00000027 Create and use hashtag \n", - "138 IT00000028 Create and use hashtag \n", - "139 IT00000030 bait journalists/media/politicians \n", - "140 IT00000049 journalist/media baiting \n", - "141 IT00000053 journalist/media baiting \n", - "142 IT00000036 Using \"expert\" \n", - "143 IT00000040 News circulated/amplifed by tertiary sites (Ru... \n", - "144 IT00000086 News circulated/amplifed by tertiary sites (Ru... \n", - "145 IT00000141 News circulated/amplifed by tertiary sites (Ru... \n", - "146 IT00000150 News circulated/amplifed by tertiary sites (Mi... \n", - "147 IT00000184 News circulated/amplifed by tertiary sites (Ru... \n", - "148 IT00000048 4Chan/8Chan - trial content \n", - "149 IT00000070 4Chan/8Chan - trial content \n", - "150 IT00000102 4Chan/8Chan - trial content \n", - "151 IT00000124 4Chan/8Chan - trial content \n", - "152 IT00000050 Forge ('release' altered hacked documents) \n", - "153 IT00000051 hack/leak/manipulate/distort \n", - "154 IT00000054 hack/leak/manipulate/distort \n", - "155 IT00000075 hack/leak/manipulate/distort \n", - "156 IT00000153 hack/leak/manipulate/distort \n", - "157 IT00000052 Circulate to media via DM, then release publicly \n", - "158 IT00000066 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "159 IT00000098 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "160 IT00000073 Click-bait (economic actors) fake news sites (... \n", - "161 IT00000081 4 D's (dismiss, distort, distract, dismay...Of... \n", - "162 IT00000128 4 D's (dismiss, distort, distract, dismay...Of... \n", - "163 IT00000129 Russian FSB security service blamed Ukraine fo... \n", - "164 IT00000136 4 D's (dismiss, distort, distract, dismay...Of... \n", - "165 IT00000167 China also plays victim, innocence, plays by r... \n", - "166 IT00000168 Chinese ambassador Lu Shaye accused Canada of ... \n", - "167 IT00000179 4 D's (dismiss, distort, distract, dismay...Of... \n", - "168 IT00000089 Demand insurmountable proof \n", - "169 IT00000133 Demand insurmountable proof \n", - "170 IT00000105 2,000,000 people (est.) part of state run/spon... \n", - "171 IT00000112 flood the Facebook pages of Taiwanese politici... \n", - "172 IT00000113 Democratic Progressive Party (DPP), attracted ... \n", - "173 IT00000106 fabricated social media comment \n", - "174 IT00000107 domestic social media influence operations foc... \n", - "175 IT00000165 Extend digital the physical space… gatherings ... \n", - "176 IT00000108 cow online opinion leaders into submission, mu... \n", - "177 IT00000109 cow online opinion leaders into submission, mu... \n", - "178 IT00000110 facilitate state propaganda and defuse crises \n", - "179 IT00000111 Netizens from one of the largest discussion fo... \n", - "180 IT00000114 “hack” of Qatar’s official news agency \n", - "181 IT00000127 Promote fake “experts” with impressive (and sc... \n", - "182 IT00000130 (Distort) Kremlin-controlled RT cited Russian ... \n", - "183 IT00000163 Distorted, saccharine “news” about the Chinese... \n", - "184 IT00000174 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "185 IT00000175 Fake news/synthetic web-sites \n", - "\n", - " summary incident_id \\\n", - "0 I00002 \n", - "1 I00005 \n", - "2 I00017 \n", - "3 I00002 \n", - "4 I00002 \n", - "5 I00005 \n", - "6 I00007 \n", - "7 I00009 \n", - "8 I00017 \n", - "9 I00029 \n", - "10 I00032 \n", - "11 I00044 \n", - "12 I00049 \n", - "13 I00050 \n", - "14 I00051 \n", - "15 I00063 \n", - "16 I00002 \n", - "17 I00005 \n", - "18 I00007 \n", - "19 I00009 \n", - "20 I00017 \n", - "21 I00029 \n", - "22 I00032 \n", - "23 I00044 \n", - "24 I00049 \n", - "25 I00050 \n", - "26 I00051 \n", - "27 I00053 \n", - "28 I00063 \n", - "29 I00002 \n", - "30 I00005 \n", - "31 I00010 \n", - "32 I00017 \n", - "33 I00029 \n", - "34 I00032 \n", - "35 I00044 \n", - "36 I00049 \n", - "37 I00050 \n", - "38 I00051 \n", - "39 I00056 \n", - "40 I00063 \n", - "41 I00002 \n", - "42 I00002 \n", - "43 I00056 \n", - "44 I00005 \n", - "45 I00007 \n", - "46 I00010 \n", - "47 I00017 \n", - "48 I00022 \n", - "49 I00029 \n", - "50 I00032 \n", - "51 I00042 \n", - "52 I00044 \n", - "53 I00047 \n", - "54 I00049 \n", - "55 I00050 \n", - "56 I00051 \n", - "57 I00056 \n", - "58 I00063 \n", - "59 I00005 \n", - "60 I00007 \n", - "61 I00010 \n", - "62 I00017 \n", - "63 I00022 \n", - "64 I00029 \n", - "65 I00032 \n", - "66 I00044 \n", - "67 I00047 \n", - "68 I00049 \n", - "69 I00050 \n", - "70 I00051 \n", - "71 I00056 \n", - "72 I00063 \n", - "73 I00005 \n", - "74 Twitter bots used to drive visbility I00006 \n", - "75 I00009 \n", - "76 I00010 \n", - "77 I00017 \n", - "78 I00022 \n", - "79 I00032 \n", - "80 I00056 \n", - "81 I00005 \n", - "82 I00017 \n", - "83 I00032 \n", - "84 I00053 \n", - "85 I00053 \n", - "86 I00005 \n", - "87 I00017 \n", - "88 I00005 \n", - "89 I00007 \n", - "90 I00010 \n", - "91 I00017 \n", - "92 I00029 \n", - "93 I00032 \n", - "94 I00044 \n", - "95 I00049 \n", - "96 I00050 \n", - "97 I00051 \n", - "98 I00063 \n", - "99 I00005 \n", - "100 I00010 \n", - "101 I00017 \n", - "102 I00029 \n", - "103 I00032 \n", - "104 I00044 \n", - "105 I00049 \n", - "106 I00050 \n", - "107 I00051 \n", - "108 I00063 \n", - "109 I00005 \n", - "110 I00010 \n", - "111 I00017 \n", - "112 I00029 \n", - "113 I00032 \n", - "114 I00044 \n", - "115 I00049 \n", - "116 I00050 \n", - "117 I00051 \n", - "118 I00063 \n", - "119 I00005 \n", - "120 I00017 \n", - "121 I00032 \n", - "122 I00005 \n", - "123 I00017 \n", - "124 I00032 \n", - "125 I00005 \n", - "126 I00017 \n", - "127 I00032 \n", - "128 Meme that ISIS was responsible for a local che... I00005 \n", - "129 I00017 \n", - "130 I00042 \n", - "131 I00056 \n", - "132 Wikipedia fake persona \"AmandaGray91\". I00005 \n", - "133 I00017 \n", - "134 SMS messages sent to local residents I00006 \n", - "135 Fake youtube video of ISIS claiming responsibi... I00006 \n", - "136 I00042 \n", - "137 Main hashtag used was #ColumbianChemicals I00006 \n", - "138 Main hashtag used was #ColumbianChemicals I00006 \n", - "139 I00006 \n", - "140 I00010 \n", - "141 I00015 \n", - "142 I00009 \n", - "143 I00009 \n", - "144 I00029 \n", - "145 I00049 \n", - "146 I00050 \n", - "147 I00063 \n", - "148 I00010 \n", - "149 I00017 \n", - "150 I00032 \n", - "151 I00044 \n", - "152 I00015 \n", - "153 I00015 \n", - "154 I00017 \n", - "155 I00022 \n", - "156 I00051 \n", - "157 I00015 \n", - "158 I00017 \n", - "159 I00032 \n", - "160 I00017 \n", - "161 I00029 \n", - "162 I00047 \n", - "163 I00047 \n", - "164 I00049 \n", - "165 I00053 \n", - "166 I00053 \n", - "167 I00063 \n", - "168 I00029 \n", - "169 I00047 \n", - "170 I00033 \n", - "171 I00034 \n", - "172 I00034 \n", - "173 I00033 \n", - "174 I00033 \n", - "175 I00053 \n", - "176 I00033 \n", - "177 I00033 \n", - "178 I00033 \n", - "179 I00034 \n", - "180 I00042 \n", - "181 I00044 \n", - "182 I00047 \n", - "183 I00053 \n", - "184 I00056 \n", - "185 I00056 \n", - "\n", - " technique_id id \n", - "0 T0018 1 \n", - "1 T0018 2 \n", - "2 T0018 3 \n", - "3 T0017 4 \n", - "4 T0019 5 \n", - "5 T0019 6 \n", - "6 T0019 7 \n", - "7 T0019 8 \n", - "8 T0019 9 \n", - "9 T0019 10 \n", - "10 T0019 11 \n", - "11 T0019 12 \n", - "12 T0019 13 \n", - "13 T0019 14 \n", - "14 T0019 15 \n", - "15 T0019 16 \n", - "16 T0056 17 \n", - "17 T0056 18 \n", - "18 T0056 19 \n", - "19 T0056 20 \n", - "20 T0056 21 \n", - "21 T0056 22 \n", - "22 T0056 23 \n", - "23 T0056 24 \n", - "24 T0056 25 \n", - "25 T0056 26 \n", - "26 T0056 27 \n", - "27 T0056 28 \n", - "28 T0056 29 \n", - "29 T0046 30 \n", - "30 T0046 31 \n", - "31 T0046 32 \n", - "32 T0046 33 \n", - "33 T0046 34 \n", - "34 T0046 35 \n", - "35 T0046 36 \n", - "36 T0046 37 \n", - "37 T0046 38 \n", - "38 T0046 39 \n", - "39 T0046 40 \n", - "40 T0046 41 \n", - "41 T0058 42 \n", - "42 T0058 43 \n", - "43 T0058 44 \n", - "44 T0054 45 \n", - "45 T0054 46 \n", - "46 T0054 47 \n", - "47 T0054 48 \n", - "48 T0054 49 \n", - "49 T0054 50 \n", - "50 T0054 51 \n", - "51 T0054 52 \n", - "52 T0054 53 \n", - "53 T0054 54 \n", - "54 T0054 55 \n", - "55 T0054 56 \n", - "56 T0054 57 \n", - "57 T0054 58 \n", - "58 T0054 59 \n", - "59 T0053 60 \n", - "60 T0053 61 \n", - "61 T0053 62 \n", - "62 T0053 63 \n", - "63 T0053 64 \n", - "64 T0053 65 \n", - "65 T0053 66 \n", - "66 T0053 67 \n", - "67 T0053 68 \n", - "68 T0053 69 \n", - "69 T0053 70 \n", - "70 T0053 71 \n", - "71 T0053 72 \n", - "72 T0053 73 \n", - "73 T0007 74 \n", - "74 T0007 75 \n", - "75 T0007 76 \n", - "76 T0007 77 \n", - "77 T0007 78 \n", - "78 T0007 79 \n", - "79 T0007 80 \n", - "80 T0007 81 \n", - "81 T0057 82 \n", - "82 T0057 83 \n", - "83 T0057 84 \n", - "84 T0057 85 \n", - "85 T0057 86 \n", - "86 T0029 87 \n", - "87 T0029 88 \n", - "88 T0010 89 \n", - "89 T0010 90 \n", - "90 T0010 91 \n", - "91 T0010 92 \n", - "92 T0010 93 \n", - "93 T0010 94 \n", - "94 T0010 95 \n", - "95 T0010 96 \n", - "96 T0010 97 \n", - "97 T0010 98 \n", - "98 T0010 99 \n", - "99 T0031 100 \n", - "100 T0031 101 \n", - "101 T0031 102 \n", - "102 T0031 103 \n", - "103 T0031 104 \n", - "104 T0031 105 \n", - "105 T0031 106 \n", - "106 T0031 107 \n", - "107 T0031 108 \n", - "108 T0031 109 \n", - "109 T0032 110 \n", - "110 T0032 111 \n", - "111 T0032 112 \n", - "112 T0032 113 \n", - "113 T0032 114 \n", - "114 T0032 115 \n", - "115 T0032 116 \n", - "116 T0032 117 \n", - "117 T0032 118 \n", - "118 T0032 119 \n", - "119 T0034 120 \n", - "120 T0034 121 \n", - "121 T0034 122 \n", - "122 T0035 123 \n", - "123 T0035 124 \n", - "124 T0035 125 \n", - "125 T0036 126 \n", - "126 T0036 127 \n", - "127 T0036 128 \n", - "128 T0021 129 \n", - "129 T0021 130 \n", - "130 T0021 131 \n", - "131 T0021 132 \n", - "132 T0030 133 \n", - "133 T0030 134 \n", - "134 T0043 135 \n", - "135 T0024 136 \n", - "136 T0024 137 \n", - "137 T0015 138 \n", - "138 T0055 139 \n", - "139 T0039 140 \n", - "140 T0039 141 \n", - "141 T0039 142 \n", - "142 T0045 143 \n", - "143 T0052 144 \n", - "144 T0052 145 \n", - "145 T0052 146 \n", - "146 T0052 147 \n", - "147 T0052 148 \n", - "148 T0020 149 \n", - "149 T0020 150 \n", - "150 T0020 151 \n", - "151 T0020 152 \n", - "152 T0025 153 \n", - "153 T0025 154 \n", - "154 T0025 155 \n", - "155 T0025 156 \n", - "156 T0025 157 \n", - "157 T0044 158 \n", - "158 T0033 159 \n", - "159 T0033 160 \n", - "160 T0016 161 \n", - "161 T0001 162 \n", - "162 T0001 163 \n", - "163 T0001 164 \n", - "164 T0001 165 \n", - "165 T0001 166 \n", - "166 T0001 167 \n", - "167 T0001 168 \n", - "168 T0040 169 \n", - "169 T0040 170 \n", - "170 T0049 171 \n", - "171 T0049 172 \n", - "172 T0049 173 \n", - "173 T0051 174 \n", - "174 T0050 175 \n", - "175 T0050 176 \n", - "176 T0047 177 \n", - "177 T0048 178 \n", - "178 T0002 179 \n", - "179 T0002 180 \n", - "180 T0011 181 \n", - "181 T0009 182 \n", - "182 T0023 183 \n", - "183 T0023 184 \n", - "184 T0022 185 \n", - "185 T0008 186 " - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get AMITT variables\n", - "\n", - "import pandas as pd\n", - "import sqlite3 as sql\n", - "import os\n", - "from sqlalchemy import create_engine\n", - "from generate_amitt_ttps import Amitt\n", - "pd.set_option('display.max_rows', 1000)\n", - "\n", - "\n", - "# Generate AMITT datasets\n", - "amitt = Amitt()\n", - "\n", - "dbasetype = 'postgresql_local' #'sqlite' #'heroku'\n", - "\n", - "\n", - "# Create connection to database\n", - "if dbasetype == 'sqlite':\n", - " # Generate minimal sqlite database from the Amitt variables\n", - " conn = sql.connect('amittsite.sqlite')\n", - "elif dbasetype == 'postgresql_local':\n", - " conn = create_engine('postgresql://sara:@localhost:5432/amittsite')\n", - "\n", - " \n", - "# Add table to database \n", - "def add_table(dataframe, tablename, columns): \n", - " # Create sql-appropriate table from dataframe\n", - " colnames = ', '.join(['{} TEXT NOT NULL'.format(col) for col in columns])\n", - " newtable = dataframe[columns].copy().applymap(str)\n", - " newtable['id'] = range(1,len(newtable)+1)\n", - " \n", - " # send to database\n", - " if dbasetype == 'sqlite':\n", - " conn.execute(\"DROP TABLE IF EXISTS {}\".format(tablename))\n", - " conn.execute('''CREATE TABLE {} (id INTEGER PRIMARY KEY AUTOINCREMENT, {});'''.format(tablename, colnames))\n", - " newtable.to_sql(tablename, conn, index=False, if_exists='append')\n", - " conn.commit()\n", - " elif dbasetype == 'postgresql_local':\n", - " newtable.to_sql(tablename, conn, index=False, if_exists='replace')\n", - " return newtable\n", - "\n", - "\n", - "# Build a cross-table\n", - "def object_tactics_techniques(objectcol, objecttable, crosstable):\n", - " # objects to techniques\n", - " ctech = crosstable.copy()\n", - " ctech = ctech[(ctech['technique_id'] != '') & (~ctech['technique_id'].str.startswith('TA'))]\n", - " ctech.rename(columns={'amitt_id':objectcol}, inplace=True)\n", - " ctech['summary'] = 'N/A'\n", - "\n", - " # objects to tactics\n", - " ctact = crosstable[crosstable['technique_id'].str.startswith('TA')].copy()\n", - " ctact.rename(columns={'amitt_id':objectcol, 'technique_id': 'tactic_id'}, inplace=True)\n", - " ctact['main_tactic'] = 'N'\n", - " ctactmain = objecttable[['amitt_id', 'tactic_id']].copy()\n", - " ctactmain.rename(columns={'amitt_id':objectcol}, inplace=True)\n", - " ctactmain['main_tactic'] = 'Y'\n", - " ctact = pd.concat([ctact, ctactmain], ignore_index=True, sort=False)\n", - " ctact['summary'] = 'N/A'\n", - " return(ctech, ctact)\n", - "\n", - "#Load all the tables - Heroku needs them in correct order... \n", - "\n", - "# -- frameworks --\n", - "\n", - "#newtable = add_table(amitt.df_actortypes, 'actor_type', ['amitt_id', 'sector_id', 'framework_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_counters, 'counter', ['amitt_id', 'tactic_id', 'metatechnique_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_detections, 'detection', ['amitt_id', 'tactic_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_frameworks, 'framework', ['amitt_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_metatechniques, 'metatechnique', ['amitt_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_phases, 'phase', ['amitt_id', 'name', 'rank', 'summary'])\n", - "newtable = add_table(amitt.df_playbook, 'playbook', ['amitt_id', 'object_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_resources, 'resource', ['amitt_id', 'name', 'summary', 'resource_type'])\n", - "newtable = add_table(amitt.df_responsetypes, 'responsetype', ['amitt_id', 'name', 'summary'])\n", - "#newtable = add_table(amitt.df_sector, 'sector', ['amitt_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_tactics, 'tactic', ['amitt_id', 'phase_id', 'name', 'rank', 'summary'])\n", - "newtable = add_table(amitt.df_tasks, 'task', ['amitt_id', 'tactic_id', 'framework_id', 'name', 'summary'])\n", - "newtable = add_table(amitt.df_techniques, 'technique', ['amitt_id', 'tactic_id', 'name', 'summary'])\n", - "\n", - "(ctech, ctact) = object_tactics_techniques('counter_id', amitt.df_counters, amitt.cross_counterid_techniqueid)\n", - "newtable = add_table(ctech, 'counter_technique', ['counter_id', 'technique_id', 'summary'])\n", - "newtable = add_table(ctact, 'counter_tactic', ['counter_id', 'tactic_id', 'main_tactic', 'summary'])\n", - "\n", - "(dtech, dtact) = object_tactics_techniques('detection_id', amitt.df_detections, amitt.cross_detectionid_techniqueid)\n", - "newtable = add_table(dtech, 'detection_technique', ['detection_id', 'technique_id', 'summary'])\n", - "newtable = add_table(dtact, 'detection_tactic', ['detection_id', 'tactic_id', 'main_tactic', 'summary'])\n", - "\n", - "# -- datasets --\n", - "\n", - "newtable = add_table(amitt.df_examples, 'example', ['amitt_id', 'object_id', 'name', 'summary'])\n", - "\n", - "# dataset\n", - "# reference - create this from other tables. \n", - "# Also need incidentcounter etc - create from data\n", - "newtable = add_table(amitt.df_groups, 'group', ['amitt_id', 'name', 'url', 'summary', \n", - " 'sector', 'primary_role', 'secondary_role', \n", - " 'primary_subject', 'secondary_subject', \n", - " 'volunteers', 'region', 'country', \n", - " 'twitter_handle'])\n", - "newtable = add_table(amitt.df_incidents, 'incident', ['amitt_id', 'name', 'summary', \n", - " 'year_started', 'attributions_seen', \n", - " 'found_in_country', 'objecttype'])\n", - "newtable = add_table(amitt.df_tools, 'tool', ['amitt_id', 'name', 'summary',\n", - " 'organization', 'url', 'category', \n", - " 'disinformation_use', 'cogseccollab_use', \n", - " 'function', 'code_url', 'artifacts', \n", - " 'automation', 'platform', 'accessibility'])\n", - "# incidenttechnique crosstable\n", - "it = vars(amitt)['it'][['amitt_id', 'name', 'summary', 'amitt_id_incident', 'amitt_id_technique']].copy()\n", - "it.rename(columns={'amitt_id_incident':'incident_id', 'amitt_id_technique': 'technique_id'}, inplace=True)\n", - "newtable = add_table(it, 'incident_technique', ['amitt_id', 'name', 'summary', \n", - " 'incident_id', 'technique_id'])\n", - "\n", - "# Load in users table, and close connection\n", - "if dbasetype == 'sqlite':\n", - " conn.execute(\"DROP TABLE IF EXISTS {}\".format('users'))\n", - " conn.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL);''')\n", - " conn.close()\n", - "else:\n", - " dfusers = pd.DataFrame([['test','testing']], columns=['username', 'password'])\n", - " usertable = add_table(dfusers, 'users', ['username', 'password'])\n", - "\n", - "newtable" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## test area" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['df_phases', 'df_frameworks', 'df_techniques', 'df_tasks', 'df_incidents', 'df_groups', 'df_tools', 'df_examples', 'df_counters', 'df_detections', 'df_actortypes', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actortypes', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actortypeid', 'cross_detectionid_techniqueid', 'cross_detectionid_resourceid', 'cross_detectionid_actortypeid'])\n", - "\n", - "it columns: Index(['amitt_id', 'name', 'summary', 'amitt_id_incident', 'name_incident',\n", - " 'amitt_id_technique', 'name_technique'],\n", - " dtype='object')\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnamesummaryamitt_id_incidentname_incidentamitt_id_techniquename_technique
0IT00000001buy FB targeted adsI00002#VaccinateUST0018Paid targeted ads
1IT00000010Targeted FB paid adsI00005Brexit voteT0018Paid targeted ads
2IT00000057Targeted FB paid adsI00017US presidential electionsT0018Paid targeted ads
3IT00000002Promote \"funding\" campaignI00002#VaccinateUST0017Promote online funding
4IT00000003create web-site - information pollutionI00002#VaccinateUST0019Generate information pollution
5IT00000014RT & Sputnik generate information pollutionI00005Brexit voteT0019Generate information pollution
6IT00000031RT & Sputnik generate information pollution (r...I00007Incirlik terroristsT0019Generate information pollution
7IT00000037RT & Sputnik generate information pollutionI00009PhilippinesExpertT0019Generate information pollution
8IT00000061RT & Sputnik generate information pollutionI00017US presidential electionsT0019Generate information pollution
9IT00000082RT & Sputnik generate information pollution (s...I00029MH17 investigationT0019Generate information pollution
10IT00000094RT & Sputnik generate information pollutionI00032KavanaughT0019Generate information pollution
11IT00000120RT & Sputnik generate information pollutionI00044JadeHelm exerciseT0019Generate information pollution
12IT00000137RT & Sputnik generate information pollution (s...I00049White Helmets: Chemical WeaponsT0019Generate information pollution
13IT00000146RT & Sputnik generate information pollution (s...I00050#HandsOffVenezuelaT0019Generate information pollution
14IT00000156RT & Sputnik generate information pollutionI00051Integrity InitiativeT0019Generate information pollution
15IT00000180RT & Sputnik generate information pollution (s...I00063Olympic Doping ScandalT0019Generate information pollution
16IT00000004create web-site - information pollutionI00002#VaccinateUST0056Dedicated channels disseminate information pol...
17IT00000015RT & Sputnik generate information pollutionI00005Brexit voteT0056Dedicated channels disseminate information pol...
18IT00000032RT & Sputnik generate information pollution (r...I00007Incirlik terroristsT0056Dedicated channels disseminate information pol...
19IT00000038RT & Sputnik generate information pollutionI00009PhilippinesExpertT0056Dedicated channels disseminate information pol...
20IT00000062RT & Sputnik generate information pollutionI00017US presidential electionsT0056Dedicated channels disseminate information pol...
21IT00000083RT & Sputnik generate information pollution (s...I00029MH17 investigationT0056Dedicated channels disseminate information pol...
22IT00000095RT & Sputnik generate information pollutionI00032KavanaughT0056Dedicated channels disseminate information pol...
23IT00000121RT & Sputnik generate information pollutionI00044JadeHelm exerciseT0056Dedicated channels disseminate information pol...
24IT00000138RT & Sputnik generate information pollution (s...I00049White Helmets: Chemical WeaponsT0056Dedicated channels disseminate information pol...
25IT00000147RT & Sputnik generate information pollution (s...I00050#HandsOffVenezuelaT0056Dedicated channels disseminate information pol...
26IT00000157RT & Sputnik generate information pollutionI00051Integrity InitiativeT0056Dedicated channels disseminate information pol...
27IT00000162State-run media seeds foreign influence enviro...I00053China Huawei CFO ArrestT0056Dedicated channels disseminate information pol...
28IT00000181RT & Sputnik generate information pollution (s...I00063Olympic Doping ScandalT0056Dedicated channels disseminate information pol...
29IT00000005SEO optimisation/manipulation (\"key words\")I00002#VaccinateUST0046Search Engine Optimization
30IT00000022SEO optimisation/manipulation (\"key words\")I00005Brexit voteT0046Search Engine Optimization
31IT00000043SEO optimisation/manipulation (\"key words\")I00010ParklandTeensT0046Search Engine Optimization
32IT00000071SEO optimisation/manipulation (\"key words\")I00017US presidential electionsT0046Search Engine Optimization
33IT00000085SEO optimisation/manipulation (\"key words\")I00029MH17 investigationT0046Search Engine Optimization
34IT00000103SEO optimisation/manipulation (\"key words\")I00032KavanaughT0046Search Engine Optimization
35IT00000125SEO optimisation/manipulation (\"key words\")I00044JadeHelm exerciseT0046Search Engine Optimization
36IT00000140SEO optimisation/manipulation (\"key words\")I00049White Helmets: Chemical WeaponsT0046Search Engine Optimization
37IT00000149SEO optimisation/manipulation (\"key words\")I00050#HandsOffVenezuelaT0046Search Engine Optimization
38IT00000161SEO optimisation/manipulation (\"key words\")I00051Integrity InitiativeT0046Search Engine Optimization
39IT00000172SEO optimisation/manipulation (\"key words\")I00056Iran Influence OperationsT0046Search Engine Optimization
40IT00000183SEO optimisation/manipulation (\"key words\")I00063Olympic Doping ScandalT0046Search Engine Optimization
41IT00000006legacy web contentI00002#VaccinateUST0058Legacy web content
42IT00000007hard to remove content and/or campaign/exploit...I00002#VaccinateUST0058Legacy web content
43IT00000176legacy web contentI00056Iran Influence OperationsT0058Legacy web content
44IT00000008Twitter bots amplify & manipulateI00005Brexit voteT0054Twitter bots amplify
45IT00000034Twitter bots amplify & manipulateI00007Incirlik terroristsT0054Twitter bots amplify
46IT00000041Twitter bots amplify & manipulateI00010ParklandTeensT0054Twitter bots amplify
47IT00000055Twitter bots amplify & manipulateI00017US presidential electionsT0054Twitter bots amplify
48IT00000076Twitter bots amplify & manipulateI00022#MacronleaksT0054Twitter bots amplify
49IT00000079Twitter bots amplify & manipulateI00029MH17 investigationT0054Twitter bots amplify
50IT00000090Twitter bots amplify & manipulateI00032KavanaughT0054Twitter bots amplify
51IT00000115Twitter bots amplify & manipulateI00042Saudi/Qatar bot disputeT0054Twitter bots amplify
52IT00000118Twitter bots amplify & manipulateI00044JadeHelm exerciseT0054Twitter bots amplify
53IT00000131Twitter bots amplify & manipulateI00047Sea of AzovT0054Twitter bots amplify
54IT00000134Twitter bots amplify & manipulateI00049White Helmets: Chemical WeaponsT0054Twitter bots amplify
55IT00000144Twitter bots amplify & manipulateI00050#HandsOffVenezuelaT0054Twitter bots amplify
56IT00000154Twitter bots amplify & manipulateI00051Integrity InitiativeT0054Twitter bots amplify
57IT00000169Twitter bots amplify & manipulateI00056Iran Influence OperationsT0054Twitter bots amplify
58IT00000177Twitter bots amplify & manipulateI00063Olympic Doping ScandalT0054Twitter bots amplify
59IT00000009Twitter trolls amplify & manipulateI00005Brexit voteT0053Twitter trolls amplify and manipulate
60IT00000035Twitter trolls amplify & manipulateI00007Incirlik terroristsT0053Twitter trolls amplify and manipulate
61IT00000042Twitter trolls amplify & manipulateI00010ParklandTeensT0053Twitter trolls amplify and manipulate
62IT00000056Twitter trolls amplify & manipulateI00017US presidential electionsT0053Twitter trolls amplify and manipulate
63IT00000077Twitter trolls amplify & manipulateI00022#MacronleaksT0053Twitter trolls amplify and manipulate
64IT00000080Twitter trolls amplify & manipulateI00029MH17 investigationT0053Twitter trolls amplify and manipulate
65IT00000091Twitter trolls amplify & manipulateI00032KavanaughT0053Twitter trolls amplify and manipulate
66IT00000119Twitter trolls amplify & manipulateI00044JadeHelm exerciseT0053Twitter trolls amplify and manipulate
67IT00000132Twitter trolls amplify & manipulateI00047Sea of AzovT0053Twitter trolls amplify and manipulate
68IT00000135Twitter trolls amplify & manipulateI00049White Helmets: Chemical WeaponsT0053Twitter trolls amplify and manipulate
69IT00000145Twitter trolls amplify & manipulateI00050#HandsOffVenezuelaT0053Twitter trolls amplify and manipulate
70IT00000155Twitter trolls amplify & manipulateI00051Integrity InitiativeT0053Twitter trolls amplify and manipulate
71IT00000170Twitter trolls amplify & manipulateI00056Iran Influence OperationsT0053Twitter trolls amplify and manipulate
72IT00000178Twitter trolls amplify & manipulateI00063Olympic Doping ScandalT0053Twitter trolls amplify and manipulate
73IT00000011Fake FB groups + dark contentI00005Brexit voteT0007Create fake Social Media Profiles / Pages / Gr...
74IT00000029Fake twitter profiles to amplifyTwitter bots used to drive visbilityI00006Columbian ChemicalsT0007Create fake Social Media Profiles / Pages / Gr...
75IT00000039FB pagesI00009PhilippinesExpertT0007Create fake Social Media Profiles / Pages / Gr...
76IT00000045FB pages/groups/profilesI00010ParklandTeensT0007Create fake Social Media Profiles / Pages / Gr...
77IT00000058Fake FB groups + dark contentI00017US presidential electionsT0007Create fake Social Media Profiles / Pages / Gr...
78IT00000078Fake FB groups/pages/profiles + dark contentI00022#MacronleaksT0007Create fake Social Media Profiles / Pages / Gr...
79IT00000092Fake FB groups/pages/profilesI00032KavanaughT0007Create fake Social Media Profiles / Pages / Gr...
80IT00000171Fake FB groups/pages/profiles + dark content (...I00056Iran Influence OperationsT0007Create fake Social Media Profiles / Pages / Gr...
81IT00000012Digital to physical \"organize+promote\" rallies...I00005Brexit voteT0057Organise remote rallies and events
82IT00000059Digital to physical \"organize+promote\" rallies...I00017US presidential electionsT0057Organise remote rallies and events
83IT00000093Digital to physical \"organize+promote\" rallies...I00032KavanaughT0057Organise remote rallies and events
84IT00000164Events coordinated and promoted across media p...I00053China Huawei CFO ArrestT0057Organise remote rallies and events
85IT00000166Extend digital the physical space… gatherings ...I00053China Huawei CFO ArrestT0057Organise remote rallies and events
86IT00000013manipulate social media \"online polls\"?I00005Brexit voteT0029Manipulate online polls
87IT00000060manipulate social media \"online polls\"?I00017US presidential electionsT0029Manipulate online polls
88IT00000016cultivate, manipulate, exploit useful idiotsI00005Brexit voteT0010Cultivate ignorant agents
89IT00000033cultivate, manipulate, exploit useful idiots (...I00007Incirlik terroristsT0010Cultivate ignorant agents
90IT00000044cultivate, manipulate, exploit useful idiots (...I00010ParklandTeensT0010Cultivate ignorant agents
91IT00000063cultivate, manipulate, exploit useful idiotsI00017US presidential electionsT0010Cultivate ignorant agents
92IT00000084cultivate, manipulate, exploit useful idiotsI00029MH17 investigationT0010Cultivate ignorant agents
93IT00000104cultivate, manipulate, exploit useful idiots (...I00032KavanaughT0010Cultivate ignorant agents
94IT00000126cultivate, manipulate, exploit useful idiots (...I00044JadeHelm exerciseT0010Cultivate ignorant agents
95IT00000139cultivate, manipulate, exploit useful idiots (...I00049White Helmets: Chemical WeaponsT0010Cultivate ignorant agents
96IT00000148cultivate, manipulate, exploit useful idiots (...I00050#HandsOffVenezuelaT0010Cultivate ignorant agents
97IT00000158cultivate, manipulate, exploit useful idiotsI00051Integrity InitiativeT0010Cultivate ignorant agents
98IT00000182cultivate, manipulate, exploit useful idiotsI00063Olympic Doping ScandalT0010Cultivate ignorant agents
99IT00000017YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005Brexit voteT0031YouTube
100IT00000046YouTube; RedditI00010ParklandTeensT0031YouTube
101IT00000064YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0031YouTube
102IT00000087YouTube; Reddit;I00029MH17 investigationT0031YouTube
103IT00000096YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0031YouTube
104IT00000122YouTube; RedditI00044JadeHelm exerciseT0031YouTube
105IT00000142YouTube; Reddit;I00049White Helmets: Chemical WeaponsT0031YouTube
106IT00000151YouTube; Reddit;I00050#HandsOffVenezuelaT0031YouTube
107IT00000159YouTube; RedditI00051Integrity InitiativeT0031YouTube
108IT00000185YouTube; Reddit;I00063Olympic Doping ScandalT0031YouTube
109IT00000018YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005Brexit voteT0032Reddit
110IT00000047YouTube; RedditI00010ParklandTeensT0032Reddit
111IT00000065YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0032Reddit
112IT00000088YouTube; Reddit;I00029MH17 investigationT0032Reddit
113IT00000097YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0032Reddit
114IT00000123YouTube; RedditI00044JadeHelm exerciseT0032Reddit
115IT00000143YouTube; Reddit;I00049White Helmets: Chemical WeaponsT0032Reddit
116IT00000152YouTube; Reddit;I00050#HandsOffVenezuelaT0032Reddit
117IT00000160YouTube; RedditI00051Integrity InitiativeT0032Reddit
118IT00000186YouTube; Reddit;I00063Olympic Doping ScandalT0032Reddit
119IT00000019YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005Brexit voteT0034LinkedIn
120IT00000067YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0034LinkedIn
121IT00000099YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0034LinkedIn
122IT00000020YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005Brexit voteT0035Pinterest
123IT00000068YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0035Pinterest
124IT00000100YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0035Pinterest
125IT00000021YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005Brexit voteT0036WhatsApp
126IT00000069YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0036WhatsApp
127IT00000101YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0036WhatsApp
128IT00000023Memes... anti-immigration; euroskepticism; fea...Meme that ISIS was responsible for a local che...I00005Brexit voteT0021Memes
129IT00000072Memes... anti-immigration; euroskepticism; fea...I00017US presidential electionsT0021Memes
130IT00000117memesI00042Saudi/Qatar bot disputeT0021Memes
131IT00000173Memes... anti-Isreal/USA/West, conspiracy narr...I00056Iran Influence OperationsT0021Memes
132IT00000024Backstop personasWikipedia fake persona \"AmandaGray91\".I00005Brexit voteT0030Backstop personas
133IT00000074Backstop personasI00017US presidential electionsT0030Backstop personas
134IT00000025Use SMS/text messagesSMS messages sent to local residentsI00006Columbian ChemicalsT0043Use SMS/ WhatsApp/ Chat apps
135IT00000026Fake video/imagesFake youtube video of ISIS claiming responsibi...I00006Columbian ChemicalsT0024Create fake videos and images
136IT00000116photoshopped/fake imagesI00042Saudi/Qatar bot disputeT0024Create fake videos and images
137IT00000027Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006Columbian ChemicalsT0015Create hashtag
138IT00000028Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006Columbian ChemicalsT0055Use hashtag
139IT00000030bait journalists/media/politiciansI00006Columbian ChemicalsT0039Bait legitimate influencers
140IT00000049journalist/media baitingI00010ParklandTeensT0039Bait legitimate influencers
141IT00000053journalist/media baitingI00015ConcordDiscoveryT0039Bait legitimate influencers
142IT00000036Using \"expert\"I00009PhilippinesExpertT0045Use fake experts
143IT00000040News circulated/amplifed by tertiary sites (Ru...I00009PhilippinesExpertT0052Tertiary sites amplify news
144IT00000086News circulated/amplifed by tertiary sites (Ru...I00029MH17 investigationT0052Tertiary sites amplify news
145IT00000141News circulated/amplifed by tertiary sites (Ru...I00049White Helmets: Chemical WeaponsT0052Tertiary sites amplify news
146IT00000150News circulated/amplifed by tertiary sites (Mi...I00050#HandsOffVenezuelaT0052Tertiary sites amplify news
147IT00000184News circulated/amplifed by tertiary sites (Ru...I00063Olympic Doping ScandalT0052Tertiary sites amplify news
148IT000000484Chan/8Chan - trial contentI00010ParklandTeensT0020Trial content
149IT000000704Chan/8Chan - trial contentI00017US presidential electionsT0020Trial content
150IT000001024Chan/8Chan - trial contentI00032KavanaughT0020Trial content
151IT000001244Chan/8Chan - trial contentI00044JadeHelm exerciseT0020Trial content
152IT00000050Forge ('release' altered hacked documents)I00015ConcordDiscoveryT0025Leak altered documents
153IT00000051hack/leak/manipulate/distortI00015ConcordDiscoveryT0025Leak altered documents
154IT00000054hack/leak/manipulate/distortI00017US presidential electionsT0025Leak altered documents
155IT00000075hack/leak/manipulate/distortI00022#MacronleaksT0025Leak altered documents
156IT00000153hack/leak/manipulate/distortI00051Integrity InitiativeT0025Leak altered documents
157IT00000052Circulate to media via DM, then release publiclyI00015ConcordDiscoveryT0044Seed distortions
158IT00000066YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017US presidential electionsT0033Instagram
159IT00000098YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032KavanaughT0033Instagram
160IT00000073Click-bait (economic actors) fake news sites (...I00017US presidential electionsT0016Clickbait
161IT000000814 D's (dismiss, distort, distract, dismay...Of...I00029MH17 investigationT00015Ds (dismiss, distort, distract, dismay, divide)
162IT000001284 D's (dismiss, distort, distract, dismay...Of...I00047Sea of AzovT00015Ds (dismiss, distort, distract, dismay, divide)
163IT00000129Russian FSB security service blamed Ukraine fo...I00047Sea of AzovT00015Ds (dismiss, distort, distract, dismay, divide)
164IT000001364 D's (dismiss, distort, distract, dismay...Of...I00049White Helmets: Chemical WeaponsT00015Ds (dismiss, distort, distract, dismay, divide)
165IT00000167China also plays victim, innocence, plays by r...I00053China Huawei CFO ArrestT00015Ds (dismiss, distort, distract, dismay, divide)
166IT00000168Chinese ambassador Lu Shaye accused Canada of ...I00053China Huawei CFO ArrestT00015Ds (dismiss, distort, distract, dismay, divide)
167IT000001794 D's (dismiss, distort, distract, dismay...Of...I00063Olympic Doping ScandalT00015Ds (dismiss, distort, distract, dismay, divide)
168IT00000089Demand insurmountable proofI00029MH17 investigationT0040Demand unsurmountable proof
169IT00000133Demand insurmountable proofI00047Sea of AzovT0040Demand unsurmountable proof
170IT000001052,000,000 people (est.) part of state run/spon...I00033China 50cent ArmyT0049Flooding
171IT00000112flood the Facebook pages of Taiwanese politici...I00034DibaFacebookExpeditionT0049Flooding
172IT00000113Democratic Progressive Party (DPP), attracted ...I00034DibaFacebookExpeditionT0049Flooding
173IT00000106fabricated social media commentI00033China 50cent ArmyT0051Fabricate social media comment
174IT00000107domestic social media influence operations foc...I00033China 50cent ArmyT0050Cheerleading domestic social media ops
175IT00000165Extend digital the physical space… gatherings ...I00053China Huawei CFO ArrestT0050Cheerleading domestic social media ops
176IT00000108cow online opinion leaders into submission, mu...I00033China 50cent ArmyT0047Muzzle social media as a political force
177IT00000109cow online opinion leaders into submission, mu...I00033China 50cent ArmyT0048Cow online opinion leaders
178IT00000110facilitate state propaganda and defuse crisesI00033China 50cent ArmyT0002Facilitate State Propaganda
179IT00000111Netizens from one of the largest discussion fo...I00034DibaFacebookExpeditionT0002Facilitate State Propaganda
180IT00000114“hack” of Qatar’s official news agencyI00042Saudi/Qatar bot disputeT0011Hijack legitimate account
181IT00000127Promote fake “experts” with impressive (and sc...I00044JadeHelm exerciseT0009Create fake experts
182IT00000130(Distort) Kremlin-controlled RT cited Russian ...I00047Sea of AzovT0023Distort facts
183IT00000163Distorted, saccharine “news” about the Chinese...I00053China Huawei CFO ArrestT0023Distort facts
184IT00000174Memes... anti-Isreal/USA/West, conspiracy narr...I00056Iran Influence OperationsT0022Conspiracy narratives
185IT00000175Fake news/synthetic web-sitesI00056Iran Influence OperationsT0008Create fake or imposter news sites
\n", - "
" - ], - "text/plain": [ - " amitt_id name \\\n", - "0 IT00000001 buy FB targeted ads \n", - "1 IT00000010 Targeted FB paid ads \n", - "2 IT00000057 Targeted FB paid ads \n", - "3 IT00000002 Promote \"funding\" campaign \n", - "4 IT00000003 create web-site - information pollution \n", - "5 IT00000014 RT & Sputnik generate information pollution \n", - "6 IT00000031 RT & Sputnik generate information pollution (r... \n", - "7 IT00000037 RT & Sputnik generate information pollution \n", - "8 IT00000061 RT & Sputnik generate information pollution \n", - "9 IT00000082 RT & Sputnik generate information pollution (s... \n", - "10 IT00000094 RT & Sputnik generate information pollution \n", - "11 IT00000120 RT & Sputnik generate information pollution \n", - "12 IT00000137 RT & Sputnik generate information pollution (s... \n", - "13 IT00000146 RT & Sputnik generate information pollution (s... \n", - "14 IT00000156 RT & Sputnik generate information pollution \n", - "15 IT00000180 RT & Sputnik generate information pollution (s... \n", - "16 IT00000004 create web-site - information pollution \n", - "17 IT00000015 RT & Sputnik generate information pollution \n", - "18 IT00000032 RT & Sputnik generate information pollution (r... \n", - "19 IT00000038 RT & Sputnik generate information pollution \n", - "20 IT00000062 RT & Sputnik generate information pollution \n", - "21 IT00000083 RT & Sputnik generate information pollution (s... \n", - "22 IT00000095 RT & Sputnik generate information pollution \n", - "23 IT00000121 RT & Sputnik generate information pollution \n", - "24 IT00000138 RT & Sputnik generate information pollution (s... \n", - "25 IT00000147 RT & Sputnik generate information pollution (s... \n", - "26 IT00000157 RT & Sputnik generate information pollution \n", - "27 IT00000162 State-run media seeds foreign influence enviro... \n", - "28 IT00000181 RT & Sputnik generate information pollution (s... \n", - "29 IT00000005 SEO optimisation/manipulation (\"key words\") \n", - "30 IT00000022 SEO optimisation/manipulation (\"key words\") \n", - "31 IT00000043 SEO optimisation/manipulation (\"key words\") \n", - "32 IT00000071 SEO optimisation/manipulation (\"key words\") \n", - "33 IT00000085 SEO optimisation/manipulation (\"key words\") \n", - "34 IT00000103 SEO optimisation/manipulation (\"key words\") \n", - "35 IT00000125 SEO optimisation/manipulation (\"key words\") \n", - "36 IT00000140 SEO optimisation/manipulation (\"key words\") \n", - "37 IT00000149 SEO optimisation/manipulation (\"key words\") \n", - "38 IT00000161 SEO optimisation/manipulation (\"key words\") \n", - "39 IT00000172 SEO optimisation/manipulation (\"key words\") \n", - "40 IT00000183 SEO optimisation/manipulation (\"key words\") \n", - "41 IT00000006 legacy web content \n", - "42 IT00000007 hard to remove content and/or campaign/exploit... \n", - "43 IT00000176 legacy web content \n", - "44 IT00000008 Twitter bots amplify & manipulate \n", - "45 IT00000034 Twitter bots amplify & manipulate \n", - "46 IT00000041 Twitter bots amplify & manipulate \n", - "47 IT00000055 Twitter bots amplify & manipulate \n", - "48 IT00000076 Twitter bots amplify & manipulate \n", - "49 IT00000079 Twitter bots amplify & manipulate \n", - "50 IT00000090 Twitter bots amplify & manipulate \n", - "51 IT00000115 Twitter bots amplify & manipulate \n", - "52 IT00000118 Twitter bots amplify & manipulate \n", - "53 IT00000131 Twitter bots amplify & manipulate \n", - "54 IT00000134 Twitter bots amplify & manipulate \n", - "55 IT00000144 Twitter bots amplify & manipulate \n", - "56 IT00000154 Twitter bots amplify & manipulate \n", - "57 IT00000169 Twitter bots amplify & manipulate \n", - "58 IT00000177 Twitter bots amplify & manipulate \n", - "59 IT00000009 Twitter trolls amplify & manipulate \n", - "60 IT00000035 Twitter trolls amplify & manipulate \n", - "61 IT00000042 Twitter trolls amplify & manipulate \n", - "62 IT00000056 Twitter trolls amplify & manipulate \n", - "63 IT00000077 Twitter trolls amplify & manipulate \n", - "64 IT00000080 Twitter trolls amplify & manipulate \n", - "65 IT00000091 Twitter trolls amplify & manipulate \n", - "66 IT00000119 Twitter trolls amplify & manipulate \n", - "67 IT00000132 Twitter trolls amplify & manipulate \n", - "68 IT00000135 Twitter trolls amplify & manipulate \n", - "69 IT00000145 Twitter trolls amplify & manipulate \n", - "70 IT00000155 Twitter trolls amplify & manipulate \n", - "71 IT00000170 Twitter trolls amplify & manipulate \n", - "72 IT00000178 Twitter trolls amplify & manipulate \n", - "73 IT00000011 Fake FB groups + dark content \n", - "74 IT00000029 Fake twitter profiles to amplify \n", - "75 IT00000039 FB pages \n", - "76 IT00000045 FB pages/groups/profiles \n", - "77 IT00000058 Fake FB groups + dark content \n", - "78 IT00000078 Fake FB groups/pages/profiles + dark content \n", - "79 IT00000092 Fake FB groups/pages/profiles \n", - "80 IT00000171 Fake FB groups/pages/profiles + dark content (... \n", - "81 IT00000012 Digital to physical \"organize+promote\" rallies... \n", - "82 IT00000059 Digital to physical \"organize+promote\" rallies... \n", - "83 IT00000093 Digital to physical \"organize+promote\" rallies... \n", - "84 IT00000164 Events coordinated and promoted across media p... \n", - "85 IT00000166 Extend digital the physical space… gatherings ... \n", - "86 IT00000013 manipulate social media \"online polls\"? \n", - "87 IT00000060 manipulate social media \"online polls\"? \n", - "88 IT00000016 cultivate, manipulate, exploit useful idiots \n", - "89 IT00000033 cultivate, manipulate, exploit useful idiots (... \n", - "90 IT00000044 cultivate, manipulate, exploit useful idiots (... \n", - "91 IT00000063 cultivate, manipulate, exploit useful idiots \n", - "92 IT00000084 cultivate, manipulate, exploit useful idiots \n", - "93 IT00000104 cultivate, manipulate, exploit useful idiots (... \n", - "94 IT00000126 cultivate, manipulate, exploit useful idiots (... \n", - "95 IT00000139 cultivate, manipulate, exploit useful idiots (... \n", - "96 IT00000148 cultivate, manipulate, exploit useful idiots (... \n", - "97 IT00000158 cultivate, manipulate, exploit useful idiots \n", - "98 IT00000182 cultivate, manipulate, exploit useful idiots \n", - "99 IT00000017 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "100 IT00000046 YouTube; Reddit \n", - "101 IT00000064 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "102 IT00000087 YouTube; Reddit; \n", - "103 IT00000096 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "104 IT00000122 YouTube; Reddit \n", - "105 IT00000142 YouTube; Reddit; \n", - "106 IT00000151 YouTube; Reddit; \n", - "107 IT00000159 YouTube; Reddit \n", - "108 IT00000185 YouTube; Reddit; \n", - "109 IT00000018 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "110 IT00000047 YouTube; Reddit \n", - "111 IT00000065 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "112 IT00000088 YouTube; Reddit; \n", - "113 IT00000097 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "114 IT00000123 YouTube; Reddit \n", - "115 IT00000143 YouTube; Reddit; \n", - "116 IT00000152 YouTube; Reddit; \n", - "117 IT00000160 YouTube; Reddit \n", - "118 IT00000186 YouTube; Reddit; \n", - "119 IT00000019 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "120 IT00000067 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "121 IT00000099 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "122 IT00000020 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "123 IT00000068 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "124 IT00000100 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "125 IT00000021 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "126 IT00000069 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "127 IT00000101 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "128 IT00000023 Memes... anti-immigration; euroskepticism; fea... \n", - "129 IT00000072 Memes... anti-immigration; euroskepticism; fea... \n", - "130 IT00000117 memes \n", - "131 IT00000173 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "132 IT00000024 Backstop personas \n", - "133 IT00000074 Backstop personas \n", - "134 IT00000025 Use SMS/text messages \n", - "135 IT00000026 Fake video/images \n", - "136 IT00000116 photoshopped/fake images \n", - "137 IT00000027 Create and use hashtag \n", - "138 IT00000028 Create and use hashtag \n", - "139 IT00000030 bait journalists/media/politicians \n", - "140 IT00000049 journalist/media baiting \n", - "141 IT00000053 journalist/media baiting \n", - "142 IT00000036 Using \"expert\" \n", - "143 IT00000040 News circulated/amplifed by tertiary sites (Ru... \n", - "144 IT00000086 News circulated/amplifed by tertiary sites (Ru... \n", - "145 IT00000141 News circulated/amplifed by tertiary sites (Ru... \n", - "146 IT00000150 News circulated/amplifed by tertiary sites (Mi... \n", - "147 IT00000184 News circulated/amplifed by tertiary sites (Ru... \n", - "148 IT00000048 4Chan/8Chan - trial content \n", - "149 IT00000070 4Chan/8Chan - trial content \n", - "150 IT00000102 4Chan/8Chan - trial content \n", - "151 IT00000124 4Chan/8Chan - trial content \n", - "152 IT00000050 Forge ('release' altered hacked documents) \n", - "153 IT00000051 hack/leak/manipulate/distort \n", - "154 IT00000054 hack/leak/manipulate/distort \n", - "155 IT00000075 hack/leak/manipulate/distort \n", - "156 IT00000153 hack/leak/manipulate/distort \n", - "157 IT00000052 Circulate to media via DM, then release publicly \n", - "158 IT00000066 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "159 IT00000098 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "160 IT00000073 Click-bait (economic actors) fake news sites (... \n", - "161 IT00000081 4 D's (dismiss, distort, distract, dismay...Of... \n", - "162 IT00000128 4 D's (dismiss, distort, distract, dismay...Of... \n", - "163 IT00000129 Russian FSB security service blamed Ukraine fo... \n", - "164 IT00000136 4 D's (dismiss, distort, distract, dismay...Of... \n", - "165 IT00000167 China also plays victim, innocence, plays by r... \n", - "166 IT00000168 Chinese ambassador Lu Shaye accused Canada of ... \n", - "167 IT00000179 4 D's (dismiss, distort, distract, dismay...Of... \n", - "168 IT00000089 Demand insurmountable proof \n", - "169 IT00000133 Demand insurmountable proof \n", - "170 IT00000105 2,000,000 people (est.) part of state run/spon... \n", - "171 IT00000112 flood the Facebook pages of Taiwanese politici... \n", - "172 IT00000113 Democratic Progressive Party (DPP), attracted ... \n", - "173 IT00000106 fabricated social media comment \n", - "174 IT00000107 domestic social media influence operations foc... \n", - "175 IT00000165 Extend digital the physical space… gatherings ... \n", - "176 IT00000108 cow online opinion leaders into submission, mu... \n", - "177 IT00000109 cow online opinion leaders into submission, mu... \n", - "178 IT00000110 facilitate state propaganda and defuse crises \n", - "179 IT00000111 Netizens from one of the largest discussion fo... \n", - "180 IT00000114 “hack” of Qatar’s official news agency \n", - "181 IT00000127 Promote fake “experts” with impressive (and sc... \n", - "182 IT00000130 (Distort) Kremlin-controlled RT cited Russian ... \n", - "183 IT00000163 Distorted, saccharine “news” about the Chinese... \n", - "184 IT00000174 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "185 IT00000175 Fake news/synthetic web-sites \n", - "\n", - " summary amitt_id_incident \\\n", - "0 I00002 \n", - "1 I00005 \n", - "2 I00017 \n", - "3 I00002 \n", - "4 I00002 \n", - "5 I00005 \n", - "6 I00007 \n", - "7 I00009 \n", - "8 I00017 \n", - "9 I00029 \n", - "10 I00032 \n", - "11 I00044 \n", - "12 I00049 \n", - "13 I00050 \n", - "14 I00051 \n", - "15 I00063 \n", - "16 I00002 \n", - "17 I00005 \n", - "18 I00007 \n", - "19 I00009 \n", - "20 I00017 \n", - "21 I00029 \n", - "22 I00032 \n", - "23 I00044 \n", - "24 I00049 \n", - "25 I00050 \n", - "26 I00051 \n", - "27 I00053 \n", - "28 I00063 \n", - "29 I00002 \n", - "30 I00005 \n", - "31 I00010 \n", - "32 I00017 \n", - "33 I00029 \n", - "34 I00032 \n", - "35 I00044 \n", - "36 I00049 \n", - "37 I00050 \n", - "38 I00051 \n", - "39 I00056 \n", - "40 I00063 \n", - "41 I00002 \n", - "42 I00002 \n", - "43 I00056 \n", - "44 I00005 \n", - "45 I00007 \n", - "46 I00010 \n", - "47 I00017 \n", - "48 I00022 \n", - "49 I00029 \n", - "50 I00032 \n", - "51 I00042 \n", - "52 I00044 \n", - "53 I00047 \n", - "54 I00049 \n", - "55 I00050 \n", - "56 I00051 \n", - "57 I00056 \n", - "58 I00063 \n", - "59 I00005 \n", - "60 I00007 \n", - "61 I00010 \n", - "62 I00017 \n", - "63 I00022 \n", - "64 I00029 \n", - "65 I00032 \n", - "66 I00044 \n", - "67 I00047 \n", - "68 I00049 \n", - "69 I00050 \n", - "70 I00051 \n", - "71 I00056 \n", - "72 I00063 \n", - "73 I00005 \n", - "74 Twitter bots used to drive visbility I00006 \n", - "75 I00009 \n", - "76 I00010 \n", - "77 I00017 \n", - "78 I00022 \n", - "79 I00032 \n", - "80 I00056 \n", - "81 I00005 \n", - "82 I00017 \n", - "83 I00032 \n", - "84 I00053 \n", - "85 I00053 \n", - "86 I00005 \n", - "87 I00017 \n", - "88 I00005 \n", - "89 I00007 \n", - "90 I00010 \n", - "91 I00017 \n", - "92 I00029 \n", - "93 I00032 \n", - "94 I00044 \n", - "95 I00049 \n", - "96 I00050 \n", - "97 I00051 \n", - "98 I00063 \n", - "99 I00005 \n", - "100 I00010 \n", - "101 I00017 \n", - "102 I00029 \n", - "103 I00032 \n", - "104 I00044 \n", - "105 I00049 \n", - "106 I00050 \n", - "107 I00051 \n", - "108 I00063 \n", - "109 I00005 \n", - "110 I00010 \n", - "111 I00017 \n", - "112 I00029 \n", - "113 I00032 \n", - "114 I00044 \n", - "115 I00049 \n", - "116 I00050 \n", - "117 I00051 \n", - "118 I00063 \n", - "119 I00005 \n", - "120 I00017 \n", - "121 I00032 \n", - "122 I00005 \n", - "123 I00017 \n", - "124 I00032 \n", - "125 I00005 \n", - "126 I00017 \n", - "127 I00032 \n", - "128 Meme that ISIS was responsible for a local che... I00005 \n", - "129 I00017 \n", - "130 I00042 \n", - "131 I00056 \n", - "132 Wikipedia fake persona \"AmandaGray91\". I00005 \n", - "133 I00017 \n", - "134 SMS messages sent to local residents I00006 \n", - "135 Fake youtube video of ISIS claiming responsibi... I00006 \n", - "136 I00042 \n", - "137 Main hashtag used was #ColumbianChemicals I00006 \n", - "138 Main hashtag used was #ColumbianChemicals I00006 \n", - "139 I00006 \n", - "140 I00010 \n", - "141 I00015 \n", - "142 I00009 \n", - "143 I00009 \n", - "144 I00029 \n", - "145 I00049 \n", - "146 I00050 \n", - "147 I00063 \n", - "148 I00010 \n", - "149 I00017 \n", - "150 I00032 \n", - "151 I00044 \n", - "152 I00015 \n", - "153 I00015 \n", - "154 I00017 \n", - "155 I00022 \n", - "156 I00051 \n", - "157 I00015 \n", - "158 I00017 \n", - "159 I00032 \n", - "160 I00017 \n", - "161 I00029 \n", - "162 I00047 \n", - "163 I00047 \n", - "164 I00049 \n", - "165 I00053 \n", - "166 I00053 \n", - "167 I00063 \n", - "168 I00029 \n", - "169 I00047 \n", - "170 I00033 \n", - "171 I00034 \n", - "172 I00034 \n", - "173 I00033 \n", - "174 I00033 \n", - "175 I00053 \n", - "176 I00033 \n", - "177 I00033 \n", - "178 I00033 \n", - "179 I00034 \n", - "180 I00042 \n", - "181 I00044 \n", - "182 I00047 \n", - "183 I00053 \n", - "184 I00056 \n", - "185 I00056 \n", - "\n", - " name_incident amitt_id_technique \\\n", - "0 #VaccinateUS T0018 \n", - "1 Brexit vote T0018 \n", - "2 US presidential elections T0018 \n", - "3 #VaccinateUS T0017 \n", - "4 #VaccinateUS T0019 \n", - "5 Brexit vote T0019 \n", - "6 Incirlik terrorists T0019 \n", - "7 PhilippinesExpert T0019 \n", - "8 US presidential elections T0019 \n", - "9 MH17 investigation T0019 \n", - "10 Kavanaugh T0019 \n", - "11 JadeHelm exercise T0019 \n", - "12 White Helmets: Chemical Weapons T0019 \n", - "13 #HandsOffVenezuela T0019 \n", - "14 Integrity Initiative T0019 \n", - "15 Olympic Doping Scandal T0019 \n", - "16 #VaccinateUS T0056 \n", - "17 Brexit vote T0056 \n", - "18 Incirlik terrorists T0056 \n", - "19 PhilippinesExpert T0056 \n", - "20 US presidential elections T0056 \n", - "21 MH17 investigation T0056 \n", - "22 Kavanaugh T0056 \n", - "23 JadeHelm exercise T0056 \n", - "24 White Helmets: Chemical Weapons T0056 \n", - "25 #HandsOffVenezuela T0056 \n", - "26 Integrity Initiative T0056 \n", - "27 China Huawei CFO Arrest T0056 \n", - "28 Olympic Doping Scandal T0056 \n", - "29 #VaccinateUS T0046 \n", - "30 Brexit vote T0046 \n", - "31 ParklandTeens T0046 \n", - "32 US presidential elections T0046 \n", - "33 MH17 investigation T0046 \n", - "34 Kavanaugh T0046 \n", - "35 JadeHelm exercise T0046 \n", - "36 White Helmets: Chemical Weapons T0046 \n", - "37 #HandsOffVenezuela T0046 \n", - "38 Integrity Initiative T0046 \n", - "39 Iran Influence Operations T0046 \n", - "40 Olympic Doping Scandal T0046 \n", - "41 #VaccinateUS T0058 \n", - "42 #VaccinateUS T0058 \n", - "43 Iran Influence Operations T0058 \n", - "44 Brexit vote T0054 \n", - "45 Incirlik terrorists T0054 \n", - "46 ParklandTeens T0054 \n", - "47 US presidential elections T0054 \n", - "48 #Macronleaks T0054 \n", - "49 MH17 investigation T0054 \n", - "50 Kavanaugh T0054 \n", - "51 Saudi/Qatar bot dispute T0054 \n", - "52 JadeHelm exercise T0054 \n", - "53 Sea of Azov T0054 \n", - "54 White Helmets: Chemical Weapons T0054 \n", - "55 #HandsOffVenezuela T0054 \n", - "56 Integrity Initiative T0054 \n", - "57 Iran Influence Operations T0054 \n", - "58 Olympic Doping Scandal T0054 \n", - "59 Brexit vote T0053 \n", - "60 Incirlik terrorists T0053 \n", - "61 ParklandTeens T0053 \n", - "62 US presidential elections T0053 \n", - "63 #Macronleaks T0053 \n", - "64 MH17 investigation T0053 \n", - "65 Kavanaugh T0053 \n", - "66 JadeHelm exercise T0053 \n", - "67 Sea of Azov T0053 \n", - "68 White Helmets: Chemical Weapons T0053 \n", - "69 #HandsOffVenezuela T0053 \n", - "70 Integrity Initiative T0053 \n", - "71 Iran Influence Operations T0053 \n", - "72 Olympic Doping Scandal T0053 \n", - "73 Brexit vote T0007 \n", - "74 Columbian Chemicals T0007 \n", - "75 PhilippinesExpert T0007 \n", - "76 ParklandTeens T0007 \n", - "77 US presidential elections T0007 \n", - "78 #Macronleaks T0007 \n", - "79 Kavanaugh T0007 \n", - "80 Iran Influence Operations T0007 \n", - "81 Brexit vote T0057 \n", - "82 US presidential elections T0057 \n", - "83 Kavanaugh T0057 \n", - "84 China Huawei CFO Arrest T0057 \n", - "85 China Huawei CFO Arrest T0057 \n", - "86 Brexit vote T0029 \n", - "87 US presidential elections T0029 \n", - "88 Brexit vote T0010 \n", - "89 Incirlik terrorists T0010 \n", - "90 ParklandTeens T0010 \n", - "91 US presidential elections T0010 \n", - "92 MH17 investigation T0010 \n", - "93 Kavanaugh T0010 \n", - "94 JadeHelm exercise T0010 \n", - "95 White Helmets: Chemical Weapons T0010 \n", - "96 #HandsOffVenezuela T0010 \n", - "97 Integrity Initiative T0010 \n", - "98 Olympic Doping Scandal T0010 \n", - "99 Brexit vote T0031 \n", - "100 ParklandTeens T0031 \n", - "101 US presidential elections T0031 \n", - "102 MH17 investigation T0031 \n", - "103 Kavanaugh T0031 \n", - "104 JadeHelm exercise T0031 \n", - "105 White Helmets: Chemical Weapons T0031 \n", - "106 #HandsOffVenezuela T0031 \n", - "107 Integrity Initiative T0031 \n", - "108 Olympic Doping Scandal T0031 \n", - "109 Brexit vote T0032 \n", - "110 ParklandTeens T0032 \n", - "111 US presidential elections T0032 \n", - "112 MH17 investigation T0032 \n", - "113 Kavanaugh T0032 \n", - "114 JadeHelm exercise T0032 \n", - "115 White Helmets: Chemical Weapons T0032 \n", - "116 #HandsOffVenezuela T0032 \n", - "117 Integrity Initiative T0032 \n", - "118 Olympic Doping Scandal T0032 \n", - "119 Brexit vote T0034 \n", - "120 US presidential elections T0034 \n", - "121 Kavanaugh T0034 \n", - "122 Brexit vote T0035 \n", - "123 US presidential elections T0035 \n", - "124 Kavanaugh T0035 \n", - "125 Brexit vote T0036 \n", - "126 US presidential elections T0036 \n", - "127 Kavanaugh T0036 \n", - "128 Brexit vote T0021 \n", - "129 US presidential elections T0021 \n", - "130 Saudi/Qatar bot dispute T0021 \n", - "131 Iran Influence Operations T0021 \n", - "132 Brexit vote T0030 \n", - "133 US presidential elections T0030 \n", - "134 Columbian Chemicals T0043 \n", - "135 Columbian Chemicals T0024 \n", - "136 Saudi/Qatar bot dispute T0024 \n", - "137 Columbian Chemicals T0015 \n", - "138 Columbian Chemicals T0055 \n", - "139 Columbian Chemicals T0039 \n", - "140 ParklandTeens T0039 \n", - "141 ConcordDiscovery T0039 \n", - "142 PhilippinesExpert T0045 \n", - "143 PhilippinesExpert T0052 \n", - "144 MH17 investigation T0052 \n", - "145 White Helmets: Chemical Weapons T0052 \n", - "146 #HandsOffVenezuela T0052 \n", - "147 Olympic Doping Scandal T0052 \n", - "148 ParklandTeens T0020 \n", - "149 US presidential elections T0020 \n", - "150 Kavanaugh T0020 \n", - "151 JadeHelm exercise T0020 \n", - "152 ConcordDiscovery T0025 \n", - "153 ConcordDiscovery T0025 \n", - "154 US presidential elections T0025 \n", - "155 #Macronleaks T0025 \n", - "156 Integrity Initiative T0025 \n", - "157 ConcordDiscovery T0044 \n", - "158 US presidential elections T0033 \n", - "159 Kavanaugh T0033 \n", - "160 US presidential elections T0016 \n", - "161 MH17 investigation T0001 \n", - "162 Sea of Azov T0001 \n", - "163 Sea of Azov T0001 \n", - "164 White Helmets: Chemical Weapons T0001 \n", - "165 China Huawei CFO Arrest T0001 \n", - "166 China Huawei CFO Arrest T0001 \n", - "167 Olympic Doping Scandal T0001 \n", - "168 MH17 investigation T0040 \n", - "169 Sea of Azov T0040 \n", - "170 China 50cent Army T0049 \n", - "171 DibaFacebookExpedition T0049 \n", - "172 DibaFacebookExpedition T0049 \n", - "173 China 50cent Army T0051 \n", - "174 China 50cent Army T0050 \n", - "175 China Huawei CFO Arrest T0050 \n", - "176 China 50cent Army T0047 \n", - "177 China 50cent Army T0048 \n", - "178 China 50cent Army T0002 \n", - "179 DibaFacebookExpedition T0002 \n", - "180 Saudi/Qatar bot dispute T0011 \n", - "181 JadeHelm exercise T0009 \n", - "182 Sea of Azov T0023 \n", - "183 China Huawei CFO Arrest T0023 \n", - "184 Iran Influence Operations T0022 \n", - "185 Iran Influence Operations T0008 \n", - "\n", - " name_technique \n", - "0 Paid targeted ads \n", - "1 Paid targeted ads \n", - "2 Paid targeted ads \n", - "3 Promote online funding \n", - "4 Generate information pollution \n", - "5 Generate information pollution \n", - "6 Generate information pollution \n", - "7 Generate information pollution \n", - "8 Generate information pollution \n", - "9 Generate information pollution \n", - "10 Generate information pollution \n", - "11 Generate information pollution \n", - "12 Generate information pollution \n", - "13 Generate information pollution \n", - "14 Generate information pollution \n", - "15 Generate information pollution \n", - "16 Dedicated channels disseminate information pol... \n", - "17 Dedicated channels disseminate information pol... \n", - "18 Dedicated channels disseminate information pol... \n", - "19 Dedicated channels disseminate information pol... \n", - "20 Dedicated channels disseminate information pol... \n", - "21 Dedicated channels disseminate information pol... \n", - "22 Dedicated channels disseminate information pol... \n", - "23 Dedicated channels disseminate information pol... \n", - "24 Dedicated channels disseminate information pol... \n", - "25 Dedicated channels disseminate information pol... \n", - "26 Dedicated channels disseminate information pol... \n", - "27 Dedicated channels disseminate information pol... \n", - "28 Dedicated channels disseminate information pol... \n", - "29 Search Engine Optimization \n", - "30 Search Engine Optimization \n", - "31 Search Engine Optimization \n", - "32 Search Engine Optimization \n", - "33 Search Engine Optimization \n", - "34 Search Engine Optimization \n", - "35 Search Engine Optimization \n", - "36 Search Engine Optimization \n", - "37 Search Engine Optimization \n", - "38 Search Engine Optimization \n", - "39 Search Engine Optimization \n", - "40 Search Engine Optimization \n", - "41 Legacy web content \n", - "42 Legacy web content \n", - "43 Legacy web content \n", - "44 Twitter bots amplify \n", - "45 Twitter bots amplify \n", - "46 Twitter bots amplify \n", - "47 Twitter bots amplify \n", - "48 Twitter bots amplify \n", - "49 Twitter bots amplify \n", - "50 Twitter bots amplify \n", - "51 Twitter bots amplify \n", - "52 Twitter bots amplify \n", - "53 Twitter bots amplify \n", - "54 Twitter bots amplify \n", - "55 Twitter bots amplify \n", - "56 Twitter bots amplify \n", - "57 Twitter bots amplify \n", - "58 Twitter bots amplify \n", - "59 Twitter trolls amplify and manipulate \n", - "60 Twitter trolls amplify and manipulate \n", - "61 Twitter trolls amplify and manipulate \n", - "62 Twitter trolls amplify and manipulate \n", - "63 Twitter trolls amplify and manipulate \n", - "64 Twitter trolls amplify and manipulate \n", - "65 Twitter trolls amplify and manipulate \n", - "66 Twitter trolls amplify and manipulate \n", - "67 Twitter trolls amplify and manipulate \n", - "68 Twitter trolls amplify and manipulate \n", - "69 Twitter trolls amplify and manipulate \n", - "70 Twitter trolls amplify and manipulate \n", - "71 Twitter trolls amplify and manipulate \n", - "72 Twitter trolls amplify and manipulate \n", - "73 Create fake Social Media Profiles / Pages / Gr... \n", - "74 Create fake Social Media Profiles / Pages / Gr... \n", - "75 Create fake Social Media Profiles / Pages / Gr... \n", - "76 Create fake Social Media Profiles / Pages / Gr... \n", - "77 Create fake Social Media Profiles / Pages / Gr... \n", - "78 Create fake Social Media Profiles / Pages / Gr... \n", - "79 Create fake Social Media Profiles / Pages / Gr... \n", - "80 Create fake Social Media Profiles / Pages / Gr... \n", - "81 Organise remote rallies and events \n", - "82 Organise remote rallies and events \n", - "83 Organise remote rallies and events \n", - "84 Organise remote rallies and events \n", - "85 Organise remote rallies and events \n", - "86 Manipulate online polls \n", - "87 Manipulate online polls \n", - "88 Cultivate ignorant agents \n", - "89 Cultivate ignorant agents \n", - "90 Cultivate ignorant agents \n", - "91 Cultivate ignorant agents \n", - "92 Cultivate ignorant agents \n", - "93 Cultivate ignorant agents \n", - "94 Cultivate ignorant agents \n", - "95 Cultivate ignorant agents \n", - "96 Cultivate ignorant agents \n", - "97 Cultivate ignorant agents \n", - "98 Cultivate ignorant agents \n", - "99 YouTube \n", - "100 YouTube \n", - "101 YouTube \n", - "102 YouTube \n", - "103 YouTube \n", - "104 YouTube \n", - "105 YouTube \n", - "106 YouTube \n", - "107 YouTube \n", - "108 YouTube \n", - "109 Reddit \n", - "110 Reddit \n", - "111 Reddit \n", - "112 Reddit \n", - "113 Reddit \n", - "114 Reddit \n", - "115 Reddit \n", - "116 Reddit \n", - "117 Reddit \n", - "118 Reddit \n", - "119 LinkedIn \n", - "120 LinkedIn \n", - "121 LinkedIn \n", - "122 Pinterest \n", - "123 Pinterest \n", - "124 Pinterest \n", - "125 WhatsApp \n", - "126 WhatsApp \n", - "127 WhatsApp \n", - "128 Memes \n", - "129 Memes \n", - "130 Memes \n", - "131 Memes \n", - "132 Backstop personas \n", - "133 Backstop personas \n", - "134 Use SMS/ WhatsApp/ Chat apps \n", - "135 Create fake videos and images \n", - "136 Create fake videos and images \n", - "137 Create hashtag \n", - "138 Use hashtag \n", - "139 Bait legitimate influencers \n", - "140 Bait legitimate influencers \n", - "141 Bait legitimate influencers \n", - "142 Use fake experts \n", - "143 Tertiary sites amplify news \n", - "144 Tertiary sites amplify news \n", - "145 Tertiary sites amplify news \n", - "146 Tertiary sites amplify news \n", - "147 Tertiary sites amplify news \n", - "148 Trial content \n", - "149 Trial content \n", - "150 Trial content \n", - "151 Trial content \n", - "152 Leak altered documents \n", - "153 Leak altered documents \n", - "154 Leak altered documents \n", - "155 Leak altered documents \n", - "156 Leak altered documents \n", - "157 Seed distortions \n", - "158 Instagram \n", - "159 Instagram \n", - "160 Clickbait \n", - "161 5Ds (dismiss, distort, distract, dismay, divide) \n", - "162 5Ds (dismiss, distort, distract, dismay, divide) \n", - "163 5Ds (dismiss, distort, distract, dismay, divide) \n", - "164 5Ds (dismiss, distort, distract, dismay, divide) \n", - "165 5Ds (dismiss, distort, distract, dismay, divide) \n", - "166 5Ds (dismiss, distort, distract, dismay, divide) \n", - "167 5Ds (dismiss, distort, distract, dismay, divide) \n", - "168 Demand unsurmountable proof \n", - "169 Demand unsurmountable proof \n", - "170 Flooding \n", - "171 Flooding \n", - "172 Flooding \n", - "173 Fabricate social media comment \n", - "174 Cheerleading domestic social media ops \n", - "175 Cheerleading domestic social media ops \n", - "176 Muzzle social media as a political force \n", - "177 Cow online opinion leaders \n", - "178 Facilitate State Propaganda \n", - "179 Facilitate State Propaganda \n", - "180 Hijack legitimate account \n", - "181 Create fake experts \n", - "182 Distort facts \n", - "183 Distort facts \n", - "184 Conspiracy narratives \n", - "185 Create fake or imposter news sites " - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Check which amitt variables we can see from here\n", - "print('{}\\n'.format(vars(amitt).keys()))\n", - "testdfname = 'it'\n", - "testdf = vars(amitt)[testdfname]\n", - "print('{} columns: {}'.format(testdfname, testdf.columns))\n", - "testdf" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnamesummaryincident_idtechnique_id
0IT00000001buy FB targeted adsI00002T0018
1IT00000010Targeted FB paid adsI00005T0018
2IT00000057Targeted FB paid adsI00017T0018
3IT00000002Promote \"funding\" campaignI00002T0017
4IT00000003create web-site - information pollutionI00002T0019
5IT00000014RT & Sputnik generate information pollutionI00005T0019
6IT00000031RT & Sputnik generate information pollution (r...I00007T0019
7IT00000037RT & Sputnik generate information pollutionI00009T0019
8IT00000061RT & Sputnik generate information pollutionI00017T0019
9IT00000082RT & Sputnik generate information pollution (s...I00029T0019
10IT00000094RT & Sputnik generate information pollutionI00032T0019
11IT00000120RT & Sputnik generate information pollutionI00044T0019
12IT00000137RT & Sputnik generate information pollution (s...I00049T0019
13IT00000146RT & Sputnik generate information pollution (s...I00050T0019
14IT00000156RT & Sputnik generate information pollutionI00051T0019
15IT00000180RT & Sputnik generate information pollution (s...I00063T0019
16IT00000004create web-site - information pollutionI00002T0056
17IT00000015RT & Sputnik generate information pollutionI00005T0056
18IT00000032RT & Sputnik generate information pollution (r...I00007T0056
19IT00000038RT & Sputnik generate information pollutionI00009T0056
20IT00000062RT & Sputnik generate information pollutionI00017T0056
21IT00000083RT & Sputnik generate information pollution (s...I00029T0056
22IT00000095RT & Sputnik generate information pollutionI00032T0056
23IT00000121RT & Sputnik generate information pollutionI00044T0056
24IT00000138RT & Sputnik generate information pollution (s...I00049T0056
25IT00000147RT & Sputnik generate information pollution (s...I00050T0056
26IT00000157RT & Sputnik generate information pollutionI00051T0056
27IT00000162State-run media seeds foreign influence enviro...I00053T0056
28IT00000181RT & Sputnik generate information pollution (s...I00063T0056
29IT00000005SEO optimisation/manipulation (\"key words\")I00002T0046
30IT00000022SEO optimisation/manipulation (\"key words\")I00005T0046
31IT00000043SEO optimisation/manipulation (\"key words\")I00010T0046
32IT00000071SEO optimisation/manipulation (\"key words\")I00017T0046
33IT00000085SEO optimisation/manipulation (\"key words\")I00029T0046
34IT00000103SEO optimisation/manipulation (\"key words\")I00032T0046
35IT00000125SEO optimisation/manipulation (\"key words\")I00044T0046
36IT00000140SEO optimisation/manipulation (\"key words\")I00049T0046
37IT00000149SEO optimisation/manipulation (\"key words\")I00050T0046
38IT00000161SEO optimisation/manipulation (\"key words\")I00051T0046
39IT00000172SEO optimisation/manipulation (\"key words\")I00056T0046
40IT00000183SEO optimisation/manipulation (\"key words\")I00063T0046
41IT00000006legacy web contentI00002T0058
42IT00000007hard to remove content and/or campaign/exploit...I00002T0058
43IT00000176legacy web contentI00056T0058
44IT00000008Twitter bots amplify & manipulateI00005T0054
45IT00000034Twitter bots amplify & manipulateI00007T0054
46IT00000041Twitter bots amplify & manipulateI00010T0054
47IT00000055Twitter bots amplify & manipulateI00017T0054
48IT00000076Twitter bots amplify & manipulateI00022T0054
49IT00000079Twitter bots amplify & manipulateI00029T0054
50IT00000090Twitter bots amplify & manipulateI00032T0054
51IT00000115Twitter bots amplify & manipulateI00042T0054
52IT00000118Twitter bots amplify & manipulateI00044T0054
53IT00000131Twitter bots amplify & manipulateI00047T0054
54IT00000134Twitter bots amplify & manipulateI00049T0054
55IT00000144Twitter bots amplify & manipulateI00050T0054
56IT00000154Twitter bots amplify & manipulateI00051T0054
57IT00000169Twitter bots amplify & manipulateI00056T0054
58IT00000177Twitter bots amplify & manipulateI00063T0054
59IT00000009Twitter trolls amplify & manipulateI00005T0053
60IT00000035Twitter trolls amplify & manipulateI00007T0053
61IT00000042Twitter trolls amplify & manipulateI00010T0053
62IT00000056Twitter trolls amplify & manipulateI00017T0053
63IT00000077Twitter trolls amplify & manipulateI00022T0053
64IT00000080Twitter trolls amplify & manipulateI00029T0053
65IT00000091Twitter trolls amplify & manipulateI00032T0053
66IT00000119Twitter trolls amplify & manipulateI00044T0053
67IT00000132Twitter trolls amplify & manipulateI00047T0053
68IT00000135Twitter trolls amplify & manipulateI00049T0053
69IT00000145Twitter trolls amplify & manipulateI00050T0053
70IT00000155Twitter trolls amplify & manipulateI00051T0053
71IT00000170Twitter trolls amplify & manipulateI00056T0053
72IT00000178Twitter trolls amplify & manipulateI00063T0053
73IT00000011Fake FB groups + dark contentI00005T0007
74IT00000029Fake twitter profiles to amplifyTwitter bots used to drive visbilityI00006T0007
75IT00000039FB pagesI00009T0007
76IT00000045FB pages/groups/profilesI00010T0007
77IT00000058Fake FB groups + dark contentI00017T0007
78IT00000078Fake FB groups/pages/profiles + dark contentI00022T0007
79IT00000092Fake FB groups/pages/profilesI00032T0007
80IT00000171Fake FB groups/pages/profiles + dark content (...I00056T0007
81IT00000012Digital to physical \"organize+promote\" rallies...I00005T0057
82IT00000059Digital to physical \"organize+promote\" rallies...I00017T0057
83IT00000093Digital to physical \"organize+promote\" rallies...I00032T0057
84IT00000164Events coordinated and promoted across media p...I00053T0057
85IT00000166Extend digital the physical space… gatherings ...I00053T0057
86IT00000013manipulate social media \"online polls\"?I00005T0029
87IT00000060manipulate social media \"online polls\"?I00017T0029
88IT00000016cultivate, manipulate, exploit useful idiotsI00005T0010
89IT00000033cultivate, manipulate, exploit useful idiots (...I00007T0010
90IT00000044cultivate, manipulate, exploit useful idiots (...I00010T0010
91IT00000063cultivate, manipulate, exploit useful idiotsI00017T0010
92IT00000084cultivate, manipulate, exploit useful idiotsI00029T0010
93IT00000104cultivate, manipulate, exploit useful idiots (...I00032T0010
94IT00000126cultivate, manipulate, exploit useful idiots (...I00044T0010
95IT00000139cultivate, manipulate, exploit useful idiots (...I00049T0010
96IT00000148cultivate, manipulate, exploit useful idiots (...I00050T0010
97IT00000158cultivate, manipulate, exploit useful idiotsI00051T0010
98IT00000182cultivate, manipulate, exploit useful idiotsI00063T0010
99IT00000017YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0031
100IT00000046YouTube; RedditI00010T0031
101IT00000064YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0031
102IT00000087YouTube; Reddit;I00029T0031
103IT00000096YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0031
104IT00000122YouTube; RedditI00044T0031
105IT00000142YouTube; Reddit;I00049T0031
106IT00000151YouTube; Reddit;I00050T0031
107IT00000159YouTube; RedditI00051T0031
108IT00000185YouTube; Reddit;I00063T0031
109IT00000018YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0032
110IT00000047YouTube; RedditI00010T0032
111IT00000065YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0032
112IT00000088YouTube; Reddit;I00029T0032
113IT00000097YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0032
114IT00000123YouTube; RedditI00044T0032
115IT00000143YouTube; Reddit;I00049T0032
116IT00000152YouTube; Reddit;I00050T0032
117IT00000160YouTube; RedditI00051T0032
118IT00000186YouTube; Reddit;I00063T0032
119IT00000019YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0034
120IT00000067YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0034
121IT00000099YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0034
122IT00000020YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0035
123IT00000068YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0035
124IT00000100YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0035
125IT00000021YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?I00005T0036
126IT00000069YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0036
127IT00000101YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0036
128IT00000023Memes... anti-immigration; euroskepticism; fea...Meme that ISIS was responsible for a local che...I00005T0021
129IT00000072Memes... anti-immigration; euroskepticism; fea...I00017T0021
130IT00000117memesI00042T0021
131IT00000173Memes... anti-Isreal/USA/West, conspiracy narr...I00056T0021
132IT00000024Backstop personasWikipedia fake persona \"AmandaGray91\".I00005T0030
133IT00000074Backstop personasI00017T0030
134IT00000025Use SMS/text messagesSMS messages sent to local residentsI00006T0043
135IT00000026Fake video/imagesFake youtube video of ISIS claiming responsibi...I00006T0024
136IT00000116photoshopped/fake imagesI00042T0024
137IT00000027Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006T0015
138IT00000028Create and use hashtagMain hashtag used was #ColumbianChemicalsI00006T0055
139IT00000030bait journalists/media/politiciansI00006T0039
140IT00000049journalist/media baitingI00010T0039
141IT00000053journalist/media baitingI00015T0039
142IT00000036Using \"expert\"I00009T0045
143IT00000040News circulated/amplifed by tertiary sites (Ru...I00009T0052
144IT00000086News circulated/amplifed by tertiary sites (Ru...I00029T0052
145IT00000141News circulated/amplifed by tertiary sites (Ru...I00049T0052
146IT00000150News circulated/amplifed by tertiary sites (Mi...I00050T0052
147IT00000184News circulated/amplifed by tertiary sites (Ru...I00063T0052
148IT000000484Chan/8Chan - trial contentI00010T0020
149IT000000704Chan/8Chan - trial contentI00017T0020
150IT000001024Chan/8Chan - trial contentI00032T0020
151IT000001244Chan/8Chan - trial contentI00044T0020
152IT00000050Forge ('release' altered hacked documents)I00015T0025
153IT00000051hack/leak/manipulate/distortI00015T0025
154IT00000054hack/leak/manipulate/distortI00017T0025
155IT00000075hack/leak/manipulate/distortI00022T0025
156IT00000153hack/leak/manipulate/distortI00051T0025
157IT00000052Circulate to media via DM, then release publiclyI00015T0044
158IT00000066YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00017T0033
159IT00000098YouTube; Reddit; (Instagram, LinkedIn; Pintere...I00032T0033
160IT00000073Click-bait (economic actors) fake news sites (...I00017T0016
161IT000000814 D's (dismiss, distort, distract, dismay...Of...I00029T0001
162IT000001284 D's (dismiss, distort, distract, dismay...Of...I00047T0001
163IT00000129Russian FSB security service blamed Ukraine fo...I00047T0001
164IT000001364 D's (dismiss, distort, distract, dismay...Of...I00049T0001
165IT00000167China also plays victim, innocence, plays by r...I00053T0001
166IT00000168Chinese ambassador Lu Shaye accused Canada of ...I00053T0001
167IT000001794 D's (dismiss, distort, distract, dismay...Of...I00063T0001
168IT00000089Demand insurmountable proofI00029T0040
169IT00000133Demand insurmountable proofI00047T0040
170IT000001052,000,000 people (est.) part of state run/spon...I00033T0049
171IT00000112flood the Facebook pages of Taiwanese politici...I00034T0049
172IT00000113Democratic Progressive Party (DPP), attracted ...I00034T0049
173IT00000106fabricated social media commentI00033T0051
174IT00000107domestic social media influence operations foc...I00033T0050
175IT00000165Extend digital the physical space… gatherings ...I00053T0050
176IT00000108cow online opinion leaders into submission, mu...I00033T0047
177IT00000109cow online opinion leaders into submission, mu...I00033T0048
178IT00000110facilitate state propaganda and defuse crisesI00033T0002
179IT00000111Netizens from one of the largest discussion fo...I00034T0002
180IT00000114“hack” of Qatar’s official news agencyI00042T0011
181IT00000127Promote fake “experts” with impressive (and sc...I00044T0009
182IT00000130(Distort) Kremlin-controlled RT cited Russian ...I00047T0023
183IT00000163Distorted, saccharine “news” about the Chinese...I00053T0023
184IT00000174Memes... anti-Isreal/USA/West, conspiracy narr...I00056T0022
185IT00000175Fake news/synthetic web-sitesI00056T0008
\n", - "
" - ], - "text/plain": [ - " amitt_id name \\\n", - "0 IT00000001 buy FB targeted ads \n", - "1 IT00000010 Targeted FB paid ads \n", - "2 IT00000057 Targeted FB paid ads \n", - "3 IT00000002 Promote \"funding\" campaign \n", - "4 IT00000003 create web-site - information pollution \n", - "5 IT00000014 RT & Sputnik generate information pollution \n", - "6 IT00000031 RT & Sputnik generate information pollution (r... \n", - "7 IT00000037 RT & Sputnik generate information pollution \n", - "8 IT00000061 RT & Sputnik generate information pollution \n", - "9 IT00000082 RT & Sputnik generate information pollution (s... \n", - "10 IT00000094 RT & Sputnik generate information pollution \n", - "11 IT00000120 RT & Sputnik generate information pollution \n", - "12 IT00000137 RT & Sputnik generate information pollution (s... \n", - "13 IT00000146 RT & Sputnik generate information pollution (s... \n", - "14 IT00000156 RT & Sputnik generate information pollution \n", - "15 IT00000180 RT & Sputnik generate information pollution (s... \n", - "16 IT00000004 create web-site - information pollution \n", - "17 IT00000015 RT & Sputnik generate information pollution \n", - "18 IT00000032 RT & Sputnik generate information pollution (r... \n", - "19 IT00000038 RT & Sputnik generate information pollution \n", - "20 IT00000062 RT & Sputnik generate information pollution \n", - "21 IT00000083 RT & Sputnik generate information pollution (s... \n", - "22 IT00000095 RT & Sputnik generate information pollution \n", - "23 IT00000121 RT & Sputnik generate information pollution \n", - "24 IT00000138 RT & Sputnik generate information pollution (s... \n", - "25 IT00000147 RT & Sputnik generate information pollution (s... \n", - "26 IT00000157 RT & Sputnik generate information pollution \n", - "27 IT00000162 State-run media seeds foreign influence enviro... \n", - "28 IT00000181 RT & Sputnik generate information pollution (s... \n", - "29 IT00000005 SEO optimisation/manipulation (\"key words\") \n", - "30 IT00000022 SEO optimisation/manipulation (\"key words\") \n", - "31 IT00000043 SEO optimisation/manipulation (\"key words\") \n", - "32 IT00000071 SEO optimisation/manipulation (\"key words\") \n", - "33 IT00000085 SEO optimisation/manipulation (\"key words\") \n", - "34 IT00000103 SEO optimisation/manipulation (\"key words\") \n", - "35 IT00000125 SEO optimisation/manipulation (\"key words\") \n", - "36 IT00000140 SEO optimisation/manipulation (\"key words\") \n", - "37 IT00000149 SEO optimisation/manipulation (\"key words\") \n", - "38 IT00000161 SEO optimisation/manipulation (\"key words\") \n", - "39 IT00000172 SEO optimisation/manipulation (\"key words\") \n", - "40 IT00000183 SEO optimisation/manipulation (\"key words\") \n", - "41 IT00000006 legacy web content \n", - "42 IT00000007 hard to remove content and/or campaign/exploit... \n", - "43 IT00000176 legacy web content \n", - "44 IT00000008 Twitter bots amplify & manipulate \n", - "45 IT00000034 Twitter bots amplify & manipulate \n", - "46 IT00000041 Twitter bots amplify & manipulate \n", - "47 IT00000055 Twitter bots amplify & manipulate \n", - "48 IT00000076 Twitter bots amplify & manipulate \n", - "49 IT00000079 Twitter bots amplify & manipulate \n", - "50 IT00000090 Twitter bots amplify & manipulate \n", - "51 IT00000115 Twitter bots amplify & manipulate \n", - "52 IT00000118 Twitter bots amplify & manipulate \n", - "53 IT00000131 Twitter bots amplify & manipulate \n", - "54 IT00000134 Twitter bots amplify & manipulate \n", - "55 IT00000144 Twitter bots amplify & manipulate \n", - "56 IT00000154 Twitter bots amplify & manipulate \n", - "57 IT00000169 Twitter bots amplify & manipulate \n", - "58 IT00000177 Twitter bots amplify & manipulate \n", - "59 IT00000009 Twitter trolls amplify & manipulate \n", - "60 IT00000035 Twitter trolls amplify & manipulate \n", - "61 IT00000042 Twitter trolls amplify & manipulate \n", - "62 IT00000056 Twitter trolls amplify & manipulate \n", - "63 IT00000077 Twitter trolls amplify & manipulate \n", - "64 IT00000080 Twitter trolls amplify & manipulate \n", - "65 IT00000091 Twitter trolls amplify & manipulate \n", - "66 IT00000119 Twitter trolls amplify & manipulate \n", - "67 IT00000132 Twitter trolls amplify & manipulate \n", - "68 IT00000135 Twitter trolls amplify & manipulate \n", - "69 IT00000145 Twitter trolls amplify & manipulate \n", - "70 IT00000155 Twitter trolls amplify & manipulate \n", - "71 IT00000170 Twitter trolls amplify & manipulate \n", - "72 IT00000178 Twitter trolls amplify & manipulate \n", - "73 IT00000011 Fake FB groups + dark content \n", - "74 IT00000029 Fake twitter profiles to amplify \n", - "75 IT00000039 FB pages \n", - "76 IT00000045 FB pages/groups/profiles \n", - "77 IT00000058 Fake FB groups + dark content \n", - "78 IT00000078 Fake FB groups/pages/profiles + dark content \n", - "79 IT00000092 Fake FB groups/pages/profiles \n", - "80 IT00000171 Fake FB groups/pages/profiles + dark content (... \n", - "81 IT00000012 Digital to physical \"organize+promote\" rallies... \n", - "82 IT00000059 Digital to physical \"organize+promote\" rallies... \n", - "83 IT00000093 Digital to physical \"organize+promote\" rallies... \n", - "84 IT00000164 Events coordinated and promoted across media p... \n", - "85 IT00000166 Extend digital the physical space… gatherings ... \n", - "86 IT00000013 manipulate social media \"online polls\"? \n", - "87 IT00000060 manipulate social media \"online polls\"? \n", - "88 IT00000016 cultivate, manipulate, exploit useful idiots \n", - "89 IT00000033 cultivate, manipulate, exploit useful idiots (... \n", - "90 IT00000044 cultivate, manipulate, exploit useful idiots (... \n", - "91 IT00000063 cultivate, manipulate, exploit useful idiots \n", - "92 IT00000084 cultivate, manipulate, exploit useful idiots \n", - "93 IT00000104 cultivate, manipulate, exploit useful idiots (... \n", - "94 IT00000126 cultivate, manipulate, exploit useful idiots (... \n", - "95 IT00000139 cultivate, manipulate, exploit useful idiots (... \n", - "96 IT00000148 cultivate, manipulate, exploit useful idiots (... \n", - "97 IT00000158 cultivate, manipulate, exploit useful idiots \n", - "98 IT00000182 cultivate, manipulate, exploit useful idiots \n", - "99 IT00000017 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "100 IT00000046 YouTube; Reddit \n", - "101 IT00000064 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "102 IT00000087 YouTube; Reddit; \n", - "103 IT00000096 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "104 IT00000122 YouTube; Reddit \n", - "105 IT00000142 YouTube; Reddit; \n", - "106 IT00000151 YouTube; Reddit; \n", - "107 IT00000159 YouTube; Reddit \n", - "108 IT00000185 YouTube; Reddit; \n", - "109 IT00000018 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "110 IT00000047 YouTube; Reddit \n", - "111 IT00000065 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "112 IT00000088 YouTube; Reddit; \n", - "113 IT00000097 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "114 IT00000123 YouTube; Reddit \n", - "115 IT00000143 YouTube; Reddit; \n", - "116 IT00000152 YouTube; Reddit; \n", - "117 IT00000160 YouTube; Reddit \n", - "118 IT00000186 YouTube; Reddit; \n", - "119 IT00000019 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "120 IT00000067 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "121 IT00000099 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "122 IT00000020 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "123 IT00000068 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "124 IT00000100 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "125 IT00000021 YouTube; Reddit; LinkedIn; Pinterest; WhatsApp? \n", - "126 IT00000069 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "127 IT00000101 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "128 IT00000023 Memes... anti-immigration; euroskepticism; fea... \n", - "129 IT00000072 Memes... anti-immigration; euroskepticism; fea... \n", - "130 IT00000117 memes \n", - "131 IT00000173 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "132 IT00000024 Backstop personas \n", - "133 IT00000074 Backstop personas \n", - "134 IT00000025 Use SMS/text messages \n", - "135 IT00000026 Fake video/images \n", - "136 IT00000116 photoshopped/fake images \n", - "137 IT00000027 Create and use hashtag \n", - "138 IT00000028 Create and use hashtag \n", - "139 IT00000030 bait journalists/media/politicians \n", - "140 IT00000049 journalist/media baiting \n", - "141 IT00000053 journalist/media baiting \n", - "142 IT00000036 Using \"expert\" \n", - "143 IT00000040 News circulated/amplifed by tertiary sites (Ru... \n", - "144 IT00000086 News circulated/amplifed by tertiary sites (Ru... \n", - "145 IT00000141 News circulated/amplifed by tertiary sites (Ru... \n", - "146 IT00000150 News circulated/amplifed by tertiary sites (Mi... \n", - "147 IT00000184 News circulated/amplifed by tertiary sites (Ru... \n", - "148 IT00000048 4Chan/8Chan - trial content \n", - "149 IT00000070 4Chan/8Chan - trial content \n", - "150 IT00000102 4Chan/8Chan - trial content \n", - "151 IT00000124 4Chan/8Chan - trial content \n", - "152 IT00000050 Forge ('release' altered hacked documents) \n", - "153 IT00000051 hack/leak/manipulate/distort \n", - "154 IT00000054 hack/leak/manipulate/distort \n", - "155 IT00000075 hack/leak/manipulate/distort \n", - "156 IT00000153 hack/leak/manipulate/distort \n", - "157 IT00000052 Circulate to media via DM, then release publicly \n", - "158 IT00000066 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "159 IT00000098 YouTube; Reddit; (Instagram, LinkedIn; Pintere... \n", - "160 IT00000073 Click-bait (economic actors) fake news sites (... \n", - "161 IT00000081 4 D's (dismiss, distort, distract, dismay...Of... \n", - "162 IT00000128 4 D's (dismiss, distort, distract, dismay...Of... \n", - "163 IT00000129 Russian FSB security service blamed Ukraine fo... \n", - "164 IT00000136 4 D's (dismiss, distort, distract, dismay...Of... \n", - "165 IT00000167 China also plays victim, innocence, plays by r... \n", - "166 IT00000168 Chinese ambassador Lu Shaye accused Canada of ... \n", - "167 IT00000179 4 D's (dismiss, distort, distract, dismay...Of... \n", - "168 IT00000089 Demand insurmountable proof \n", - "169 IT00000133 Demand insurmountable proof \n", - "170 IT00000105 2,000,000 people (est.) part of state run/spon... \n", - "171 IT00000112 flood the Facebook pages of Taiwanese politici... \n", - "172 IT00000113 Democratic Progressive Party (DPP), attracted ... \n", - "173 IT00000106 fabricated social media comment \n", - "174 IT00000107 domestic social media influence operations foc... \n", - "175 IT00000165 Extend digital the physical space… gatherings ... \n", - "176 IT00000108 cow online opinion leaders into submission, mu... \n", - "177 IT00000109 cow online opinion leaders into submission, mu... \n", - "178 IT00000110 facilitate state propaganda and defuse crises \n", - "179 IT00000111 Netizens from one of the largest discussion fo... \n", - "180 IT00000114 “hack” of Qatar’s official news agency \n", - "181 IT00000127 Promote fake “experts” with impressive (and sc... \n", - "182 IT00000130 (Distort) Kremlin-controlled RT cited Russian ... \n", - "183 IT00000163 Distorted, saccharine “news” about the Chinese... \n", - "184 IT00000174 Memes... anti-Isreal/USA/West, conspiracy narr... \n", - "185 IT00000175 Fake news/synthetic web-sites \n", - "\n", - " summary incident_id \\\n", - "0 I00002 \n", - "1 I00005 \n", - "2 I00017 \n", - "3 I00002 \n", - "4 I00002 \n", - "5 I00005 \n", - "6 I00007 \n", - "7 I00009 \n", - "8 I00017 \n", - "9 I00029 \n", - "10 I00032 \n", - "11 I00044 \n", - "12 I00049 \n", - "13 I00050 \n", - "14 I00051 \n", - "15 I00063 \n", - "16 I00002 \n", - "17 I00005 \n", - "18 I00007 \n", - "19 I00009 \n", - "20 I00017 \n", - "21 I00029 \n", - "22 I00032 \n", - "23 I00044 \n", - "24 I00049 \n", - "25 I00050 \n", - "26 I00051 \n", - "27 I00053 \n", - "28 I00063 \n", - "29 I00002 \n", - "30 I00005 \n", - "31 I00010 \n", - "32 I00017 \n", - "33 I00029 \n", - "34 I00032 \n", - "35 I00044 \n", - "36 I00049 \n", - "37 I00050 \n", - "38 I00051 \n", - "39 I00056 \n", - "40 I00063 \n", - "41 I00002 \n", - "42 I00002 \n", - "43 I00056 \n", - "44 I00005 \n", - "45 I00007 \n", - "46 I00010 \n", - "47 I00017 \n", - "48 I00022 \n", - "49 I00029 \n", - "50 I00032 \n", - "51 I00042 \n", - "52 I00044 \n", - "53 I00047 \n", - "54 I00049 \n", - "55 I00050 \n", - "56 I00051 \n", - "57 I00056 \n", - "58 I00063 \n", - "59 I00005 \n", - "60 I00007 \n", - "61 I00010 \n", - "62 I00017 \n", - "63 I00022 \n", - "64 I00029 \n", - "65 I00032 \n", - "66 I00044 \n", - "67 I00047 \n", - "68 I00049 \n", - "69 I00050 \n", - "70 I00051 \n", - "71 I00056 \n", - "72 I00063 \n", - "73 I00005 \n", - "74 Twitter bots used to drive visbility I00006 \n", - "75 I00009 \n", - "76 I00010 \n", - "77 I00017 \n", - "78 I00022 \n", - "79 I00032 \n", - "80 I00056 \n", - "81 I00005 \n", - "82 I00017 \n", - "83 I00032 \n", - "84 I00053 \n", - "85 I00053 \n", - "86 I00005 \n", - "87 I00017 \n", - "88 I00005 \n", - "89 I00007 \n", - "90 I00010 \n", - "91 I00017 \n", - "92 I00029 \n", - "93 I00032 \n", - "94 I00044 \n", - "95 I00049 \n", - "96 I00050 \n", - "97 I00051 \n", - "98 I00063 \n", - "99 I00005 \n", - "100 I00010 \n", - "101 I00017 \n", - "102 I00029 \n", - "103 I00032 \n", - "104 I00044 \n", - "105 I00049 \n", - "106 I00050 \n", - "107 I00051 \n", - "108 I00063 \n", - "109 I00005 \n", - "110 I00010 \n", - "111 I00017 \n", - "112 I00029 \n", - "113 I00032 \n", - "114 I00044 \n", - "115 I00049 \n", - "116 I00050 \n", - "117 I00051 \n", - "118 I00063 \n", - "119 I00005 \n", - "120 I00017 \n", - "121 I00032 \n", - "122 I00005 \n", - "123 I00017 \n", - "124 I00032 \n", - "125 I00005 \n", - "126 I00017 \n", - "127 I00032 \n", - "128 Meme that ISIS was responsible for a local che... I00005 \n", - "129 I00017 \n", - "130 I00042 \n", - "131 I00056 \n", - "132 Wikipedia fake persona \"AmandaGray91\". I00005 \n", - "133 I00017 \n", - "134 SMS messages sent to local residents I00006 \n", - "135 Fake youtube video of ISIS claiming responsibi... I00006 \n", - "136 I00042 \n", - "137 Main hashtag used was #ColumbianChemicals I00006 \n", - "138 Main hashtag used was #ColumbianChemicals I00006 \n", - "139 I00006 \n", - "140 I00010 \n", - "141 I00015 \n", - "142 I00009 \n", - "143 I00009 \n", - "144 I00029 \n", - "145 I00049 \n", - "146 I00050 \n", - "147 I00063 \n", - "148 I00010 \n", - "149 I00017 \n", - "150 I00032 \n", - "151 I00044 \n", - "152 I00015 \n", - "153 I00015 \n", - "154 I00017 \n", - "155 I00022 \n", - "156 I00051 \n", - "157 I00015 \n", - "158 I00017 \n", - "159 I00032 \n", - "160 I00017 \n", - "161 I00029 \n", - "162 I00047 \n", - "163 I00047 \n", - "164 I00049 \n", - "165 I00053 \n", - "166 I00053 \n", - "167 I00063 \n", - "168 I00029 \n", - "169 I00047 \n", - "170 I00033 \n", - "171 I00034 \n", - "172 I00034 \n", - "173 I00033 \n", - "174 I00033 \n", - "175 I00053 \n", - "176 I00033 \n", - "177 I00033 \n", - "178 I00033 \n", - "179 I00034 \n", - "180 I00042 \n", - "181 I00044 \n", - "182 I00047 \n", - "183 I00053 \n", - "184 I00056 \n", - "185 I00056 \n", - "\n", - " technique_id \n", - "0 T0018 \n", - "1 T0018 \n", - "2 T0018 \n", - "3 T0017 \n", - "4 T0019 \n", - "5 T0019 \n", - "6 T0019 \n", - "7 T0019 \n", - "8 T0019 \n", - "9 T0019 \n", - "10 T0019 \n", - "11 T0019 \n", - "12 T0019 \n", - "13 T0019 \n", - "14 T0019 \n", - "15 T0019 \n", - "16 T0056 \n", - "17 T0056 \n", - "18 T0056 \n", - "19 T0056 \n", - "20 T0056 \n", - "21 T0056 \n", - "22 T0056 \n", - "23 T0056 \n", - "24 T0056 \n", - "25 T0056 \n", - "26 T0056 \n", - "27 T0056 \n", - "28 T0056 \n", - "29 T0046 \n", - "30 T0046 \n", - "31 T0046 \n", - "32 T0046 \n", - "33 T0046 \n", - "34 T0046 \n", - "35 T0046 \n", - "36 T0046 \n", - "37 T0046 \n", - "38 T0046 \n", - "39 T0046 \n", - "40 T0046 \n", - "41 T0058 \n", - "42 T0058 \n", - "43 T0058 \n", - "44 T0054 \n", - "45 T0054 \n", - "46 T0054 \n", - "47 T0054 \n", - "48 T0054 \n", - "49 T0054 \n", - "50 T0054 \n", - "51 T0054 \n", - "52 T0054 \n", - "53 T0054 \n", - "54 T0054 \n", - "55 T0054 \n", - "56 T0054 \n", - "57 T0054 \n", - "58 T0054 \n", - "59 T0053 \n", - "60 T0053 \n", - "61 T0053 \n", - "62 T0053 \n", - "63 T0053 \n", - "64 T0053 \n", - "65 T0053 \n", - "66 T0053 \n", - "67 T0053 \n", - "68 T0053 \n", - "69 T0053 \n", - "70 T0053 \n", - "71 T0053 \n", - "72 T0053 \n", - "73 T0007 \n", - "74 T0007 \n", - "75 T0007 \n", - "76 T0007 \n", - "77 T0007 \n", - "78 T0007 \n", - "79 T0007 \n", - "80 T0007 \n", - "81 T0057 \n", - "82 T0057 \n", - "83 T0057 \n", - "84 T0057 \n", - "85 T0057 \n", - "86 T0029 \n", - "87 T0029 \n", - "88 T0010 \n", - "89 T0010 \n", - "90 T0010 \n", - "91 T0010 \n", - "92 T0010 \n", - "93 T0010 \n", - "94 T0010 \n", - "95 T0010 \n", - "96 T0010 \n", - "97 T0010 \n", - "98 T0010 \n", - "99 T0031 \n", - "100 T0031 \n", - "101 T0031 \n", - "102 T0031 \n", - "103 T0031 \n", - "104 T0031 \n", - "105 T0031 \n", - "106 T0031 \n", - "107 T0031 \n", - "108 T0031 \n", - "109 T0032 \n", - "110 T0032 \n", - "111 T0032 \n", - "112 T0032 \n", - "113 T0032 \n", - "114 T0032 \n", - "115 T0032 \n", - "116 T0032 \n", - "117 T0032 \n", - "118 T0032 \n", - "119 T0034 \n", - "120 T0034 \n", - "121 T0034 \n", - "122 T0035 \n", - "123 T0035 \n", - "124 T0035 \n", - "125 T0036 \n", - "126 T0036 \n", - "127 T0036 \n", - "128 T0021 \n", - "129 T0021 \n", - "130 T0021 \n", - "131 T0021 \n", - "132 T0030 \n", - "133 T0030 \n", - "134 T0043 \n", - "135 T0024 \n", - "136 T0024 \n", - "137 T0015 \n", - "138 T0055 \n", - "139 T0039 \n", - "140 T0039 \n", - "141 T0039 \n", - "142 T0045 \n", - "143 T0052 \n", - "144 T0052 \n", - "145 T0052 \n", - "146 T0052 \n", - "147 T0052 \n", - "148 T0020 \n", - "149 T0020 \n", - "150 T0020 \n", - "151 T0020 \n", - "152 T0025 \n", - "153 T0025 \n", - "154 T0025 \n", - "155 T0025 \n", - "156 T0025 \n", - "157 T0044 \n", - "158 T0033 \n", - "159 T0033 \n", - "160 T0016 \n", - "161 T0001 \n", - "162 T0001 \n", - "163 T0001 \n", - "164 T0001 \n", - "165 T0001 \n", - "166 T0001 \n", - "167 T0001 \n", - "168 T0040 \n", - "169 T0040 \n", - "170 T0049 \n", - "171 T0049 \n", - "172 T0049 \n", - "173 T0051 \n", - "174 T0050 \n", - "175 T0050 \n", - "176 T0047 \n", - "177 T0048 \n", - "178 T0002 \n", - "179 T0002 \n", - "180 T0011 \n", - "181 T0009 \n", - "182 T0023 \n", - "183 T0023 \n", - "184 T0022 \n", - "185 T0008 " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "it = vars(amitt)['it'][['amitt_id', 'name', 'summary', 'amitt_id_incident', 'amitt_id_technique']].copy()\n", - "it.rename(columns={'amitt_id_incident':'incident_id', \n", - " 'amitt_id_technique': 'technique_id'}, inplace=True)\n", - "it" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "incident 44\n", - "campaign 16\n", - "apt 2\n", - "tactic 1\n", - "Name: objecttype, dtype: int64" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dii = vars(amitt)['df_incidents']\n", - "dii['objecttype'].value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnameobjecttypesummaryyear_startedattributions_seenfound_in_countryurlsnoteswhen_addedfound_vialongname
30I00031antivaxapt2018RussiaWorldhttps://ajph.aphapublications.org/doi/pdf/10.2...2019-02-24OIII00031 - antivax
32I00033China 50cent Armyapt50cent Army is a CCP “tool” - “massive secret ...2014ChinaChinahttps://gking.harvard.edu/files/gking/files/ho...campaign (multiple incidents, e.g. Shanshan ri...2019-02-24OIII00033 - China 50cent Army
\n", - "
" - ], - "text/plain": [ - " amitt_id name objecttype \\\n", - "30 I00031 antivax apt \n", - "32 I00033 China 50cent Army apt \n", - "\n", - " summary year_started \\\n", - "30 2018 \n", - "32 50cent Army is a CCP “tool” - “massive secret ... 2014 \n", - "\n", - " attributions_seen found_in_country \\\n", - "30 Russia World \n", - "32 China China \n", - "\n", - " urls \\\n", - "30 https://ajph.aphapublications.org/doi/pdf/10.2... \n", - "32 https://gking.harvard.edu/files/gking/files/ho... \n", - "\n", - " notes when_added found_via \\\n", - "30 2019-02-24 OII \n", - "32 campaign (multiple incidents, e.g. Shanshan ri... 2019-02-24 OII \n", - "\n", - " longname \n", - "30 I00031 - antivax \n", - "32 I00033 - China 50cent Army " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dii[dii['objecttype'] == 'apt']" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnametactic_idsummarylongname
0T00015Ds (dismiss, distort, distract, dismay, divide)TA01Nimmo's \"4Ds of propaganda\": dismiss, distort,...T0001 - 5Ds (dismiss, distort, distract, disma...
1T0002Facilitate State PropagandaTA01Organize citizens around pro-state messaging. ...T0002 - Facilitate State Propaganda
2T0003Leverage Existing NarrativesTA01Use or adapt existing narrative themes, where ...T0003 - Leverage Existing Narratives
3T0004Competing NarrativesTA01Advance competing narratives connected to same...T0004 - Competing Narratives
4T0005Center of Gravity AnalysisTA02Recon/research to identify \"the source of powe...T0005 - Center of Gravity Analysis
5T0006Create Master NarrativesTA02The promotion of beneficial master narratives ...T0006 - Create Master Narratives
6T0007Create fake Social Media Profiles / Pages / Gr...TA03Create key social engineering assets needed to...T0007 - Create fake Social Media Profiles / Pa...
7T0008Create fake or imposter news sitesTA03Modern computational propaganda makes use of a...T0008 - Create fake or imposter news sites
8T0009Create fake expertsTA03Stories planted or promoted in computational p...T0009 - Create fake experts
9T0010Cultivate ignorant agentsTA04Cultivate propagandists for a cause, the goals...T0010 - Cultivate ignorant agents
10T0011Hijack legitimate accountTA04Hack or take over legimate accounts to distrib...T0011 - Hijack legitimate account
11T0012Use concealmentTA04Use anonymous social media profiles. Examples ...T0012 - Use concealment
12T0013Create fake websitesTA04Create media assets to support fake organizati...T0013 - Create fake websites
13T0014Create funding campaignsTA04Generate revenue through online funding campai...T0014 - Create funding campaigns
14T0015Create hashtagTA04Many incident-based campaigns will create a ha...T0015 - Create hashtag
15T0016ClickbaitTA05Create attention grabbing headlines (outrage, ...T0016 - Clickbait
16T0017Promote online fundingTA05Drive traffic/engagement to funding campaign s...T0017 - Promote online funding
17T0018Paid targeted adsTA05Create or fund advertisements targeted at spec...T0018 - Paid targeted ads
18T0019Generate information pollutionTA06Flood social channels; drive traffic/engagemen...T0019 - Generate information pollution
19T0020Trial contentTA06Iteratively test incident performance (message...T0020 - Trial content
20T0021MemesTA06Memes are one of the most important single art...T0021 - Memes
21T0022Conspiracy narrativesTA06\"Conspiracy narratives appeal to the human des...T0022 - Conspiracy narratives
22T0023Distort factsTA06Change, twist, or exaggerate existing facts to...T0023 - Distort facts
23T0024Create fake videos and imagesTA06Create fake videos and/or images by manipulati...T0024 - Create fake videos and images
24T0025Leak altered documentsTA06Obtain documents (eg by theft or leak), then a...T0025 - Leak altered documents
25T0026Create fake researchTA06Create fake academic research. Example: fake s...T0026 - Create fake research
26T0027Adapt existing narrativesTA06Adapting existing narratives to current operat...T0027 - Adapt existing narratives
27T0028Create competing narrativesTA06Misinformation promotes an agenda by advancing...T0028 - Create competing narratives
28T0029Manipulate online pollsTA07Create fake online polls, or manipulate existi...T0029 - Manipulate online polls
29T0030Backstop personasTA07Create other assets/dossier/cover/fake relatio...T0030 - Backstop personas
30T0031YouTubeTA07Use YouTube as a narrative dissemination channelT0031 - YouTube
31T0032RedditTA07Use Reddit as a narrative dissemination channelT0032 - Reddit
32T0033InstagramTA07Use Instagram as a narrative dissemination cha...T0033 - Instagram
33T0034LinkedInTA07Use LinkedIn as a narrative dissemination channelT0034 - LinkedIn
34T0035PinterestTA07Use Pinterest as a narrative dissemination cha...T0035 - Pinterest
35T0036WhatsAppTA07Use WhatsApp as a narrative dissemination channelT0036 - WhatsApp
36T0037FacebookTA07Use Facebook as a narrative dissemination channelT0037 - Facebook
37T0038TwitterTA07Use Twitter as a narrative dissemination channelT0038 - Twitter
38T0039Bait legitimate influencersTA08Credibility in a social media environment is o...T0039 - Bait legitimate influencers
39T0040Demand unsurmountable proofTA08Campaigns often leverage tactical and informat...T0040 - Demand unsurmountable proof
40T0041Deny involvementTA08Without \"smoking gun\" proof (and even with pro...T0041 - Deny involvement
41T0042Kernel of TruthTA08Wrap lies or altered context/facts around trut...T0042 - Kernel of Truth
42T0043Use SMS/ WhatsApp/ Chat appsTA08Direct messaging via encypted app is an increa...T0043 - Use SMS/ WhatsApp/ Chat apps
43T0044Seed distortionsTA08Try a wide variety of messages in the early ho...T0044 - Seed distortions
44T0045Use fake expertsTA08Use the fake experts that were set up in T0009...T0045 - Use fake experts
45T0046Search Engine OptimizationTA08Manipulate content engagement metrics (ie: Red...T0046 - Search Engine Optimization
46T0047Muzzle social media as a political forceTA09Use political influence or the power of state ...T0047 - Muzzle social media as a political force
47T0048Cow online opinion leadersTA09Intimidate, coerce, threaten critics/dissident...T0048 - Cow online opinion leaders
48T0049FloodingTA09Flooding and/or mobbing social media channels ...T0049 - Flooding
49T0050Cheerleading domestic social media opsTA09Deploy state-coordinated social media commente...T0050 - Cheerleading domestic social media ops
50T0051Fabricate social media commentTA09Use government-paid social media commenters, a...T0051 - Fabricate social media comment
51T0052Tertiary sites amplify newsTA09Create content/news/opinion web-sites to cross...T0052 - Tertiary sites amplify news
52T0053Twitter trolls amplify and manipulateTA09Use trolls to amplify narratives and/or manipu...T0053 - Twitter trolls amplify and manipulate
53T0054Twitter bots amplifyTA09Use bots to amplify narratives above algorithm...T0054 - Twitter bots amplify
54T0055Use hashtagTA09Use a dedicated hashtag for the incident - eit...T0055 - Use hashtag
55T0056Dedicated channels disseminate information pol...TA09Output information pollution (e.g. articles on...T0056 - Dedicated channels disseminate informa...
56T0057Organise remote rallies and eventsTA10Coordinate and promote real-world events acros...T0057 - Organise remote rallies and events
57T0058Legacy web contentTA11Make incident content visible for a long time,...T0058 - Legacy web content
58T0059Play the long gameTA11Play the long game can mean a couple of things...T0059 - Play the long game
59T0060Continue to amplifyTA11continue narrative or message amplification af...T0060 - Continue to amplify
60T0061Sell merchandisingTA10Sell hats, t-shirts, flags and other branded c...T0061 - Sell merchandising
61T0062Behaviour changesTA12Monitor and evaluate behaviour changes from mi...T0062 - Behaviour changes
62T0063Message reachTA12Monitor and evaluate message reach in misinfor...T0063 - Message reach
63T0064Social media engagementTA12Monitor and evaluate social media engagement i...T0064 - Social media engagement
\n", - "
" - ], - "text/plain": [ - " amitt_id name tactic_id \\\n", - "0 T0001 5Ds (dismiss, distort, distract, dismay, divide) TA01 \n", - "1 T0002 Facilitate State Propaganda TA01 \n", - "2 T0003 Leverage Existing Narratives TA01 \n", - "3 T0004 Competing Narratives TA01 \n", - "4 T0005 Center of Gravity Analysis TA02 \n", - "5 T0006 Create Master Narratives TA02 \n", - "6 T0007 Create fake Social Media Profiles / Pages / Gr... TA03 \n", - "7 T0008 Create fake or imposter news sites TA03 \n", - "8 T0009 Create fake experts TA03 \n", - "9 T0010 Cultivate ignorant agents TA04 \n", - "10 T0011 Hijack legitimate account TA04 \n", - "11 T0012 Use concealment TA04 \n", - "12 T0013 Create fake websites TA04 \n", - "13 T0014 Create funding campaigns TA04 \n", - "14 T0015 Create hashtag TA04 \n", - "15 T0016 Clickbait TA05 \n", - "16 T0017 Promote online funding TA05 \n", - "17 T0018 Paid targeted ads TA05 \n", - "18 T0019 Generate information pollution TA06 \n", - "19 T0020 Trial content TA06 \n", - "20 T0021 Memes TA06 \n", - "21 T0022 Conspiracy narratives TA06 \n", - "22 T0023 Distort facts TA06 \n", - "23 T0024 Create fake videos and images TA06 \n", - "24 T0025 Leak altered documents TA06 \n", - "25 T0026 Create fake research TA06 \n", - "26 T0027 Adapt existing narratives TA06 \n", - "27 T0028 Create competing narratives TA06 \n", - "28 T0029 Manipulate online polls TA07 \n", - "29 T0030 Backstop personas TA07 \n", - "30 T0031 YouTube TA07 \n", - "31 T0032 Reddit TA07 \n", - "32 T0033 Instagram TA07 \n", - "33 T0034 LinkedIn TA07 \n", - "34 T0035 Pinterest TA07 \n", - "35 T0036 WhatsApp TA07 \n", - "36 T0037 Facebook TA07 \n", - "37 T0038 Twitter TA07 \n", - "38 T0039 Bait legitimate influencers TA08 \n", - "39 T0040 Demand unsurmountable proof TA08 \n", - "40 T0041 Deny involvement TA08 \n", - "41 T0042 Kernel of Truth TA08 \n", - "42 T0043 Use SMS/ WhatsApp/ Chat apps TA08 \n", - "43 T0044 Seed distortions TA08 \n", - "44 T0045 Use fake experts TA08 \n", - "45 T0046 Search Engine Optimization TA08 \n", - "46 T0047 Muzzle social media as a political force TA09 \n", - "47 T0048 Cow online opinion leaders TA09 \n", - "48 T0049 Flooding TA09 \n", - "49 T0050 Cheerleading domestic social media ops TA09 \n", - "50 T0051 Fabricate social media comment TA09 \n", - "51 T0052 Tertiary sites amplify news TA09 \n", - "52 T0053 Twitter trolls amplify and manipulate TA09 \n", - "53 T0054 Twitter bots amplify TA09 \n", - "54 T0055 Use hashtag TA09 \n", - "55 T0056 Dedicated channels disseminate information pol... TA09 \n", - "56 T0057 Organise remote rallies and events TA10 \n", - "57 T0058 Legacy web content TA11 \n", - "58 T0059 Play the long game TA11 \n", - "59 T0060 Continue to amplify TA11 \n", - "60 T0061 Sell merchandising TA10 \n", - "61 T0062 Behaviour changes TA12 \n", - "62 T0063 Message reach TA12 \n", - "63 T0064 Social media engagement TA12 \n", - "\n", - " summary \\\n", - "0 Nimmo's \"4Ds of propaganda\": dismiss, distort,... \n", - "1 Organize citizens around pro-state messaging. ... \n", - "2 Use or adapt existing narrative themes, where ... \n", - "3 Advance competing narratives connected to same... \n", - "4 Recon/research to identify \"the source of powe... \n", - "5 The promotion of beneficial master narratives ... \n", - "6 Create key social engineering assets needed to... \n", - "7 Modern computational propaganda makes use of a... \n", - "8 Stories planted or promoted in computational p... \n", - "9 Cultivate propagandists for a cause, the goals... \n", - "10 Hack or take over legimate accounts to distrib... \n", - "11 Use anonymous social media profiles. Examples ... \n", - "12 Create media assets to support fake organizati... \n", - "13 Generate revenue through online funding campai... \n", - "14 Many incident-based campaigns will create a ha... \n", - "15 Create attention grabbing headlines (outrage, ... \n", - "16 Drive traffic/engagement to funding campaign s... \n", - "17 Create or fund advertisements targeted at spec... \n", - "18 Flood social channels; drive traffic/engagemen... \n", - "19 Iteratively test incident performance (message... \n", - "20 Memes are one of the most important single art... \n", - "21 \"Conspiracy narratives appeal to the human des... \n", - "22 Change, twist, or exaggerate existing facts to... \n", - "23 Create fake videos and/or images by manipulati... \n", - "24 Obtain documents (eg by theft or leak), then a... \n", - "25 Create fake academic research. Example: fake s... \n", - "26 Adapting existing narratives to current operat... \n", - "27 Misinformation promotes an agenda by advancing... \n", - "28 Create fake online polls, or manipulate existi... \n", - "29 Create other assets/dossier/cover/fake relatio... \n", - "30 Use YouTube as a narrative dissemination channel \n", - "31 Use Reddit as a narrative dissemination channel \n", - "32 Use Instagram as a narrative dissemination cha... \n", - "33 Use LinkedIn as a narrative dissemination channel \n", - "34 Use Pinterest as a narrative dissemination cha... \n", - "35 Use WhatsApp as a narrative dissemination channel \n", - "36 Use Facebook as a narrative dissemination channel \n", - "37 Use Twitter as a narrative dissemination channel \n", - "38 Credibility in a social media environment is o... \n", - "39 Campaigns often leverage tactical and informat... \n", - "40 Without \"smoking gun\" proof (and even with pro... \n", - "41 Wrap lies or altered context/facts around trut... \n", - "42 Direct messaging via encypted app is an increa... \n", - "43 Try a wide variety of messages in the early ho... \n", - "44 Use the fake experts that were set up in T0009... \n", - "45 Manipulate content engagement metrics (ie: Red... \n", - "46 Use political influence or the power of state ... \n", - "47 Intimidate, coerce, threaten critics/dissident... \n", - "48 Flooding and/or mobbing social media channels ... \n", - "49 Deploy state-coordinated social media commente... \n", - "50 Use government-paid social media commenters, a... \n", - "51 Create content/news/opinion web-sites to cross... \n", - "52 Use trolls to amplify narratives and/or manipu... \n", - "53 Use bots to amplify narratives above algorithm... \n", - "54 Use a dedicated hashtag for the incident - eit... \n", - "55 Output information pollution (e.g. articles on... \n", - "56 Coordinate and promote real-world events acros... \n", - "57 Make incident content visible for a long time,... \n", - "58 Play the long game can mean a couple of things... \n", - "59 continue narrative or message amplification af... \n", - "60 Sell hats, t-shirts, flags and other branded c... \n", - "61 Monitor and evaluate behaviour changes from mi... \n", - "62 Monitor and evaluate message reach in misinfor... \n", - "63 Monitor and evaluate social media engagement i... \n", - "\n", - " longname \n", - "0 T0001 - 5Ds (dismiss, distort, distract, disma... \n", - "1 T0002 - Facilitate State Propaganda \n", - "2 T0003 - Leverage Existing Narratives \n", - "3 T0004 - Competing Narratives \n", - "4 T0005 - Center of Gravity Analysis \n", - "5 T0006 - Create Master Narratives \n", - "6 T0007 - Create fake Social Media Profiles / Pa... \n", - "7 T0008 - Create fake or imposter news sites \n", - "8 T0009 - Create fake experts \n", - "9 T0010 - Cultivate ignorant agents \n", - "10 T0011 - Hijack legitimate account \n", - "11 T0012 - Use concealment \n", - "12 T0013 - Create fake websites \n", - "13 T0014 - Create funding campaigns \n", - "14 T0015 - Create hashtag \n", - "15 T0016 - Clickbait \n", - "16 T0017 - Promote online funding \n", - "17 T0018 - Paid targeted ads \n", - "18 T0019 - Generate information pollution \n", - "19 T0020 - Trial content \n", - "20 T0021 - Memes \n", - "21 T0022 - Conspiracy narratives \n", - "22 T0023 - Distort facts \n", - "23 T0024 - Create fake videos and images \n", - "24 T0025 - Leak altered documents \n", - "25 T0026 - Create fake research \n", - "26 T0027 - Adapt existing narratives \n", - "27 T0028 - Create competing narratives \n", - "28 T0029 - Manipulate online polls \n", - "29 T0030 - Backstop personas \n", - "30 T0031 - YouTube \n", - "31 T0032 - Reddit \n", - "32 T0033 - Instagram \n", - "33 T0034 - LinkedIn \n", - "34 T0035 - Pinterest \n", - "35 T0036 - WhatsApp \n", - "36 T0037 - Facebook \n", - "37 T0038 - Twitter \n", - "38 T0039 - Bait legitimate influencers \n", - "39 T0040 - Demand unsurmountable proof \n", - "40 T0041 - Deny involvement \n", - "41 T0042 - Kernel of Truth \n", - "42 T0043 - Use SMS/ WhatsApp/ Chat apps \n", - "43 T0044 - Seed distortions \n", - "44 T0045 - Use fake experts \n", - "45 T0046 - Search Engine Optimization \n", - "46 T0047 - Muzzle social media as a political force \n", - "47 T0048 - Cow online opinion leaders \n", - "48 T0049 - Flooding \n", - "49 T0050 - Cheerleading domestic social media ops \n", - "50 T0051 - Fabricate social media comment \n", - "51 T0052 - Tertiary sites amplify news \n", - "52 T0053 - Twitter trolls amplify and manipulate \n", - "53 T0054 - Twitter bots amplify \n", - "54 T0055 - Use hashtag \n", - "55 T0056 - Dedicated channels disseminate informa... \n", - "56 T0057 - Organise remote rallies and events \n", - "57 T0058 - Legacy web content \n", - "58 T0059 - Play the long game \n", - "59 T0060 - Continue to amplify \n", - "60 T0061 - Sell merchandising \n", - "61 T0062 - Behaviour changes \n", - "62 T0063 - Message reach \n", - "63 T0064 - Social media engagement " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dii = vars(amitt)['df_techniques']\n", - "dii" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[['TA01',\n", - " 'TA02',\n", - " 'TA03',\n", - " 'TA04',\n", - " 'TA05',\n", - " 'TA06',\n", - " 'TA07',\n", - " 'TA08',\n", - " 'TA09',\n", - " 'TA10',\n", - " 'TA11',\n", - " 'TA12'],\n", - " ['T0001',\n", - " 'T0005',\n", - " 'T0007',\n", - " 'T0010',\n", - " 'T0016',\n", - " 'T0019',\n", - " 'T0029',\n", - " 'T0039',\n", - " 'T0047',\n", - " 'T0057',\n", - " 'T0058',\n", - " 'T0062'],\n", - " ['T0002',\n", - " 'T0006',\n", - " 'T0008',\n", - " 'T0011',\n", - " 'T0017',\n", - " 'T0020',\n", - " 'T0030',\n", - " 'T0040',\n", - " 'T0048',\n", - " 'T0061',\n", - " 'T0059',\n", - " 'T0063'],\n", - " ['T0003',\n", - " '',\n", - " 'T0009',\n", - " 'T0012',\n", - " 'T0018',\n", - " 'T0021',\n", - " 'T0031',\n", - " 'T0041',\n", - " 'T0049',\n", - " '',\n", - " 'T0060',\n", - " 'T0064'],\n", - " ['T0004',\n", - " '',\n", - " '',\n", - " 'T0013',\n", - " '',\n", - " 'T0022',\n", - " 'T0032',\n", - " 'T0042',\n", - " 'T0050',\n", - " '',\n", - " '',\n", - " ''],\n", - " ['', '', '', 'T0014', '', 'T0023', 'T0033', 'T0043', 'T0051', '', '', ''],\n", - " ['', '', '', 'T0015', '', 'T0024', 'T0034', 'T0044', 'T0052', '', '', ''],\n", - " ['', '', '', '', '', 'T0025', 'T0035', 'T0045', 'T0053', '', '', ''],\n", - " ['', '', '', '', '', 'T0026', 'T0036', 'T0046', 'T0054', '', '', ''],\n", - " ['', '', '', '', '', 'T0027', 'T0037', '', 'T0055', '', '', ''],\n", - " ['', '', '', '', '', 'T0028', 'T0038', '', 'T0056', '', '', '']]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Generate arrays used to create D3 grids\n", - "dflists = dii.groupby('tactic_id')['amitt_id'].apply(list).reset_index()\n", - "dfidgrid = pd.DataFrame(dflists['amitt_id'].to_list())\n", - "dfgrid = pd.concat([dflists[['tactic_id']], dfidgrid], axis=1).fillna('')\n", - "gridarray = [dfgrid[col].to_list() for col in dfgrid.columns]\n", - "gridarray" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'IT00000001': 'buy FB targeted ads',\n", - " 'IT00000010': 'Targeted FB paid ads',\n", - " 'IT00000057': 'Targeted FB paid ads',\n", - " 'IT00000002': 'Promote \"funding\" campaign',\n", - " 'IT00000003': 'create web-site - information pollution',\n", - " 'IT00000014': 'RT & Sputnik generate information pollution',\n", - " 'IT00000031': 'RT & Sputnik generate information pollution (report an unreported false story/event)',\n", - " 'IT00000037': 'RT & Sputnik generate information pollution ',\n", - " 'IT00000061': 'RT & Sputnik generate information pollution',\n", - " 'IT00000082': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000094': 'RT & Sputnik generate information pollution',\n", - " 'IT00000120': 'RT & Sputnik generate information pollution',\n", - " 'IT00000137': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000146': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000156': 'RT & Sputnik generate information pollution',\n", - " 'IT00000180': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000004': 'create web-site - information pollution',\n", - " 'IT00000015': 'RT & Sputnik generate information pollution',\n", - " 'IT00000032': 'RT & Sputnik generate information pollution (report an unreported false story/event)',\n", - " 'IT00000038': 'RT & Sputnik generate information pollution ',\n", - " 'IT00000062': 'RT & Sputnik generate information pollution',\n", - " 'IT00000083': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000095': 'RT & Sputnik generate information pollution',\n", - " 'IT00000121': 'RT & Sputnik generate information pollution',\n", - " 'IT00000138': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000147': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000157': 'RT & Sputnik generate information pollution',\n", - " 'IT00000162': 'State-run media seeds foreign influence environment',\n", - " 'IT00000181': 'RT & Sputnik generate information pollution (synthetic media)',\n", - " 'IT00000005': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000022': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000043': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000071': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000085': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000103': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000125': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000140': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000149': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000161': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000172': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000183': 'SEO optimisation/manipulation (\"key words\")',\n", - " 'IT00000006': 'legacy web content',\n", - " 'IT00000007': 'hard to remove content and/or campaign/exploit TOS',\n", - " 'IT00000176': 'legacy web content',\n", - " 'IT00000008': 'Twitter bots amplify & manipulate',\n", - " 'IT00000034': 'Twitter bots amplify & manipulate',\n", - " 'IT00000041': 'Twitter bots amplify & manipulate',\n", - " 'IT00000055': 'Twitter bots amplify & manipulate',\n", - " 'IT00000076': 'Twitter bots amplify & manipulate',\n", - " 'IT00000079': 'Twitter bots amplify & manipulate',\n", - " 'IT00000090': 'Twitter bots amplify & manipulate',\n", - " 'IT00000115': 'Twitter bots amplify & manipulate',\n", - " 'IT00000118': 'Twitter bots amplify & manipulate',\n", - " 'IT00000131': 'Twitter bots amplify & manipulate',\n", - " 'IT00000134': 'Twitter bots amplify & manipulate',\n", - " 'IT00000144': 'Twitter bots amplify & manipulate',\n", - " 'IT00000154': 'Twitter bots amplify & manipulate',\n", - " 'IT00000169': 'Twitter bots amplify & manipulate',\n", - " 'IT00000177': 'Twitter bots amplify & manipulate',\n", - " 'IT00000009': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000035': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000042': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000056': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000077': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000080': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000091': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000119': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000132': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000135': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000145': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000155': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000170': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000178': 'Twitter trolls amplify & manipulate',\n", - " 'IT00000011': 'Fake FB groups + dark content',\n", - " 'IT00000029': 'Fake twitter profiles to amplify',\n", - " 'IT00000039': 'FB pages',\n", - " 'IT00000045': 'FB pages/groups/profiles',\n", - " 'IT00000058': 'Fake FB groups + dark content',\n", - " 'IT00000078': 'Fake FB groups/pages/profiles + dark content',\n", - " 'IT00000092': 'Fake FB groups/pages/profiles ',\n", - " 'IT00000171': 'Fake FB groups/pages/profiles + dark content (non-paid advertising)',\n", - " 'IT00000012': 'Digital to physical \"organize+promote\" rallies & events?',\n", - " 'IT00000059': 'Digital to physical \"organize+promote\" rallies & events',\n", - " 'IT00000093': 'Digital to physical \"organize+promote\" rallies & events?',\n", - " 'IT00000164': 'Events coordinated and promoted across media platforms',\n", - " 'IT00000166': 'Extend digital the physical space… gatherings ie: support for Meng outside courthouse',\n", - " 'IT00000013': 'manipulate social media \"online polls\"? ',\n", - " 'IT00000060': 'manipulate social media \"online polls\"? ',\n", - " 'IT00000016': 'cultivate, manipulate, exploit useful idiots',\n", - " 'IT00000033': 'cultivate, manipulate, exploit useful idiots (in the case Paul Manafort)',\n", - " 'IT00000044': 'cultivate, manipulate, exploit useful idiots (Alex Jones... drives conspiracy theories; false flags, crisis actors)',\n", - " 'IT00000063': 'cultivate, manipulate, exploit useful idiots',\n", - " 'IT00000084': 'cultivate, manipulate, exploit useful idiots',\n", - " 'IT00000104': 'cultivate, manipulate, exploit useful idiots (Alex Jones... drives conspiracy theories)',\n", - " 'IT00000126': 'cultivate, manipulate, exploit useful idiots (Alex Jones... drives conspiracy theories)',\n", - " 'IT00000139': 'cultivate, manipulate, exploit useful idiots (Roger Waters; Venessa Beeley...)',\n", - " 'IT00000148': 'cultivate, manipulate, exploit useful idiots (Roger Waters)',\n", - " 'IT00000158': 'cultivate, manipulate, exploit useful idiots',\n", - " 'IT00000182': 'cultivate, manipulate, exploit useful idiots ',\n", - " 'IT00000017': 'YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?',\n", - " 'IT00000046': 'YouTube; Reddit',\n", - " 'IT00000064': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000087': 'YouTube; Reddit; ',\n", - " 'IT00000096': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000122': 'YouTube; Reddit',\n", - " 'IT00000142': 'YouTube; Reddit; ',\n", - " 'IT00000151': 'YouTube; Reddit; ',\n", - " 'IT00000159': 'YouTube; Reddit',\n", - " 'IT00000185': 'YouTube; Reddit; ',\n", - " 'IT00000018': 'YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?',\n", - " 'IT00000047': 'YouTube; Reddit',\n", - " 'IT00000065': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000088': 'YouTube; Reddit; ',\n", - " 'IT00000097': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000123': 'YouTube; Reddit',\n", - " 'IT00000143': 'YouTube; Reddit; ',\n", - " 'IT00000152': 'YouTube; Reddit; ',\n", - " 'IT00000160': 'YouTube; Reddit',\n", - " 'IT00000186': 'YouTube; Reddit; ',\n", - " 'IT00000019': 'YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?',\n", - " 'IT00000067': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000099': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000020': 'YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?',\n", - " 'IT00000068': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000100': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000021': 'YouTube; Reddit; LinkedIn; Pinterest; WhatsApp?',\n", - " 'IT00000069': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000101': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000023': 'Memes... anti-immigration; euroskepticism; fear, outrage, conspiracy narratives',\n", - " 'IT00000072': 'Memes... anti-immigration; euroskepticism; fear, outrage, conspiracy narratives',\n", - " 'IT00000117': 'memes',\n", - " 'IT00000173': 'Memes... anti-Isreal/USA/West, conspiracy narratives',\n", - " 'IT00000024': 'Backstop personas',\n", - " 'IT00000074': 'Backstop personas',\n", - " 'IT00000025': 'Use SMS/text messages',\n", - " 'IT00000026': 'Fake video/images',\n", - " 'IT00000116': 'photoshopped/fake images',\n", - " 'IT00000027': 'Create and use hashtag',\n", - " 'IT00000028': 'Create and use hashtag',\n", - " 'IT00000030': 'bait journalists/media/politicians',\n", - " 'IT00000049': 'journalist/media baiting',\n", - " 'IT00000053': 'journalist/media baiting',\n", - " 'IT00000036': 'Using \"expert\"',\n", - " 'IT00000040': 'News circulated/amplifed by tertiary sites (Russia Insider, The Duran, Geopolitica.ru, Mint Press News, Oriental Review, globalresearch.ca)',\n", - " 'IT00000086': 'News circulated/amplifed by tertiary sites (Russia Insider, The Duran, Geopolitica.ru, Mint Press News, Oriental Review, globalresearch.ca)',\n", - " 'IT00000141': 'News circulated/amplifed by tertiary sites (Russia Insider, The Duran, Geopolitica.ru, Mint Press News, Oriental Review, globalresearch.ca)',\n", - " 'IT00000150': 'News circulated/amplifed by tertiary sites (Mint Press News, globalresearch.ca)',\n", - " 'IT00000184': 'News circulated/amplifed by tertiary sites (Russia Insider, The Duran, Geopolitica.ru, Mint Press News, Oriental Review, globalresearch.ca)',\n", - " 'IT00000048': '4Chan/8Chan - trial content',\n", - " 'IT00000070': '4Chan/8Chan - trial content',\n", - " 'IT00000102': '4Chan/8Chan - trial content',\n", - " 'IT00000124': '4Chan/8Chan - trial content',\n", - " 'IT00000050': \"Forge ('release' altered hacked documents)\",\n", - " 'IT00000051': 'hack/leak/manipulate/distort',\n", - " 'IT00000054': 'hack/leak/manipulate/distort',\n", - " 'IT00000075': 'hack/leak/manipulate/distort',\n", - " 'IT00000153': 'hack/leak/manipulate/distort',\n", - " 'IT00000052': 'Circulate to media via DM, then release publicly',\n", - " 'IT00000066': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000098': 'YouTube; Reddit; (Instagram, LinkedIn; Pinterest; WhatsApp?)',\n", - " 'IT00000073': 'Click-bait (economic actors) fake news sites (ie: Denver Guardian; Macedonian teens)',\n", - " 'IT00000081': \"4 D's (dismiss, distort, distract, dismay...Official channels ie: Embassies & Defence Ministry; TASS\",\n", - " 'IT00000128': \"4 D's (dismiss, distort, distract, dismay...Official channels ie: Embassies & Defence Ministry; TASS\",\n", - " 'IT00000129': 'Russian FSB security service blamed Ukraine for sparking the clashes, saying their \"irrefutable\" evidence would \"soon be made public',\n", - " 'IT00000136': \"4 D's (dismiss, distort, distract, dismay...Official channels ie: Embassies & Defence Ministry; TASS\",\n", - " 'IT00000167': 'China also plays victim, innocence, plays by rules, misunderstood narrative',\n", - " 'IT00000168': 'Chinese ambassador Lu Shaye accused Canada of applying a double standard, and has decried what he sees as “Western egotism and white supremacy” in the treatment of detained Huawei executive Meng Wanzhou.” ',\n", - " 'IT00000179': \"4 D's (dismiss, distort, distract, dismay...Official channels ie: Putin himself; Embassies & Sports Ministry; TASS\",\n", - " 'IT00000089': 'Demand insurmountable proof',\n", - " 'IT00000133': 'Demand insurmountable proof',\n", - " 'IT00000105': '2,000,000 people (est.) part of state run/sponsored astroturfing',\n", - " 'IT00000112': 'flood the Facebook pages of Taiwanese politicians and news agencies with a pro-PRC message',\n", - " 'IT00000113': 'Democratic Progressive Party (DPP), attracted nearly 40,000 Facebook comments in just eight hours.',\n", - " 'IT00000106': 'fabricated social media comment',\n", - " 'IT00000107': 'domestic social media influence operations focus primarily on “cheerleading” or presenting or furthering a positive narrative about the Chinese state',\n", - " 'IT00000165': 'Extend digital the physical space… gatherings ie: support for Meng outside courthouse',\n", - " 'IT00000108': 'cow online opinion leaders into submission, muzzling social media as a political force',\n", - " 'IT00000109': 'cow online opinion leaders into submission, muzzling social media as a political force',\n", - " 'IT00000110': 'facilitate state propaganda and defuse crises',\n", - " 'IT00000111': 'Netizens from one of the largest discussion forums in China, known as Diba, coordinated to overcome China’s Great Firewall',\n", - " 'IT00000114': '“hack” of Qatar’s official news agency',\n", - " 'IT00000127': 'Promote fake “experts” with impressive (and scary) titles',\n", - " 'IT00000130': '(Distort) Kremlin-controlled RT cited Russian Minister of Foreign Affairs Sergei Lavrov suggesting that Ukraine deliberately provoked Russia in hopes of gaining additional support from the United States and Europe.',\n", - " 'IT00000163': 'Distorted, saccharine “news” about the Chinese State and Party',\n", - " 'IT00000174': 'Memes... anti-Isreal/USA/West, conspiracy narratives',\n", - " 'IT00000175': 'Fake news/synthetic web-sites'}" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "it.index = it.amitt_id\n", - "it[['name']].transpose().to_dict('records')[0]" - ] - }, - { - "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 -} diff --git a/CODE/.ipynb_checkpoints/AMITT_generate_github_files-checkpoint.ipynb b/CODE/.ipynb_checkpoints/AMITT_generate_github_files-checkpoint.ipynb deleted file mode 100644 index 44d2ab9..0000000 --- a/CODE/.ipynb_checkpoints/AMITT_generate_github_files-checkpoint.ipynb +++ /dev/null @@ -1,608 +0,0 @@ -{ - "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": 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", - "Temp: objecttype phase\n", - "updated ../phases_index.md\n", - "Temp: objecttype tactic\n", - "updated ../tactics_index.md\n", - "Temp: objecttype technique\n", - "updated ../techniques_index.md\n", - "Temp: objecttype task\n", - "updated ../tasks_index.md\n", - "Temp: objecttype incident\n", - "updated ../incidents_index.md\n", - "Temp: objecttype counter\n", - "updated ../counters_index.md\n", - "Temp: objecttype metatechnique\n", - "updated ../metatechniques_index.md\n", - "Temp: objecttype actortype\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": 2, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idnamesummarysector_idsframework_idslongname
0A001data scientistPerson who can wrangle data, implement machine...S001, S002, S003, S004, S005, S006, S007, S008...FW01, FW02A001 - data scientist
1A002targetPerson being targeted by disinformation campaignS001, S002, S003, S004, S005, S006, S007, S008...FW02A002 - target
2A003trusted authorityInfluencerS001, S002, S003, S004, S005, S006, S007, S008...FW01, FW02A003 - trusted authority
3A004activistS002FW02A004 - activist
4A005community groupS002FW02A005 - community group
5A006educatorS002FW02A006 - educator
6A007factcheckerSomeone with the skills to verify whether info...S002FW02A007 - factchecker
7A008libraryS002FW02A008 - library
8A009NGOS002FW02A009 - NGO
9A010religious organisationS002FW02A010 - religious organisation
10A011schoolS002FW02A011 - school
11A012account ownerAnyone who owns an account onlineS006FW01\\nFW02A012 - account owner
12A013content creatorS006FW01\\nFW02A013 - content creator
13A014elvesS006FW02A014 - elves
14A015general publicS006FW02A015 - general public
15A016influencerS006FW01\\nFW02A016 - influencer
16A017coordinating bodyFor example the DHSS003FW02A017 - coordinating body
17A018governmentGovernment agenciesS003FW01\\nFW02A018 - government
18A019militaryS003FW02A019 - military
19A020policy makerS003FW02A020 - policy maker
20A021media organisationS010FW01\\nFW02A021 - media organisation
21A022companyS009FW02A022 - company
22A023adtech providerS008FW02A023 - adtech provider
23A024developerS008FW02A024 - developer
24A025funding_site_adminFunding site adminS008FW02A025 - funding_site_admin
25A026games designerS008FW01, FW02A026 - games designer
26A027information securityS008FW02A027 - information security
27A028platform administratorS008FW02A028 - platform administrator
28A029server admininistratorS008FW02A029 - server admininistrator
29A030platformsS007FW02A030 - platforms
30A031social media platform adminstratorPerson with the authority to make changes to a...S007FW02A031 - social media platform adminstrator
31A032social media platform outreachS007FW02A032 - social media platform outreach
32A033social media platform ownerPerson with authority to make changes to a soc...S007FW02A033 - social media platform owner
\n", - "
" - ], - "text/plain": [ - " amitt_id name \\\n", - "0 A001 data scientist \n", - "1 A002 target \n", - "2 A003 trusted authority \n", - "3 A004 activist \n", - "4 A005 community group \n", - "5 A006 educator \n", - "6 A007 factchecker \n", - "7 A008 library \n", - "8 A009 NGO \n", - "9 A010 religious organisation \n", - "10 A011 school \n", - "11 A012 account owner \n", - "12 A013 content creator \n", - "13 A014 elves \n", - "14 A015 general public \n", - "15 A016 influencer \n", - "16 A017 coordinating body \n", - "17 A018 government \n", - "18 A019 military \n", - "19 A020 policy maker \n", - "20 A021 media organisation \n", - "21 A022 company \n", - "22 A023 adtech provider \n", - "23 A024 developer \n", - "24 A025 funding_site_admin \n", - "25 A026 games designer \n", - "26 A027 information security \n", - "27 A028 platform administrator \n", - "28 A029 server admininistrator \n", - "29 A030 platforms \n", - "30 A031 social media platform adminstrator \n", - "31 A032 social media platform outreach \n", - "32 A033 social media platform owner \n", - "\n", - " summary \\\n", - "0 Person who can wrangle data, implement machine... \n", - "1 Person being targeted by disinformation campaign \n", - "2 Influencer \n", - "3 \n", - "4 \n", - "5 \n", - "6 Someone with the skills to verify whether info... \n", - "7 \n", - "8 \n", - "9 \n", - "10 \n", - "11 Anyone who owns an account online \n", - "12 \n", - "13 \n", - "14 \n", - "15 \n", - "16 For example the DHS \n", - "17 Government agencies \n", - "18 \n", - "19 \n", - "20 \n", - "21 \n", - "22 \n", - "23 \n", - "24 Funding site admin \n", - "25 \n", - "26 \n", - "27 \n", - "28 \n", - "29 \n", - "30 Person with the authority to make changes to a... \n", - "31 \n", - "32 Person with authority to make changes to a soc... \n", - "\n", - " sector_ids framework_ids \\\n", - "0 S001, S002, S003, S004, S005, S006, S007, S008... FW01, FW02 \n", - "1 S001, S002, S003, S004, S005, S006, S007, S008... FW02 \n", - "2 S001, S002, S003, S004, S005, S006, S007, S008... FW01, FW02 \n", - "3 S002 FW02 \n", - "4 S002 FW02 \n", - "5 S002 FW02 \n", - "6 S002 FW02 \n", - "7 S002 FW02 \n", - "8 S002 FW02 \n", - "9 S002 FW02 \n", - "10 S002 FW02 \n", - "11 S006 FW01\\nFW02 \n", - "12 S006 FW01\\nFW02 \n", - "13 S006 FW02 \n", - "14 S006 FW02 \n", - "15 S006 FW01\\nFW02 \n", - "16 S003 FW02 \n", - "17 S003 FW01\\nFW02 \n", - "18 S003 FW02 \n", - "19 S003 FW02 \n", - "20 S010 FW01\\nFW02 \n", - "21 S009 FW02 \n", - "22 S008 FW02 \n", - "23 S008 FW02 \n", - "24 S008 FW02 \n", - "25 S008 FW01, FW02 \n", - "26 S008 FW02 \n", - "27 S008 FW02 \n", - "28 S008 FW02 \n", - "29 S007 FW02 \n", - "30 S007 FW02 \n", - "31 S007 FW02 \n", - "32 S007 FW02 \n", - "\n", - " longname \n", - "0 A001 - data scientist \n", - "1 A002 - target \n", - "2 A003 - trusted authority \n", - "3 A004 - activist \n", - "4 A005 - community group \n", - "5 A006 - educator \n", - "6 A007 - factchecker \n", - "7 A008 - library \n", - "8 A009 - NGO \n", - "9 A010 - religious organisation \n", - "10 A011 - school \n", - "11 A012 - account owner \n", - "12 A013 - content creator \n", - "13 A014 - elves \n", - "14 A015 - general public \n", - "15 A016 - influencer \n", - "16 A017 - coordinating body \n", - "17 A018 - government \n", - "18 A019 - military \n", - "19 A020 - policy maker \n", - "20 A021 - media organisation \n", - "21 A022 - company \n", - "22 A023 - adtech provider \n", - "23 A024 - developer \n", - "24 A025 - funding_site_admin \n", - "25 A026 - games designer \n", - "26 A027 - information security \n", - "27 A028 - platform administrator \n", - "28 A029 - server admininistrator \n", - "29 A030 - platforms \n", - "30 A031 - social media platform adminstrator \n", - "31 A032 - social media platform outreach \n", - "32 A033 - social media platform owner " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "amitt.df_actortypes" - ] - }, - { - "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 -} diff --git a/CODE/.ipynb_checkpoints/DISARM_code_testbed-checkpoint.ipynb b/CODE/.ipynb_checkpoints/DISARM_code_testbed-checkpoint.ipynb deleted file mode 100644 index 22f267a..0000000 --- a/CODE/.ipynb_checkpoints/DISARM_code_testbed-checkpoint.ipynb +++ /dev/null @@ -1,425 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Test area for DISARM code" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_keys(['df_phases', 'df_frameworks', 'df_techniques', 'df_tasks', 'df_incidents', 'df_counters', 'df_detections', 'df_actortypes', 'df_resources', 'df_responsetypes', 'df_metatechniques', 'it', 'df_tactics', 'df_techniques_per_tactic', 'df_counters_per_tactic', 'phases', 'tactics', 'techniques', 'counters', 'metatechniques', 'actortypes', 'resources', 'num_tactics', 'cross_counterid_techniqueid', 'cross_counterid_resourceid', 'cross_counterid_actortypeid'])\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
amitt_idtechnique_id
0C00006T0007
0C00006T0015
0C00006T0018
0C00006T0043
0C00006T0053
.........
135C00219T0025
136C00220
137C00221
138C00222
139C00223
\n", - "

898 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " amitt_id technique_id\n", - "0 C00006 T0007\n", - "0 C00006 T0015\n", - "0 C00006 T0018\n", - "0 C00006 T0043\n", - "0 C00006 T0053\n", - ".. ... ...\n", - "135 C00219 T0025\n", - "136 C00220 \n", - "137 C00221 \n", - "138 C00222 \n", - "139 C00223 \n", - "\n", - "[898 rows x 2 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas as pd\n", - "import sqlite3 as sql\n", - "from generate_DISARM_pages import Disarm\n", - "\n", - "\n", - "# Generate AMITT datasets\n", - "disarm = Disarm()\n", - "\n", - "# Check which amitt variables we can see from here\n", - "print('{}'.format(vars(disarm).keys()))\n", - "vars(disarm)['cross_counterid_techniqueid']" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idactor_id
0C00006A033
1C00008A007
2C00009A016
2C00009A006
3C00010A020
.........
135C00219
136C00220
137C00221
138C00222
139C00223
\n", - "

166 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " id actor_id\n", - "0 C00006 A033\n", - "1 C00008 A007\n", - "2 C00009 A016\n", - "2 C00009 A006\n", - "3 C00010 A020\n", - ".. ... ...\n", - "135 C00219 \n", - "136 C00220 \n", - "137 C00221 \n", - "138 C00222 \n", - "139 C00223 \n", - "\n", - "[166 rows x 2 columns]" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "disarm.cross_counterid_actorid" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtechnique_idWeight
1C00008TA011
1C00008TA061
1C00008TA081
1C00008T00061
1C00008T00091
............
134C00216T00181
134C00216T00571
135C00219T00241
135C00219T00261
135C00219T00251
\n", - "

717 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " id technique_id Weight\n", - "1 C00008 TA01 1\n", - "1 C00008 TA06 1\n", - "1 C00008 TA08 1\n", - "1 C00008 T0006 1\n", - "1 C00008 T0009 1\n", - ".. ... ... ...\n", - "134 C00216 T0018 1\n", - "134 C00216 T0057 1\n", - "135 C00219 T0024 1\n", - "135 C00219 T0026 1\n", - "135 C00219 T0025 1\n", - "\n", - "[717 rows x 3 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ct = disarm.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": [] - } - ], - "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 -} diff --git a/CODE/.ipynb_checkpoints/check_DISARM_excel_changes-checkpoint.ipynb b/CODE/.ipynb_checkpoints/check_DISARM_excel_changes-checkpoint.ipynb deleted file mode 100644 index 80d4f87..0000000 --- a/CODE/.ipynb_checkpoints/check_DISARM_excel_changes-checkpoint.ipynb +++ /dev/null @@ -1,110 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# fix the problem with excelfile changes\n", - "\n", - "Background: DISARM's master dataset is in an excelfile. Changes in this dont' show up in github, so it's difficult to tell what's changed between versions. Code below checks for those differences - use this repeatedly until versions align. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import sqlite3 as sql\n", - "from generate_DISARM_pages import Disarm\n", - "import pandas as pd\n", - "import numpy as np\n", - "import os\n", - "from sklearn.feature_extraction.text import CountVectorizer\n", - "pd.set_option('display.max_rows', 1000)\n", - "pd.set_option('display.max_colwidth', -1)\n", - "\n", - "newfile = '../DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER.xlsx'\n", - "oldfile = '../DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER_previous_version.xlsx'\n", - "\n", - "# Load dfs from file\n", - "newdfs = {}\n", - "newxlsx = pd.ExcelFile(newfile)\n", - "for sheetname in newxlsx.sheet_names:\n", - " newdfs[sheetname] = newxlsx.parse(sheetname)\n", - " newdfs[sheetname].fillna('', inplace=True)\n", - "\n", - "olddfs = {}\n", - "oldxlsx = pd.ExcelFile(oldfile)\n", - "for sheetname in oldxlsx.sheet_names:\n", - " olddfs[sheetname] = oldxlsx.parse(sheetname)\n", - " olddfs[sheetname].fillna('', inplace=True)\n", - "\n", - "addedtables = newdfs.keys() - olddfs.keys()\n", - "losttables = olddfs.keys() - newdfs.keys()\n", - "if len(addedtables) + len(losttables) > 0:\n", - " print('Table changes: new tables are {}, lost tables are {}'.format(addedtables, losttables))\n", - "\n", - "def investigate_table(table):\n", - " print('\\n\\nTable {} is changed'.format(table))\n", - " # Column headings\n", - " coldiffs = set(newdfs[table].columns).symmetric_difference(set(olddfs[table].columns))\n", - " if len(coldiffs) > 0:\n", - " print('column differences: {}'.format(coldiffs))\n", - " # length\n", - " if len(newdfs[table]) != len(olddfs[table]):\n", - " print('length differences: new {} old {}'.format(len(newdfs[table]), len(olddfs[table])))\n", - "\n", - " # column by column\n", - " for column in newdfs[table].columns:\n", - " coldiffs = newdfs[table][column] != olddfs[table][column]\n", - " if len(newdfs[table][coldiffs]) > 0:\n", - " print('Differences in column {}'.format(column))\n", - " return\n", - "\n", - "for table in newdfs.keys():\n", - " if newdfs[table].equals(olddfs[table]) == False:\n", - " investigate_table(table)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Look at individual table differences\n", - "table = 'countermeasures'\n", - "column = 'summary'\n", - "coldiffs = newdfs[table][column] != olddfs[table][column]\n", - "diffcols = pd.DataFrame()\n", - "diffcols['amitt_id'] = newdfs[table][coldiffs]['amitt_id']\n", - "diffcols['new'] = newdfs[table][coldiffs][column]\n", - "diffcols['old'] = olddfs[table][coldiffs][column]\n", - "diffcols[diffcols['old'] != '']" - ] - } - ], - "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 -} diff --git a/CODE/.ipynb_checkpoints/check_new_table_updates-checkpoint.ipynb b/CODE/.ipynb_checkpoints/check_new_table_updates-checkpoint.ipynb index 10fbac0..ce56c98 100644 --- a/CODE/.ipynb_checkpoints/check_new_table_updates-checkpoint.ipynb +++ b/CODE/.ipynb_checkpoints/check_new_table_updates-checkpoint.ipynb @@ -9,291 +9,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0DISARM PhaseDISARM TacticDISARM TechniqueDISARM SubtechniqueDescriptionDISARM IDFeedback from EEASAction to DoAction TakenWhere did it come from?Where from more info
01PlanNaNNaNNaNEnvision the desired outcome. Lay out effectiv...P01NaNNaNNaNAMITTNaN
136PrepareNaNNaNNaNActivities conducted before execution to impro...P02NaNNaNNaNNaNNaN
2126ExecuteNaNNaNNaNRun the action, from initial exposure to wrap-...P03NaNNaNNaNNaNNaN
3263AssessNaNNaNNaNAssess effectiveness of action, for use in fut...P04NaNNaNNaNNaNNaN
47PlanPlan ObjectivesDismissDiscredit Credible SourcesPlan to delegitimize the media landscape and d...ST0001NaNNaNNaNAMITTT0067 Plan to Discredit Credible Sources
.......................................
272184ExecuteMaximize ExposureNaNNaNMaximize exposure of the target audience to in...TA12NaNNaNNaNNaNNaN
273204ExecuteDrive Online HarmsNaNNaNActions taken by an influence operation to har...TA13NaNNaNNaNNaNNaN
274221ExecuteDrive Offline ActivityNaNNaNMove incident/campaign from online to offline....TA14NaNNaNNaNNaNNaN
275235ExecutePersist in the Information SpaceNaNNaNPersist in the Information Space refers to tak...TA15NaNNaNNaNNaNNaN
276264AssessAssess EffectivenessNaNNaNNaNTA16NaNNaNNaNNaNNaN
\n", - "

277 rows × 12 columns

\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 DISARM Phase DISARM Tactic \\\n", - "0 1 Plan NaN \n", - "1 36 Prepare NaN \n", - "2 126 Execute NaN \n", - "3 263 Assess NaN \n", - "4 7 Plan Plan Objectives \n", - ".. ... ... ... \n", - "272 184 Execute Maximize Exposure \n", - "273 204 Execute Drive Online Harms \n", - "274 221 Execute Drive Offline Activity \n", - "275 235 Execute Persist in the Information Space \n", - "276 264 Assess Assess Effectiveness \n", - "\n", - " DISARM Technique DISARM Subtechnique \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 Dismiss Discredit Credible Sources \n", - ".. ... ... \n", - "272 NaN NaN \n", - "273 NaN NaN \n", - "274 NaN NaN \n", - "275 NaN NaN \n", - "276 NaN NaN \n", - "\n", - " Description DISARM ID \\\n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 \n", - "4 Plan to delegitimize the media landscape and d... ST0001 \n", - ".. ... ... \n", - "272 Maximize exposure of the target audience to in... TA12 \n", - "273 Actions taken by an influence operation to har... TA13 \n", - "274 Move incident/campaign from online to offline.... TA14 \n", - "275 Persist in the Information Space refers to tak... TA15 \n", - "276 NaN TA16 \n", - "\n", - " Feedback from EEAS Action to Do Action Taken Where did it come from? \\\n", - "0 NaN NaN NaN AMITT \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN AMITT \n", - ".. ... ... ... ... \n", - "272 NaN NaN NaN NaN \n", - "273 NaN NaN NaN NaN \n", - "274 NaN NaN NaN NaN \n", - "275 NaN NaN NaN NaN \n", - "276 NaN NaN NaN NaN \n", - "\n", - " Where from more info \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 T0067 Plan to Discredit Credible Sources \n", - ".. ... \n", - "272 NaN \n", - "273 NaN \n", - "274 NaN \n", - "275 NaN \n", - "276 NaN \n", - "\n", - "[277 rows x 12 columns]" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import pandas as pd\n", "\n", @@ -322,88 +42,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM ID
0PlanNaNEnvision the desired outcome. Lay out effectiv...P01
1PrepareNaNActivities conducted before execution to impro...P02
2ExecuteNaNRun the action, from initial exposure to wrap-...P03
3AssessNaNAssess effectiveness of action, for use in fut...P04
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "0 Plan NaN \n", - "1 Prepare NaN \n", - "2 Execute NaN \n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID \n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "phases = df[['DISARM Phase', 'DISARM Tactic', 'Description', 'DISARM ID']]\n", "phases = phases[phases['DISARM Tactic'].isnull()]\n", @@ -412,26 +53,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 4 and 4\n", - "first list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "second list: Index(['Execute', 'Prepare', 'Plan', 'Assess'], dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Phase, DISARM Tactic, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(phases['DISARM Phase'], df['DISARM Phase'])\n", "check_ids(phases)" @@ -439,196 +63,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TacticDISARM TechniqueDescriptionDISARM ID
261Plan StrategyNaNDefine the desired end state, i.e. the set of ...TA01
262Plan ObjectivesNaNSet clearly defined, measurable, and achievabl...TA02
263Target Audience AnalysisNaNIdentifying and analyzing the target audience ...TA03
264Develop NarrativesNaNThe promotion of beneficial master narratives ...TA04
265Develop ContentNaNNaNTA05
266Establish Social AssetsNaNEstablishing information assets generates mess...TA06
267Establish LegitimacyNaNNaNTA07
268MicrotargetNaNTarget very specific populations of peopleTA08
269Select Channels and AffordancesNaNSelecting platforms and affordances assesses w...TA09
270Conduct Pump PrimingNaNRelease content on a targetted small scale, pr...TA10
271Deliver ContentNaNRelease content to general public or larger po...TA11
272Maximize ExposureNaNMaximize exposure of the target audience to in...TA12
273Drive Online HarmsNaNActions taken by an influence operation to har...TA13
274Drive Offline ActivityNaNMove incident/campaign from online to offline....TA14
275Persist in the Information SpaceNaNPersist in the Information Space refers to tak...TA15
276Assess EffectivenessNaNNaNTA16
\n", - "
" - ], - "text/plain": [ - " DISARM Tactic DISARM Technique \\\n", - "261 Plan Strategy NaN \n", - "262 Plan Objectives NaN \n", - "263 Target Audience Analysis NaN \n", - "264 Develop Narratives NaN \n", - "265 Develop Content NaN \n", - "266 Establish Social Assets NaN \n", - "267 Establish Legitimacy NaN \n", - "268 Microtarget NaN \n", - "269 Select Channels and Affordances NaN \n", - "270 Conduct Pump Priming NaN \n", - "271 Deliver Content NaN \n", - "272 Maximize Exposure NaN \n", - "273 Drive Online Harms NaN \n", - "274 Drive Offline Activity NaN \n", - "275 Persist in the Information Space NaN \n", - "276 Assess Effectiveness NaN \n", - "\n", - " Description DISARM ID \n", - "261 Define the desired end state, i.e. the set of ... TA01 \n", - "262 Set clearly defined, measurable, and achievabl... TA02 \n", - "263 Identifying and analyzing the target audience ... TA03 \n", - "264 The promotion of beneficial master narratives ... TA04 \n", - "265 NaN TA05 \n", - "266 Establishing information assets generates mess... TA06 \n", - "267 NaN TA07 \n", - "268 Target very specific populations of people TA08 \n", - "269 Selecting platforms and affordances assesses w... TA09 \n", - "270 Release content on a targetted small scale, pr... TA10 \n", - "271 Release content to general public or larger po... TA11 \n", - "272 Maximize exposure of the target audience to in... TA12 \n", - "273 Actions taken by an influence operation to har... TA13 \n", - "274 Move incident/campaign from online to offline.... TA14 \n", - "275 Persist in the Information Space refers to tak... TA15 \n", - "276 NaN TA16 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "tactics = df[['DISARM Tactic', 'DISARM Technique', 'Description', 'DISARM ID']]#['DISARM Tactic'].notnull()\n", "tactics = tactics[(tactics['DISARM Tactic'].notnull()) & (tactics['DISARM Technique'].isnull())]\n", @@ -637,41 +74,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 16 and 16\n", - "first list: Index(['Drive Online Harms', 'Maximize Exposure', 'Conduct Pump Priming',\n", - " 'Deliver Content', 'Persist in the Information Space',\n", - " 'Assess Effectiveness', 'Establish Social Assets',\n", - " 'Target Audience Analysis', 'Develop Narratives', 'Plan Strategy',\n", - " 'Select Channels and Affordances', 'Develop Content', 'Plan Objectives',\n", - " 'Microtarget', 'Establish Legitimacy', 'Drive Offline Activity'],\n", - " dtype='object')\n", - "second list: Index(['Develop Content', 'Establish Social Assets',\n", - " 'Select Channels and Affordances', 'Persist in the Information Space',\n", - " 'Target Audience Analysis', 'Maximize Exposure', 'Drive Online Harms',\n", - " 'Establish Legitimacy', 'Assess Effectiveness',\n", - " 'Drive Offline Activity', 'Deliver Content', 'Develop Narratives',\n", - " 'Plan Objectives', 'Conduct Pump Priming', 'Microtarget',\n", - " 'Plan Strategy'],\n", - " dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Tactic, DISARM Technique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(tactics['DISARM Tactic'], df['DISARM Tactic'])\n", "check_ids(tactics)" @@ -679,154 +86,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TechniqueDISARM SubtechniqueDescriptionDISARM ID
164Determine Target AudiencesNaNNaNT0001
165Determine Strategic EndsNaNNaNT0002
166DismissNaNPush back against criticism by dismissing your...T0003
167DistortNaNTwist the narrative. Take information, or arti...T0004
168DistractNaNShift attention to a different narrative or ac...T0005
...............
256Exploit TOS/Content ModerationNaNNaNT0093
257Play the long gameNaNPlay the long game refers to two phenomena: 1....T0094
258Measure PerformanceNaNNaNT0095
259Measure EffectivenessNaNNaNT0096
260Measure Effectiveness Indicators (or KPIs)NaNNaNT0097
\n", - "

97 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " DISARM Technique DISARM Subtechnique \\\n", - "164 Determine Target Audiences NaN \n", - "165 Determine Strategic Ends NaN \n", - "166 Dismiss NaN \n", - "167 Distort NaN \n", - "168 Distract NaN \n", - ".. ... ... \n", - "256 Exploit TOS/Content Moderation NaN \n", - "257 Play the long game NaN \n", - "258 Measure Performance NaN \n", - "259 Measure Effectiveness NaN \n", - "260 Measure Effectiveness Indicators (or KPIs) NaN \n", - "\n", - " Description DISARM ID \n", - "164 NaN T0001 \n", - "165 NaN T0002 \n", - "166 Push back against criticism by dismissing your... T0003 \n", - "167 Twist the narrative. Take information, or arti... T0004 \n", - "168 Shift attention to a different narrative or ac... T0005 \n", - ".. ... ... \n", - "256 NaN T0093 \n", - "257 Play the long game refers to two phenomena: 1.... T0094 \n", - "258 NaN T0095 \n", - "259 NaN T0096 \n", - "260 NaN T0097 \n", - "\n", - "[97 rows x 4 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "techs = df[['DISARM Technique', 'DISARM Subtechnique', 'Description', 'DISARM ID']]\n", "techs = techs[(techs['DISARM Technique'].notnull()) & (techs['DISARM Subtechnique'].isnull())]\n", @@ -835,124 +97,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 97 and 97\n", - "first list: Index(['Leverage Echo Chambers/Filter Bubbles',\n", - " 'Map Target Audience Information Environment', 'Physical Violence',\n", - " 'Direct Users to Alternative Platforms', 'Develop Audio-based Content',\n", - " 'Develop Owned Media Assets', 'Leverage Conspiracy Theory Narratives',\n", - " 'Develop Text-based Content', 'Develop Video-based Content',\n", - " 'Deliver Ads', 'Leverage Content Farm',\n", - " 'Bookmarking and Content Curation', 'Use Search Engine Optimization',\n", - " 'Livestream', 'Respond to Breaking News Event or Active Crisis',\n", - " 'Recruit bad actors', 'Incentivize Sharing', 'Media Sharing Networks',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Create Inauthentic Accounts', 'Prepare fundraising campaigns', 'Email',\n", - " 'Online polls', 'Purchase Targeted Advertisements',\n", - " 'Obtain Private Documents', 'Play the long game', 'Build Network',\n", - " ' Social Networks', 'Discussion Forums', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Conduct fundraising', 'Acquire/ recruit Network', 'Cross-Posting',\n", - " 'Leverage Existing Narratives', 'Traditional Media',\n", - " 'Conceal Operational Activity', 'Create Clickbait',\n", - " 'Reuse Existing Content', 'Measure Effectiveness', 'Distort',\n", - " 'Conceal Infrastructure', 'Generate information pollution',\n", - " 'Develop New Narratives', 'Bait legitimate influencers',\n", - " 'Facilitate State Propaganda', 'Post Content', 'Co-opt Trusted Sources',\n", - " 'Seed distortions', 'Compromise legitimate accounts',\n", - " 'Blogging and Publishing Networks', 'Platform Filtering',\n", - " 'Determine Target Audiences', 'Dismiss', 'Consumer Review Networks',\n", - " 'Merchandising/ Advertising', 'Develop Image-based Content',\n", - " 'Prepare Assets Impersonating Legitimate Entities',\n", - " 'Flooding the Information Space', 'Distract', 'Measure Performance',\n", - " 'Distort facts', 'Use fake experts', 'Comment or Reply on Content',\n", - " 'Create fake experts', 'Create personas', 'Seed Kernel of truth',\n", - " 'Conceal People', 'Attract Traditional Media',\n", - " 'Determine Strategic Ends', 'Create inauthentic websites',\n", - " 'Cultivate ignorant agents', 'Create Localized Content',\n", - " 'Create hashtags and search artifacts',\n", - " 'Censor social media as a political force', 'Dismay',\n", - " 'Segment Audiences', 'Establish Inauthentic News Sites',\n", - " 'Organize Events', 'Harass', 'Suppress Opposition',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Infiltrate Existing Networks', 'Formal Diplomatic Channels',\n", - " 'Chat apps', 'Encourage Attendance at Events',\n", - " 'Develop Competing Narratives', 'Employ Commercial Analytic Firms',\n", - " 'Degrade Adversary', 'Amplify Existing Narrative',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Physical Broadcast Capabilities',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative',\n", - " 'Manipulate Platform Algorithm', 'Trial content',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "second list: Index(['Conceal Operational Activity',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Flooding the Information Space', ' Social Networks',\n", - " 'Segment Audiences', 'Conceal People',\n", - " 'Map Target Audience Information Environment', 'Conceal Infrastructure',\n", - " 'Measure Effectiveness', 'Harass',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Reuse Existing Content', 'Create Inauthentic Accounts',\n", - " 'Develop Image-based Content', 'Obtain Private Documents',\n", - " 'Co-opt Trusted Sources', 'Recruit bad actors',\n", - " 'Leverage Echo Chambers/Filter Bubbles', 'Build Network',\n", - " 'Post Content', 'Measure Performance', 'Traditional Media',\n", - " 'Cross-Posting', 'Media Sharing Networks', 'Suppress Opposition',\n", - " 'Develop Text-based Content', 'Leverage Content Farm',\n", - " 'Infiltrate Existing Networks', 'Physical Violence', 'Livestream',\n", - " 'Organize Events', 'Establish Inauthentic News Sites', 'Distort facts',\n", - " 'Leverage Conspiracy Theory Narratives', 'Develop Audio-based Content',\n", - " 'Incentivize Sharing', 'Deliver Ads', 'Generate information pollution',\n", - " 'Acquire/ recruit Network', 'Encourage Attendance at Events',\n", - " 'Develop Video-based Content', 'Prepare fundraising campaigns',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Assets Impersonating Legitimate Entities', 'Chat apps',\n", - " 'Discussion Forums', 'Comment or Reply on Content',\n", - " 'Merchandising/ Advertising', 'Manipulate Platform Algorithm',\n", - " 'Conduct fundraising', 'Create fake experts', 'Dismiss',\n", - " 'Create personas', 'Develop Owned Media Assets',\n", - " 'Direct Users to Alternative Platforms', 'Create Clickbait',\n", - " 'Leverage Existing Narratives', 'Cultivate ignorant agents',\n", - " 'Play the long game', 'Develop New Narratives',\n", - " 'Use Search Engine Optimization', 'Purchase Targeted Advertisements',\n", - " 'Use fake experts', 'Determine Target Audiences',\n", - " 'Facilitate State Propaganda', 'Create Localized Content',\n", - " 'Attract Traditional Media', 'Trial content',\n", - " 'Create inauthentic websites', 'Bait legitimate influencers', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Seed Kernel of truth', 'Censor social media as a political force',\n", - " 'Seed distortions', 'Bookmarking and Content Curation',\n", - " 'Degrade Adversary', 'Consumer Review Networks', 'Platform Filtering',\n", - " 'Create hashtags and search artifacts', 'Develop Competing Narratives',\n", - " 'Distort', 'Prepare Physical Broadcast Capabilities',\n", - " 'Amplify Existing Narrative', 'Determine Strategic Ends',\n", - " 'Employ Commercial Analytic Firms',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative', 'Dismay',\n", - " 'Formal Diplomatic Channels', 'Blogging and Publishing Networks',\n", - " 'Compromise legitimate accounts', 'Distract', 'Online polls', 'Email',\n", - " 'Respond to Breaking News Event or Active Crisis',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Technique, DISARM Subtechnique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(techs['DISARM Technique'], df['DISARM Technique'])\n", "check_ids(techs)\n", @@ -961,167 +110,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM SubtechniqueDISARM TechniqueDescriptionDISARM ID
4Discredit Credible SourcesDismissPlan to delegitimize the media landscape and d...ST0001
5Monitor Social Media AnalyticsMap Target Audience Information EnvironmentAn influence operation may use social media an...ST0002
6Evaluate Media SurveysMap Target Audience Information EnvironmentAn influence operation may evaluate its own or...ST0003
7Identify Trending Topics/HashtagsMap Target Audience Information EnvironmentAn influence operation may identify trending h...ST0004
8Conduct Web Traffic AnalysisMap Target Audience Information EnvironmentAn influence operation may conduct web traffic...ST0005
...............
159AwarenessMeasure EffectivenessNaNST0156
160KnowledgeMeasure EffectivenessNaNST0157
161Action/attitudeMeasure EffectivenessNaNST0158
162Message reachMeasure Effectiveness Indicators (or KPIs)Monitor and evaluate message reach in misinfor...ST0159
163Social media engagementMeasure Effectiveness Indicators (or KPIs)Monitor and evaluate social media engagement i...ST0160
\n", - "

160 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " DISARM Subtechnique \\\n", - "4 Discredit Credible Sources \n", - "5 Monitor Social Media Analytics \n", - "6 Evaluate Media Surveys \n", - "7 Identify Trending Topics/Hashtags \n", - "8 Conduct Web Traffic Analysis \n", - ".. ... \n", - "159 Awareness \n", - "160 Knowledge \n", - "161 Action/attitude \n", - "162 Message reach \n", - "163 Social media engagement \n", - "\n", - " DISARM Technique \\\n", - "4 Dismiss \n", - "5 Map Target Audience Information Environment \n", - "6 Map Target Audience Information Environment \n", - "7 Map Target Audience Information Environment \n", - "8 Map Target Audience Information Environment \n", - ".. ... \n", - "159 Measure Effectiveness \n", - "160 Measure Effectiveness \n", - "161 Measure Effectiveness \n", - "162 Measure Effectiveness Indicators (or KPIs) \n", - "163 Measure Effectiveness Indicators (or KPIs) \n", - "\n", - " Description DISARM ID \n", - "4 Plan to delegitimize the media landscape and d... ST0001 \n", - "5 An influence operation may use social media an... ST0002 \n", - "6 An influence operation may evaluate its own or... ST0003 \n", - "7 An influence operation may identify trending h... ST0004 \n", - "8 An influence operation may conduct web traffic... ST0005 \n", - ".. ... ... \n", - "159 NaN ST0156 \n", - "160 NaN ST0157 \n", - "161 NaN ST0158 \n", - "162 Monitor and evaluate message reach in misinfor... ST0159 \n", - "163 Monitor and evaluate social media engagement i... ST0160 \n", - "\n", - "[160 rows x 4 columns]" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subs = df[['DISARM Subtechnique', 'DISARM Technique', 'Description', 'DISARM ID']]\n", "subs = subs[subs['DISARM Subtechnique'].notnull()]\n", @@ -1130,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1140,50 +131,11 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 159 and 159\n", - "first list: Index(['Conceal Network Identity', 'Co-opt Influencers', 'Newspaper',\n", - " 'Utilize Academic/Pseudoscientific Justifications',\n", - " 'Legacy web content', 'Audio sharing', 'Utilize Butterfly Attack',\n", - " 'Demographic Segmentation', 'Political Segmentation',\n", - " 'Create Organizations',\n", - " ...\n", - " 'Generate Content Unrelated to Narrative', 'Hijack existing hashtag',\n", - " 'Delete Opposing Content', 'Backstop personas ',\n", - " 'Co-Opt Trusted Individuals', 'Post Across Groups',\n", - " 'Identify Data Voids', 'Create fake research', 'Content Focused',\n", - " 'Share Memes'],\n", - " dtype='object', length=159)\n", - "second list: Index(['Conceal Network Identity', 'Co-opt Influencers', 'Newspaper',\n", - " 'Utilize Academic/Pseudoscientific Justifications',\n", - " 'Legacy web content', 'Audio sharing', 'Utilize Butterfly Attack',\n", - " 'Demographic Segmentation', 'Political Segmentation',\n", - " 'Create Organizations',\n", - " ...\n", - " 'Generate Content Unrelated to Narrative', 'Hijack existing hashtag',\n", - " 'Delete Opposing Content', 'Backstop personas ',\n", - " 'Co-Opt Trusted Individuals', 'Post Across Groups',\n", - " 'Identify Data Voids', 'Create fake research', 'Content Focused',\n", - " 'Share Memes'],\n", - " dtype='object', length=159)\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Subtechnique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(subs['DISARM Subtechnique'], df['DISARM Subtechnique'])\n", "check_ids(subs)" @@ -1198,18 +150,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current keys: dict_keys(['FRAMEWORK_ADMIN_README', 'FRAMEWORK_ADMIN CODES', 'phases', 'tactics', 'techniques', 'subtechniques', 'frameworks', 'tasks', 'detections', 'countermeasures', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'sectors', 'resources', 'MOE', 'MOP'])\n", - "Old keys: dict_keys(['ADMIN_README', 'ADMIN CODES', 'phases', 'tactics', 'techniques', 'countermeasures', 'frameworks', 'tasks', 'detections', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'actortype_framework', 'actortype_sector', 'sectors', 'resources', 'MOE', 'MOP'])\n" - ] - } - ], + "outputs": [], "source": [ "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", "frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx'\n", @@ -1231,272 +174,27 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idnamename_DEranksummarysummary_DElongname
0P01PlanPlanung1Envision the desired outcome. Lay out effectiv...P01 - Plan
1P02PrepareVorbereitung2Activities conducted before execution to impro...P02 - Prepare
2P03ExecuteDurchführung3Run the action, from initial exposure to wrap-...P03 - Execute
3P04AssessAuswertung4Evaluate effectiveness of action, for use in f...P04 - Assess
\n", - "
" - ], - "text/plain": [ - " disarm_id name name_DE rank \\\n", - "0 P01 Plan Planung 1 \n", - "1 P02 Prepare Vorbereitung 2 \n", - "2 P03 Execute Durchführung 3 \n", - "3 P04 Assess Auswertung 4 \n", - "\n", - " summary summary_DE longname \n", - "0 Envision the desired outcome. Lay out effectiv... P01 - Plan \n", - "1 Activities conducted before execution to impro... P02 - Prepare \n", - "2 Run the action, from initial exposure to wrap-... P03 - Execute \n", - "3 Evaluate effectiveness of action, for use in f... P04 - Assess " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "metadata['phases']" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM ID
0PlanNaNEnvision the desired outcome. Lay out effectiv...P01
1PrepareNaNActivities conducted before execution to impro...P02
2ExecuteNaNRun the action, from initial exposure to wrap-...P03
3AssessNaNAssess effectiveness of action, for use in fut...P04
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "0 Plan NaN \n", - "1 Prepare NaN \n", - "2 Execute NaN \n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID \n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "phases" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM IDdisarm_idnamename_DEranksummarysummary_DElongname
3AssessNaNAssess effectiveness of action, for use in fut...P04P04AssessAuswertung4Evaluate effectiveness of action, for use in f...P04 - Assess
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID disarm_id \\\n", - "3 Assess effectiveness of action, for use in fut... P04 P04 \n", - "\n", - " name name_DE rank \\\n", - "3 Assess Auswertung 4 \n", - "\n", - " summary summary_DE longname \n", - "3 Evaluate effectiveness of action, for use in f... P04 - Assess " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# do union of both tables, to get new spreadsheet table\n", "check_descriptions(phases, metadata['phases'])" @@ -1504,465 +202,42 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 4 and 4\n", - "first list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "second list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "set difference: set()\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['phases']['name'], phases['DISARM Phase'])" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TacticDISARM TechniqueDescriptionDISARM IDdisarm_idnamename_DEphase_idranksummarysummary_DElongname
1Plan ObjectivesNaNSet clearly defined, measurable, and achievabl...TA02TA02Objective Planningobjektive PlanungP012Set clearly defined, measurable, and achievabl...TA02 - Objective Planning
2Target Audience AnalysisNaNIdentifying and analyzing the target audience ...TA03TA03Develop PeopleMenschen entwickelnP024Develop online and offline users and agents, i...TA03 - Develop People
3Develop NarrativesNaNThe promotion of beneficial master narratives ...TA04TA04Develop NetworksNetzwerke entwickelnP025Develop online and offline communities and tra...TA04 - Develop Networks
4Develop ContentNaNNaNTA05TA05Microtargetingindividualisierte WählerwerbungP026Target very specific populations of peopleTA05 - Microtargeting
5Establish Social AssetsNaNEstablishing information assets generates mess...TA06TA06Develop ContentInhalte entwickelnP027Create and acquire content used in incidentTA06 - Develop Content
6Establish LegitimacyNaNNaNTA07TA07Channel SelectionKanalauswahlP028Set up specific delivery, amplification and ma...TA07 - Channel Selection
7MicrotargetNaNTarget very specific populations of peopleTA08TA08Pump PrimingAnkurbelungP039Release content on a targetted small scale, pr...TA08 - Pump Priming
8Select Channels and AffordancesNaNSelecting platforms and affordances assesses w...TA09TA09ExposureP0310Release content to general public or push to l...TA09 - Exposure
9Conduct Pump PrimingNaNRelease content on a targetted small scale, pr...TA10TA10Drive Offline ActivityP0311Move incident into offline worldTA10 - Drive Offline Activity
10Deliver ContentNaNRelease content to general public or larger po...TA11TA11PersistenceP0312Keep incident 'alive', beyond the incident cre...TA11 - Persistence
11Maximize ExposureNaNMaximize exposure of the target audience to in...TA12TA12Measure EffectivenessP0413Measure effectiveness of incident, for use in ...TA12 - Measure Effectiveness
12Drive Online HarmsNaNActions taken by an influence operation to har...TA13TA13Conduct Center of Gravity AnalysisP013Recon/research to identify \"the source of powe...TA13 - Conduct Center of Gravity Analysis
\n", - "
" - ], - "text/plain": [ - " DISARM Tactic DISARM Technique \\\n", - "1 Plan Objectives NaN \n", - "2 Target Audience Analysis NaN \n", - "3 Develop Narratives NaN \n", - "4 Develop Content NaN \n", - "5 Establish Social Assets NaN \n", - "6 Establish Legitimacy NaN \n", - "7 Microtarget NaN \n", - "8 Select Channels and Affordances NaN \n", - "9 Conduct Pump Priming NaN \n", - "10 Deliver Content NaN \n", - "11 Maximize Exposure NaN \n", - "12 Drive Online Harms NaN \n", - "\n", - " Description DISARM ID disarm_id \\\n", - "1 Set clearly defined, measurable, and achievabl... TA02 TA02 \n", - "2 Identifying and analyzing the target audience ... TA03 TA03 \n", - "3 The promotion of beneficial master narratives ... TA04 TA04 \n", - "4 NaN TA05 TA05 \n", - "5 Establishing information assets generates mess... TA06 TA06 \n", - "6 NaN TA07 TA07 \n", - "7 Target very specific populations of people TA08 TA08 \n", - "8 Selecting platforms and affordances assesses w... TA09 TA09 \n", - "9 Release content on a targetted small scale, pr... TA10 TA10 \n", - "10 Release content to general public or larger po... TA11 TA11 \n", - "11 Maximize exposure of the target audience to in... TA12 TA12 \n", - "12 Actions taken by an influence operation to har... TA13 TA13 \n", - "\n", - " name name_DE \\\n", - "1 Objective Planning objektive Planung \n", - "2 Develop People Menschen entwickeln \n", - "3 Develop Networks Netzwerke entwickeln \n", - "4 Microtargeting individualisierte Wählerwerbung \n", - "5 Develop Content Inhalte entwickeln \n", - "6 Channel Selection Kanalauswahl \n", - "7 Pump Priming Ankurbelung \n", - "8 Exposure \n", - "9 Drive Offline Activity \n", - "10 Persistence \n", - "11 Measure Effectiveness \n", - "12 Conduct Center of Gravity Analysis \n", - "\n", - " phase_id rank summary \\\n", - "1 P01 2 Set clearly defined, measurable, and achievabl... \n", - "2 P02 4 Develop online and offline users and agents, i... \n", - "3 P02 5 Develop online and offline communities and tra... \n", - "4 P02 6 Target very specific populations of people \n", - "5 P02 7 Create and acquire content used in incident \n", - "6 P02 8 Set up specific delivery, amplification and ma... \n", - "7 P03 9 Release content on a targetted small scale, pr... \n", - "8 P03 10 Release content to general public or push to l... \n", - "9 P03 11 Move incident into offline world \n", - "10 P03 12 Keep incident 'alive', beyond the incident cre... \n", - "11 P04 13 Measure effectiveness of incident, for use in ... \n", - "12 P01 3 Recon/research to identify \"the source of powe... \n", - "\n", - " summary_DE longname \n", - "1 TA02 - Objective Planning \n", - "2 TA03 - Develop People \n", - "3 TA04 - Develop Networks \n", - "4 TA05 - Microtargeting \n", - "5 TA06 - Develop Content \n", - "6 TA07 - Channel Selection \n", - "7 TA08 - Pump Priming \n", - "8 TA09 - Exposure \n", - "9 TA10 - Drive Offline Activity \n", - "10 TA11 - Persistence \n", - "11 TA12 - Measure Effectiveness \n", - "12 TA13 - Conduct Center of Gravity Analysis " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "check_descriptions(tactics, metadata['tactics'])" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 13 and 16\n", - "first list: Index(['Strategic Planning', 'Persistence', 'Microtargeting',\n", - " 'Channel Selection', 'Develop Networks', 'Objective Planning',\n", - " 'Measure Effectiveness', 'Exposure',\n", - " 'Conduct Center of Gravity Analysis', 'Drive Offline Activity',\n", - " 'Pump Priming', 'Develop Content', 'Develop People'],\n", - " dtype='object')\n", - "second list: Index(['Drive Online Harms', 'Maximize Exposure', 'Conduct Pump Priming',\n", - " 'Deliver Content', 'Persist in the Information Space',\n", - " 'Assess Effectiveness', 'Establish Social Assets',\n", - " 'Target Audience Analysis', 'Develop Narratives', 'Plan Strategy',\n", - " 'Select Channels and Affordances', 'Develop Content', 'Plan Objectives',\n", - " 'Microtarget', 'Establish Legitimacy', 'Drive Offline Activity'],\n", - " dtype='object')\n", - "set difference: {'Develop Networks', 'Channel Selection', 'Pump Priming', 'Measure Effectiveness', 'Conduct Center of Gravity Analysis', 'Exposure', 'Objective Planning', 'Develop People', 'Microtargeting', 'Persistence', 'Strategic Planning'}\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['tactics']['name'], tactics['DISARM Tactic'])" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 71 and 97\n", - "first list: Index(['Backstop personas', 'Message reach', 'Twitter bots amplify',\n", - " 'Demand unsurmountable proof', 'Behaviour changes',\n", - " 'Create fake videos and images', 'Play the long game',\n", - " 'Purchase advertisements', 'Manipulate online polls',\n", - " 'Facilitate State Propaganda', 'Find echo chambers', 'Clickbait',\n", - " 'Pinterest', 'Seed distortions', 'Cow online opinion leaders',\n", - " 'Segment audiences',\n", - " 'Dedicated channels disseminate information pollution',\n", - " 'Organise remote rallies and events', 'Prepare fundraising campaigns',\n", - " 'Muzzle social media as a political force',\n", - " 'Twitter trolls amplify and manipulate',\n", - " 'Create pseudoscientific or disingenuous research',\n", - " 'Develop Narrative Concepts', 'Cheerleading domestic social media ops',\n", - " '5Ds (dismiss, distort, distract, dismay, divide)',\n", - " 'Leverage Existing Narratives', 'Continue to amplify', 'Reddit',\n", - " 'Trial content', 'LinkedIn', 'Leak altered documents',\n", - " 'Conspiracy narratives', 'Use hashtag',\n", - " 'Generate information pollution', 'Analyze existing communities',\n", - " 'Fabricate social media comment', 'Cultivate ignorant agents',\n", - " 'YouTube', 'Compromise legitimate account',\n", - " 'Create competing narratives', 'Kernel of Truth',\n", - " 'Respond to breaking news event', 'Twitter',\n", - " 'Plan to discredit credible sources', 'Distort facts',\n", - " 'Use physical broadcast capabilities', 'Use fake experts', 'Facebook',\n", - " 'Create fake experts', 'Devise Competing Narratives', 'Instagram',\n", - " 'Bait legitimate influencers', 'Respond to active crisis',\n", - " 'Create hashtags', 'Flooding', 'Legacy web content',\n", - " 'Create fake Social Media Profiles / Pages / Groups',\n", - " 'Create fake websites', 'Deny involvement',\n", - " 'Tertiary sites amplify news', 'Adapt existing narratives',\n", - " 'Search Engine Optimization', 'Degrade adversary', 'Use concealment',\n", - " 'Sell merchandising', 'Conduct Fundraising Campaigns',\n", - " 'Social media engagement', 'Use SMS/ WhatsApp/ Chat apps', 'Memes',\n", - " 'WhatsApp', 'Create fake or imposter news sites'],\n", - " dtype='object')\n", - "second list: Index(['Leverage Echo Chambers/Filter Bubbles',\n", - " 'Map Target Audience Information Environment', 'Physical Violence',\n", - " 'Direct Users to Alternative Platforms', 'Develop Audio-based Content',\n", - " 'Develop Owned Media Assets', 'Leverage Conspiracy Theory Narratives',\n", - " 'Develop Text-based Content', 'Develop Video-based Content',\n", - " 'Deliver Ads', 'Leverage Content Farm',\n", - " 'Bookmarking and Content Curation', 'Use Search Engine Optimization',\n", - " 'Livestream', 'Respond to Breaking News Event or Active Crisis',\n", - " 'Recruit bad actors', 'Incentivize Sharing', 'Media Sharing Networks',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Create Inauthentic Accounts', 'Prepare fundraising campaigns', 'Email',\n", - " 'Online polls', 'Purchase Targeted Advertisements',\n", - " 'Obtain Private Documents', 'Play the long game', 'Build Network',\n", - " ' Social Networks', 'Discussion Forums', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Conduct fundraising', 'Acquire/ recruit Network', 'Cross-Posting',\n", - " 'Leverage Existing Narratives', 'Traditional Media',\n", - " 'Conceal Operational Activity', 'Create Clickbait',\n", - " 'Reuse Existing Content', 'Measure Effectiveness', 'Distort',\n", - " 'Conceal Infrastructure', 'Generate information pollution',\n", - " 'Develop New Narratives', 'Bait legitimate influencers',\n", - " 'Facilitate State Propaganda', 'Post Content', 'Co-opt Trusted Sources',\n", - " 'Seed distortions', 'Compromise legitimate accounts',\n", - " 'Blogging and Publishing Networks', 'Platform Filtering',\n", - " 'Determine Target Audiences', 'Dismiss', 'Consumer Review Networks',\n", - " 'Merchandising/ Advertising', 'Develop Image-based Content',\n", - " 'Prepare Assets Impersonating Legitimate Entities',\n", - " 'Flooding the Information Space', 'Distract', 'Measure Performance',\n", - " 'Distort facts', 'Use fake experts', 'Comment or Reply on Content',\n", - " 'Create fake experts', 'Create personas', 'Seed Kernel of truth',\n", - " 'Conceal People', 'Attract Traditional Media',\n", - " 'Determine Strategic Ends', 'Create inauthentic websites',\n", - " 'Cultivate ignorant agents', 'Create Localized Content',\n", - " 'Create hashtags and search artifacts',\n", - " 'Censor social media as a political force', 'Dismay',\n", - " 'Segment Audiences', 'Establish Inauthentic News Sites',\n", - " 'Organize Events', 'Harass', 'Suppress Opposition',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Infiltrate Existing Networks', 'Formal Diplomatic Channels',\n", - " 'Chat apps', 'Encourage Attendance at Events',\n", - " 'Develop Competing Narratives', 'Employ Commercial Analytic Firms',\n", - " 'Degrade Adversary', 'Amplify Existing Narrative',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Physical Broadcast Capabilities',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative',\n", - " 'Manipulate Platform Algorithm', 'Trial content',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "set difference: {'Degrade adversary', 'Twitter trolls amplify and manipulate', 'Create pseudoscientific or disingenuous research', 'Message reach', 'Develop Narrative Concepts', 'Continue to amplify', 'Behaviour changes', 'Cheerleading domestic social media ops', '5Ds (dismiss, distort, distract, dismay, divide)', 'Create fake websites', 'Muzzle social media as a political force', 'LinkedIn', 'Deny involvement', 'Conspiracy narratives', 'Organise remote rallies and events', 'Reddit', 'Instagram', 'Demand unsurmountable proof', 'Purchase advertisements', 'Use hashtag', 'Find echo chambers', 'Memes', 'Manipulate online polls', 'Clickbait', 'Pinterest', 'Create fake or imposter news sites', 'Cow online opinion leaders', 'Flooding', 'Create fake Social Media Profiles / Pages / Groups', 'Tertiary sites amplify news', 'Adapt existing narratives', 'Search Engine Optimization', 'Legacy web content', 'Sell merchandising', 'Create competing narratives', 'Conduct Fundraising Campaigns', 'Social media engagement', 'Use SMS/ WhatsApp/ Chat apps', 'Fabricate social media comment', 'WhatsApp', 'Use concealment', 'Create hashtags', 'Use physical broadcast capabilities', 'Segment audiences', 'Respond to active crisis', 'Compromise legitimate account', 'Twitter bots amplify', 'Kernel of Truth', 'Analyze existing communities', 'Respond to breaking news event', 'YouTube', 'Twitter', 'Plan to discredit credible sources', 'Dedicated channels disseminate information pollution', 'Facebook', 'Create fake videos and images', 'Leak altered documents', 'Devise Competing Narratives', 'Backstop personas'}\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['techniques']['name'], techs['DISARM Technique'])" ] @@ -1976,70 +251,9 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
3P04FalseTrueAssessAssessEvaluate effectiveness of action, for use in f...Evaluate effectiveness of action, for use in f...
\n", - "
" - ], - "text/plain": [ - " disarm_id name_changed summary_changed name_x name_y \\\n", - "3 P04 False True Assess Assess \n", - "\n", - " summary_x \\\n", - "3 Evaluate effectiveness of action, for use in f... \n", - "\n", - " summary_y \n", - "3 Evaluate effectiveness of action, for use in f... " - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def check_version_descriptions(df1, df2):\n", " merge = df1.merge(df2, on='disarm_id')\n", @@ -2053,281 +267,18 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
0TA01TrueFalsePlan StrategyStrategic PlanningDefine the desired end state, i.e. the set of ...Define the desired end state, i.e. the set of ...
1TA02TrueTruePlan ObjectivesObjective PlanningSet clearly defined, measurable, and achievabl...Set clearly defined, measurable, and achievabl...
2TA05TrueFalseMicrotargetMicrotargetingTarget very specific populations of peopleTarget very specific populations of people
3TA06FalseTrueDevelop ContentDevelop ContentCreate and acquire content used in incident
4TA07TrueTrueSelect Channels and AffordancesChannel SelectionSelecting platforms and affordances assesses w...Set up specific delivery, amplification and ma...
5TA08TrueTrueConduct Pump PrimingPump PrimingRelease content on a targetted small scale, pr...Release content on a targetted small scale, pr...
6TA09TrueTrueDeliver ContentExposureRelease content to general public or larger po...Release content to general public or push to l...
7TA10FalseTrueDrive Offline ActivityDrive Offline ActivityMove incident/campaign from online to offline....Move incident into offline world
8TA11TrueTruePersist in the Information EnvironmentPersistencePersist in the Information Space refers to tak...Keep incident 'alive', beyond the incident cre...
9TA12TrueTrueAssess EffectivenessMeasure EffectivenessAssess effectiveness of action, for use in fut...Measure effectiveness of incident, for use in ...
10TA13TrueTrueTarget Audience AnalysisConduct Center of Gravity AnalysisIdentifying and analyzing the target audience ...Recon/research to identify \"the source of powe...
\n", - "
" - ], - "text/plain": [ - " disarm_id name_changed summary_changed \\\n", - "0 TA01 True False \n", - "1 TA02 True True \n", - "2 TA05 True False \n", - "3 TA06 False True \n", - "4 TA07 True True \n", - "5 TA08 True True \n", - "6 TA09 True True \n", - "7 TA10 False True \n", - "8 TA11 True True \n", - "9 TA12 True True \n", - "10 TA13 True True \n", - "\n", - " name_x \\\n", - "0 Plan Strategy \n", - "1 Plan Objectives \n", - "2 Microtarget \n", - "3 Develop Content \n", - "4 Select Channels and Affordances \n", - "5 Conduct Pump Priming \n", - "6 Deliver Content \n", - "7 Drive Offline Activity \n", - "8 Persist in the Information Environment \n", - "9 Assess Effectiveness \n", - "10 Target Audience Analysis \n", - "\n", - " name_y \\\n", - "0 Strategic Planning \n", - "1 Objective Planning \n", - "2 Microtargeting \n", - "3 Develop Content \n", - "4 Channel Selection \n", - "5 Pump Priming \n", - "6 Exposure \n", - "7 Drive Offline Activity \n", - "8 Persistence \n", - "9 Measure Effectiveness \n", - "10 Conduct Center of Gravity Analysis \n", - "\n", - " summary_x \\\n", - "0 Define the desired end state, i.e. the set of ... \n", - "1 Set clearly defined, measurable, and achievabl... \n", - "2 Target very specific populations of people \n", - "3 \n", - "4 Selecting platforms and affordances assesses w... \n", - "5 Release content on a targetted small scale, pr... \n", - "6 Release content to general public or larger po... \n", - "7 Move incident/campaign from online to offline.... \n", - "8 Persist in the Information Space refers to tak... \n", - "9 Assess effectiveness of action, for use in fut... \n", - "10 Identifying and analyzing the target audience ... \n", - "\n", - " summary_y \n", - "0 Define the desired end state, i.e. the set of ... \n", - "1 Set clearly defined, measurable, and achievabl... \n", - "2 Target very specific populations of people \n", - "3 Create and acquire content used in incident \n", - "4 Set up specific delivery, amplification and ma... \n", - "5 Release content on a targetted small scale, pr... \n", - "6 Release content to general public or push to l... \n", - "7 Move incident into offline world \n", - "8 Keep incident 'alive', beyond the incident cre... \n", - "9 Measure effectiveness of incident, for use in ... \n", - "10 Recon/research to identify \"the source of powe... " - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "check_version_descriptions(metadata['tactics'], oldmeta['tactics'])" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [disarm_id, name_changed, summary_changed, name_x, name_y, summary_x, summary_y]\n", - "Index: []" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "check_version_descriptions(metadata['techniques'], oldmeta['techniques'])" ] diff --git a/CODE/.ipynb_checkpoints/generate_DISARM_pages-checkpoint.ipynb b/CODE/.ipynb_checkpoints/generate_DISARM_pages-checkpoint.ipynb index 22ee222..49455cf 100644 --- a/CODE/.ipynb_checkpoints/generate_DISARM_pages-checkpoint.ipynb +++ b/CODE/.ipynb_checkpoints/generate_DISARM_pages-checkpoint.ipynb @@ -27,6 +27,36 @@ "name": "stdout", "output_type": "stream", "text": [ + "../DISARM_MASTER_DATA/ADMIN_DATA_README.csv ADMIN_DATA_README\n", + "../DISARM_MASTER_DATA/detections.csv detections\n", + "../DISARM_MASTER_DATA/actortypes.csv actortypes\n", + "../DISARM_MASTER_DATA/responsetypes.csv responsetypes\n", + "../DISARM_MASTER_DATA/phases.csv phases\n", + "../DISARM_MASTER_DATA/externalgroupcounters.csv externalgroupcounters\n", + "../DISARM_MASTER_DATA/metatechniques.csv metatechniques\n", + "../DISARM_MASTER_DATA/techniques.csv techniques\n", + "../DISARM_MASTER_DATA/MOP.csv MOP\n", + "../DISARM_MASTER_DATA/MOE.csv MOE\n", + "../DISARM_MASTER_DATA/narratives.csv narratives\n", + "../DISARM_MASTER_DATA/forums.csv forums\n", + "../DISARM_MASTER_DATA/playbooks.csv playbooks\n", + "../DISARM_MASTER_DATA/resources.csv resources\n", + "../DISARM_MASTER_DATA/suggested_externalgroups.csv suggested_externalgroups\n", + "../DISARM_MASTER_DATA/tasks.csv tasks\n", + "../DISARM_MASTER_DATA/incidenttechniques.csv incidenttechniques\n", + "../DISARM_MASTER_DATA/ADMIN_FRAMEWORK_README.csv ADMIN_FRAMEWORK_README\n", + "../DISARM_MASTER_DATA/examples.csv examples\n", + "../DISARM_MASTER_DATA/tools.csv tools\n", + "../DISARM_MASTER_DATA/removed_externalgroups.csv removed_externalgroups\n", + "../DISARM_MASTER_DATA/removed_tools.csv removed_tools\n", + "../DISARM_MASTER_DATA/frameworks.csv frameworks\n", + "../DISARM_MASTER_DATA/externalgroups.csv externalgroups\n", + "../DISARM_MASTER_DATA/countermeasures.csv countermeasures\n", + "../DISARM_MASTER_DATA/DISARM_COMMENTS_MASTER.csv DISARM_COMMENTS_MASTER\n", + "../DISARM_MASTER_DATA/tactics.csv tactics\n", + "../DISARM_MASTER_DATA/sectors.csv sectors\n", + "../DISARM_MASTER_DATA/ADMIN_FRAMEWORK CODES.csv ADMIN_FRAMEWORK CODES\n", + "../DISARM_MASTER_DATA/incidents.csv incidents\n", "updated ../generated_pages/disarm_red_framework.md\n", "updated ../generated_files/disarm_red_framework_clickable.html\n", "updated ../generated_pages/disarm_blue_framework.md\n", @@ -35,248 +65,18 @@ "updated ../generated_pages/phases_index.md\n", "Temp: objecttype tactic\n", "updated ../generated_pages/tactics_index.md\n", - "Updating ../generated_pages/tactics/TA01.md\n", - "Updating ../generated_pages/tactics/TA02.md\n", - "Updating ../generated_pages/tactics/TA05.md\n", - "Updating ../generated_pages/tactics/TA06.md\n", - "Updating ../generated_pages/tactics/TA07.md\n", - "Updating ../generated_pages/tactics/TA08.md\n", - "Updating ../generated_pages/tactics/TA09.md\n", - "Updating ../generated_pages/tactics/TA10.md\n", - "Updating ../generated_pages/tactics/TA11.md\n", - "Updating ../generated_pages/tactics/TA12.md\n", - "Updating ../generated_pages/tactics/TA15.md\n", "Temp: objecttype technique\n", "updated ../generated_pages/techniques_index.md\n", - "Updating ../generated_pages/techniques/T0002.md\n", - "Updating ../generated_pages/techniques/T0003.md\n", - "Updating ../generated_pages/techniques/T0004.md\n", - "Updating ../generated_pages/techniques/T0007.md\n", - "Updating ../generated_pages/techniques/T0009.md\n", - "Updating ../generated_pages/techniques/T0010.md\n", - "Updating ../generated_pages/techniques/T0011.md\n", - "Updating ../generated_pages/techniques/T0013.md\n", - "Updating ../generated_pages/techniques/T0014.md\n", - "Updating ../generated_pages/techniques/T0015.md\n", - "Updating ../generated_pages/techniques/T0016.md\n", - "Updating ../generated_pages/techniques/T0017.md\n", - "Updating ../generated_pages/techniques/T0018.md\n", - "Updating ../generated_pages/techniques/T0019.md\n", - "Updating ../generated_pages/techniques/T0020.md\n", - "Updating ../generated_pages/techniques/T0022.md\n", - "Updating ../generated_pages/techniques/T0023.md\n", - "Updating ../generated_pages/techniques/T0029.md\n", - "Updating ../generated_pages/techniques/T0040.md\n", - "Updating ../generated_pages/techniques/T0042.md\n", - "Updating ../generated_pages/techniques/T0043.md\n", - "Updating ../generated_pages/techniques/T0044.md\n", - "Updating ../generated_pages/techniques/T0045.md\n", - "Updating ../generated_pages/techniques/T0046.md\n", - "Updating ../generated_pages/techniques/T0047.md\n", - "Updating ../generated_pages/techniques/T0048.md\n", - "Updating ../generated_pages/techniques/T0049.md\n", - "Updating ../generated_pages/techniques/T0057.md\n", - "Updating ../generated_pages/techniques/T0059.md\n", - "Updating ../generated_pages/techniques/T0060.md\n", - "Updating ../generated_pages/techniques/T0061.md\n", "Temp: objecttype task\n", "updated ../generated_pages/tasks_index.md\n", "Temp: objecttype incident\n", "updated ../generated_pages/incidents_index.md\n", - "Updating ../generated_pages/incidents/I00002.md\n", - "Updating ../generated_pages/incidents/I00005.md\n", - "Updating ../generated_pages/incidents/I00006.md\n", - "Updating ../generated_pages/incidents/I00007.md\n", - "Updating ../generated_pages/incidents/I00009.md\n", - "Updating ../generated_pages/incidents/I00010.md\n", - "Updating ../generated_pages/incidents/I00015.md\n", - "Updating ../generated_pages/incidents/I00017.md\n", - "Updating ../generated_pages/incidents/I00022.md\n", - "Updating ../generated_pages/incidents/I00029.md\n", - "Updating ../generated_pages/incidents/I00032.md\n", - "Updating ../generated_pages/incidents/I00033.md\n", - "Updating ../generated_pages/incidents/I00034.md\n", - "Updating ../generated_pages/incidents/I00042.md\n", - "Updating ../generated_pages/incidents/I00044.md\n", - "Updating ../generated_pages/incidents/I00047.md\n", - "Updating ../generated_pages/incidents/I00049.md\n", - "Updating ../generated_pages/incidents/I00050.md\n", - "Updating ../generated_pages/incidents/I00051.md\n", - "Updating ../generated_pages/incidents/I00053.md\n", - "Updating ../generated_pages/incidents/I00056.md\n", - "Updating ../generated_pages/incidents/I00063.md\n", "Temp: objecttype counter\n", "updated ../generated_pages/counters_index.md\n", - "Updating ../generated_pages/counters/C00006.md\n", - "Updating ../generated_pages/counters/C00008.md\n", - "Updating ../generated_pages/counters/C00009.md\n", - "Updating ../generated_pages/counters/C00010.md\n", - "Updating ../generated_pages/counters/C00011.md\n", - "Updating ../generated_pages/counters/C00012.md\n", - "Updating ../generated_pages/counters/C00013.md\n", - "Updating ../generated_pages/counters/C00014.md\n", - "Updating ../generated_pages/counters/C00016.md\n", - "Updating ../generated_pages/counters/C00017.md\n", - "Updating ../generated_pages/counters/C00019.md\n", - "Updating ../generated_pages/counters/C00021.md\n", - "Updating ../generated_pages/counters/C00022.md\n", - "Updating ../generated_pages/counters/C00024.md\n", - "Updating ../generated_pages/counters/C00026.md\n", - "Updating ../generated_pages/counters/C00027.md\n", - "Updating ../generated_pages/counters/C00029.md\n", - "Updating ../generated_pages/counters/C00030.md\n", - "Updating ../generated_pages/counters/C00031.md\n", - "Updating ../generated_pages/counters/C00034.md\n", - "Updating ../generated_pages/counters/C00036.md\n", - "Updating ../generated_pages/counters/C00040.md\n", - "Updating ../generated_pages/counters/C00042.md\n", - "Updating ../generated_pages/counters/C00044.md\n", - "Updating ../generated_pages/counters/C00046.md\n", - "Updating ../generated_pages/counters/C00048.md\n", - "Updating ../generated_pages/counters/C00051.md\n", - "Updating ../generated_pages/counters/C00052.md\n", - "Updating ../generated_pages/counters/C00053.md\n", - "Updating ../generated_pages/counters/C00058.md\n", - "Updating ../generated_pages/counters/C00059.md\n", - "Updating ../generated_pages/counters/C00060.md\n", - "Updating ../generated_pages/counters/C00065.md\n", - "Updating ../generated_pages/counters/C00066.md\n", - "Updating ../generated_pages/counters/C00067.md\n", - "Updating ../generated_pages/counters/C00070.md\n", - "Updating ../generated_pages/counters/C00071.md\n", - "Updating ../generated_pages/counters/C00072.md\n", - "Updating ../generated_pages/counters/C00073.md\n", - "Updating ../generated_pages/counters/C00074.md\n", - "Updating ../generated_pages/counters/C00076.md\n", - "Updating ../generated_pages/counters/C00078.md\n", - "Updating ../generated_pages/counters/C00080.md\n", - "Updating ../generated_pages/counters/C00081.md\n", - "Updating ../generated_pages/counters/C00082.md\n", - "Updating ../generated_pages/counters/C00084.md\n", - "Updating ../generated_pages/counters/C00085.md\n", - "Updating ../generated_pages/counters/C00086.md\n", - "Updating ../generated_pages/counters/C00087.md\n", - "Updating ../generated_pages/counters/C00090.md\n", - "Updating ../generated_pages/counters/C00091.md\n", - "Updating ../generated_pages/counters/C00092.md\n", - "Updating ../generated_pages/counters/C00093.md\n", - "Updating ../generated_pages/counters/C00096.md\n", - "Updating ../generated_pages/counters/C00097.md\n", - "Updating ../generated_pages/counters/C00098.md\n", - "Updating ../generated_pages/counters/C00099.md\n", - "Updating ../generated_pages/counters/C00101.md\n", - "Updating ../generated_pages/counters/C00103.md\n", - "Updating ../generated_pages/counters/C00105.md\n", - "Updating ../generated_pages/counters/C00106.md\n", - "Updating ../generated_pages/counters/C00107.md\n", - "Updating ../generated_pages/counters/C00111.md\n", - "Updating ../generated_pages/counters/C00112.md\n", - "Updating ../generated_pages/counters/C00113.md\n", - "Updating ../generated_pages/counters/C00114.md\n", - "Updating ../generated_pages/counters/C00115.md\n", - "Updating ../generated_pages/counters/C00117.md\n", - "Updating ../generated_pages/counters/C00118.md\n", - "Updating ../generated_pages/counters/C00119.md\n", - "Updating ../generated_pages/counters/C00120.md\n", - "Updating ../generated_pages/counters/C00121.md\n", - "Updating ../generated_pages/counters/C00122.md\n", - "Updating ../generated_pages/counters/C00123.md\n", - "Updating ../generated_pages/counters/C00124.md\n", - "Updating ../generated_pages/counters/C00125.md\n", - "Updating ../generated_pages/counters/C00126.md\n", - "Updating ../generated_pages/counters/C00128.md\n", - "Updating ../generated_pages/counters/C00129.md\n", - "Updating ../generated_pages/counters/C00130.md\n", - "Updating ../generated_pages/counters/C00131.md\n", - "Updating ../generated_pages/counters/C00133.md\n", - "Updating ../generated_pages/counters/C00135.md\n", - "Updating ../generated_pages/counters/C00136.md\n", - "Updating ../generated_pages/counters/C00138.md\n", - "Updating ../generated_pages/counters/C00142.md\n", - "Updating ../generated_pages/counters/C00143.md\n", - "Updating ../generated_pages/counters/C00147.md\n", - "Updating ../generated_pages/counters/C00148.md\n", - "Updating ../generated_pages/counters/C00149.md\n", - "Updating ../generated_pages/counters/C00153.md\n", - "Updating ../generated_pages/counters/C00154.md\n", - "Updating ../generated_pages/counters/C00155.md\n", - "Updating ../generated_pages/counters/C00156.md\n", - "Updating ../generated_pages/counters/C00160.md\n", - "Updating ../generated_pages/counters/C00161.md\n", - "Updating ../generated_pages/counters/C00162.md\n", - "Updating ../generated_pages/counters/C00164.md\n", - "Updating ../generated_pages/counters/C00169.md\n", - "Updating ../generated_pages/counters/C00172.md\n", - "Updating ../generated_pages/counters/C00174.md\n", - "Updating ../generated_pages/counters/C00176.md\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Updating ../generated_pages/counters/C00178.md\n", - "Updating ../generated_pages/counters/C00182.md\n", - "Updating ../generated_pages/counters/C00184.md\n", - "Updating ../generated_pages/counters/C00188.md\n", - "Updating ../generated_pages/counters/C00189.md\n", - "Updating ../generated_pages/counters/C00190.md\n", - "Updating ../generated_pages/counters/C00195.md\n", - "Updating ../generated_pages/counters/C00197.md\n", - "Updating ../generated_pages/counters/C00200.md\n", - "Updating ../generated_pages/counters/C00203.md\n", - "Updating ../generated_pages/counters/C00205.md\n", - "Updating ../generated_pages/counters/C00207.md\n", - "Updating ../generated_pages/counters/C00211.md\n", - "Updating ../generated_pages/counters/C00212.md\n", - "Updating ../generated_pages/counters/C00216.md\n", "Temp: objecttype metatechnique\n", "updated ../generated_pages/metatechniques_index.md\n", - "Updating ../generated_pages/metatechniques/M001.md\n", - "Updating ../generated_pages/metatechniques/M002.md\n", - "Updating ../generated_pages/metatechniques/M003.md\n", - "Updating ../generated_pages/metatechniques/M004.md\n", - "Updating ../generated_pages/metatechniques/M005.md\n", - "Updating ../generated_pages/metatechniques/M006.md\n", - "Updating ../generated_pages/metatechniques/M007.md\n", - "Updating ../generated_pages/metatechniques/M008.md\n", - "Updating ../generated_pages/metatechniques/M009.md\n", - "Updating ../generated_pages/metatechniques/M010.md\n", - "Updating ../generated_pages/metatechniques/M011.md\n", - "Updating ../generated_pages/metatechniques/M012.md\n", - "Updating ../generated_pages/metatechniques/M013.md\n", - "Updating ../generated_pages/metatechniques/M014.md\n", "Temp: objecttype actortype\n", "updated ../generated_pages/actortypes_index.md\n", - "Updating ../generated_pages/actortypes/A001.md\n", - "Updating ../generated_pages/actortypes/A003.md\n", - "Updating ../generated_pages/actortypes/A004.md\n", - "Updating ../generated_pages/actortypes/A005.md\n", - "Updating ../generated_pages/actortypes/A006.md\n", - "Updating ../generated_pages/actortypes/A007.md\n", - "Updating ../generated_pages/actortypes/A008.md\n", - "Updating ../generated_pages/actortypes/A009.md\n", - "Updating ../generated_pages/actortypes/A010.md\n", - "Updating ../generated_pages/actortypes/A012.md\n", - "Updating ../generated_pages/actortypes/A013.md\n", - "Updating ../generated_pages/actortypes/A014.md\n", - "Updating ../generated_pages/actortypes/A015.md\n", - "Updating ../generated_pages/actortypes/A016.md\n", - "Updating ../generated_pages/actortypes/A017.md\n", - "Updating ../generated_pages/actortypes/A018.md\n", - "Updating ../generated_pages/actortypes/A019.md\n", - "Updating ../generated_pages/actortypes/A020.md\n", - "Updating ../generated_pages/actortypes/A021.md\n", - "Updating ../generated_pages/actortypes/A023.md\n", - "Updating ../generated_pages/actortypes/A024.md\n", - "Updating ../generated_pages/actortypes/A025.md\n", - "Updating ../generated_pages/actortypes/A026.md\n", - "Updating ../generated_pages/actortypes/A027.md\n", - "Updating ../generated_pages/actortypes/A028.md\n", - "Updating ../generated_pages/actortypes/A029.md\n", - "Updating ../generated_pages/actortypes/A031.md\n", - "Updating ../generated_pages/actortypes/A032.md\n", - "Updating ../generated_pages/actortypes/A033.md\n", "updated ../generated_pages/responsetype_index.md\n", "updated ../generated_pages/detections_index.md\n", "updated ../generated_pages/tactics_by_responsetype_table.md\n", @@ -300,31 +100,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'plan-strategy' is not a recognized DISARM Tactic.\n", - "'plan-objectives' is not a recognized DISARM Tactic.\n", - "'microtarget' is not a recognized DISARM Tactic.\n", - "'select-channels-and-affordances' is not a recognized DISARM Tactic.\n", - "'conduct-pump-priming' is not a recognized DISARM Tactic.\n", - "'deliver-content' is not a recognized DISARM Tactic.\n", - "'drive-offline-activity' is not a recognized DISARM Tactic.\n", - "'persist-in-the-information-environment' is not a recognized DISARM Tactic.\n", - "'assess-effectiveness' is not a recognized DISARM Tactic.\n", - "'target-audience-analysis' is not a recognized DISARM Tactic.\n", - "'develop-narratives' is not a recognized DISARM Tactic.\n", - "'establish-social-assets' is not a recognized DISARM Tactic.\n", - "'establish-legitimacy' is not a recognized DISARM Tactic.\n", - "'maximize-exposure' is not a recognized DISARM Tactic.\n", - "'drive-online-harms' is not a recognized DISARM Tactic.\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "sys.path.insert(0, \"DISARM-STIX2\")\n", @@ -342,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -361,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "scrolled": true }, @@ -908,7 +686,7 @@ "32 " ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } diff --git a/CODE/.ipynb_checkpoints/generate_crosstable_csvs-checkpoint.ipynb b/CODE/.ipynb_checkpoints/generate_crosstable_csvs-checkpoint.ipynb new file mode 100644 index 0000000..ab2148e --- /dev/null +++ b/CODE/.ipynb_checkpoints/generate_crosstable_csvs-checkpoint.ipynb @@ -0,0 +1,755 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# one-shot code to generate crosstable files\n", + "\n", + "Should only need to use this once. \n", + "\n", + "Grabbing these objects: \n", + "* cross_counterid_techniqueid\n", + "* cross_counterid_resourceid\n", + "* cross_counterid_actortypeid\n", + "* cross_detectionid_techniqueid \n", + "* cross_detectionid_resourceid\n", + "* cross_detectionid_actortypeid " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from generate_DISARM_pages import Disarm\n", + "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", + "\n", + "disarm = Disarm()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def grab_crosstable(df, column, outfile):\n", + " df = df[df[column] != '']\n", + " df.to_csv(MASTERDATA_DIR + outfile, index=False)\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idtechnique_id
0C00022T0001
0C00022T0002
0C00022T0003
0C00022T0006
0C00022T0027
.........
134C00216T0018
134C00216T0057
135C00219T0024
135C00219T0026
135C00219T0025
\n", + "

881 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id technique_id\n", + "0 C00022 T0001\n", + "0 C00022 T0002\n", + "0 C00022 T0003\n", + "0 C00022 T0006\n", + "0 C00022 T0027\n", + ".. ... ...\n", + "134 C00216 T0018\n", + "134 C00216 T0057\n", + "135 C00219 T0024\n", + "135 C00219 T0026\n", + "135 C00219 T0025\n", + "\n", + "[881 rows x 2 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_techniqueid, \n", + " 'technique_id', 'cross_counter_technique.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idresource_id
26C00044R004
59C00092R001
63C00097R004
65C00099R004
67C00101R004
69C00105R003
99C00142R004
102C00147R004
103C00148R004
126C00195R002
127C00197R003
\n", + "
" + ], + "text/plain": [ + " disarm_id resource_id\n", + "26 C00044 R004\n", + "59 C00092 R001\n", + "63 C00097 R004\n", + "65 C00099 R004\n", + "67 C00101 R004\n", + "69 C00105 R003\n", + "99 C00142 R004\n", + "102 C00147 R004\n", + "103 C00148 R004\n", + "126 C00195 R002\n", + "127 C00197 R003" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_resourceid, \n", + " 'resource_id', 'cross_counter_resource.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idactortype_id
1C00006A033
2C00008A007
3C00009A016
3C00009A006
4C00010A020
.........
132C00207A018
132C00207A033
133C00212A006
133C00212A018
134C00216A023
\n", + "

79 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id actortype_id\n", + "1 C00006 A033\n", + "2 C00008 A007\n", + "3 C00009 A016\n", + "3 C00009 A006\n", + "4 C00010 A020\n", + ".. ... ...\n", + "132 C00207 A018\n", + "132 C00207 A033\n", + "133 C00212 A006\n", + "133 C00212 A018\n", + "134 C00216 A023\n", + "\n", + "[79 rows x 2 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_actortypeid, \n", + " 'actortype_id', 'cross_counter_actortype.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idtechnique_id
0F00001All
1F00002T0049
1F00002T0052
1F00002T0053
1F00002T0054
.........
82F00083T0012
82F00083T0021
92F00093T0011
93F00094T0013
93F00094T0008
\n", + "

159 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id technique_id\n", + "0 F00001 All\n", + "1 F00002 T0049\n", + "1 F00002 T0052\n", + "1 F00002 T0053\n", + "1 F00002 T0054\n", + ".. ... ...\n", + "82 F00083 T0012\n", + "82 F00083 T0021\n", + "92 F00093 T0011\n", + "93 F00094 T0013\n", + "93 F00094 T0008\n", + "\n", + "[159 rows x 2 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_techniqueid, \n", + " 'technique_id', 'cross_detection_technique.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idresource_id
19F00020R004
81F00082R005
91F00092R006
\n", + "
" + ], + "text/plain": [ + " disarm_id resource_id\n", + "19 F00020 R004\n", + "81 F00082 R005\n", + "91 F00092 R006" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_resourceid, \n", + " 'resource_id', 'cross_detection_resource.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idactortype_id
19F00020A015
19F00020A001
19F00020A031
42F00043A031
42F00043A015
66F00067A001
69F00070A001
70F00071A001
71F00072A001
78F00079A001
79F00080A015
81F00082A028
90F00091A001
90F00091A024
91F00092A015
93F00094A028
\n", + "
" + ], + "text/plain": [ + " disarm_id actortype_id\n", + "19 F00020 A015\n", + "19 F00020 A001\n", + "19 F00020 A031\n", + "42 F00043 A031\n", + "42 F00043 A015\n", + "66 F00067 A001\n", + "69 F00070 A001\n", + "70 F00071 A001\n", + "71 F00072 A001\n", + "78 F00079 A001\n", + "79 F00080 A015\n", + "81 F00082 A028\n", + "90 F00091 A001\n", + "90 F00091 A024\n", + "91 F00092 A015\n", + "93 F00094 A028" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_actortypeid, \n", + " 'actortype_id', 'cross_detection_actortype.csv')" + ] + }, + { + "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 +} diff --git a/CODE/.ipynb_checkpoints/generate_csv_versions_of_excelfiles-checkpoint.ipynb b/CODE/.ipynb_checkpoints/generate_csv_versions_of_excelfiles-checkpoint.ipynb new file mode 100644 index 0000000..7fec515 --- /dev/null +++ b/CODE/.ipynb_checkpoints/generate_csv_versions_of_excelfiles-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/CODE/ARCHIVED_CODE/generate_crosstable_csvs.ipynb b/CODE/ARCHIVED_CODE/generate_crosstable_csvs.ipynb new file mode 100644 index 0000000..ab2148e --- /dev/null +++ b/CODE/ARCHIVED_CODE/generate_crosstable_csvs.ipynb @@ -0,0 +1,755 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# one-shot code to generate crosstable files\n", + "\n", + "Should only need to use this once. \n", + "\n", + "Grabbing these objects: \n", + "* cross_counterid_techniqueid\n", + "* cross_counterid_resourceid\n", + "* cross_counterid_actortypeid\n", + "* cross_detectionid_techniqueid \n", + "* cross_detectionid_resourceid\n", + "* cross_detectionid_actortypeid " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from generate_DISARM_pages import Disarm\n", + "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", + "\n", + "disarm = Disarm()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def grab_crosstable(df, column, outfile):\n", + " df = df[df[column] != '']\n", + " df.to_csv(MASTERDATA_DIR + outfile, index=False)\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idtechnique_id
0C00022T0001
0C00022T0002
0C00022T0003
0C00022T0006
0C00022T0027
.........
134C00216T0018
134C00216T0057
135C00219T0024
135C00219T0026
135C00219T0025
\n", + "

881 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id technique_id\n", + "0 C00022 T0001\n", + "0 C00022 T0002\n", + "0 C00022 T0003\n", + "0 C00022 T0006\n", + "0 C00022 T0027\n", + ".. ... ...\n", + "134 C00216 T0018\n", + "134 C00216 T0057\n", + "135 C00219 T0024\n", + "135 C00219 T0026\n", + "135 C00219 T0025\n", + "\n", + "[881 rows x 2 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_techniqueid, \n", + " 'technique_id', 'cross_counter_technique.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idresource_id
26C00044R004
59C00092R001
63C00097R004
65C00099R004
67C00101R004
69C00105R003
99C00142R004
102C00147R004
103C00148R004
126C00195R002
127C00197R003
\n", + "
" + ], + "text/plain": [ + " disarm_id resource_id\n", + "26 C00044 R004\n", + "59 C00092 R001\n", + "63 C00097 R004\n", + "65 C00099 R004\n", + "67 C00101 R004\n", + "69 C00105 R003\n", + "99 C00142 R004\n", + "102 C00147 R004\n", + "103 C00148 R004\n", + "126 C00195 R002\n", + "127 C00197 R003" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_resourceid, \n", + " 'resource_id', 'cross_counter_resource.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idactortype_id
1C00006A033
2C00008A007
3C00009A016
3C00009A006
4C00010A020
.........
132C00207A018
132C00207A033
133C00212A006
133C00212A018
134C00216A023
\n", + "

79 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id actortype_id\n", + "1 C00006 A033\n", + "2 C00008 A007\n", + "3 C00009 A016\n", + "3 C00009 A006\n", + "4 C00010 A020\n", + ".. ... ...\n", + "132 C00207 A018\n", + "132 C00207 A033\n", + "133 C00212 A006\n", + "133 C00212 A018\n", + "134 C00216 A023\n", + "\n", + "[79 rows x 2 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_counterid_actortypeid, \n", + " 'actortype_id', 'cross_counter_actortype.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idtechnique_id
0F00001All
1F00002T0049
1F00002T0052
1F00002T0053
1F00002T0054
.........
82F00083T0012
82F00083T0021
92F00093T0011
93F00094T0013
93F00094T0008
\n", + "

159 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " disarm_id technique_id\n", + "0 F00001 All\n", + "1 F00002 T0049\n", + "1 F00002 T0052\n", + "1 F00002 T0053\n", + "1 F00002 T0054\n", + ".. ... ...\n", + "82 F00083 T0012\n", + "82 F00083 T0021\n", + "92 F00093 T0011\n", + "93 F00094 T0013\n", + "93 F00094 T0008\n", + "\n", + "[159 rows x 2 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_techniqueid, \n", + " 'technique_id', 'cross_detection_technique.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idresource_id
19F00020R004
81F00082R005
91F00092R006
\n", + "
" + ], + "text/plain": [ + " disarm_id resource_id\n", + "19 F00020 R004\n", + "81 F00082 R005\n", + "91 F00092 R006" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_resourceid, \n", + " 'resource_id', 'cross_detection_resource.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idactortype_id
19F00020A015
19F00020A001
19F00020A031
42F00043A031
42F00043A015
66F00067A001
69F00070A001
70F00071A001
71F00072A001
78F00079A001
79F00080A015
81F00082A028
90F00091A001
90F00091A024
91F00092A015
93F00094A028
\n", + "
" + ], + "text/plain": [ + " disarm_id actortype_id\n", + "19 F00020 A015\n", + "19 F00020 A001\n", + "19 F00020 A031\n", + "42 F00043 A031\n", + "42 F00043 A015\n", + "66 F00067 A001\n", + "69 F00070 A001\n", + "70 F00071 A001\n", + "71 F00072 A001\n", + "78 F00079 A001\n", + "79 F00080 A015\n", + "81 F00082 A028\n", + "90 F00091 A001\n", + "90 F00091 A024\n", + "91 F00092 A015\n", + "93 F00094 A028" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grab_crosstable(disarm.cross_detectionid_actortypeid, \n", + " 'actortype_id', 'cross_detection_actortype.csv')" + ] + }, + { + "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 +} diff --git a/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.ipynb b/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.ipynb new file mode 100644 index 0000000..baca7f0 --- /dev/null +++ b/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.ipynb @@ -0,0 +1,108 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generate CSV version of DISARM dataset\n", + "\n", + "Generate CSV files to match older Excelfile versions of DISARM" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import pandas as pd\n", + "import os\n", + "\n", + "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", + "\n", + " \n", + "frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx' \n", + "datafile = MASTERDATA_DIR + 'DISARM_DATA_MASTER.xlsx'\n", + "#commentsfile = MASTERDATA_DIR + 'DISARM_COMMENTS_MASTER.csv'\n", + " \n", + "# Get basic datasets from files\n", + "metadata = {}\n", + "for filein in [frameworkfile, datafile]:\n", + " xlsx = pd.ExcelFile(filein)\n", + " for sheetname in xlsx.sheet_names:\n", + " print('{} sheet {}'.format(filein, sheetname))\n", + " metadata[sheetname] = xlsx.parse(sheetname)\n", + " metadata[sheetname].fillna('', inplace=True)\n", + " metadata[sheetname].to_csv(MASTERDATA_DIR + sheetname + '.csv', index=False)\n", + "\n", + "# create cross tables using DISARM code\n", + "def create_cross_table(df, col, newcol, divider=','):\n", + " crosstable = df.join(df[col]\n", + " .str.split(divider, expand=True).stack()\n", + " .reset_index(drop=True,level=1)\n", + " .rename(newcol)).drop(col, axis=1)\n", + " crosstable = crosstable[crosstable[newcol].notnull()]\n", + " crosstable[newcol+'_id'] = crosstable[newcol].str.split(' ').str[0]\n", + " crosstable.drop(newcol, axis=1, inplace=True)\n", + " return crosstable\n", + "\n", + "def create_incident_technique_crosstable(it_metadata):\n", + " # Generate full cross-table between incidents and techniques\n", + " it = it_metadata\n", + " it.index=it['disarm_id']\n", + " 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('disarm_id', axis=1).reset_index()).drop('technique_ids', axis=1)\n", + " it = it.merge(self.df_incidents[['disarm_id','name']], \n", + " left_on='incident_id', right_on='disarm_id',\n", + " suffixes=['','_incident']).drop('incident_id', axis=1)\n", + " it = it.merge(self.df_techniques[['disarm_id','name']], \n", + " left_on='technique_id', right_on='disarm_id',\n", + " suffixes=['','_technique']).drop('technique_id', axis=1)\n", + " return(it)\n", + "\n", + "it = create_incident_technique_crosstable(metadata['incidenttechniques'])\n", + "cross_counterid_techniqueid = create_cross_table(df_counters[['disarm_id', 'techniques']], \n", + " 'techniques', 'technique', '\\n') \n", + "cross_counterid_resourceid = create_cross_table(df_counters[['disarm_id', 'resources_needed']], \n", + " 'resources_needed', 'resource', ',')\n", + "cross_counterid_actortypeid = create_cross_table(self.df_counters[['disarm_id', 'actortypes']], \n", + " 'actortypes', 'actortype', ',')\n", + "cross_detectionid_techniqueid = create_cross_table(self.df_detections[['disarm_id', 'techniques']], \n", + " 'techniques', 'technique', '\\n') \n", + "cross_detectionid_resourceid = create_cross_table(self.df_detections[['disarm_id', 'resources_needed']], \n", + " 'resources_needed', 'resource', ',')\n", + "cross_detectionid_actortypeid = create_cross_table(self.df_detections[['disarm_id', 'actortypes']], \n", + " 'actortypes', 'actortype', ',')\n", + "\n" + ] + }, + { + "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 +} diff --git a/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.py b/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.py new file mode 100644 index 0000000..cc34d93 --- /dev/null +++ b/CODE/ARCHIVED_CODE/generate_csv_versions_of_excelfiles.py @@ -0,0 +1,22 @@ + +import pandas as pd +import os + +MASTERDATA_DIR = '../DISARM_MASTER_DATA/' + + +frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx' +datafile = MASTERDATA_DIR + 'DISARM_DATA_MASTER.xlsx' +#commentsfile = MASTERDATA_DIR + 'DISARM_COMMENTS_MASTER.csv' + +# Get basic datasets from files +metadata = {} +for filein in [frameworkfile, datafile]: + xlsx = pd.ExcelFile(filein) + for sheetname in xlsx.sheet_names: + print('{} sheet {}'.format(filein, sheetname)) + metadata[sheetname] = xlsx.parse(sheetname) + metadata[sheetname].fillna('', inplace=True) + metadata[sheetname].to_csv(MASTERDATA_DIR + sheetname + '.csv', index=False) + +# Then use existing code to create the crosstable files. diff --git a/CODE/__pycache__/generate_DISARM_pages.cpython-38.pyc b/CODE/__pycache__/generate_DISARM_pages.cpython-38.pyc index 9f62f15f8d95f4503c70a2b813e904f8a8eafa1d..7f6d13130339db70e0020a78d0eb01601febac77 100644 GIT binary patch delta 6919 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 U*nqMTo24`>t^e(F+MVS80f;<_x{ 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 iLuwPZ;K#^hn$9FN{2wn#Zvc=7`4f*C zDQWop{a|AKuNO7#pFBAJ$zgCCkNgY`X|6^(8ExG))H~;z>YaD zukGp2b<%P63yFSUka4L0S&OQmCn)An+Gqpxq8 zRHPC#Ql<)xxAObBJyX&1bV|{gYL2KDRY7H1ZbU24>7USSnozVeC%B6=3F=FV|43$u z&Sv~{?$}Oabp9t&%QOYr1@N=nqqA1%BIslE@{jH?PL~w@=ngr$%y-6fYCrb}V=upF z;kJ2tg)WnG>{b@N3d$J0HadTfu7E3#r>Zy$dp0-=^g3NR!D-X4KsnCIT0Tv0;3Pl3 z`2<}BwL)*wIMwJadYh){8qLrwy+gllRYn>9;gTH|Qq)j&9NK>2_|1TEHz9zcJ`8 z-Fso^8tzu4j|ZzUmuWl0+Si6Sc&;6sr=^1_x__u2>bj=JpA32z4&g=7baHX?Wm={O zEu*E=3O#HY^yr1LSAy&k-OngE-57nkrtwo-^&bN8M{c+F>2j&KxZMpJNr2-GJkLpX zx`A}UsL}3G;FOBRtC_c4opX8;3zOIhw!5)NjM>m#9O9Wu_+Hu2g z4|&7LQDcagi61qvQQUOEI*b93+>S*cSO^5hTfJkfA1lH&jt}&IB}_Yh8{wnZ+He{@ zA%ZC3yL5%$NDwa^KN)TrO1=`G*zq0eb-KeN9bMwYO~XX(9r!c@iNZv@*saaX%(e#M zjJ#&p4&-bW)x4ozXEH6O)g!T)Zg!`SD08#32vGjqZKb6RoN4a;_pZM?ODb+jj#(U^ zhMzn-7M?SBE3#iZ^am~G(+2+8-nCG!%byud27Ze@{s=8!OVzsBkpS!u=>H`N_`rvwHtR+3mzOq1a;=ah=Ogm7&g6N8@G{yjg%Ikl{Rv3 zt(2OZaTuj$Bku0FHu%~*9lx9AWFpeM@S|3c=GsA&7J}`d(L>s1q`FoTvzAf|+UbNz zE$G2wNU3$fztpLz+>O!bb#_|N*i*(U0J3HCxZL3n;~@!dB)(bW$?gx zsn}xI=C%2L{wLBaNWEB@m`JQf+DBXBFjp2r^K zmND$cD5TZM%IpOhERY$^#Ftxcd9*cXaM9Ml*A zemFigoRvKVCHM5vf+4B&Iie7ZggoK`hb<`I&Fm(2-0>v)IpS^j5n%%xHB(3^G~Dt| z;0sS-IDj_%BoX0yk4+~%83d7ARk;T6_moB;tTX^ITf$7@xSiSndeDk7HvuOMqb$)u zhKDlDtv2Eo&I|mv{dK0KcC!~LcyP!>`eIEK;YDE+DwA%>?GM3C#wPH@ygPtj~Az%t}i8$G@YET-2j9GnWP17!>Eb965+|Ph<9ke@b|9(^D=b z0eo}^9-57Y4k>~7ChCtPe}w%&$$SzyQT63kw&6&<(!Hpn-|%>_;Ajr6bt#)19rs7m ze6N95WhX!3S=j-HCLJ6BFqNtKxi4fEyWfI-#5ry_O(O8NV_52K?iUx31 zptx3sDRG(C&vL_oR$Sv|1`YmU;M4O902XshDo|4a#VztnMfoh4R+aZSgc z8H(dr;yTJ+Ca1I)%*OE4ba4-DYI~kayB=7%{H#^dg6C1(@VwOOB4GJ4GfW}-U2\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0DISARM PhaseDISARM TacticDISARM TechniqueDISARM SubtechniqueDescriptionDISARM IDFeedback from EEASAction to DoAction TakenWhere did it come from?Where from more info
01PlanNaNNaNNaNEnvision the desired outcome. Lay out effectiv...P01NaNNaNNaNAMITTNaN
136PrepareNaNNaNNaNActivities conducted before execution to impro...P02NaNNaNNaNNaNNaN
2126ExecuteNaNNaNNaNRun the action, from initial exposure to wrap-...P03NaNNaNNaNNaNNaN
3263AssessNaNNaNNaNAssess effectiveness of action, for use in fut...P04NaNNaNNaNNaNNaN
47PlanPlan ObjectivesDismissDiscredit Credible SourcesPlan to delegitimize the media landscape and d...ST0001NaNNaNNaNAMITTT0067 Plan to Discredit Credible Sources
.......................................
272184ExecuteMaximize ExposureNaNNaNMaximize exposure of the target audience to in...TA12NaNNaNNaNNaNNaN
273204ExecuteDrive Online HarmsNaNNaNActions taken by an influence operation to har...TA13NaNNaNNaNNaNNaN
274221ExecuteDrive Offline ActivityNaNNaNMove incident/campaign from online to offline....TA14NaNNaNNaNNaNNaN
275235ExecutePersist in the Information SpaceNaNNaNPersist in the Information Space refers to tak...TA15NaNNaNNaNNaNNaN
276264AssessAssess EffectivenessNaNNaNNaNTA16NaNNaNNaNNaNNaN
\n", - "

277 rows × 12 columns

\n", - "" - ], - "text/plain": [ - " Unnamed: 0 DISARM Phase DISARM Tactic \\\n", - "0 1 Plan NaN \n", - "1 36 Prepare NaN \n", - "2 126 Execute NaN \n", - "3 263 Assess NaN \n", - "4 7 Plan Plan Objectives \n", - ".. ... ... ... \n", - "272 184 Execute Maximize Exposure \n", - "273 204 Execute Drive Online Harms \n", - "274 221 Execute Drive Offline Activity \n", - "275 235 Execute Persist in the Information Space \n", - "276 264 Assess Assess Effectiveness \n", - "\n", - " DISARM Technique DISARM Subtechnique \\\n", - "0 NaN NaN \n", - "1 NaN NaN \n", - "2 NaN NaN \n", - "3 NaN NaN \n", - "4 Dismiss Discredit Credible Sources \n", - ".. ... ... \n", - "272 NaN NaN \n", - "273 NaN NaN \n", - "274 NaN NaN \n", - "275 NaN NaN \n", - "276 NaN NaN \n", - "\n", - " Description DISARM ID \\\n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 \n", - "4 Plan to delegitimize the media landscape and d... ST0001 \n", - ".. ... ... \n", - "272 Maximize exposure of the target audience to in... TA12 \n", - "273 Actions taken by an influence operation to har... TA13 \n", - "274 Move incident/campaign from online to offline.... TA14 \n", - "275 Persist in the Information Space refers to tak... TA15 \n", - "276 NaN TA16 \n", - "\n", - " Feedback from EEAS Action to Do Action Taken Where did it come from? \\\n", - "0 NaN NaN NaN AMITT \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 NaN NaN NaN AMITT \n", - ".. ... ... ... ... \n", - "272 NaN NaN NaN NaN \n", - "273 NaN NaN NaN NaN \n", - "274 NaN NaN NaN NaN \n", - "275 NaN NaN NaN NaN \n", - "276 NaN NaN NaN NaN \n", - "\n", - " Where from more info \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 T0067 Plan to Discredit Credible Sources \n", - ".. ... \n", - "272 NaN \n", - "273 NaN \n", - "274 NaN \n", - "275 NaN \n", - "276 NaN \n", - "\n", - "[277 rows x 12 columns]" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import pandas as pd\n", "\n", @@ -322,88 +42,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM ID
0PlanNaNEnvision the desired outcome. Lay out effectiv...P01
1PrepareNaNActivities conducted before execution to impro...P02
2ExecuteNaNRun the action, from initial exposure to wrap-...P03
3AssessNaNAssess effectiveness of action, for use in fut...P04
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "0 Plan NaN \n", - "1 Prepare NaN \n", - "2 Execute NaN \n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID \n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "phases = df[['DISARM Phase', 'DISARM Tactic', 'Description', 'DISARM ID']]\n", "phases = phases[phases['DISARM Tactic'].isnull()]\n", @@ -412,26 +53,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 4 and 4\n", - "first list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "second list: Index(['Execute', 'Prepare', 'Plan', 'Assess'], dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Phase, DISARM Tactic, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(phases['DISARM Phase'], df['DISARM Phase'])\n", "check_ids(phases)" @@ -439,196 +63,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TacticDISARM TechniqueDescriptionDISARM ID
261Plan StrategyNaNDefine the desired end state, i.e. the set of ...TA01
262Plan ObjectivesNaNSet clearly defined, measurable, and achievabl...TA02
263Target Audience AnalysisNaNIdentifying and analyzing the target audience ...TA03
264Develop NarrativesNaNThe promotion of beneficial master narratives ...TA04
265Develop ContentNaNNaNTA05
266Establish Social AssetsNaNEstablishing information assets generates mess...TA06
267Establish LegitimacyNaNNaNTA07
268MicrotargetNaNTarget very specific populations of peopleTA08
269Select Channels and AffordancesNaNSelecting platforms and affordances assesses w...TA09
270Conduct Pump PrimingNaNRelease content on a targetted small scale, pr...TA10
271Deliver ContentNaNRelease content to general public or larger po...TA11
272Maximize ExposureNaNMaximize exposure of the target audience to in...TA12
273Drive Online HarmsNaNActions taken by an influence operation to har...TA13
274Drive Offline ActivityNaNMove incident/campaign from online to offline....TA14
275Persist in the Information SpaceNaNPersist in the Information Space refers to tak...TA15
276Assess EffectivenessNaNNaNTA16
\n", - "
" - ], - "text/plain": [ - " DISARM Tactic DISARM Technique \\\n", - "261 Plan Strategy NaN \n", - "262 Plan Objectives NaN \n", - "263 Target Audience Analysis NaN \n", - "264 Develop Narratives NaN \n", - "265 Develop Content NaN \n", - "266 Establish Social Assets NaN \n", - "267 Establish Legitimacy NaN \n", - "268 Microtarget NaN \n", - "269 Select Channels and Affordances NaN \n", - "270 Conduct Pump Priming NaN \n", - "271 Deliver Content NaN \n", - "272 Maximize Exposure NaN \n", - "273 Drive Online Harms NaN \n", - "274 Drive Offline Activity NaN \n", - "275 Persist in the Information Space NaN \n", - "276 Assess Effectiveness NaN \n", - "\n", - " Description DISARM ID \n", - "261 Define the desired end state, i.e. the set of ... TA01 \n", - "262 Set clearly defined, measurable, and achievabl... TA02 \n", - "263 Identifying and analyzing the target audience ... TA03 \n", - "264 The promotion of beneficial master narratives ... TA04 \n", - "265 NaN TA05 \n", - "266 Establishing information assets generates mess... TA06 \n", - "267 NaN TA07 \n", - "268 Target very specific populations of people TA08 \n", - "269 Selecting platforms and affordances assesses w... TA09 \n", - "270 Release content on a targetted small scale, pr... TA10 \n", - "271 Release content to general public or larger po... TA11 \n", - "272 Maximize exposure of the target audience to in... TA12 \n", - "273 Actions taken by an influence operation to har... TA13 \n", - "274 Move incident/campaign from online to offline.... TA14 \n", - "275 Persist in the Information Space refers to tak... TA15 \n", - "276 NaN TA16 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "tactics = df[['DISARM Tactic', 'DISARM Technique', 'Description', 'DISARM ID']]#['DISARM Tactic'].notnull()\n", "tactics = tactics[(tactics['DISARM Tactic'].notnull()) & (tactics['DISARM Technique'].isnull())]\n", @@ -637,41 +74,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 16 and 16\n", - "first list: Index(['Drive Online Harms', 'Maximize Exposure', 'Conduct Pump Priming',\n", - " 'Deliver Content', 'Persist in the Information Space',\n", - " 'Assess Effectiveness', 'Establish Social Assets',\n", - " 'Target Audience Analysis', 'Develop Narratives', 'Plan Strategy',\n", - " 'Select Channels and Affordances', 'Develop Content', 'Plan Objectives',\n", - " 'Microtarget', 'Establish Legitimacy', 'Drive Offline Activity'],\n", - " dtype='object')\n", - "second list: Index(['Develop Content', 'Establish Social Assets',\n", - " 'Select Channels and Affordances', 'Persist in the Information Space',\n", - " 'Target Audience Analysis', 'Maximize Exposure', 'Drive Online Harms',\n", - " 'Establish Legitimacy', 'Assess Effectiveness',\n", - " 'Drive Offline Activity', 'Deliver Content', 'Develop Narratives',\n", - " 'Plan Objectives', 'Conduct Pump Priming', 'Microtarget',\n", - " 'Plan Strategy'],\n", - " dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Tactic, DISARM Technique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(tactics['DISARM Tactic'], df['DISARM Tactic'])\n", "check_ids(tactics)" @@ -679,154 +86,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TechniqueDISARM SubtechniqueDescriptionDISARM ID
164Determine Target AudiencesNaNNaNT0001
165Determine Strategic EndsNaNNaNT0002
166DismissNaNPush back against criticism by dismissing your...T0003
167DistortNaNTwist the narrative. Take information, or arti...T0004
168DistractNaNShift attention to a different narrative or ac...T0005
...............
256Exploit TOS/Content ModerationNaNNaNT0093
257Play the long gameNaNPlay the long game refers to two phenomena: 1....T0094
258Measure PerformanceNaNNaNT0095
259Measure EffectivenessNaNNaNT0096
260Measure Effectiveness Indicators (or KPIs)NaNNaNT0097
\n", - "

97 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " DISARM Technique DISARM Subtechnique \\\n", - "164 Determine Target Audiences NaN \n", - "165 Determine Strategic Ends NaN \n", - "166 Dismiss NaN \n", - "167 Distort NaN \n", - "168 Distract NaN \n", - ".. ... ... \n", - "256 Exploit TOS/Content Moderation NaN \n", - "257 Play the long game NaN \n", - "258 Measure Performance NaN \n", - "259 Measure Effectiveness NaN \n", - "260 Measure Effectiveness Indicators (or KPIs) NaN \n", - "\n", - " Description DISARM ID \n", - "164 NaN T0001 \n", - "165 NaN T0002 \n", - "166 Push back against criticism by dismissing your... T0003 \n", - "167 Twist the narrative. Take information, or arti... T0004 \n", - "168 Shift attention to a different narrative or ac... T0005 \n", - ".. ... ... \n", - "256 NaN T0093 \n", - "257 Play the long game refers to two phenomena: 1.... T0094 \n", - "258 NaN T0095 \n", - "259 NaN T0096 \n", - "260 NaN T0097 \n", - "\n", - "[97 rows x 4 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "techs = df[['DISARM Technique', 'DISARM Subtechnique', 'Description', 'DISARM ID']]\n", "techs = techs[(techs['DISARM Technique'].notnull()) & (techs['DISARM Subtechnique'].isnull())]\n", @@ -835,124 +97,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 97 and 97\n", - "first list: Index(['Leverage Echo Chambers/Filter Bubbles',\n", - " 'Map Target Audience Information Environment', 'Physical Violence',\n", - " 'Direct Users to Alternative Platforms', 'Develop Audio-based Content',\n", - " 'Develop Owned Media Assets', 'Leverage Conspiracy Theory Narratives',\n", - " 'Develop Text-based Content', 'Develop Video-based Content',\n", - " 'Deliver Ads', 'Leverage Content Farm',\n", - " 'Bookmarking and Content Curation', 'Use Search Engine Optimization',\n", - " 'Livestream', 'Respond to Breaking News Event or Active Crisis',\n", - " 'Recruit bad actors', 'Incentivize Sharing', 'Media Sharing Networks',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Create Inauthentic Accounts', 'Prepare fundraising campaigns', 'Email',\n", - " 'Online polls', 'Purchase Targeted Advertisements',\n", - " 'Obtain Private Documents', 'Play the long game', 'Build Network',\n", - " ' Social Networks', 'Discussion Forums', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Conduct fundraising', 'Acquire/ recruit Network', 'Cross-Posting',\n", - " 'Leverage Existing Narratives', 'Traditional Media',\n", - " 'Conceal Operational Activity', 'Create Clickbait',\n", - " 'Reuse Existing Content', 'Measure Effectiveness', 'Distort',\n", - " 'Conceal Infrastructure', 'Generate information pollution',\n", - " 'Develop New Narratives', 'Bait legitimate influencers',\n", - " 'Facilitate State Propaganda', 'Post Content', 'Co-opt Trusted Sources',\n", - " 'Seed distortions', 'Compromise legitimate accounts',\n", - " 'Blogging and Publishing Networks', 'Platform Filtering',\n", - " 'Determine Target Audiences', 'Dismiss', 'Consumer Review Networks',\n", - " 'Merchandising/ Advertising', 'Develop Image-based Content',\n", - " 'Prepare Assets Impersonating Legitimate Entities',\n", - " 'Flooding the Information Space', 'Distract', 'Measure Performance',\n", - " 'Distort facts', 'Use fake experts', 'Comment or Reply on Content',\n", - " 'Create fake experts', 'Create personas', 'Seed Kernel of truth',\n", - " 'Conceal People', 'Attract Traditional Media',\n", - " 'Determine Strategic Ends', 'Create inauthentic websites',\n", - " 'Cultivate ignorant agents', 'Create Localized Content',\n", - " 'Create hashtags and search artifacts',\n", - " 'Censor social media as a political force', 'Dismay',\n", - " 'Segment Audiences', 'Establish Inauthentic News Sites',\n", - " 'Organize Events', 'Harass', 'Suppress Opposition',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Infiltrate Existing Networks', 'Formal Diplomatic Channels',\n", - " 'Chat apps', 'Encourage Attendance at Events',\n", - " 'Develop Competing Narratives', 'Employ Commercial Analytic Firms',\n", - " 'Degrade Adversary', 'Amplify Existing Narrative',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Physical Broadcast Capabilities',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative',\n", - " 'Manipulate Platform Algorithm', 'Trial content',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "second list: Index(['Conceal Operational Activity',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Flooding the Information Space', ' Social Networks',\n", - " 'Segment Audiences', 'Conceal People',\n", - " 'Map Target Audience Information Environment', 'Conceal Infrastructure',\n", - " 'Measure Effectiveness', 'Harass',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Reuse Existing Content', 'Create Inauthentic Accounts',\n", - " 'Develop Image-based Content', 'Obtain Private Documents',\n", - " 'Co-opt Trusted Sources', 'Recruit bad actors',\n", - " 'Leverage Echo Chambers/Filter Bubbles', 'Build Network',\n", - " 'Post Content', 'Measure Performance', 'Traditional Media',\n", - " 'Cross-Posting', 'Media Sharing Networks', 'Suppress Opposition',\n", - " 'Develop Text-based Content', 'Leverage Content Farm',\n", - " 'Infiltrate Existing Networks', 'Physical Violence', 'Livestream',\n", - " 'Organize Events', 'Establish Inauthentic News Sites', 'Distort facts',\n", - " 'Leverage Conspiracy Theory Narratives', 'Develop Audio-based Content',\n", - " 'Incentivize Sharing', 'Deliver Ads', 'Generate information pollution',\n", - " 'Acquire/ recruit Network', 'Encourage Attendance at Events',\n", - " 'Develop Video-based Content', 'Prepare fundraising campaigns',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Assets Impersonating Legitimate Entities', 'Chat apps',\n", - " 'Discussion Forums', 'Comment or Reply on Content',\n", - " 'Merchandising/ Advertising', 'Manipulate Platform Algorithm',\n", - " 'Conduct fundraising', 'Create fake experts', 'Dismiss',\n", - " 'Create personas', 'Develop Owned Media Assets',\n", - " 'Direct Users to Alternative Platforms', 'Create Clickbait',\n", - " 'Leverage Existing Narratives', 'Cultivate ignorant agents',\n", - " 'Play the long game', 'Develop New Narratives',\n", - " 'Use Search Engine Optimization', 'Purchase Targeted Advertisements',\n", - " 'Use fake experts', 'Determine Target Audiences',\n", - " 'Facilitate State Propaganda', 'Create Localized Content',\n", - " 'Attract Traditional Media', 'Trial content',\n", - " 'Create inauthentic websites', 'Bait legitimate influencers', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Seed Kernel of truth', 'Censor social media as a political force',\n", - " 'Seed distortions', 'Bookmarking and Content Curation',\n", - " 'Degrade Adversary', 'Consumer Review Networks', 'Platform Filtering',\n", - " 'Create hashtags and search artifacts', 'Develop Competing Narratives',\n", - " 'Distort', 'Prepare Physical Broadcast Capabilities',\n", - " 'Amplify Existing Narrative', 'Determine Strategic Ends',\n", - " 'Employ Commercial Analytic Firms',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative', 'Dismay',\n", - " 'Formal Diplomatic Channels', 'Blogging and Publishing Networks',\n", - " 'Compromise legitimate accounts', 'Distract', 'Online polls', 'Email',\n", - " 'Respond to Breaking News Event or Active Crisis',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Technique, DISARM Subtechnique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(techs['DISARM Technique'], df['DISARM Technique'])\n", "check_ids(techs)\n", @@ -961,167 +110,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM SubtechniqueDISARM TechniqueDescriptionDISARM ID
4Discredit Credible SourcesDismissPlan to delegitimize the media landscape and d...ST0001
5Monitor Social Media AnalyticsMap Target Audience Information EnvironmentAn influence operation may use social media an...ST0002
6Evaluate Media SurveysMap Target Audience Information EnvironmentAn influence operation may evaluate its own or...ST0003
7Identify Trending Topics/HashtagsMap Target Audience Information EnvironmentAn influence operation may identify trending h...ST0004
8Conduct Web Traffic AnalysisMap Target Audience Information EnvironmentAn influence operation may conduct web traffic...ST0005
...............
159AwarenessMeasure EffectivenessNaNST0156
160KnowledgeMeasure EffectivenessNaNST0157
161Action/attitudeMeasure EffectivenessNaNST0158
162Message reachMeasure Effectiveness Indicators (or KPIs)Monitor and evaluate message reach in misinfor...ST0159
163Social media engagementMeasure Effectiveness Indicators (or KPIs)Monitor and evaluate social media engagement i...ST0160
\n", - "

160 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " DISARM Subtechnique \\\n", - "4 Discredit Credible Sources \n", - "5 Monitor Social Media Analytics \n", - "6 Evaluate Media Surveys \n", - "7 Identify Trending Topics/Hashtags \n", - "8 Conduct Web Traffic Analysis \n", - ".. ... \n", - "159 Awareness \n", - "160 Knowledge \n", - "161 Action/attitude \n", - "162 Message reach \n", - "163 Social media engagement \n", - "\n", - " DISARM Technique \\\n", - "4 Dismiss \n", - "5 Map Target Audience Information Environment \n", - "6 Map Target Audience Information Environment \n", - "7 Map Target Audience Information Environment \n", - "8 Map Target Audience Information Environment \n", - ".. ... \n", - "159 Measure Effectiveness \n", - "160 Measure Effectiveness \n", - "161 Measure Effectiveness \n", - "162 Measure Effectiveness Indicators (or KPIs) \n", - "163 Measure Effectiveness Indicators (or KPIs) \n", - "\n", - " Description DISARM ID \n", - "4 Plan to delegitimize the media landscape and d... ST0001 \n", - "5 An influence operation may use social media an... ST0002 \n", - "6 An influence operation may evaluate its own or... ST0003 \n", - "7 An influence operation may identify trending h... ST0004 \n", - "8 An influence operation may conduct web traffic... ST0005 \n", - ".. ... ... \n", - "159 NaN ST0156 \n", - "160 NaN ST0157 \n", - "161 NaN ST0158 \n", - "162 Monitor and evaluate message reach in misinfor... ST0159 \n", - "163 Monitor and evaluate social media engagement i... ST0160 \n", - "\n", - "[160 rows x 4 columns]" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "subs = df[['DISARM Subtechnique', 'DISARM Technique', 'Description', 'DISARM ID']]\n", "subs = subs[subs['DISARM Subtechnique'].notnull()]\n", @@ -1130,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1140,50 +131,11 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 159 and 159\n", - "first list: Index(['Conceal Network Identity', 'Co-opt Influencers', 'Newspaper',\n", - " 'Utilize Academic/Pseudoscientific Justifications',\n", - " 'Legacy web content', 'Audio sharing', 'Utilize Butterfly Attack',\n", - " 'Demographic Segmentation', 'Political Segmentation',\n", - " 'Create Organizations',\n", - " ...\n", - " 'Generate Content Unrelated to Narrative', 'Hijack existing hashtag',\n", - " 'Delete Opposing Content', 'Backstop personas ',\n", - " 'Co-Opt Trusted Individuals', 'Post Across Groups',\n", - " 'Identify Data Voids', 'Create fake research', 'Content Focused',\n", - " 'Share Memes'],\n", - " dtype='object', length=159)\n", - "second list: Index(['Conceal Network Identity', 'Co-opt Influencers', 'Newspaper',\n", - " 'Utilize Academic/Pseudoscientific Justifications',\n", - " 'Legacy web content', 'Audio sharing', 'Utilize Butterfly Attack',\n", - " 'Demographic Segmentation', 'Political Segmentation',\n", - " 'Create Organizations',\n", - " ...\n", - " 'Generate Content Unrelated to Narrative', 'Hijack existing hashtag',\n", - " 'Delete Opposing Content', 'Backstop personas ',\n", - " 'Co-Opt Trusted Individuals', 'Post Across Groups',\n", - " 'Identify Data Voids', 'Create fake research', 'Content Focused',\n", - " 'Share Memes'],\n", - " dtype='object', length=159)\n", - "set difference: set()\n", - "null ids: Empty DataFrame\n", - "Columns: [DISARM Subtechnique, Description, DISARM ID]\n", - "Index: []\n", - "repeated ids: Empty DataFrame\n", - "Columns: [index, DISARM ID]\n", - "Index: []\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(subs['DISARM Subtechnique'], df['DISARM Subtechnique'])\n", "check_ids(subs)" @@ -1198,22 +150,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current keys: dict_keys(['FRAMEWORK_ADMIN_README', 'FRAMEWORK_ADMIN CODES', 'phases', 'tactics', 'techniques', 'subtechniques', 'frameworks', 'tasks', 'detections', 'countermeasures', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'sectors', 'resources', 'MOE', 'MOP'])\n", - "Old keys: dict_keys(['ADMIN_README', 'ADMIN CODES', 'phases', 'tactics', 'techniques', 'countermeasures', 'frameworks', 'tasks', 'detections', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'actortype_framework', 'actortype_sector', 'sectors', 'resources', 'MOE', 'MOP'])\n" - ] - } - ], + "outputs": [], "source": [ + "import pandas as pd\n", + "\n", "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", "frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx'\n", - "oldframefile = MASTERDATA_DIR + '2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx'\n", "\n", "def create_excel_metadata(frameworkfile):\n", " metadata = {}\n", @@ -1221,282 +165,35 @@ " for sheetname in xlsx.sheet_names:\n", " metadata[sheetname] = xlsx.parse(sheetname)\n", " metadata[sheetname].fillna('', inplace=True)\n", + " metadata[sheetname].rename(columns={'amitt_id': 'disarm_id'}, inplace=True)\n", " return metadata\n", "\n", - "metadata = create_excel_metadata(frameworkfile)\n", - "oldmeta = create_excel_metadata(oldframefile)\n", - "print('Current keys: {}'.format(metadata.keys()))\n", - "print('Old keys: {}'.format(oldmeta.keys()))" + "metadata = create_excel_metadata(frameworkfile)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idnamename_DEranksummarysummary_DElongname
0P01PlanPlanung1Envision the desired outcome. Lay out effectiv...P01 - Plan
1P02PrepareVorbereitung2Activities conducted before execution to impro...P02 - Prepare
2P03ExecuteDurchführung3Run the action, from initial exposure to wrap-...P03 - Execute
3P04AssessAuswertung4Evaluate effectiveness of action, for use in f...P04 - Assess
\n", - "
" - ], - "text/plain": [ - " disarm_id name name_DE rank \\\n", - "0 P01 Plan Planung 1 \n", - "1 P02 Prepare Vorbereitung 2 \n", - "2 P03 Execute Durchführung 3 \n", - "3 P04 Assess Auswertung 4 \n", - "\n", - " summary summary_DE longname \n", - "0 Envision the desired outcome. Lay out effectiv... P01 - Plan \n", - "1 Activities conducted before execution to impro... P02 - Prepare \n", - "2 Run the action, from initial exposure to wrap-... P03 - Execute \n", - "3 Evaluate effectiveness of action, for use in f... P04 - Assess " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "metadata['phases']" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM ID
0PlanNaNEnvision the desired outcome. Lay out effectiv...P01
1PrepareNaNActivities conducted before execution to impro...P02
2ExecuteNaNRun the action, from initial exposure to wrap-...P03
3AssessNaNAssess effectiveness of action, for use in fut...P04
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "0 Plan NaN \n", - "1 Prepare NaN \n", - "2 Execute NaN \n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID \n", - "0 Envision the desired outcome. Lay out effectiv... P01 \n", - "1 Activities conducted before execution to impro... P02 \n", - "2 Run the action, from initial exposure to wrap-... P03 \n", - "3 Assess effectiveness of action, for use in fut... P04 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "phases" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM PhaseDISARM TacticDescriptionDISARM IDdisarm_idnamename_DEranksummarysummary_DElongname
3AssessNaNAssess effectiveness of action, for use in fut...P04P04AssessAuswertung4Evaluate effectiveness of action, for use in f...P04 - Assess
\n", - "
" - ], - "text/plain": [ - " DISARM Phase DISARM Tactic \\\n", - "3 Assess NaN \n", - "\n", - " Description DISARM ID disarm_id \\\n", - "3 Assess effectiveness of action, for use in fut... P04 P04 \n", - "\n", - " name name_DE rank \\\n", - "3 Assess Auswertung 4 \n", - "\n", - " summary summary_DE longname \n", - "3 Evaluate effectiveness of action, for use in f... P04 - Assess " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# do union of both tables, to get new spreadsheet table\n", "check_descriptions(phases, metadata['phases'])" @@ -1504,834 +201,46 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 4 and 4\n", - "first list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "second list: Index(['Assess', 'Execute', 'Plan', 'Prepare'], dtype='object')\n", - "set difference: set()\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['phases']['name'], phases['DISARM Phase'])" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DISARM TacticDISARM TechniqueDescriptionDISARM IDdisarm_idnamename_DEphase_idranksummarysummary_DElongname
1Plan ObjectivesNaNSet clearly defined, measurable, and achievabl...TA02TA02Objective Planningobjektive PlanungP012Set clearly defined, measurable, and achievabl...TA02 - Objective Planning
2Target Audience AnalysisNaNIdentifying and analyzing the target audience ...TA03TA03Develop PeopleMenschen entwickelnP024Develop online and offline users and agents, i...TA03 - Develop People
3Develop NarrativesNaNThe promotion of beneficial master narratives ...TA04TA04Develop NetworksNetzwerke entwickelnP025Develop online and offline communities and tra...TA04 - Develop Networks
4Develop ContentNaNNaNTA05TA05Microtargetingindividualisierte WählerwerbungP026Target very specific populations of peopleTA05 - Microtargeting
5Establish Social AssetsNaNEstablishing information assets generates mess...TA06TA06Develop ContentInhalte entwickelnP027Create and acquire content used in incidentTA06 - Develop Content
6Establish LegitimacyNaNNaNTA07TA07Channel SelectionKanalauswahlP028Set up specific delivery, amplification and ma...TA07 - Channel Selection
7MicrotargetNaNTarget very specific populations of peopleTA08TA08Pump PrimingAnkurbelungP039Release content on a targetted small scale, pr...TA08 - Pump Priming
8Select Channels and AffordancesNaNSelecting platforms and affordances assesses w...TA09TA09ExposureP0310Release content to general public or push to l...TA09 - Exposure
9Conduct Pump PrimingNaNRelease content on a targetted small scale, pr...TA10TA10Drive Offline ActivityP0311Move incident into offline worldTA10 - Drive Offline Activity
10Deliver ContentNaNRelease content to general public or larger po...TA11TA11PersistenceP0312Keep incident 'alive', beyond the incident cre...TA11 - Persistence
11Maximize ExposureNaNMaximize exposure of the target audience to in...TA12TA12Measure EffectivenessP0413Measure effectiveness of incident, for use in ...TA12 - Measure Effectiveness
12Drive Online HarmsNaNActions taken by an influence operation to har...TA13TA13Conduct Center of Gravity AnalysisP013Recon/research to identify \"the source of powe...TA13 - Conduct Center of Gravity Analysis
\n", - "
" - ], - "text/plain": [ - " DISARM Tactic DISARM Technique \\\n", - "1 Plan Objectives NaN \n", - "2 Target Audience Analysis NaN \n", - "3 Develop Narratives NaN \n", - "4 Develop Content NaN \n", - "5 Establish Social Assets NaN \n", - "6 Establish Legitimacy NaN \n", - "7 Microtarget NaN \n", - "8 Select Channels and Affordances NaN \n", - "9 Conduct Pump Priming NaN \n", - "10 Deliver Content NaN \n", - "11 Maximize Exposure NaN \n", - "12 Drive Online Harms NaN \n", - "\n", - " Description DISARM ID disarm_id \\\n", - "1 Set clearly defined, measurable, and achievabl... TA02 TA02 \n", - "2 Identifying and analyzing the target audience ... TA03 TA03 \n", - "3 The promotion of beneficial master narratives ... TA04 TA04 \n", - "4 NaN TA05 TA05 \n", - "5 Establishing information assets generates mess... TA06 TA06 \n", - "6 NaN TA07 TA07 \n", - "7 Target very specific populations of people TA08 TA08 \n", - "8 Selecting platforms and affordances assesses w... TA09 TA09 \n", - "9 Release content on a targetted small scale, pr... TA10 TA10 \n", - "10 Release content to general public or larger po... TA11 TA11 \n", - "11 Maximize exposure of the target audience to in... TA12 TA12 \n", - "12 Actions taken by an influence operation to har... TA13 TA13 \n", - "\n", - " name name_DE \\\n", - "1 Objective Planning objektive Planung \n", - "2 Develop People Menschen entwickeln \n", - "3 Develop Networks Netzwerke entwickeln \n", - "4 Microtargeting individualisierte Wählerwerbung \n", - "5 Develop Content Inhalte entwickeln \n", - "6 Channel Selection Kanalauswahl \n", - "7 Pump Priming Ankurbelung \n", - "8 Exposure \n", - "9 Drive Offline Activity \n", - "10 Persistence \n", - "11 Measure Effectiveness \n", - "12 Conduct Center of Gravity Analysis \n", - "\n", - " phase_id rank summary \\\n", - "1 P01 2 Set clearly defined, measurable, and achievabl... \n", - "2 P02 4 Develop online and offline users and agents, i... \n", - "3 P02 5 Develop online and offline communities and tra... \n", - "4 P02 6 Target very specific populations of people \n", - "5 P02 7 Create and acquire content used in incident \n", - "6 P02 8 Set up specific delivery, amplification and ma... \n", - "7 P03 9 Release content on a targetted small scale, pr... \n", - "8 P03 10 Release content to general public or push to l... \n", - "9 P03 11 Move incident into offline world \n", - "10 P03 12 Keep incident 'alive', beyond the incident cre... \n", - "11 P04 13 Measure effectiveness of incident, for use in ... \n", - "12 P01 3 Recon/research to identify \"the source of powe... \n", - "\n", - " summary_DE longname \n", - "1 TA02 - Objective Planning \n", - "2 TA03 - Develop People \n", - "3 TA04 - Develop Networks \n", - "4 TA05 - Microtargeting \n", - "5 TA06 - Develop Content \n", - "6 TA07 - Channel Selection \n", - "7 TA08 - Pump Priming \n", - "8 TA09 - Exposure \n", - "9 TA10 - Drive Offline Activity \n", - "10 TA11 - Persistence \n", - "11 TA12 - Measure Effectiveness \n", - "12 TA13 - Conduct Center of Gravity Analysis " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "check_descriptions(tactics, metadata['tactics'])" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 13 and 16\n", - "first list: Index(['Strategic Planning', 'Persistence', 'Microtargeting',\n", - " 'Channel Selection', 'Develop Networks', 'Objective Planning',\n", - " 'Measure Effectiveness', 'Exposure',\n", - " 'Conduct Center of Gravity Analysis', 'Drive Offline Activity',\n", - " 'Pump Priming', 'Develop Content', 'Develop People'],\n", - " dtype='object')\n", - "second list: Index(['Drive Online Harms', 'Maximize Exposure', 'Conduct Pump Priming',\n", - " 'Deliver Content', 'Persist in the Information Space',\n", - " 'Assess Effectiveness', 'Establish Social Assets',\n", - " 'Target Audience Analysis', 'Develop Narratives', 'Plan Strategy',\n", - " 'Select Channels and Affordances', 'Develop Content', 'Plan Objectives',\n", - " 'Microtarget', 'Establish Legitimacy', 'Drive Offline Activity'],\n", - " dtype='object')\n", - "set difference: {'Develop Networks', 'Channel Selection', 'Pump Priming', 'Measure Effectiveness', 'Conduct Center of Gravity Analysis', 'Exposure', 'Objective Planning', 'Develop People', 'Microtargeting', 'Persistence', 'Strategic Planning'}\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['tactics']['name'], tactics['DISARM Tactic'])" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lengths are: 71 and 97\n", - "first list: Index(['Backstop personas', 'Message reach', 'Twitter bots amplify',\n", - " 'Demand unsurmountable proof', 'Behaviour changes',\n", - " 'Create fake videos and images', 'Play the long game',\n", - " 'Purchase advertisements', 'Manipulate online polls',\n", - " 'Facilitate State Propaganda', 'Find echo chambers', 'Clickbait',\n", - " 'Pinterest', 'Seed distortions', 'Cow online opinion leaders',\n", - " 'Segment audiences',\n", - " 'Dedicated channels disseminate information pollution',\n", - " 'Organise remote rallies and events', 'Prepare fundraising campaigns',\n", - " 'Muzzle social media as a political force',\n", - " 'Twitter trolls amplify and manipulate',\n", - " 'Create pseudoscientific or disingenuous research',\n", - " 'Develop Narrative Concepts', 'Cheerleading domestic social media ops',\n", - " '5Ds (dismiss, distort, distract, dismay, divide)',\n", - " 'Leverage Existing Narratives', 'Continue to amplify', 'Reddit',\n", - " 'Trial content', 'LinkedIn', 'Leak altered documents',\n", - " 'Conspiracy narratives', 'Use hashtag',\n", - " 'Generate information pollution', 'Analyze existing communities',\n", - " 'Fabricate social media comment', 'Cultivate ignorant agents',\n", - " 'YouTube', 'Compromise legitimate account',\n", - " 'Create competing narratives', 'Kernel of Truth',\n", - " 'Respond to breaking news event', 'Twitter',\n", - " 'Plan to discredit credible sources', 'Distort facts',\n", - " 'Use physical broadcast capabilities', 'Use fake experts', 'Facebook',\n", - " 'Create fake experts', 'Devise Competing Narratives', 'Instagram',\n", - " 'Bait legitimate influencers', 'Respond to active crisis',\n", - " 'Create hashtags', 'Flooding', 'Legacy web content',\n", - " 'Create fake Social Media Profiles / Pages / Groups',\n", - " 'Create fake websites', 'Deny involvement',\n", - " 'Tertiary sites amplify news', 'Adapt existing narratives',\n", - " 'Search Engine Optimization', 'Degrade adversary', 'Use concealment',\n", - " 'Sell merchandising', 'Conduct Fundraising Campaigns',\n", - " 'Social media engagement', 'Use SMS/ WhatsApp/ Chat apps', 'Memes',\n", - " 'WhatsApp', 'Create fake or imposter news sites'],\n", - " dtype='object')\n", - "second list: Index(['Leverage Echo Chambers/Filter Bubbles',\n", - " 'Map Target Audience Information Environment', 'Physical Violence',\n", - " 'Direct Users to Alternative Platforms', 'Develop Audio-based Content',\n", - " 'Develop Owned Media Assets', 'Leverage Conspiracy Theory Narratives',\n", - " 'Develop Text-based Content', 'Develop Video-based Content',\n", - " 'Deliver Ads', 'Leverage Content Farm',\n", - " 'Bookmarking and Content Curation', 'Use Search Engine Optimization',\n", - " 'Livestream', 'Respond to Breaking News Event or Active Crisis',\n", - " 'Recruit bad actors', 'Incentivize Sharing', 'Media Sharing Networks',\n", - " 'Identify Social and Technical Vulnerabilities',\n", - " 'Create Inauthentic Accounts', 'Prepare fundraising campaigns', 'Email',\n", - " 'Online polls', 'Purchase Targeted Advertisements',\n", - " 'Obtain Private Documents', 'Play the long game', 'Build Network',\n", - " ' Social Networks', 'Discussion Forums', 'Divide',\n", - " 'Create Inauthentic Social Media Pages and Groups',\n", - " 'Conduct fundraising', 'Acquire/ recruit Network', 'Cross-Posting',\n", - " 'Leverage Existing Narratives', 'Traditional Media',\n", - " 'Conceal Operational Activity', 'Create Clickbait',\n", - " 'Reuse Existing Content', 'Measure Effectiveness', 'Distort',\n", - " 'Conceal Infrastructure', 'Generate information pollution',\n", - " 'Develop New Narratives', 'Bait legitimate influencers',\n", - " 'Facilitate State Propaganda', 'Post Content', 'Co-opt Trusted Sources',\n", - " 'Seed distortions', 'Compromise legitimate accounts',\n", - " 'Blogging and Publishing Networks', 'Platform Filtering',\n", - " 'Determine Target Audiences', 'Dismiss', 'Consumer Review Networks',\n", - " 'Merchandising/ Advertising', 'Develop Image-based Content',\n", - " 'Prepare Assets Impersonating Legitimate Entities',\n", - " 'Flooding the Information Space', 'Distract', 'Measure Performance',\n", - " 'Distort facts', 'Use fake experts', 'Comment or Reply on Content',\n", - " 'Create fake experts', 'Create personas', 'Seed Kernel of truth',\n", - " 'Conceal People', 'Attract Traditional Media',\n", - " 'Determine Strategic Ends', 'Create inauthentic websites',\n", - " 'Cultivate ignorant agents', 'Create Localized Content',\n", - " 'Create hashtags and search artifacts',\n", - " 'Censor social media as a political force', 'Dismay',\n", - " 'Segment Audiences', 'Establish Inauthentic News Sites',\n", - " 'Organize Events', 'Harass', 'Suppress Opposition',\n", - " 'Control Information Environment through Offensive Cyberspace Operations',\n", - " 'Infiltrate Existing Networks', 'Formal Diplomatic Channels',\n", - " 'Chat apps', 'Encourage Attendance at Events',\n", - " 'Develop Competing Narratives', 'Employ Commercial Analytic Firms',\n", - " 'Degrade Adversary', 'Amplify Existing Narrative',\n", - " 'Measure Effectiveness Indicators (or KPIs)',\n", - " 'Exploit TOS/Content Moderation',\n", - " 'Prepare Physical Broadcast Capabilities',\n", - " 'Integrate Target Audience Vulnerabilities into Narrative',\n", - " 'Manipulate Platform Algorithm', 'Trial content',\n", - " 'Demand insurmountable proof'],\n", - " dtype='object')\n", - "set difference: {'Degrade adversary', 'Twitter trolls amplify and manipulate', 'Create pseudoscientific or disingenuous research', 'Message reach', 'Develop Narrative Concepts', 'Continue to amplify', 'Behaviour changes', 'Cheerleading domestic social media ops', '5Ds (dismiss, distort, distract, dismay, divide)', 'Create fake websites', 'Muzzle social media as a political force', 'LinkedIn', 'Deny involvement', 'Conspiracy narratives', 'Organise remote rallies and events', 'Reddit', 'Instagram', 'Demand unsurmountable proof', 'Purchase advertisements', 'Use hashtag', 'Find echo chambers', 'Memes', 'Manipulate online polls', 'Clickbait', 'Pinterest', 'Create fake or imposter news sites', 'Cow online opinion leaders', 'Flooding', 'Create fake Social Media Profiles / Pages / Groups', 'Tertiary sites amplify news', 'Adapt existing narratives', 'Search Engine Optimization', 'Legacy web content', 'Sell merchandising', 'Create competing narratives', 'Conduct Fundraising Campaigns', 'Social media engagement', 'Use SMS/ WhatsApp/ Chat apps', 'Fabricate social media comment', 'WhatsApp', 'Use concealment', 'Create hashtags', 'Use physical broadcast capabilities', 'Segment audiences', 'Respond to active crisis', 'Compromise legitimate account', 'Twitter bots amplify', 'Kernel of Truth', 'Analyze existing communities', 'Respond to breaking news event', 'YouTube', 'Twitter', 'Plan to discredit credible sources', 'Dedicated channels disseminate information pollution', 'Facebook', 'Create fake videos and images', 'Leak altered documents', 'Devise Competing Narratives', 'Backstop personas'}\n" - ] - } - ], + "outputs": [], "source": [ "check_diffs(metadata['techniques']['name'], techs['DISARM Technique'])" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Check against last version of framework" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
3P04FalseTrueAssessAssessEvaluate effectiveness of action, for use in f...Evaluate effectiveness of action, for use in f...
\n", - "
" - ], - "text/plain": [ - " disarm_id name_changed summary_changed name_x name_y \\\n", - "3 P04 False True Assess Assess \n", - "\n", - " summary_x \\\n", - "3 Evaluate effectiveness of action, for use in f... \n", - "\n", - " summary_y \n", - "3 Evaluate effectiveness of action, for use in f... " - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def check_version_descriptions(df1, df2):\n", - " merge = df1.merge(df2, on='disarm_id')\n", - " merge['name_changed'] = merge['name_x'] != merge['name_y']\n", - " merge['summary_changed'] = merge['summary_x'] != merge['summary_y']\n", - " return merge[(merge['name_changed']) | (merge['summary_changed'])][['disarm_id', 'name_changed', 'summary_changed', 'name_x', \n", - " 'name_y', 'summary_x', 'summary_y']]\n", - "\n", - "check_version_descriptions(metadata['phases'], oldmeta['phases'])" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
0TA01TrueFalsePlan StrategyStrategic PlanningDefine the desired end state, i.e. the set of ...Define the desired end state, i.e. the set of ...
1TA02TrueTruePlan ObjectivesObjective PlanningSet clearly defined, measurable, and achievabl...Set clearly defined, measurable, and achievabl...
2TA05TrueFalseMicrotargetMicrotargetingTarget very specific populations of peopleTarget very specific populations of people
3TA06FalseTrueDevelop ContentDevelop ContentCreate and acquire content used in incident
4TA07TrueTrueSelect Channels and AffordancesChannel SelectionSelecting platforms and affordances assesses w...Set up specific delivery, amplification and ma...
5TA08TrueTrueConduct Pump PrimingPump PrimingRelease content on a targetted small scale, pr...Release content on a targetted small scale, pr...
6TA09TrueTrueDeliver ContentExposureRelease content to general public or larger po...Release content to general public or push to l...
7TA10FalseTrueDrive Offline ActivityDrive Offline ActivityMove incident/campaign from online to offline....Move incident into offline world
8TA11TrueTruePersist in the Information EnvironmentPersistencePersist in the Information Space refers to tak...Keep incident 'alive', beyond the incident cre...
9TA12TrueTrueAssess EffectivenessMeasure EffectivenessAssess effectiveness of action, for use in fut...Measure effectiveness of incident, for use in ...
10TA13TrueTrueTarget Audience AnalysisConduct Center of Gravity AnalysisIdentifying and analyzing the target audience ...Recon/research to identify \"the source of powe...
\n", - "
" - ], - "text/plain": [ - " disarm_id name_changed summary_changed \\\n", - "0 TA01 True False \n", - "1 TA02 True True \n", - "2 TA05 True False \n", - "3 TA06 False True \n", - "4 TA07 True True \n", - "5 TA08 True True \n", - "6 TA09 True True \n", - "7 TA10 False True \n", - "8 TA11 True True \n", - "9 TA12 True True \n", - "10 TA13 True True \n", - "\n", - " name_x \\\n", - "0 Plan Strategy \n", - "1 Plan Objectives \n", - "2 Microtarget \n", - "3 Develop Content \n", - "4 Select Channels and Affordances \n", - "5 Conduct Pump Priming \n", - "6 Deliver Content \n", - "7 Drive Offline Activity \n", - "8 Persist in the Information Environment \n", - "9 Assess Effectiveness \n", - "10 Target Audience Analysis \n", - "\n", - " name_y \\\n", - "0 Strategic Planning \n", - "1 Objective Planning \n", - "2 Microtargeting \n", - "3 Develop Content \n", - "4 Channel Selection \n", - "5 Pump Priming \n", - "6 Exposure \n", - "7 Drive Offline Activity \n", - "8 Persistence \n", - "9 Measure Effectiveness \n", - "10 Conduct Center of Gravity Analysis \n", - "\n", - " summary_x \\\n", - "0 Define the desired end state, i.e. the set of ... \n", - "1 Set clearly defined, measurable, and achievabl... \n", - "2 Target very specific populations of people \n", - "3 \n", - "4 Selecting platforms and affordances assesses w... \n", - "5 Release content on a targetted small scale, pr... \n", - "6 Release content to general public or larger po... \n", - "7 Move incident/campaign from online to offline.... \n", - "8 Persist in the Information Space refers to tak... \n", - "9 Assess effectiveness of action, for use in fut... \n", - "10 Identifying and analyzing the target audience ... \n", - "\n", - " summary_y \n", - "0 Define the desired end state, i.e. the set of ... \n", - "1 Set clearly defined, measurable, and achievabl... \n", - "2 Target very specific populations of people \n", - "3 Create and acquire content used in incident \n", - "4 Set up specific delivery, amplification and ma... \n", - "5 Release content on a targetted small scale, pr... \n", - "6 Release content to general public or push to l... \n", - "7 Move incident into offline world \n", - "8 Keep incident 'alive', beyond the incident cre... \n", - "9 Measure effectiveness of incident, for use in ... \n", - "10 Recon/research to identify \"the source of powe... " - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "check_version_descriptions(metadata['tactics'], oldmeta['tactics'])" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_y
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [disarm_id, name_changed, summary_changed, name_x, name_y, summary_x, summary_y]\n", - "Index: []" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "check_version_descriptions(metadata['techniques'], oldmeta['techniques'])" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/CODE/compare_DISARM_excel_versions.ipynb b/CODE/compare_DISARM_excel_versions.ipynb index 80d4f87..d823687 100644 --- a/CODE/compare_DISARM_excel_versions.ipynb +++ b/CODE/compare_DISARM_excel_versions.ipynb @@ -11,9 +11,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":9: FutureWarning: Passing a negative integer is deprecated in version 1.0 and will not be supported in future version. Instead, use None to not limit the column width.\n", + " pd.set_option('display.max_colwidth', -1)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "table README is the same\n", + "table examples is the same\n", + "table incidents is the same\n", + "table incidenttechniques is the same\n", + "table narratives is the same\n", + "table externalgroups is the same\n", + "table externalgroupcounters is the same\n", + "table suggested_externalgroups is the same\n", + "table removed_externalgroups is the same\n", + "table forums is the same\n", + "table tools is the same\n", + "table removed_tools is the same\n" + ] + } + ], "source": [ "import pandas as pd\n", "import sqlite3 as sql\n", @@ -25,8 +52,8 @@ "pd.set_option('display.max_rows', 1000)\n", "pd.set_option('display.max_colwidth', -1)\n", "\n", - "newfile = '../DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER.xlsx'\n", - "oldfile = '../DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER_previous_version.xlsx'\n", + "newfile = '../DISARM_MASTER_DATA/DISARM_DATA_MASTER.xlsx'\n", + "oldfile = '../../DISARMframeworks_2022_08_10/DISARM_MASTER_DATA/DISARM_DATA_MASTER.xlsx'\n", "\n", "# Load dfs from file\n", "newdfs = {}\n", @@ -65,7 +92,68 @@ "\n", "for table in newdfs.keys():\n", " if newdfs[table].equals(olddfs[table]) == False:\n", - " investigate_table(table)" + " investigate_table(table)\n", + " else:\n", + " print('table {} is the same'.format(table))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idnewold
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [disarm_id, new, old]\n", + "Index: []" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Look at individual table differences\n", + "table = 'countermeasures'\n", + "column = 'summary'\n", + "coldiffs = newdfs[table][column] != olddfs[table][column]\n", + "diffcols = pd.DataFrame()\n", + "diffcols['disarm_id'] = newdfs[table][coldiffs]['disarm_id']\n", + "diffcols['new'] = newdfs[table][coldiffs][column]\n", + "diffcols['old'] = olddfs[table][coldiffs][column]\n", + "diffcols[diffcols['old'] != '']" ] }, { @@ -73,17 +161,7 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "# Look at individual table differences\n", - "table = 'countermeasures'\n", - "column = 'summary'\n", - "coldiffs = newdfs[table][column] != olddfs[table][column]\n", - "diffcols = pd.DataFrame()\n", - "diffcols['amitt_id'] = newdfs[table][coldiffs]['amitt_id']\n", - "diffcols['new'] = newdfs[table][coldiffs][column]\n", - "diffcols['old'] = olddfs[table][coldiffs][column]\n", - "diffcols[diffcols['old'] != '']" - ] + "source": [] } ], "metadata": { diff --git a/CODE/compare_disarm_versions.ipynb b/CODE/compare_disarm_versions.ipynb new file mode 100644 index 0000000..2c4c7bf --- /dev/null +++ b/CODE/compare_disarm_versions.ipynb @@ -0,0 +1,814 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Compare disarm versions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current keys: dict_keys(['FRAMEWORK_ADMIN_README', 'FRAMEWORK_ADMIN CODES', 'phases', 'tactics', 'techniques', 'subtechniques', 'frameworks', 'tasks', 'detections', 'countermeasures', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'sectors', 'resources', 'MOE', 'MOP'])\n", + "Old keys: dict_keys(['ADMIN_README', 'ADMIN CODES', 'phases', 'tactics', 'techniques', 'frameworks', 'tasks', 'detections', 'countermeasures', 'playbooks', 'responsetypes', 'metatechniques', 'actortypes', 'sectors', 'resources', 'MOE', 'MOP'])\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "MASTERDATA_DIR = '../DISARM_MASTER_DATA/'\n", + "frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx'\n", + "oldframefile = MASTERDATA_DIR + '2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx'\n", + "oldframefile = 'AMITT_FRAMEWORKS_MASTER.xlsx'\n", + "\n", + "def create_excel_metadata(frameworkfile):\n", + " metadata = {}\n", + " xlsx = pd.ExcelFile(frameworkfile)\n", + " for sheetname in xlsx.sheet_names:\n", + " metadata[sheetname] = xlsx.parse(sheetname)\n", + " metadata[sheetname].fillna('', inplace=True)\n", + " metadata[sheetname].rename(columns={'amitt_id': 'disarm_id'}, inplace=True)\n", + " return metadata\n", + "\n", + "def check_version_descriptions(df1, df2):\n", + " merge = df1.merge(df2, on='disarm_id')\n", + " merge['name_changed'] = merge['name_x'] != merge['name_y']\n", + " merge['summary_changed'] = merge['summary_x'] != merge['summary_y']\n", + " return merge[(merge['name_changed']) | (merge['summary_changed'])][['disarm_id', 'name_changed', 'summary_changed', 'name_x', \n", + " 'name_y', 'summary_x', 'summary_y']]\n", + "\n", + "metadata = create_excel_metadata(frameworkfile)\n", + "oldmeta = create_excel_metadata(oldframefile)\n", + "print('Current keys: {}'.format(metadata.keys()))\n", + "print('Old keys: {}'.format(oldmeta.keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_ytype
3P04FalseTrueAssessAssessEvaluate effectiveness of action, for use in f...Evaluate effectiveness of action, for use in f...phase
\n", + "
" + ], + "text/plain": [ + " disarm_id name_changed summary_changed name_x name_y \\\n", + "3 P04 False True Assess Assess \n", + "\n", + " summary_x \\\n", + "3 Evaluate effectiveness of action, for use in f... \n", + "\n", + " summary_y type \n", + "3 Evaluate effectiveness of action, for use in f... phase " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dfchanges = pd.DataFrame([])\n", + "changes = check_version_descriptions(metadata['phases'], oldmeta['phases'])\n", + "changes['type'] = 'phase'\n", + "dfchanges = changes\n", + "changes" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_ytype
0TA01TrueFalsePlan StrategyStrategic PlanningDefine the desired end state, i.e. the set of ...Define the desired end state, i.e. the set of ...tactic
1TA02TrueTruePlan ObjectivesObjective PlanningSet clearly defined, measurable, and achievabl...Set clearly defined, measurable, and achievabl...tactic
2TA05TrueFalseMicrotargetMicrotargetingTarget very specific populations of peopleTarget very specific populations of peopletactic
3TA06FalseTrueDevelop ContentDevelop ContentCreate or acquire text, images, and other contentCreate and acquire content used in incidenttactic
4TA07TrueTrueSelect Channels and AffordancesChannel SelectionSelecting platforms and affordances assesses w...Set up specific delivery, amplification and ma...tactic
5TA08TrueTrueConduct Pump PrimingPump PrimingRelease content on a targetted small scale, pr...Release content on a targetted small scale, pr...tactic
6TA09TrueTrueDeliver ContentExposureRelease content to general public or larger po...Release content to general public or push to l...tactic
7TA10TrueTrueDrive Offline ActivityGo PhysicalMove incident/campaign from online to offline....Move incident into offline worldtactic
8TA11TrueTruePersist in the Information EnvironmentPersistencePersist in the Information Space refers to tak...Keep incident 'alive', beyond the incident cre...tactic
9TA12TrueTrueAssess EffectivenessMeasure EffectivenessAssess effectiveness of action, for use in fut...Measure effectiveness of incident, for use in ...tactic
\n", + "
" + ], + "text/plain": [ + " disarm_id name_changed summary_changed \\\n", + "0 TA01 True False \n", + "1 TA02 True True \n", + "2 TA05 True False \n", + "3 TA06 False True \n", + "4 TA07 True True \n", + "5 TA08 True True \n", + "6 TA09 True True \n", + "7 TA10 True True \n", + "8 TA11 True True \n", + "9 TA12 True True \n", + "\n", + " name_x name_y \\\n", + "0 Plan Strategy Strategic Planning \n", + "1 Plan Objectives Objective Planning \n", + "2 Microtarget Microtargeting \n", + "3 Develop Content Develop Content \n", + "4 Select Channels and Affordances Channel Selection \n", + "5 Conduct Pump Priming Pump Priming \n", + "6 Deliver Content Exposure \n", + "7 Drive Offline Activity Go Physical \n", + "8 Persist in the Information Environment Persistence \n", + "9 Assess Effectiveness Measure Effectiveness \n", + "\n", + " summary_x \\\n", + "0 Define the desired end state, i.e. the set of ... \n", + "1 Set clearly defined, measurable, and achievabl... \n", + "2 Target very specific populations of people \n", + "3 Create or acquire text, images, and other content \n", + "4 Selecting platforms and affordances assesses w... \n", + "5 Release content on a targetted small scale, pr... \n", + "6 Release content to general public or larger po... \n", + "7 Move incident/campaign from online to offline.... \n", + "8 Persist in the Information Space refers to tak... \n", + "9 Assess effectiveness of action, for use in fut... \n", + "\n", + " summary_y type \n", + "0 Define the desired end state, i.e. the set of ... tactic \n", + "1 Set clearly defined, measurable, and achievabl... tactic \n", + "2 Target very specific populations of people tactic \n", + "3 Create and acquire content used in incident tactic \n", + "4 Set up specific delivery, amplification and ma... tactic \n", + "5 Release content on a targetted small scale, pr... tactic \n", + "6 Release content to general public or push to l... tactic \n", + "7 Move incident into offline world tactic \n", + "8 Keep incident 'alive', beyond the incident cre... tactic \n", + "9 Measure effectiveness of incident, for use in ... tactic " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "changes = check_version_descriptions(metadata['tactics'], oldmeta['tactics'])\n", + "changes['type'] = 'tactic'\n", + "dfchanges = pd.concat([dfchanges, changes])\n", + "changes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
disarm_idname_changedsummary_changedname_xname_ysummary_xsummary_ytype
2T0004TrueTrueDevelop Competing NarrativesCompeting NarrativesAdvance competing narratives connected to same...Advance competing narratives connected to same...technique
3T0007TrueTrueCreate Inauthentic Social Media Pages and GroupsCreate fake Social Media Profiles / Pages / Gr...Create key social engineering assets needed to...Create key social engineering assets needed to...technique
6T0011TrueTrueCompromise legitimate accountsHijack legitimate accountHack or take over legimate accounts to distrib...Hack or take over legimate accounts to distrib...technique
7T0013TrueTrueCreate inauthentic websitesCreate fake websitesCreate media assets to support inauthentic org...Create media assets to support fake organizati...technique
8T0014TrueTruePrepare fundraising campaignsCreate funding campaignsFundraising campaigns refer to an influence op...Generate revenue through online funding campai...technique
9T0015TrueTrueCreate hashtags and search artifactsCreate hashtagCreate one or more hashtags and/or hashtag gro...Many incident-based campaigns will create a ha...technique
10T0016TrueTrueCreate ClickbaitClickbaitCreate attention grabbing headlines (outrage, ...Create attention grabbing headlines (outrage, ...technique
11T0017TrueTrueConduct fundraisingPromote online fundingFundraising campaigns refer to an influence op...Drive traffic/engagement to funding campaign s...technique
12T0018TrueFalsePurchase Targeted AdvertisementsPaid targeted adsCreate or fund advertisements targeted at spec...Create or fund advertisements targeted at spec...technique
15T0022TrueTrueLeverage Conspiracy Theory NarrativesConspiracy narratives\"Conspiracy narratives\" appeal to the human de...\"Conspiracy narratives appeal to the human des...technique
17T0029TrueFalseOnline pollsManipulate online pollsCreate fake online polls, or manipulate existi...Create fake online polls, or manipulate existi...technique
18T0040TrueFalseDemand insurmountable proofDemand unsurmountable proofCampaigns often leverage tactical and informat...Campaigns often leverage tactical and informat...technique
19T0042TrueTrueSeed Kernel of truthKernel of TruthWrap lies or altered context/facts around trut...Wrap lies or altered context/facts around trut...technique
20T0043TrueTrueChat appsUse SMS/ WhatsApp/ Chat appsDirect messaging via chat app is an increasing...Direct messaging via encypted app is an increa...technique
22T0045FalseTrueUse fake expertsUse fake expertsUse the fake experts that were set up during E...Use the fake experts that were set up in T0009...technique
23T0046TrueFalseUse Search Engine OptimizationSearch Engine OptimizationManipulate content engagement metrics (ie: Red...Manipulate content engagement metrics (ie: Red...technique
24T0047TrueTrueCensor social media as a political forceMuzzle social media as a political forceUse political influence or the power of state ...Use political influence or the power of state ...technique
25T0048TrueTrueHarassCow online opinion leadersThreatening or harassing believers of opposing...Intimidate, coerce, threaten critics/dissident...technique
26T0049TrueTrueFlooding the Information SpaceFloodingFlooding and/or mobbing social media channels ...Flooding and/or mobbing social media channels ...technique
27T0057TrueTrueOrganize EventsOrganise remote rallies and eventsCoordinate and promote real-world events acros...Coordinate and promote real-world events acros...technique
28T0059FalseTruePlay the long gamePlay the long gamePlay the long game refers to two phenomena: 1....Play the long game can mean a couple of things...technique
29T0060TrueFalseContinue to AmplifyContinue to amplifycontinue narrative or message amplification af...continue narrative or message amplification af...technique
30T0061TrueTrueSell MerchandiseSell merchandisingSell mechandise refers to getting the message ...Sell hats, t-shirts, flags and other branded c...technique
\n", + "
" + ], + "text/plain": [ + " disarm_id name_changed summary_changed \\\n", + "2 T0004 True True \n", + "3 T0007 True True \n", + "6 T0011 True True \n", + "7 T0013 True True \n", + "8 T0014 True True \n", + "9 T0015 True True \n", + "10 T0016 True True \n", + "11 T0017 True True \n", + "12 T0018 True False \n", + "15 T0022 True True \n", + "17 T0029 True False \n", + "18 T0040 True False \n", + "19 T0042 True True \n", + "20 T0043 True True \n", + "22 T0045 False True \n", + "23 T0046 True False \n", + "24 T0047 True True \n", + "25 T0048 True True \n", + "26 T0049 True True \n", + "27 T0057 True True \n", + "28 T0059 False True \n", + "29 T0060 True False \n", + "30 T0061 True True \n", + "\n", + " name_x \\\n", + "2 Develop Competing Narratives \n", + "3 Create Inauthentic Social Media Pages and Groups \n", + "6 Compromise legitimate accounts \n", + "7 Create inauthentic websites \n", + "8 Prepare fundraising campaigns \n", + "9 Create hashtags and search artifacts \n", + "10 Create Clickbait \n", + "11 Conduct fundraising \n", + "12 Purchase Targeted Advertisements \n", + "15 Leverage Conspiracy Theory Narratives \n", + "17 Online polls \n", + "18 Demand insurmountable proof \n", + "19 Seed Kernel of truth \n", + "20 Chat apps \n", + "22 Use fake experts \n", + "23 Use Search Engine Optimization \n", + "24 Censor social media as a political force \n", + "25 Harass \n", + "26 Flooding the Information Space \n", + "27 Organize Events \n", + "28 Play the long game \n", + "29 Continue to Amplify \n", + "30 Sell Merchandise \n", + "\n", + " name_y \\\n", + "2 Competing Narratives \n", + "3 Create fake Social Media Profiles / Pages / Gr... \n", + "6 Hijack legitimate account \n", + "7 Create fake websites \n", + "8 Create funding campaigns \n", + "9 Create hashtag \n", + "10 Clickbait \n", + "11 Promote online funding \n", + "12 Paid targeted ads \n", + "15 Conspiracy narratives \n", + "17 Manipulate online polls \n", + "18 Demand unsurmountable proof \n", + "19 Kernel of Truth \n", + "20 Use SMS/ WhatsApp/ Chat apps \n", + "22 Use fake experts \n", + "23 Search Engine Optimization \n", + "24 Muzzle social media as a political force \n", + "25 Cow online opinion leaders \n", + "26 Flooding \n", + "27 Organise remote rallies and events \n", + "28 Play the long game \n", + "29 Continue to amplify \n", + "30 Sell merchandising \n", + "\n", + " summary_x \\\n", + "2 Advance competing narratives connected to same... \n", + "3 Create key social engineering assets needed to... \n", + "6 Hack or take over legimate accounts to distrib... \n", + "7 Create media assets to support inauthentic org... \n", + "8 Fundraising campaigns refer to an influence op... \n", + "9 Create one or more hashtags and/or hashtag gro... \n", + "10 Create attention grabbing headlines (outrage, ... \n", + "11 Fundraising campaigns refer to an influence op... \n", + "12 Create or fund advertisements targeted at spec... \n", + "15 \"Conspiracy narratives\" appeal to the human de... \n", + "17 Create fake online polls, or manipulate existi... \n", + "18 Campaigns often leverage tactical and informat... \n", + "19 Wrap lies or altered context/facts around trut... \n", + "20 Direct messaging via chat app is an increasing... \n", + "22 Use the fake experts that were set up during E... \n", + "23 Manipulate content engagement metrics (ie: Red... \n", + "24 Use political influence or the power of state ... \n", + "25 Threatening or harassing believers of opposing... \n", + "26 Flooding and/or mobbing social media channels ... \n", + "27 Coordinate and promote real-world events acros... \n", + "28 Play the long game refers to two phenomena: 1.... \n", + "29 continue narrative or message amplification af... \n", + "30 Sell mechandise refers to getting the message ... \n", + "\n", + " summary_y type \n", + "2 Advance competing narratives connected to same... technique \n", + "3 Create key social engineering assets needed to... technique \n", + "6 Hack or take over legimate accounts to distrib... technique \n", + "7 Create media assets to support fake organizati... technique \n", + "8 Generate revenue through online funding campai... technique \n", + "9 Many incident-based campaigns will create a ha... technique \n", + "10 Create attention grabbing headlines (outrage, ... technique \n", + "11 Drive traffic/engagement to funding campaign s... technique \n", + "12 Create or fund advertisements targeted at spec... technique \n", + "15 \"Conspiracy narratives appeal to the human des... technique \n", + "17 Create fake online polls, or manipulate existi... technique \n", + "18 Campaigns often leverage tactical and informat... technique \n", + "19 Wrap lies or altered context/facts around trut... technique \n", + "20 Direct messaging via encypted app is an increa... technique \n", + "22 Use the fake experts that were set up in T0009... technique \n", + "23 Manipulate content engagement metrics (ie: Red... technique \n", + "24 Use political influence or the power of state ... technique \n", + "25 Intimidate, coerce, threaten critics/dissident... technique \n", + "26 Flooding and/or mobbing social media channels ... technique \n", + "27 Coordinate and promote real-world events acros... technique \n", + "28 Play the long game can mean a couple of things... technique \n", + "29 continue narrative or message amplification af... technique \n", + "30 Sell hats, t-shirts, flags and other branded c... technique " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "changes = check_version_descriptions(metadata['techniques'], oldmeta['techniques'])\n", + "changes['type'] = 'technique'\n", + "dfchanges = pd.concat([dfchanges, changes])\n", + "changes" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "dfchanges.to_csv('temp_versionchanges.csv', index=False)" + ] + }, + { + "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 +} diff --git a/CODE/generate_DISARM_pages.ipynb b/CODE/generate_DISARM_pages.ipynb index 5969efa..49455cf 100644 --- a/CODE/generate_DISARM_pages.ipynb +++ b/CODE/generate_DISARM_pages.ipynb @@ -27,6 +27,36 @@ "name": "stdout", "output_type": "stream", "text": [ + "../DISARM_MASTER_DATA/ADMIN_DATA_README.csv ADMIN_DATA_README\n", + "../DISARM_MASTER_DATA/detections.csv detections\n", + "../DISARM_MASTER_DATA/actortypes.csv actortypes\n", + "../DISARM_MASTER_DATA/responsetypes.csv responsetypes\n", + "../DISARM_MASTER_DATA/phases.csv phases\n", + "../DISARM_MASTER_DATA/externalgroupcounters.csv externalgroupcounters\n", + "../DISARM_MASTER_DATA/metatechniques.csv metatechniques\n", + "../DISARM_MASTER_DATA/techniques.csv techniques\n", + "../DISARM_MASTER_DATA/MOP.csv MOP\n", + "../DISARM_MASTER_DATA/MOE.csv MOE\n", + "../DISARM_MASTER_DATA/narratives.csv narratives\n", + "../DISARM_MASTER_DATA/forums.csv forums\n", + "../DISARM_MASTER_DATA/playbooks.csv playbooks\n", + "../DISARM_MASTER_DATA/resources.csv resources\n", + "../DISARM_MASTER_DATA/suggested_externalgroups.csv suggested_externalgroups\n", + "../DISARM_MASTER_DATA/tasks.csv tasks\n", + "../DISARM_MASTER_DATA/incidenttechniques.csv incidenttechniques\n", + "../DISARM_MASTER_DATA/ADMIN_FRAMEWORK_README.csv ADMIN_FRAMEWORK_README\n", + "../DISARM_MASTER_DATA/examples.csv examples\n", + "../DISARM_MASTER_DATA/tools.csv tools\n", + "../DISARM_MASTER_DATA/removed_externalgroups.csv removed_externalgroups\n", + "../DISARM_MASTER_DATA/removed_tools.csv removed_tools\n", + "../DISARM_MASTER_DATA/frameworks.csv frameworks\n", + "../DISARM_MASTER_DATA/externalgroups.csv externalgroups\n", + "../DISARM_MASTER_DATA/countermeasures.csv countermeasures\n", + "../DISARM_MASTER_DATA/DISARM_COMMENTS_MASTER.csv DISARM_COMMENTS_MASTER\n", + "../DISARM_MASTER_DATA/tactics.csv tactics\n", + "../DISARM_MASTER_DATA/sectors.csv sectors\n", + "../DISARM_MASTER_DATA/ADMIN_FRAMEWORK CODES.csv ADMIN_FRAMEWORK CODES\n", + "../DISARM_MASTER_DATA/incidents.csv incidents\n", "updated ../generated_pages/disarm_red_framework.md\n", "updated ../generated_files/disarm_red_framework_clickable.html\n", "updated ../generated_pages/disarm_blue_framework.md\n", @@ -35,12 +65,8 @@ "updated ../generated_pages/phases_index.md\n", "Temp: objecttype tactic\n", "updated ../generated_pages/tactics_index.md\n", - "Updating ../generated_pages/tactics/TA10.md\n", "Temp: objecttype technique\n", "updated ../generated_pages/techniques_index.md\n", - "Updating ../generated_pages/techniques/T0103.001.md\n", - "Updating ../generated_pages/techniques/T0103.002.md\n", - "Updating ../generated_pages/techniques/T0128.md\n", "Temp: objecttype task\n", "updated ../generated_pages/tasks_index.md\n", "Temp: objecttype incident\n", @@ -74,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -94,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -113,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "scrolled": true }, @@ -660,7 +686,7 @@ "32 " ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -699,4 +725,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/CODE/generate_DISARM_pages.py b/CODE/generate_DISARM_pages.py index 9481f70..b6d507a 100644 --- a/CODE/generate_DISARM_pages.py +++ b/CODE/generate_DISARM_pages.py @@ -74,6 +74,7 @@ todo: import pandas as pd import numpy as np import os +import glob from sklearn.feature_extraction.text import CountVectorizer GENERATED_PAGES_DIR = '../generated_pages/' @@ -84,22 +85,16 @@ MASTERDATA_DIR = '../DISARM_MASTER_DATA/' class Disarm: - def __init__(self, - frameworkfile = MASTERDATA_DIR + 'DISARM_FRAMEWORKS_MASTER.xlsx', - datafile = MASTERDATA_DIR + 'DISARM_DATA_MASTER.xlsx', - commentsfile = MASTERDATA_DIR + 'DISARM_COMMENTS_MASTER.xlsx'): + def __init__(self): - # Load metadata from file + # Load metadata from files + # Older versions of DISARM are in excel files; newer ones in sets of CSV files metadata = {} - xlsx = pd.ExcelFile(frameworkfile) - for sheetname in xlsx.sheet_names: - metadata[sheetname] = xlsx.parse(sheetname) + for csvfile in glob.glob(MASTERDATA_DIR + '*.csv'): + sheetname = csvfile[csvfile.rfind('/')+1:-4] + metadata[sheetname] = pd.read_csv(csvfile) metadata[sheetname].fillna('', inplace=True) - xlsx = pd.ExcelFile(datafile) - for sheetname in xlsx.sheet_names: - metadata[sheetname] = xlsx.parse(sheetname) - metadata[sheetname].fillna('', inplace=True) # Create individual tables and dictionaries self.df_phases = metadata['phases'] @@ -120,9 +115,16 @@ class Disarm: self.df_resources = metadata['resources'] self.df_responsetypes = metadata['responsetypes'] self.df_metatechniques = metadata['metatechniques'] - self.it = self.create_incident_technique_crosstable(metadata['incidenttechniques']) + self.it = self.refine_incident_technique_crosstable(metadata['cross_incident_technique']) self.df_tactics = metadata['tactics'] self.df_playbooks = metadata['playbooks'] + self.cross_counterid_techniqueid = metadata['cross_counter_technique'] + self.cross_counterid_resourceid = metadata['cross_counter_resource'] + self.cross_counterid_actortypeid = metadata['cross_counter_actortype'] + self.cross_detectionid_techniqueid = metadata['cross_detection_technique'] + self.cross_detectionid_resourceid = metadata['cross_detection_resource'] + self.cross_detectionid_actortypeid = metadata['cross_detection_actortype'] + # Add columns containing lists of techniques and counters to the tactics dataframe self.df_techniques_per_tactic = self.df_techniques.groupby('tactic_id')['disarm_id'].apply(list).reset_index().rename({'disarm_id':'technique_ids'}, axis=1) @@ -142,22 +144,8 @@ class Disarm: # Create the data table for each framework file self.num_tactics = len(self.df_tactics) - # Create counters and detections cross-tables - self.cross_counterid_techniqueid = self.create_cross_table(self.df_counters[['disarm_id', 'techniques']], - 'techniques', 'technique', '\n') - self.cross_counterid_resourceid = self.create_cross_table(self.df_counters[['disarm_id', 'resources_needed']], - 'resources_needed', 'resource', ',') - self.cross_counterid_actortypeid = self.create_cross_table(self.df_counters[['disarm_id', 'actortypes']], - 'actortypes', 'actortype', ',') - self.cross_detectionid_techniqueid = self.create_cross_table(self.df_detections[['disarm_id', 'techniques']], - 'techniques', 'technique', '\n') - self.cross_detectionid_resourceid = self.create_cross_table(self.df_detections[['disarm_id', 'resources_needed']], - 'resources_needed', 'resource', ',') - self.cross_detectionid_actortypeid = self.create_cross_table(self.df_detections[['disarm_id', 'actortypes']], - 'actortypes', 'actortype', ',') - - def create_incident_technique_crosstable(self, it_metadata): + def refine_incident_technique_crosstable(self, it_metadata): # Generate full cross-table between incidents and techniques it = it_metadata @@ -175,21 +163,6 @@ class Disarm: def make_object_dictionary(self, df): return(pd.Series(df.name.values,index=df.disarm_id).to_dict()) - - def create_cross_table(self, df, col, newcol, divider=','): - ''' Convert a column with multiple values per cell into a crosstable - - # Thanks https://stackoverflow.com/questions/17116814/pandas-how-do-i-split-text-in-a-column-into-multiple-rows?noredirect=1 - ''' - crosstable = df.join(df[col] - .str.split(divider, expand=True).stack() - .reset_index(drop=True,level=1) - .rename(newcol)).drop(col, axis=1) - crosstable = crosstable[crosstable[newcol].notnull()] - crosstable[newcol+'_id'] = crosstable[newcol].str.split(' ').str[0] - crosstable.drop(newcol, axis=1, inplace=True) - return crosstable - def create_technique_incidents_string(self, techniqueid): diff --git a/DISARM_MASTER_DATA/.DS_Store b/DISARM_MASTER_DATA/.DS_Store index 755bc8b17b0654588cdfcc0d806ce0ab99fb7c95..9b34ee1f503b504f06dd4715318702069a51b6bb 100644 GIT binary patch literal 6148 zcmeHK!Ait15S^?mRJ|;C@t99={~#{);CaD|ht+OHg_bO~-t%#Om~S$}(xnOoL0Fkt zCNG)fHJcacbco2UKI$dWf`|$@Gi4~Yde}0$lA3krU z@7u=u7wp~Z=wA;GU|mzd6fgyjUjgK7w&Ft2T2sIjFa`Ds@cY5T8G~XH%&!hKxdZ^t z5zdA_*AmR}ia{|6Vg}}f3KXi-62l1{aj)xwViFWOIW0b%?(DQead~$<-{Y42nq*5tw}lWEre61^!flFSuPtl>h($ literal 6148 zcmeHKO-lkn7=EWL$0YDz(5->4O0Gc(T~^x;9lEqphl75Tju?`}H#Jn=|yz}wQ$Ft0gF9486Kd=A_06;Mb%xqxxgNb&LW^6^*WD$uR zqYM=|fHLeO8Z!zQ1(sa_adx+$is!Y8zsd9Kfdi-DLLJWG3_R@Nf#na9jvsL!Ss#8U z3X@)?@pt><+iUjvNu$}l7NrZ$BY*5S{mZa5@CwCa9`~AI-0Dg~ z7__j<%~co&e9++iI7lSdRSh&pb6#P4I6SD8m}Oa`5*u2TTD8OuYu0F#qg%UsN9W#C z)QqANjZgG29%q=)rRDdAl>7bv|~RJC2r_z7==gi-(`} zc}EBq9HH~L$PS*}ZXEIW0arc#5ED`ucNrAWABN_aVKHV6MggP1QYj$r2Zl+Ytua+7 zuMW&)2!NQuYH8?;SVC}^Mq6X55L?iQq9Q6P(IEy=bgXB(pRF-fsOUg+@ImyEm@32?H1kJ5%3w01z@IAc4b1?3y#N3J diff --git a/DISARM_MASTER_DATA/00_earlier_datasets/.DS_Store b/DISARM_MASTER_DATA/00_earlier_datasets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5751c81a92220a67c8db5f4547cb304db69b09c7 GIT binary patch literal 10244 zcmeHMU2GIp6uxI#=*-Z<6#9por3(c`XkoX7{_rE)b^*~=O1J+7mfgQRsDg%qpCtDMJb9Pe={%lYmptGItd& z0xkkB0xkkB0xkk~0Rs5UriEX|q+7cPxCpoiOd&w`2Ol0(1|2!Uq`h@uWv2ir^HFUV zJjXo1_VGC~=*S5sZCC7*We?!Ef|FtZbI0pGYK}7K$O$HyI|1fSz!@2w3kNMUv~Z;AI=*X;lES&~IJwj23phQRrAqXQBod`z6 z)&yc{bJV%p%dt^SH7&pY8gO~}OO_V!1^hDpNO;6ZhpniUG+UyHLE7p<_+pv!Xskz7 z(h;eo)zGb|sw)ZGL6sFWIozx2vXO2vlDcf#zF~HO7kD8eRg8_*H&*)sfxvjRZ!F+% ztgZGnGzP}U1-`Uu>(0)|aV@SJXBqn7?3Sb`Yc=TUIXrThaW(;RaGQe)Ie2H2;(STv znn_{SqW`mxi>m0!6*h4n> ziuOQ7AB)JGd%3*;3-4u)Mab-UO0bZnwe^4J6v8t2CwUx9ZnFJd3t)q{yufc(8KC!B_gdbaf>^E&5neU z!mX`$$k38;-Hb@ZLs4xgsYNZNS<|So*=H#yEqXR!8VRe_HjGG8(o{MXv{O?`2(8g| zCGF|psHGaZ*`p*(lvP2$4HFSA6_$F}-M`tteaD{A!|jJAiX!m7WbeKS=eh2?cAW7B_k}2~w2rGI7eRiyCpO zAelnfaop&cYpuAAmt>(^i^dd7K77E&ah@hqH+x!n z>2v-l9lI@RS_elJ9fzm0+gs`J^izGaEGsfjqN1$4$n%J&jhDXR2h5RZLOGbm2T(@e z!SnWVqMr7&S5_@!>S7nYD5-i%#b+BX2YbZvRl$vHRcvGhiN4FPChKr-+eJD^KaokA zJWF087sy-W61hS?CSQ=R$u)9=+$6WikK`Bf2l)$@KmqU|z)DyJrBDV{Pz^P(1$ICy zgkT@+hc@Vj9_WL9I10ls0#CqkI02_&494LpI0Mhad3XU{gg4-Acn2=RyKn_Qg{$x- zd zfjc@^5PA3Q7wi7hAi7b=!e&)T>6)sIHMR9SgHz06T+Glfo7Ogyr}5urvc32-DahhW z^mZfFm6P*@nN&bY%}-M6N}uSJmS8Zj=K2lTT#A9fnh$RBdL<6yk2SY!^@>s+Mwejw z)@{NjIE{uzQIzsA&VU|G)e4|GxpM CHgPxr literal 0 HcmV?d00001 diff --git a/DISARM_MASTER_DATA/00_earlier_datasets/2022-01-01_AMITT/AMITT_FRAMEWORKS_MASTER.xlsx b/DISARM_MASTER_DATA/00_earlier_datasets/2022-01-01_AMITT/AMITT_FRAMEWORKS_MASTER.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e345d33d7be767d0452e76817ab6191cdc0f840c GIT binary patch literal 126377 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

wRaccA_>LmyT;JWWCS`V<< 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 Na2|1S9Gt2E{{#E?8>RpN literal 0 HcmV?d00001 diff --git a/DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_COMMENTS_MASTER_0_1.csv b/DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_COMMENTS_MASTER_0_1.csv similarity index 100% rename from DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_COMMENTS_MASTER_0_1.csv rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_COMMENTS_MASTER_0_1.csv diff --git a/DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_DATA_MASTER_0_1.xlsx b/DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_DATA_MASTER_0_1.xlsx similarity index 100% rename from DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_DATA_MASTER_0_1.xlsx rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_DATA_MASTER_0_1.xlsx diff --git a/DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx b/DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx similarity index 100% rename from DISARM_MASTER_DATA/2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-06-30_DISARM_0_1/DISARM_FRAMEWORKS_MASTER_0_1.xlsx diff --git a/DISARM_MASTER_DATA/DISARM_COMMENTS_MASTER.csv b/DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_COMMENTS_MASTER.csv similarity index 100% rename from DISARM_MASTER_DATA/DISARM_COMMENTS_MASTER.csv rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_COMMENTS_MASTER.csv diff --git a/DISARM_MASTER_DATA/DISARM_DATA_MASTER.xlsx b/DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_DATA_MASTER.xlsx similarity index 98% rename from DISARM_MASTER_DATA/DISARM_DATA_MASTER.xlsx rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_DATA_MASTER.xlsx index e5ed780046377f053c0e964df00587406e7e7070..a339c840a068fb11fdf02bb5132a31190130f19b 100644 GIT binary patch delta 3652 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 delta 3616 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 Ch;gt0 diff --git a/DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER.xlsx b/DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_FRAMEWORKS_MASTER.xlsx similarity index 99% rename from DISARM_MASTER_DATA/DISARM_FRAMEWORKS_MASTER.xlsx rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_a/DISARM_FRAMEWORKS_MASTER.xlsx index 29d31e9235be715551f150c08c44ae46dbe450c8..e4fece1b44e6688634d6141017cdc2f958fe4660 100644 GIT binary patch delta 3893 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 AWdHyG delta 3784 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 Oe*g&3WXA&JLH+|JdcG(C diff --git a/CODE/DISARM-STIX2/.DS_Store b/DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/.DS_Store similarity index 80% rename from CODE/DISARM-STIX2/.DS_Store rename to DISARM_MASTER_DATA/00_earlier_datasets/2022-08-24_DISARM_0_1_b/.DS_Store index 0e98b23f6f0b24605cf813626110543dd4127ebe..3734fa1ca50b20ed0ba592344b100e5b9117582c 100644 GIT binary patch literal 6148 zcmeHK!A`?440Xnk3S4^Rm|xf*l&KszPvXJ>))g_NRGDbG=i~S=o?~n3RL~FygeF_E zU+UOR^CHDH5xM1iyC5owsDLugE?~Y8o@brNOg-m7m*4S9&-6x*)Y5tqZI1uQ0H0ln zQ(NQQ0*%jafUn2QKz-Y9LK9=)4IB*)FN@VCcDvDTkLGl-uA2}WarC)1GzN?TW8l;oK+R?;t^~~*1IB-3WCXXf8|J(2T|HCAEG6sx+lVZTl>s7tPmbA7`HpjKrL!Y259G3+5DH!BZj94zk b*U&8RdmaEQ#Uuz1#C`-a4Q7miKV{$(snSER delta 141 zcmZoMXfc=|#>CJzu~2NHo}wrd0|Nsi1A_nqLn=cNLvc!Ra!ykI#6tDS1|lp*>@N)p|0g8NQp3E