AMITT/HTML_GENERATING_CODE/test_new_code.ipynb
2021-02-24 21:26:45 +00:00

1881 строка
64 KiB
Plaintext
Исходник Ответственный История

Этот файл содержит неоднозначные символы Юникода

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"updated ../amitt_red_framework.md\n",
"updated ../amitt_blue_framework.md\n",
"updated ../amitt_red_framework_clickable.html\n",
"updated ../phases_index.md\n",
"updated ../tactics_index.md\n",
"Updating ../tactics/TA02.md\n",
"Updating ../tactics/TA03.md\n",
"Updating ../tactics/TA04.md\n",
"Updating ../tactics/TA06.md\n",
"updated ../techniques_index.md\n",
"Updating ../techniques/T0008.md\n",
"Updating ../techniques/T0014.md\n",
"Updating ../techniques/T0015.md\n",
"Updating ../techniques/T0017.md\n",
"Updating ../techniques/T0046.md\n",
"Updating ../techniques/T0047.md\n",
"Updating ../techniques/T0052.md\n",
"Updating ../techniques/T0055.md\n",
"Updating ../techniques/T0057.md\n",
"Updating ../techniques/T0061.md\n",
"updated ../tasks_index.md\n",
"updated ../incidents_index.md\n",
"updated ../counters_index.md\n",
"Updating ../counters/C00028.md\n",
"Updating ../counters/C00032.md\n",
"Updating ../counters/C00060.md\n",
"Updating ../counters/C00070.md\n",
"Updating ../counters/C00164.md\n",
"Updating ../counters/C00207.md\n",
"Updating ../counters/C00222.md\n",
"updated ../metatechniques_index.md\n",
"Updating ../metatechniques/M005.md\n",
"Updating ../metatechniques/M007.md\n",
"Updating ../metatechniques/M011.md\n",
"Updating ../metatechniques/M013.md\n",
"updated ../actors_index.md\n",
"Updating ../actors/A018.md\n",
"Updating ../actors/A020.md\n",
"Updating ../actors/A033.md\n",
"updated ../responsetype_index.md\n",
"updated ../detections_index.md\n",
"updated ../tactics_by_responsetype_table.md\n",
"updated ../metatechniques_by_responsetype_table.md\n"
]
}
],
"source": [
"import pandas as pd\n",
"from generate_amitt_ttps import Amitt\n",
"amitt = Amitt()\n",
"amitt.generate_and_write_datafiles()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Check which amitt variables we can see from here\n",
"print('{}'.format(vars(amitt).keys()))\n",
"vars(amitt)['tactics']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TEST AREA"
]
},
{
"cell_type": "code",
"execution_count": 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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"12\" halign=\"left\">id</th>\n",
" </tr>\n",
" <tr>\n",
" <th>tactic_id</th>\n",
" <th>TA01</th>\n",
" <th>TA02</th>\n",
" <th>TA03</th>\n",
" <th>TA04</th>\n",
" <th>TA05</th>\n",
" <th>TA06</th>\n",
" <th>TA07</th>\n",
" <th>TA08</th>\n",
" <th>TA09</th>\n",
" <th>TA10</th>\n",
" <th>TA11</th>\n",
" <th>TA12</th>\n",
" </tr>\n",
" <tr>\n",
" <th>responsetype</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>ALL</th>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D2 Deny</th>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>11</td>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D3 Disrupt</th>\n",
" <td>6</td>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>3</td>\n",
" <td>5</td>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>3</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D4 Degrade</th>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D5 Deceive</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D6 Destroy</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D7 Deter</th>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id \n",
"tactic_id TA01 TA02 TA03 TA04 TA05 TA06 TA07 TA08 TA09 TA10 TA11 TA12\n",
"responsetype \n",
"ALL 4 0 0 0 0 0 0 0 0 0 0 0\n",
"D2 Deny 11 0 10 11 2 13 7 7 3 1 1 0\n",
"D3 Disrupt 6 5 7 3 5 8 7 3 14 0 6 1\n",
"D4 Degrade 7 0 1 3 0 5 3 2 2 0 6 2\n",
"D5 Deceive 0 0 1 0 0 2 1 0 0 0 0 0\n",
"D6 Destroy 0 0 1 1 0 0 0 0 0 0 0 0\n",
"D7 Deter 4 0 1 0 0 5 0 3 0 1 0 0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"counts_table = pd.pivot_table(amitt.df_counters[['tactic_id', 'responsetype',\n",
" 'id']], index='responsetype', columns='tactic_id', aggfunc=len, fill_value=0)\n",
"counts_table"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['TA01', 'TA02', 'TA03', 'TA04', 'TA05', 'TA06', 'TA07', 'TA08', 'TA09',\n",
" 'TA10', 'TA11', 'TA12'],\n",
" dtype='object', name='tactic_id')"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"counts_table.columns.get_level_values(1)"
]
},
{
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">id</th>\n",
" <th>TOTALS</th>\n",
" </tr>\n",
" <tr>\n",
" <th>responsetype</th>\n",
" <th>ALL</th>\n",
" <th>D2 Deny</th>\n",
" <th>D3 Disrupt</th>\n",
" <th>D4 Degrade</th>\n",
" <th>D5 Deceive</th>\n",
" <th>D6 Destroy</th>\n",
" <th>D7 Deter</th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>metatechnique_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>M001</th>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M002</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>10</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M003</th>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M004</th>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>7</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M005</th>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M006</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M007</th>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M008</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M009</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M010</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M011</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M012</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M013</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M014</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id \\\n",
"responsetype ALL D2 Deny D3 Disrupt D4 Degrade D5 Deceive D6 Destroy \n",
"metatechnique_id \n",
"M001 0 10 7 7 0 0 \n",
"M002 0 2 10 2 3 0 \n",
"M003 0 6 8 2 0 1 \n",
"M004 0 13 7 6 0 0 \n",
"M005 0 15 4 0 0 0 \n",
"M006 0 7 0 0 0 0 \n",
"M007 4 3 6 0 0 0 \n",
"M008 0 0 1 4 1 0 \n",
"M009 0 0 5 1 0 0 \n",
"M010 0 3 8 4 0 1 \n",
"M011 0 2 1 0 0 0 \n",
"M012 0 2 1 1 0 0 \n",
"M013 0 1 6 3 0 0 \n",
"M014 0 2 1 1 0 0 \n",
"\n",
" TOTALS \n",
"responsetype D7 Deter \n",
"metatechnique_id \n",
"M001 4 28 \n",
"M002 0 17 \n",
"M003 2 19 \n",
"M004 0 26 \n",
"M005 0 19 \n",
"M006 3 10 \n",
"M007 3 16 \n",
"M008 0 6 \n",
"M009 0 6 \n",
"M010 1 17 \n",
"M011 0 3 \n",
"M012 0 4 \n",
"M013 1 11 \n",
"M014 0 4 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coltype = 'responsetype'\n",
"rowtype = 'metatechnique_id'\n",
"rowname = 'metatag'\n",
"counts_table2 = pd.pivot_table(amitt.df_counters[[coltype, rowtype,'id']], \n",
" index=rowtype, columns=coltype, aggfunc=len, \n",
" fill_value=0) \n",
"counts_table2['TOTALS'] = counts_table2.sum(axis=1)\n",
"counts_table2"
]
},
{
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">id</th>\n",
" <th>TOTALS</th>\n",
" </tr>\n",
" <tr>\n",
" <th>responsetype</th>\n",
" <th>ALL</th>\n",
" <th>D2 Deny</th>\n",
" <th>D3 Disrupt</th>\n",
" <th>D4 Degrade</th>\n",
" <th>D5 Deceive</th>\n",
" <th>D6 Destroy</th>\n",
" <th>D7 Deter</th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>tactic_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>TA01</th>\n",
" <td>4</td>\n",
" <td>11</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA02</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA03</th>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA04</th>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA05</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA06</th>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>8</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>33</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA07</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA08</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA09</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>14</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA10</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA11</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TA12</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id \\\n",
"responsetype ALL D2 Deny D3 Disrupt D4 Degrade D5 Deceive D6 Destroy D7 Deter \n",
"tactic_id \n",
"TA01 4 11 6 7 0 0 4 \n",
"TA02 0 0 5 0 0 0 0 \n",
"TA03 0 10 7 1 1 1 1 \n",
"TA04 0 11 3 3 0 1 0 \n",
"TA05 0 2 5 0 0 0 0 \n",
"TA06 0 13 8 5 2 0 5 \n",
"TA07 0 7 7 3 1 0 0 \n",
"TA08 0 7 3 2 0 0 3 \n",
"TA09 0 3 14 2 0 0 0 \n",
"TA10 0 1 0 0 0 0 1 \n",
"TA11 0 1 6 6 0 0 0 \n",
"TA12 0 0 1 2 0 0 0 \n",
"\n",
" TOTALS \n",
"responsetype \n",
"tactic_id \n",
"TA01 32 \n",
"TA02 5 \n",
"TA03 21 \n",
"TA04 18 \n",
"TA05 7 \n",
"TA06 33 \n",
"TA07 18 \n",
"TA08 15 \n",
"TA09 19 \n",
"TA10 2 \n",
"TA11 13 \n",
"TA12 3 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coltype = 'responsetype'\n",
"rowtype = 'tactic_id'\n",
"rowname = 'tacctic'\n",
"counts_table3 = pd.pivot_table(amitt.df_counters[[coltype, rowtype,'id']], \n",
" index=rowtype, columns=coltype, aggfunc=len, \n",
" fill_value=0) \n",
"counts_table3['TOTALS'] = counts_table3.sum(axis=1)\n",
"counts_table3"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">id</th>\n",
" <th>TOTALS</th>\n",
" </tr>\n",
" <tr>\n",
" <th>responsetype</th>\n",
" <th>ALL</th>\n",
" <th>D2 Deny</th>\n",
" <th>D3 Disrupt</th>\n",
" <th>D4 Degrade</th>\n",
" <th>D5 Deceive</th>\n",
" <th>D6 Destroy</th>\n",
" <th>D7 Deter</th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>metatechnique_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>M001</th>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>7</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M002</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>10</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M003</th>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M004</th>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>7</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M005</th>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M006</th>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M007</th>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M008</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M009</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M010</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>8</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M011</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M012</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M013</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>6</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>M014</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id \\\n",
"responsetype ALL D2 Deny D3 Disrupt D4 Degrade D5 Deceive D6 Destroy \n",
"metatechnique_id \n",
"M001 0 10 7 7 0 0 \n",
"M002 0 2 10 2 3 0 \n",
"M003 0 6 8 2 0 1 \n",
"M004 0 13 7 6 0 0 \n",
"M005 0 15 4 0 0 0 \n",
"M006 0 7 0 0 0 0 \n",
"M007 4 3 6 0 0 0 \n",
"M008 0 0 1 4 1 0 \n",
"M009 0 0 5 1 0 0 \n",
"M010 0 3 8 4 0 1 \n",
"M011 0 2 1 0 0 0 \n",
"M012 0 2 1 1 0 0 \n",
"M013 0 1 6 3 0 0 \n",
"M014 0 2 1 1 0 0 \n",
"\n",
" TOTALS \n",
"responsetype D7 Deter \n",
"metatechnique_id \n",
"M001 4 28 \n",
"M002 0 17 \n",
"M003 2 19 \n",
"M004 0 26 \n",
"M005 0 19 \n",
"M006 3 10 \n",
"M007 3 16 \n",
"M008 0 6 \n",
"M009 0 6 \n",
"M010 1 17 \n",
"M011 0 3 \n",
"M012 0 4 \n",
"M013 1 11 \n",
"M014 0 4 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"counts_table4 = pd.pivot_table(amitt.df_counters[['responsetype', 'metatechnique_id','id']], \n",
" index='metatechnique_id', columns='responsetype', aggfunc=len, \n",
" fill_value=0) \n",
"counts_table4['TOTALS'] = counts_table4.sum(axis=1)\n",
"counts_table4"
]
},
{
"cell_type": "code",
"execution_count": 10,
"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>name</th>\n",
" <th>metatechnique</th>\n",
" <th>summary</th>\n",
" <th>playbooks</th>\n",
" <th>actors</th>\n",
" <th>resources_needed</th>\n",
" <th>how_found</th>\n",
" <th>references</th>\n",
" <th>incident_ids</th>\n",
" <th>tactic</th>\n",
" <th>responsetype</th>\n",
" <th>notes</th>\n",
" <th>techniques</th>\n",
" <th>longname</th>\n",
" <th>tactic_id</th>\n",
" <th>tactic_name</th>\n",
" <th>metatechnique_id</th>\n",
" <th>metatechnique_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>C00001</td>\n",
" <td>Better models of info spread up the layers</td>\n",
" <td>M007 - metatechnique</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA01 Strategic Planning</td>\n",
" <td>ALL</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00001 - Better models of info spread up the l...</td>\n",
" <td>TA01</td>\n",
" <td>Strategic Planning</td>\n",
" <td>M007</td>\n",
" <td>- metatechnique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>C00003</td>\n",
" <td>How can we safeguard against extremists using ...</td>\n",
" <td>M007 - metatechnique</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA01 Strategic Planning</td>\n",
" <td>ALL</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00003 - How can we safeguard against extremis...</td>\n",
" <td>TA01</td>\n",
" <td>Strategic Planning</td>\n",
" <td>M007</td>\n",
" <td>- metatechnique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>C00004</td>\n",
" <td>Managing like a chronic disease</td>\n",
" <td>M007 - metatechnique</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA01 Strategic Planning</td>\n",
" <td>ALL</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00004 - Managing like a chronic disease</td>\n",
" <td>TA01</td>\n",
" <td>Strategic Planning</td>\n",
" <td>M007</td>\n",
" <td>- metatechnique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>C00005</td>\n",
" <td>Policy: makers, terminology, elements: a) broa...</td>\n",
" <td>M007 - metatechnique</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA01 Strategic Planning</td>\n",
" <td>ALL</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00005 - Policy: makers, terminology, elements...</td>\n",
" <td>TA01</td>\n",
" <td>Strategic Planning</td>\n",
" <td>M007</td>\n",
" <td>- metatechnique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>C00006</td>\n",
" <td>Charge for social media</td>\n",
" <td>M004 - friction</td>\n",
" <td>No corresponding AMITT technique.</td>\n",
" <td></td>\n",
" <td>A033 - social media platform owner</td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA01 Strategic Planning</td>\n",
" <td>D2 Deny</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00006 - Charge for social media</td>\n",
" <td>TA01</td>\n",
" <td>Strategic Planning</td>\n",
" <td>M004</td>\n",
" <td>- friction</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",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>C00215</td>\n",
" <td>Use fraud legislation to clean up social media</td>\n",
" <td>M007 - metatechnique</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>A020 - policy maker</td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA07 Channel Selection</td>\n",
" <td>D3 Disrupt</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00215 - Use fraud legislation to clean up soc...</td>\n",
" <td>TA07</td>\n",
" <td>Channel Selection</td>\n",
" <td>M007</td>\n",
" <td>- metatechnique</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>C00216</td>\n",
" <td>Use advertiser controls to stem flow of funds ...</td>\n",
" <td>M014 - reduce resources</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>A023 - adtech provider</td>\n",
" <td></td>\n",
" <td>2019-11-workshop</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA05 Microtargeting</td>\n",
" <td>D2 Deny</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00216 - Use advertiser controls to stem flow ...</td>\n",
" <td>TA05</td>\n",
" <td>Microtargeting</td>\n",
" <td>M014</td>\n",
" <td>- reduce resources</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>C00217</td>\n",
" <td>Registries alert when large batches of newsy U...</td>\n",
" <td>M003 - daylight</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>A028 - platform administrator</td>\n",
" <td></td>\n",
" <td>grugq</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA07 Channel Selection</td>\n",
" <td>D2 Deny</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00217 - Registries alert when large batches o...</td>\n",
" <td>TA07</td>\n",
" <td>Channel Selection</td>\n",
" <td>M003</td>\n",
" <td>- daylight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>C00218</td>\n",
" <td>Censorship</td>\n",
" <td>M005 - removal</td>\n",
" <td>Alter and/or block the publication/disseminati...</td>\n",
" <td></td>\n",
" <td>A031 - social media platform administrator</td>\n",
" <td></td>\n",
" <td>grugq</td>\n",
" <td>Taylor81</td>\n",
" <td></td>\n",
" <td>TA09 Exposure</td>\n",
" <td>D2 Deny</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00218 - Censorship</td>\n",
" <td>TA09</td>\n",
" <td>Exposure</td>\n",
" <td>M005</td>\n",
" <td>- removal</td>\n",
" </tr>\n",
" <tr>\n",
" <th>185</th>\n",
" <td>C00219</td>\n",
" <td>Add metadata to content - out of the control o...</td>\n",
" <td>M003 - daylight</td>\n",
" <td></td>\n",
" <td>Add date and source to images</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>grugq</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>TA06 Develop Content</td>\n",
" <td>D3 Disrupt</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>C00219 - Add metadata to content - out of the ...</td>\n",
" <td>TA06</td>\n",
" <td>Develop Content</td>\n",
" <td>M003</td>\n",
" <td>- daylight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>186 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" id name \\\n",
"67 C00001 Better models of info spread up the layers \n",
"68 C00003 How can we safeguard against extremists using ... \n",
"69 C00004 Managing like a chronic disease \n",
"70 C00005 Policy: makers, terminology, elements: a) broa... \n",
"71 C00006 Charge for social media \n",
".. ... ... \n",
"25 C00215 Use fraud legislation to clean up social media \n",
"50 C00216 Use advertiser controls to stem flow of funds ... \n",
"45 C00217 Registries alert when large batches of newsy U... \n",
"46 C00218 Censorship \n",
"185 C00219 Add metadata to content - out of the control o... \n",
"\n",
" metatechnique \\\n",
"67 M007 - metatechnique \n",
"68 M007 - metatechnique \n",
"69 M007 - metatechnique \n",
"70 M007 - metatechnique \n",
"71 M004 - friction \n",
".. ... \n",
"25 M007 - metatechnique \n",
"50 M014 - reduce resources \n",
"45 M003 - daylight \n",
"46 M005 - removal \n",
"185 M003 - daylight \n",
"\n",
" summary \\\n",
"67 \n",
"68 \n",
"69 \n",
"70 \n",
"71 No corresponding AMITT technique. \n",
".. ... \n",
"25 \n",
"50 \n",
"45 \n",
"46 Alter and/or block the publication/disseminati... \n",
"185 \n",
"\n",
" playbooks \\\n",
"67 \n",
"68 \n",
"69 \n",
"70 \n",
"71 \n",
".. ... \n",
"25 \n",
"50 \n",
"45 \n",
"46 \n",
"185 Add date and source to images \n",
"\n",
" actors resources_needed \\\n",
"67 \n",
"68 \n",
"69 \n",
"70 \n",
"71 A033 - social media platform owner \n",
".. ... ... \n",
"25 A020 - policy maker \n",
"50 A023 - adtech provider \n",
"45 A028 - platform administrator \n",
"46 A031 - social media platform administrator \n",
"185 \n",
"\n",
" how_found references incident_ids tactic \\\n",
"67 2019-11-workshop TA01 Strategic Planning \n",
"68 2019-11-workshop TA01 Strategic Planning \n",
"69 2019-11-workshop TA01 Strategic Planning \n",
"70 2019-11-workshop TA01 Strategic Planning \n",
"71 2019-11-workshop TA01 Strategic Planning \n",
".. ... ... ... ... \n",
"25 2019-11-workshop TA07 Channel Selection \n",
"50 2019-11-workshop TA05 Microtargeting \n",
"45 grugq TA07 Channel Selection \n",
"46 grugq Taylor81 TA09 Exposure \n",
"185 grugq TA06 Develop Content \n",
"\n",
" responsetype notes techniques \\\n",
"67 ALL \n",
"68 ALL \n",
"69 ALL \n",
"70 ALL \n",
"71 D2 Deny \n",
".. ... ... ... \n",
"25 D3 Disrupt \n",
"50 D2 Deny \n",
"45 D2 Deny \n",
"46 D2 Deny \n",
"185 D3 Disrupt \n",
"\n",
" longname tactic_id \\\n",
"67 C00001 - Better models of info spread up the l... TA01 \n",
"68 C00003 - How can we safeguard against extremis... TA01 \n",
"69 C00004 - Managing like a chronic disease TA01 \n",
"70 C00005 - Policy: makers, terminology, elements... TA01 \n",
"71 C00006 - Charge for social media TA01 \n",
".. ... ... \n",
"25 C00215 - Use fraud legislation to clean up soc... TA07 \n",
"50 C00216 - Use advertiser controls to stem flow ... TA05 \n",
"45 C00217 - Registries alert when large batches o... TA07 \n",
"46 C00218 - Censorship TA09 \n",
"185 C00219 - Add metadata to content - out of the ... TA06 \n",
"\n",
" tactic_name metatechnique_id metatechnique_name \n",
"67 Strategic Planning M007 - metatechnique \n",
"68 Strategic Planning M007 - metatechnique \n",
"69 Strategic Planning M007 - metatechnique \n",
"70 Strategic Planning M007 - metatechnique \n",
"71 Strategic Planning M004 - friction \n",
".. ... ... ... \n",
"25 Channel Selection M007 - metatechnique \n",
"50 Microtargeting M014 - reduce resources \n",
"45 Channel Selection M003 - daylight \n",
"46 Exposure M005 - removal \n",
"185 Develop Content M003 - daylight \n",
"\n",
"[186 rows x 19 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"amitt.df_counters"
]
},
{
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"7\" halign=\"left\">id</th>\n",
" <th>TOTALS</th>\n",
" </tr>\n",
" <tr>\n",
" <th>responsetype</th>\n",
" <th>ALL</th>\n",
" <th>D2 Deny</th>\n",
" <th>D3 Disrupt</th>\n",
" <th>D4 Degrade</th>\n",
" <th>D5 Deceive</th>\n",
" <th>D6 Destroy</th>\n",
" <th>D7 Deter</th>\n",
" <th></th>\n",
" </tr>\n",
" <tr>\n",
" <th>resource_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th></th>\n",
" <td>4</td>\n",
" <td>62</td>\n",
" <td>61</td>\n",
" <td>27</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>14</td>\n",
" <td>174</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R001</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R002</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R003</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>R004</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id \\\n",
"responsetype ALL D2 Deny D3 Disrupt D4 Degrade D5 Deceive D6 Destroy D7 Deter \n",
"resource_id \n",
" 4 62 61 27 4 2 14 \n",
"R001 0 1 0 0 0 0 0 \n",
"R002 0 1 0 0 0 0 0 \n",
"R003 0 0 2 0 0 0 0 \n",
"R004 0 2 2 4 0 0 0 \n",
"\n",
" TOTALS \n",
"responsetype \n",
"resource_id \n",
" 174 \n",
"R001 1 \n",
"R002 1 \n",
"R003 2 \n",
"R004 8 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"counts_table = pd.pivot_table(amitt.cross_counterid_resourceid.merge(amitt.df_counters[['id', 'responsetype']]), \n",
" index='resource_id', columns='responsetype', aggfunc=len, \n",
" fill_value=0)\n",
"counts_table['TOTALS'] = counts_table.sum(axis=1)\n",
"\n",
"counts_table"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "''",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-ea91eea54f15>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mamitt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite_counts_table_to_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'resource'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mamitt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresources\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcounts_table\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'testfile.txt'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/Dropbox/SJT_Projects_current/CogSecCollab/CODE_AND_DATA/github_cogseccollab_AMITT/HTML_GENERATING_CODE/generate_amitt_ttps.py\u001b[0m in \u001b[0;36mwrite_counts_table_to_file\u001b[0;34m(self, objectname, objectdict, counts_table, outfile)\u001b[0m\n\u001b[1;32m 712\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcounts\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcounts_table\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miterrows\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 713\u001b[0m html += '<td><a href=\"../{0}s/{1}.md\">{1} {2}</a></td>\\n'.format(\n\u001b[0;32m--> 714\u001b[0;31m objectname, index, objectdict[index])\n\u001b[0m\u001b[1;32m 715\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mval\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcounts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 716\u001b[0m \u001b[0mhtml\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m'<td>{}</td>\\n'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mval\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: ''"
]
}
],
"source": [
"amitt.write_counts_table_to_file('resource', amitt.resources, counts_table, 'testfile.txt')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'R001': 'datastreams ',\n",
" 'R002': 'funding ',\n",
" 'R003': 'money ',\n",
" 'R004': 'platform algorithms ',\n",
" 'R005': 'slang translation',\n",
" 'R006': 'disinformation datasets'}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"amitt.resources"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" is responsetype\n",
"id ALL 4\n",
" D2 Deny 62\n",
" D3 Disrupt 61\n",
" D4 Degrade 27\n",
" D5 Deceive 4\n",
" D6 Destroy 2\n",
" D7 Deter 14\n",
"TOTALS 174\n",
"Name: , dtype: int64\n",
"R001 is responsetype\n",
"id ALL 0\n",
" D2 Deny 1\n",
" D3 Disrupt 0\n",
" D4 Degrade 0\n",
" D5 Deceive 0\n",
" D6 Destroy 0\n",
" D7 Deter 0\n",
"TOTALS 1\n",
"Name: R001, dtype: int64\n",
"R002 is responsetype\n",
"id ALL 0\n",
" D2 Deny 1\n",
" D3 Disrupt 0\n",
" D4 Degrade 0\n",
" D5 Deceive 0\n",
" D6 Destroy 0\n",
" D7 Deter 0\n",
"TOTALS 1\n",
"Name: R002, dtype: int64\n",
"R003 is responsetype\n",
"id ALL 0\n",
" D2 Deny 0\n",
" D3 Disrupt 2\n",
" D4 Degrade 0\n",
" D5 Deceive 0\n",
" D6 Destroy 0\n",
" D7 Deter 0\n",
"TOTALS 2\n",
"Name: R003, dtype: int64\n",
"R004 is responsetype\n",
"id ALL 0\n",
" D2 Deny 2\n",
" D3 Disrupt 2\n",
" D4 Degrade 4\n",
" D5 Deceive 0\n",
" D6 Destroy 0\n",
" D7 Deter 0\n",
"TOTALS 8\n",
"Name: R004, dtype: int64\n"
]
}
],
"source": [
"for index, counts in counts_table.iterrows():\n",
" print('{} is {}'.format(index, counts))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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>resource_id</th>\n",
" <th>responsetype</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [id, resource_id, responsetype]\n",
"Index: []"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xx = amitt.cross_counterid_resourceid.merge(amitt.df_counters[['id', 'responsetype']], how='inner')\n",
"xx[xx['responsetype'].isin(amitt.resources.keys())]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" 174\n",
"R004 8\n",
"R003 2\n",
"R002 1\n",
"R001 1\n",
"Name: resource_id, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xx['resource_id'].value_counts()"
]
},
{
"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
}