mirror of
https://github.com/DISARMFoundation/DISARMframeworks.git
synced 2025-08-05 21:14:16 -04:00
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.
This commit is contained in:
parent
cae9cbc55e
commit
1bc8d88b63
99 changed files with 15137 additions and 14858 deletions
|
@ -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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>ID</th>\n",
|
||||
" <th>metatechnique</th>\n",
|
||||
" <th>Title</th>\n",
|
||||
" <th>Details</th>\n",
|
||||
" <th>Playbook(s)</th>\n",
|
||||
" <th>Resources needed</th>\n",
|
||||
" <th>How found</th>\n",
|
||||
" <th>References</th>\n",
|
||||
" <th>Incidents</th>\n",
|
||||
" <th>Tactic</th>\n",
|
||||
" <th>Response</th>\n",
|
||||
" <th>Techniques</th>\n",
|
||||
" <th>NOTES</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00043</td>\n",
|
||||
" <td>cleaning</td>\n",
|
||||
" <td>Detect hijacked accounts and reallocate them</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>In all playbooks the platform must force user ...</td>\n",
|
||||
" <td>platform_admin,activists,civil_society,money</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA03 Develop People</td>\n",
|
||||
" <td>D3 Disrupt</td>\n",
|
||||
" <td>T0011 - Hijack accounts</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00053</td>\n",
|
||||
" <td>cleaning</td>\n",
|
||||
" <td>Delete old accounts / Remove unused social med...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>Social media companies remove inactive account...</td>\n",
|
||||
" <td>platform_admin,platform_admin:socialmedia,publ...</td>\n",
|
||||
" <td>2019-11-workshop,2019-11-search</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>I00004</td>\n",
|
||||
" <td>TA04 Develop Networks</td>\n",
|
||||
" <td>D4 Degrade</td>\n",
|
||||
" <td>T0011 - Hijack accounts\\nTA06 - Develop Conten...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>C00074</td>\n",
|
||||
" <td>cleaning</td>\n",
|
||||
" <td>Identify identical content and mass deplatform</td>\n",
|
||||
" <td>\\n</td>\n",
|
||||
" <td>In all cases some checks need to prevent depla...</td>\n",
|
||||
" <td>platform_admin,platform_admin:socialmedia</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA06 Develop Content</td>\n",
|
||||
" <td>D2 Deny</td>\n",
|
||||
" <td>T0022 - Conspiracy narratives\\nT0026 - Create ...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>C00026</td>\n",
|
||||
" <td>countermessaging</td>\n",
|
||||
" <td>Shore up democracy based messages (peace, free...</td>\n",
|
||||
" <td>Unsure</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA01 Strategic Planning</td>\n",
|
||||
" <td>D4 Degrade</td>\n",
|
||||
" <td>T0002 - Facilitate State Propaganda</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>C00082</td>\n",
|
||||
" <td>countermessaging</td>\n",
|
||||
" <td>Ground truthing as automated response to pollu...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA06 Develop Content</td>\n",
|
||||
" <td>D3 Disrupt</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>181</th>\n",
|
||||
" <td>C00214</td>\n",
|
||||
" <td>metatechnique</td>\n",
|
||||
" <td>Create policy that makes social media police d...</td>\n",
|
||||
" <td>German model: facebook forced to police conten...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>government:policymakers</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA07 Channel Selection</td>\n",
|
||||
" <td>D3 Disrupt</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>182</th>\n",
|
||||
" <td>C00215</td>\n",
|
||||
" <td>metatechnique</td>\n",
|
||||
" <td>Use fraud legislation to clean up social media</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>government:policymakers</td>\n",
|
||||
" <td>2019-11-workshop</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA07 Channel Selection</td>\n",
|
||||
" <td>D3 Disrupt</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>183</th>\n",
|
||||
" <td>C00217</td>\n",
|
||||
" <td>daylight</td>\n",
|
||||
" <td>Registries alert when large batches of newsy U...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>platform_admin</td>\n",
|
||||
" <td>grugq</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA07 Channel Selection</td>\n",
|
||||
" <td>D2 Deny</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>184</th>\n",
|
||||
" <td>C00218</td>\n",
|
||||
" <td>removal</td>\n",
|
||||
" <td>Censorship</td>\n",
|
||||
" <td>Alter and/or block the publication/disseminati...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>platform_admin</td>\n",
|
||||
" <td>grugq</td>\n",
|
||||
" <td>Taylor81</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA09 Exposure</td>\n",
|
||||
" <td>D2 Deny</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>185</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>daylight</td>\n",
|
||||
" <td>Add metadata to content - out of the control o...</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>Add date and source to images</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>grugq</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>TA06 Develop Content</td>\n",
|
||||
" <td>D3 Disrupt</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>186 rows × 13 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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
|
||||
}
|
|
@ -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
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>amitt_id</th>\n",
|
||||
" <th>name</th>\n",
|
||||
" <th>summary</th>\n",
|
||||
" <th>sector_ids</th>\n",
|
||||
" <th>framework_ids</th>\n",
|
||||
" <th>longname</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>A001</td>\n",
|
||||
" <td>data scientist</td>\n",
|
||||
" <td>Person who can wrangle data, implement machine...</td>\n",
|
||||
" <td>S001, S002, S003, S004, S005, S006, S007, S008...</td>\n",
|
||||
" <td>FW01, FW02</td>\n",
|
||||
" <td>A001 - data scientist</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>A002</td>\n",
|
||||
" <td>target</td>\n",
|
||||
" <td>Person being targeted by disinformation campaign</td>\n",
|
||||
" <td>S001, S002, S003, S004, S005, S006, S007, S008...</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A002 - target</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>A003</td>\n",
|
||||
" <td>trusted authority</td>\n",
|
||||
" <td>Influencer</td>\n",
|
||||
" <td>S001, S002, S003, S004, S005, S006, S007, S008...</td>\n",
|
||||
" <td>FW01, FW02</td>\n",
|
||||
" <td>A003 - trusted authority</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>A004</td>\n",
|
||||
" <td>activist</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A004 - activist</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>A005</td>\n",
|
||||
" <td>community group</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A005 - community group</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>5</th>\n",
|
||||
" <td>A006</td>\n",
|
||||
" <td>educator</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A006 - educator</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>6</th>\n",
|
||||
" <td>A007</td>\n",
|
||||
" <td>factchecker</td>\n",
|
||||
" <td>Someone with the skills to verify whether info...</td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A007 - factchecker</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>7</th>\n",
|
||||
" <td>A008</td>\n",
|
||||
" <td>library</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A008 - library</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>8</th>\n",
|
||||
" <td>A009</td>\n",
|
||||
" <td>NGO</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A009 - NGO</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>9</th>\n",
|
||||
" <td>A010</td>\n",
|
||||
" <td>religious organisation</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A010 - religious organisation</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>10</th>\n",
|
||||
" <td>A011</td>\n",
|
||||
" <td>school</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S002</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A011 - school</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>11</th>\n",
|
||||
" <td>A012</td>\n",
|
||||
" <td>account owner</td>\n",
|
||||
" <td>Anyone who owns an account online</td>\n",
|
||||
" <td>S006</td>\n",
|
||||
" <td>FW01\\nFW02</td>\n",
|
||||
" <td>A012 - account owner</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>12</th>\n",
|
||||
" <td>A013</td>\n",
|
||||
" <td>content creator</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S006</td>\n",
|
||||
" <td>FW01\\nFW02</td>\n",
|
||||
" <td>A013 - content creator</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>13</th>\n",
|
||||
" <td>A014</td>\n",
|
||||
" <td>elves</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S006</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A014 - elves</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>14</th>\n",
|
||||
" <td>A015</td>\n",
|
||||
" <td>general public</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S006</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A015 - general public</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>15</th>\n",
|
||||
" <td>A016</td>\n",
|
||||
" <td>influencer</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S006</td>\n",
|
||||
" <td>FW01\\nFW02</td>\n",
|
||||
" <td>A016 - influencer</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>16</th>\n",
|
||||
" <td>A017</td>\n",
|
||||
" <td>coordinating body</td>\n",
|
||||
" <td>For example the DHS</td>\n",
|
||||
" <td>S003</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A017 - coordinating body</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>17</th>\n",
|
||||
" <td>A018</td>\n",
|
||||
" <td>government</td>\n",
|
||||
" <td>Government agencies</td>\n",
|
||||
" <td>S003</td>\n",
|
||||
" <td>FW01\\nFW02</td>\n",
|
||||
" <td>A018 - government</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>18</th>\n",
|
||||
" <td>A019</td>\n",
|
||||
" <td>military</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S003</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A019 - military</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>A020</td>\n",
|
||||
" <td>policy maker</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S003</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A020 - policy maker</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>20</th>\n",
|
||||
" <td>A021</td>\n",
|
||||
" <td>media organisation</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S010</td>\n",
|
||||
" <td>FW01\\nFW02</td>\n",
|
||||
" <td>A021 - media organisation</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>21</th>\n",
|
||||
" <td>A022</td>\n",
|
||||
" <td>company</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S009</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A022 - company</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>22</th>\n",
|
||||
" <td>A023</td>\n",
|
||||
" <td>adtech provider</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A023 - adtech provider</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>23</th>\n",
|
||||
" <td>A024</td>\n",
|
||||
" <td>developer</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A024 - developer</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>24</th>\n",
|
||||
" <td>A025</td>\n",
|
||||
" <td>funding_site_admin</td>\n",
|
||||
" <td>Funding site admin</td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A025 - funding_site_admin</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>25</th>\n",
|
||||
" <td>A026</td>\n",
|
||||
" <td>games designer</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW01, FW02</td>\n",
|
||||
" <td>A026 - games designer</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>26</th>\n",
|
||||
" <td>A027</td>\n",
|
||||
" <td>information security</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A027 - information security</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>27</th>\n",
|
||||
" <td>A028</td>\n",
|
||||
" <td>platform administrator</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A028 - platform administrator</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>28</th>\n",
|
||||
" <td>A029</td>\n",
|
||||
" <td>server admininistrator</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S008</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A029 - server admininistrator</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>29</th>\n",
|
||||
" <td>A030</td>\n",
|
||||
" <td>platforms</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S007</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A030 - platforms</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>30</th>\n",
|
||||
" <td>A031</td>\n",
|
||||
" <td>social media platform adminstrator</td>\n",
|
||||
" <td>Person with the authority to make changes to a...</td>\n",
|
||||
" <td>S007</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A031 - social media platform adminstrator</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>31</th>\n",
|
||||
" <td>A032</td>\n",
|
||||
" <td>social media platform outreach</td>\n",
|
||||
" <td></td>\n",
|
||||
" <td>S007</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A032 - social media platform outreach</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>32</th>\n",
|
||||
" <td>A033</td>\n",
|
||||
" <td>social media platform owner</td>\n",
|
||||
" <td>Person with authority to make changes to a soc...</td>\n",
|
||||
" <td>S007</td>\n",
|
||||
" <td>FW02</td>\n",
|
||||
" <td>A033 - social media platform owner</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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
|
||||
}
|
|
@ -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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>amitt_id</th>\n",
|
||||
" <th>technique_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>T0007</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>T0015</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>T0018</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>T0043</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>T0053</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0025</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>136</th>\n",
|
||||
" <td>C00220</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>137</th>\n",
|
||||
" <td>C00221</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>138</th>\n",
|
||||
" <td>C00222</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>139</th>\n",
|
||||
" <td>C00223</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>898 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>id</th>\n",
|
||||
" <th>actor_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>A033</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>A007</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>C00009</td>\n",
|
||||
" <td>A016</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>C00009</td>\n",
|
||||
" <td>A006</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>C00010</td>\n",
|
||||
" <td>A020</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>136</th>\n",
|
||||
" <td>C00220</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>137</th>\n",
|
||||
" <td>C00221</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>138</th>\n",
|
||||
" <td>C00222</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>139</th>\n",
|
||||
" <td>C00223</td>\n",
|
||||
" <td></td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>166 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>id</th>\n",
|
||||
" <th>technique_id</th>\n",
|
||||
" <th>Weight</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>TA01</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>TA06</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>TA08</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>T0006</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>T0009</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>134</th>\n",
|
||||
" <td>C00216</td>\n",
|
||||
" <td>T0018</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>134</th>\n",
|
||||
" <td>C00216</td>\n",
|
||||
" <td>T0057</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0024</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0026</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0025</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>717 rows × 3 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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
|
||||
}
|
|
@ -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
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>technique_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00022</td>\n",
|
||||
" <td>T0001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00022</td>\n",
|
||||
" <td>T0002</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00022</td>\n",
|
||||
" <td>T0003</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00022</td>\n",
|
||||
" <td>T0006</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>C00022</td>\n",
|
||||
" <td>T0027</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>134</th>\n",
|
||||
" <td>C00216</td>\n",
|
||||
" <td>T0018</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>134</th>\n",
|
||||
" <td>C00216</td>\n",
|
||||
" <td>T0057</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0024</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0026</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>135</th>\n",
|
||||
" <td>C00219</td>\n",
|
||||
" <td>T0025</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>881 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>resource_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>26</th>\n",
|
||||
" <td>C00044</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>59</th>\n",
|
||||
" <td>C00092</td>\n",
|
||||
" <td>R001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>63</th>\n",
|
||||
" <td>C00097</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>65</th>\n",
|
||||
" <td>C00099</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>67</th>\n",
|
||||
" <td>C00101</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>69</th>\n",
|
||||
" <td>C00105</td>\n",
|
||||
" <td>R003</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>99</th>\n",
|
||||
" <td>C00142</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>102</th>\n",
|
||||
" <td>C00147</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>103</th>\n",
|
||||
" <td>C00148</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>126</th>\n",
|
||||
" <td>C00195</td>\n",
|
||||
" <td>R002</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>127</th>\n",
|
||||
" <td>C00197</td>\n",
|
||||
" <td>R003</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>actortype_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>C00006</td>\n",
|
||||
" <td>A033</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>C00008</td>\n",
|
||||
" <td>A007</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>C00009</td>\n",
|
||||
" <td>A016</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>C00009</td>\n",
|
||||
" <td>A006</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>C00010</td>\n",
|
||||
" <td>A020</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>132</th>\n",
|
||||
" <td>C00207</td>\n",
|
||||
" <td>A018</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>132</th>\n",
|
||||
" <td>C00207</td>\n",
|
||||
" <td>A033</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>133</th>\n",
|
||||
" <td>C00212</td>\n",
|
||||
" <td>A006</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>133</th>\n",
|
||||
" <td>C00212</td>\n",
|
||||
" <td>A018</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>134</th>\n",
|
||||
" <td>C00216</td>\n",
|
||||
" <td>A023</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>79 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>technique_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>F00001</td>\n",
|
||||
" <td>All</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>F00002</td>\n",
|
||||
" <td>T0049</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>F00002</td>\n",
|
||||
" <td>T0052</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>F00002</td>\n",
|
||||
" <td>T0053</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>F00002</td>\n",
|
||||
" <td>T0054</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>82</th>\n",
|
||||
" <td>F00083</td>\n",
|
||||
" <td>T0012</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>82</th>\n",
|
||||
" <td>F00083</td>\n",
|
||||
" <td>T0021</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>92</th>\n",
|
||||
" <td>F00093</td>\n",
|
||||
" <td>T0011</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>93</th>\n",
|
||||
" <td>F00094</td>\n",
|
||||
" <td>T0013</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>93</th>\n",
|
||||
" <td>F00094</td>\n",
|
||||
" <td>T0008</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>159 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>resource_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>F00020</td>\n",
|
||||
" <td>R004</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>81</th>\n",
|
||||
" <td>F00082</td>\n",
|
||||
" <td>R005</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>91</th>\n",
|
||||
" <td>F00092</td>\n",
|
||||
" <td>R006</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>disarm_id</th>\n",
|
||||
" <th>actortype_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>F00020</td>\n",
|
||||
" <td>A015</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>F00020</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19</th>\n",
|
||||
" <td>F00020</td>\n",
|
||||
" <td>A031</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>42</th>\n",
|
||||
" <td>F00043</td>\n",
|
||||
" <td>A031</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>42</th>\n",
|
||||
" <td>F00043</td>\n",
|
||||
" <td>A015</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>66</th>\n",
|
||||
" <td>F00067</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>69</th>\n",
|
||||
" <td>F00070</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>70</th>\n",
|
||||
" <td>F00071</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>71</th>\n",
|
||||
" <td>F00072</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>78</th>\n",
|
||||
" <td>F00079</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>79</th>\n",
|
||||
" <td>F00080</td>\n",
|
||||
" <td>A015</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>81</th>\n",
|
||||
" <td>F00082</td>\n",
|
||||
" <td>A028</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>90</th>\n",
|
||||
" <td>F00091</td>\n",
|
||||
" <td>A001</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>90</th>\n",
|
||||
" <td>F00091</td>\n",
|
||||
" <td>A024</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>91</th>\n",
|
||||
" <td>F00092</td>\n",
|
||||
" <td>A015</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>93</th>\n",
|
||||
" <td>F00094</td>\n",
|
||||
" <td>A028</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"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
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"cells": [],
|
||||
"metadata": {},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue