Compare commits
15 commits
cd4ed3b423
...
291f6df115
Author | SHA1 | Date | |
---|---|---|---|
291f6df115 | |||
015bdebb0b | |||
25291cbb54 | |||
e5c5959908 | |||
d94acaa277 | |||
67bef39104 | |||
9663f4acf6 | |||
528944434d | |||
626c68b9e2 | |||
7022f8d63a | |||
a0d79770e9 | |||
3a916f6a0b | |||
9ec01f3f86 | |||
09cb842598 | |||
2b02487ca0 |
19 changed files with 2310 additions and 12 deletions
|
@ -23,6 +23,14 @@
|
|||
"name": "AES TBoxes",
|
||||
"path": "./aes-performance/aes-tboxes"
|
||||
},
|
||||
{
|
||||
"name": "AES Intrinsic",
|
||||
"path": "./aes-performance/aes-intrinsic"
|
||||
},
|
||||
{
|
||||
"name": "DPA Attack",
|
||||
"path": "./dpa-attack"
|
||||
},
|
||||
{
|
||||
"name": "TRNG Attack",
|
||||
"path": "./TRNG_attack"
|
||||
|
@ -120,6 +128,15 @@
|
|||
"cwd": "${workspaceFolder:AES TBoxes}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Build AES Intrinsic Project",
|
||||
"type": "shell",
|
||||
"command": "make",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder:AES Intrinsic}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -155,6 +172,23 @@
|
|||
"args": [],
|
||||
"cwd": "${workspaceFolder:AES TBoxes}",
|
||||
"preLaunchTask": "Build AES TBoxes Project"
|
||||
},
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Launch AES Intrinsic Project",
|
||||
"program": "${workspaceFolder:AES Intrinsic}/bin/aes",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder:AES Intrinsic}",
|
||||
"preLaunchTask": "Build AES Intrinsic Project"
|
||||
},
|
||||
{
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"name": "Run TRNG Attack",
|
||||
"program": "${workspaceFolder:TRNG Attack}/attack_student.py",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder:TRNG Attack}"
|
||||
}
|
||||
],
|
||||
"compounds": []
|
||||
|
|
15
Pipfile
Normal file
15
Pipfile
Normal file
|
@ -0,0 +1,15 @@
|
|||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
ipykernel = "*"
|
||||
numpy = "*"
|
||||
matplotlib = "*"
|
||||
ipympl = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[requires]
|
||||
python_version = "2.7"
|
772
Pipfile.lock
generated
Normal file
772
Pipfile.lock
generated
Normal file
|
@ -0,0 +1,772 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "c5bc76117da5d33142a88a84527ae5c1ceac4bd171dbefd3394af78360cd4470"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "2.7"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"asttokens": {
|
||||
"hashes": [
|
||||
"sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24",
|
||||
"sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"
|
||||
],
|
||||
"version": "==2.4.1"
|
||||
},
|
||||
"comm": {
|
||||
"hashes": [
|
||||
"sha256:2da8d9ebb8dd7bfc247adaff99f24dce705638a8042b85cb995066793e391001",
|
||||
"sha256:a517ea2ca28931c7007a7a99c562a0fa5883cfb48963140cf642c41c948498be"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"contourpy": {
|
||||
"hashes": [
|
||||
"sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8",
|
||||
"sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956",
|
||||
"sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5",
|
||||
"sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063",
|
||||
"sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286",
|
||||
"sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a",
|
||||
"sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686",
|
||||
"sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9",
|
||||
"sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f",
|
||||
"sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4",
|
||||
"sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e",
|
||||
"sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0",
|
||||
"sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e",
|
||||
"sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488",
|
||||
"sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399",
|
||||
"sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431",
|
||||
"sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779",
|
||||
"sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9",
|
||||
"sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab",
|
||||
"sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0",
|
||||
"sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd",
|
||||
"sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e",
|
||||
"sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc",
|
||||
"sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6",
|
||||
"sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316",
|
||||
"sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808",
|
||||
"sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0",
|
||||
"sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f",
|
||||
"sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843",
|
||||
"sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9",
|
||||
"sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95",
|
||||
"sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9",
|
||||
"sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de",
|
||||
"sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4",
|
||||
"sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4",
|
||||
"sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa",
|
||||
"sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8",
|
||||
"sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776",
|
||||
"sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41",
|
||||
"sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108",
|
||||
"sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e",
|
||||
"sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8",
|
||||
"sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727",
|
||||
"sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"
|
||||
],
|
||||
"markers": "python_version >= '3.9'",
|
||||
"version": "==1.2.0"
|
||||
},
|
||||
"cycler": {
|
||||
"hashes": [
|
||||
"sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30",
|
||||
"sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.12.1"
|
||||
},
|
||||
"debugpy": {
|
||||
"hashes": [
|
||||
"sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332",
|
||||
"sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0",
|
||||
"sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f",
|
||||
"sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa",
|
||||
"sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6",
|
||||
"sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637",
|
||||
"sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6",
|
||||
"sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8",
|
||||
"sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb",
|
||||
"sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b",
|
||||
"sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4",
|
||||
"sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153",
|
||||
"sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f",
|
||||
"sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd",
|
||||
"sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595",
|
||||
"sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926",
|
||||
"sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e",
|
||||
"sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.8.0"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
"sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330",
|
||||
"sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==5.1.1"
|
||||
},
|
||||
"executing": {
|
||||
"hashes": [
|
||||
"sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147",
|
||||
"sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==2.0.1"
|
||||
},
|
||||
"fonttools": {
|
||||
"hashes": [
|
||||
"sha256:084511482dd265bce6dca24c509894062f0117e4e6869384d853f46c0e6d43be",
|
||||
"sha256:1193fb090061efa2f9e2d8d743ae9850c77b66746a3b32792324cdce65784154",
|
||||
"sha256:174995f7b057e799355b393e97f4f93ef1f2197cbfa945e988d49b2a09ecbce8",
|
||||
"sha256:253bb46bab970e8aae254cebf2ae3db98a4ef6bd034707aa68a239027d2b198d",
|
||||
"sha256:2a78dba8c2a1e9d53a0fb5382979f024200dc86adc46a56cbb668a2249862fda",
|
||||
"sha256:2d2404107626f97a221dc1a65b05396d2bb2ce38e435f64f26ed2369f68675d9",
|
||||
"sha256:40bdbe90b33897d9cc4a39f8e415b0fcdeae4c40a99374b8a4982f127ff5c767",
|
||||
"sha256:495369c660e0c27233e3c572269cbe520f7f4978be675f990f4005937337d391",
|
||||
"sha256:4a9a51745c0439516d947480d4d884fa18bd1458e05b829e482b9269afa655bc",
|
||||
"sha256:511482df31cfea9f697930f61520f6541185fa5eeba2fa760fe72e8eee5af88b",
|
||||
"sha256:52c82df66201f3a90db438d9d7b337c7c98139de598d0728fb99dab9fd0495ca",
|
||||
"sha256:562681188c62c024fe2c611b32e08b8de2afa00c0c4e72bed47c47c318e16d5c",
|
||||
"sha256:59a6c8b71a245800e923cb684a2dc0eac19c56493e2f896218fcf2571ed28984",
|
||||
"sha256:5dde0eab40faaa5476133123f6a622a1cc3ac9b7af45d65690870620323308b4",
|
||||
"sha256:61df4dee5d38ab65b26da8efd62d859a1eef7a34dcbc331299a28e24d04c59a7",
|
||||
"sha256:62d8ddb058b8e87018e5dc26f3258e2c30daad4c87262dfeb0e2617dd84750e6",
|
||||
"sha256:66c92ec7f95fd9732550ebedefcd190a8d81beaa97e89d523a0d17198a8bda4d",
|
||||
"sha256:843509ae9b93db5aaf1a6302085e30bddc1111d31e11d724584818f5b698f500",
|
||||
"sha256:854421e328d47d70aa5abceacbe8eef231961b162c71cbe7ff3f47e235e2e5c5",
|
||||
"sha256:97620c4af36e4c849e52661492e31dc36916df12571cb900d16960ab8e92a980",
|
||||
"sha256:9acfa1cdc479e0dde528b61423855913d949a7f7fe09e276228298fef4589540",
|
||||
"sha256:a77a60315c33393b2bd29d538d1ef026060a63d3a49a9233b779261bad9c3f71",
|
||||
"sha256:b4fabb8cc9422efae1a925160083fdcbab8fdc96a8483441eb7457235df625bd",
|
||||
"sha256:bf1810635c00f7c45d93085611c995fc130009cec5abdc35b327156aa191f982",
|
||||
"sha256:c01f409be619a9a0f5590389e37ccb58b47264939f0e8d58bfa1f3ba07d22671",
|
||||
"sha256:c59227d7ba5b232281c26ae04fac2c73a79ad0e236bca5c44aae904a18f14faf",
|
||||
"sha256:c75e19971209fbbce891ebfd1b10c37320a5a28e8d438861c21d35305aedb81c",
|
||||
"sha256:ce0e2c88c8c985b7b9a7efcd06511fb0a1fe3ddd9a6cd2895ef1dbf9059719d7",
|
||||
"sha256:d6477ba902dd2d7adda7f0fd3bfaeb92885d45993c9e1928c9f28fc3961415f7",
|
||||
"sha256:d986b66ff722ef675b7ee22fbe5947a41f60a61a4da15579d5e276d897fbc7fa",
|
||||
"sha256:dd23848f877c3754f53a4903fb7a593ed100924f9b4bff7d5a4e2e8a7001ae11",
|
||||
"sha256:e3f4d61f3a8195eac784f1d0c16c0a3105382c1b9a74d99ac4ba421da39a8826",
|
||||
"sha256:e6b968543fde4119231c12c2a953dcf83349590ca631ba8216a8edf9cd4d36a9",
|
||||
"sha256:e77bdf52185bdaf63d39f3e1ac3212e6cfa3ab07d509b94557a8902ce9c13c82",
|
||||
"sha256:e79f1a3970d25f692bbb8c8c2637e621a66c0d60c109ab48d4a160f50856deff",
|
||||
"sha256:e7a0a8848726956e9d9fb18c977a279013daadf0cbb6725d2015a6dd57527992",
|
||||
"sha256:e869da810ae35afb3019baa0d0306cdbab4760a54909c89ad8904fa629991812",
|
||||
"sha256:e8acf6dd0434b211b3bd30d572d9e019831aae17a54016629fa8224783b22df8",
|
||||
"sha256:e8fa20748de55d0021f83754b371432dca0439e02847962fc4c42a0e444c2d78",
|
||||
"sha256:ea592e6a09b71cb7a7661dd93ac0b877a6228e2d677ebacbad0a4d118494c86d",
|
||||
"sha256:ec13a10715eef0e031858c1c23bfaee6cba02b97558e4a7bfa089dba4a8c2ebf",
|
||||
"sha256:f4da089f6dfdb822293bde576916492cd708c37c2501c3651adde39804630538"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.47.0"
|
||||
},
|
||||
"ipykernel": {
|
||||
"hashes": [
|
||||
"sha256:7d5d594b6690654b4d299edba5e872dc17bb7396a8d0609c97cb7b8a1c605de6",
|
||||
"sha256:dab88b47f112f9f7df62236511023c9bdeef67abc73af7c652e4ce4441601686"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==6.27.1"
|
||||
},
|
||||
"ipympl": {
|
||||
"hashes": [
|
||||
"sha256:49bab75c05673a6881d1aaec5d8ac81d4624f73d292d154c5fb7096f10236a2b",
|
||||
"sha256:d113cd55891bafe9b27ef99b6dd111a87beb6bb2ae550c404292272103be8013"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.9.3"
|
||||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27",
|
||||
"sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"
|
||||
],
|
||||
"markers": "python_version >= '3.9'",
|
||||
"version": "==8.18.1"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
"sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8",
|
||||
"sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"
|
||||
],
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"ipywidgets": {
|
||||
"hashes": [
|
||||
"sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f",
|
||||
"sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==8.1.1"
|
||||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
"sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd",
|
||||
"sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==0.19.1"
|
||||
},
|
||||
"jupyter-client": {
|
||||
"hashes": [
|
||||
"sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7",
|
||||
"sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==8.6.0"
|
||||
},
|
||||
"jupyter-core": {
|
||||
"hashes": [
|
||||
"sha256:1553311a97ccd12936037f36b9ab4d6ae8ceea6ad2d5c90d94a909e752178e40",
|
||||
"sha256:220dfb00c45f0d780ce132bb7976b58263f81a3ada6e90a9b6823785a424f739"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==5.5.1"
|
||||
},
|
||||
"jupyterlab-widgets": {
|
||||
"hashes": [
|
||||
"sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d",
|
||||
"sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.0.9"
|
||||
},
|
||||
"kiwisolver": {
|
||||
"hashes": [
|
||||
"sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf",
|
||||
"sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e",
|
||||
"sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af",
|
||||
"sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f",
|
||||
"sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046",
|
||||
"sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3",
|
||||
"sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5",
|
||||
"sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71",
|
||||
"sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee",
|
||||
"sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3",
|
||||
"sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9",
|
||||
"sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b",
|
||||
"sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985",
|
||||
"sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea",
|
||||
"sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16",
|
||||
"sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89",
|
||||
"sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c",
|
||||
"sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9",
|
||||
"sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712",
|
||||
"sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342",
|
||||
"sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a",
|
||||
"sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958",
|
||||
"sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d",
|
||||
"sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a",
|
||||
"sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130",
|
||||
"sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff",
|
||||
"sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898",
|
||||
"sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b",
|
||||
"sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f",
|
||||
"sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265",
|
||||
"sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93",
|
||||
"sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929",
|
||||
"sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635",
|
||||
"sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709",
|
||||
"sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b",
|
||||
"sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb",
|
||||
"sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a",
|
||||
"sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920",
|
||||
"sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e",
|
||||
"sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544",
|
||||
"sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45",
|
||||
"sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390",
|
||||
"sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77",
|
||||
"sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355",
|
||||
"sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff",
|
||||
"sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4",
|
||||
"sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7",
|
||||
"sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20",
|
||||
"sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c",
|
||||
"sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162",
|
||||
"sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228",
|
||||
"sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437",
|
||||
"sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc",
|
||||
"sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a",
|
||||
"sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901",
|
||||
"sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4",
|
||||
"sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770",
|
||||
"sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525",
|
||||
"sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad",
|
||||
"sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a",
|
||||
"sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29",
|
||||
"sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90",
|
||||
"sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250",
|
||||
"sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d",
|
||||
"sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3",
|
||||
"sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54",
|
||||
"sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f",
|
||||
"sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1",
|
||||
"sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da",
|
||||
"sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238",
|
||||
"sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa",
|
||||
"sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523",
|
||||
"sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0",
|
||||
"sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205",
|
||||
"sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3",
|
||||
"sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4",
|
||||
"sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac",
|
||||
"sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9",
|
||||
"sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb",
|
||||
"sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced",
|
||||
"sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd",
|
||||
"sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0",
|
||||
"sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da",
|
||||
"sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18",
|
||||
"sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9",
|
||||
"sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276",
|
||||
"sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333",
|
||||
"sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b",
|
||||
"sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db",
|
||||
"sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126",
|
||||
"sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9",
|
||||
"sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09",
|
||||
"sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0",
|
||||
"sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec",
|
||||
"sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7",
|
||||
"sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff",
|
||||
"sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9",
|
||||
"sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192",
|
||||
"sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8",
|
||||
"sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d",
|
||||
"sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6",
|
||||
"sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797",
|
||||
"sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892",
|
||||
"sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.4.5"
|
||||
},
|
||||
"matplotlib": {
|
||||
"hashes": [
|
||||
"sha256:01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1",
|
||||
"sha256:03f9d160a29e0b65c0790bb07f4f45d6a181b1ac33eb1bb0dd225986450148f0",
|
||||
"sha256:091275d18d942cf1ee9609c830a1bc36610607d8223b1b981c37d5c9fc3e46a4",
|
||||
"sha256:09796f89fb71a0c0e1e2f4bdaf63fb2cefc84446bb963ecdeb40dfee7dfa98c7",
|
||||
"sha256:0f4fc5d72b75e2c18e55eb32292659cf731d9d5b312a6eb036506304f4675630",
|
||||
"sha256:172f4d0fbac3383d39164c6caafd3255ce6fa58f08fc392513a0b1d3b89c4f89",
|
||||
"sha256:1b0f3b8ea0e99e233a4bcc44590f01604840d833c280ebb8fe5554fd3e6cfe8d",
|
||||
"sha256:3773002da767f0a9323ba1a9b9b5d00d6257dbd2a93107233167cfb581f64717",
|
||||
"sha256:46a569130ff53798ea5f50afce7406e91fdc471ca1e0e26ba976a8c734c9427a",
|
||||
"sha256:4c318c1e95e2f5926fba326f68177dee364aa791d6df022ceb91b8221bd0a627",
|
||||
"sha256:4e208f46cf6576a7624195aa047cb344a7f802e113bb1a06cfd4bee431de5e31",
|
||||
"sha256:533b0e3b0c6768eef8cbe4b583731ce25a91ab54a22f830db2b031e83cca9213",
|
||||
"sha256:5864bdd7da445e4e5e011b199bb67168cdad10b501750367c496420f2ad00843",
|
||||
"sha256:5ba9cbd8ac6cf422f3102622b20f8552d601bf8837e49a3afed188d560152788",
|
||||
"sha256:6f9c6976748a25e8b9be51ea028df49b8e561eed7809146da7a47dbecebab367",
|
||||
"sha256:7c48d9e221b637c017232e3760ed30b4e8d5dfd081daf327e829bf2a72c731b4",
|
||||
"sha256:830f00640c965c5b7f6bc32f0d4ce0c36dfe0379f7dd65b07a00c801713ec40a",
|
||||
"sha256:9a5430836811b7652991939012f43d2808a2db9b64ee240387e8c43e2e5578c8",
|
||||
"sha256:aa11b3c6928a1e496c1a79917d51d4cd5d04f8a2e75f21df4949eeefdf697f4b",
|
||||
"sha256:b78e4f2cedf303869b782071b55fdde5987fda3038e9d09e58c91cc261b5ad18",
|
||||
"sha256:b9576723858a78751d5aacd2497b8aef29ffea6d1c95981505877f7ac28215c6",
|
||||
"sha256:bddfb1db89bfaa855912261c805bd0e10218923cc262b9159a49c29a7a1c1afa",
|
||||
"sha256:c7d36c2209d9136cd8e02fab1c0ddc185ce79bc914c45054a9f514e44c787917",
|
||||
"sha256:d1095fecf99eeb7384dabad4bf44b965f929a5f6079654b681193edf7169ec20",
|
||||
"sha256:d7b1704a530395aaf73912be741c04d181f82ca78084fbd80bc737be04848331",
|
||||
"sha256:d86593ccf546223eb75a39b44c32788e6f6440d13cfc4750c1c15d0fcb850b63",
|
||||
"sha256:deaed9ad4da0b1aea77fe0aa0cebb9ef611c70b3177be936a95e5d01fa05094f",
|
||||
"sha256:ef8345b48e95cee45ff25192ed1f4857273117917a4dcd48e3905619bcd9c9b8"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.9'",
|
||||
"version": "==3.8.2"
|
||||
},
|
||||
"matplotlib-inline": {
|
||||
"hashes": [
|
||||
"sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311",
|
||||
"sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==0.1.6"
|
||||
},
|
||||
"nest-asyncio": {
|
||||
"hashes": [
|
||||
"sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb",
|
||||
"sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==1.5.8"
|
||||
},
|
||||
"numpy": {
|
||||
"hashes": [
|
||||
"sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a",
|
||||
"sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6",
|
||||
"sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2",
|
||||
"sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79",
|
||||
"sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9",
|
||||
"sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919",
|
||||
"sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d",
|
||||
"sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060",
|
||||
"sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75",
|
||||
"sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f",
|
||||
"sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe",
|
||||
"sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167",
|
||||
"sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef",
|
||||
"sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75",
|
||||
"sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3",
|
||||
"sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7",
|
||||
"sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7",
|
||||
"sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d",
|
||||
"sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b",
|
||||
"sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186",
|
||||
"sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0",
|
||||
"sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1",
|
||||
"sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6",
|
||||
"sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e",
|
||||
"sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523",
|
||||
"sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36",
|
||||
"sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841",
|
||||
"sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818",
|
||||
"sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00",
|
||||
"sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80",
|
||||
"sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440",
|
||||
"sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210",
|
||||
"sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8",
|
||||
"sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea",
|
||||
"sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec",
|
||||
"sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.9'",
|
||||
"version": "==1.26.2"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
"sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
|
||||
"sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==23.2"
|
||||
},
|
||||
"parso": {
|
||||
"hashes": [
|
||||
"sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0",
|
||||
"sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==0.8.3"
|
||||
},
|
||||
"pexpect": {
|
||||
"hashes": [
|
||||
"sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523",
|
||||
"sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"
|
||||
],
|
||||
"markers": "sys_platform != 'win32'",
|
||||
"version": "==4.9.0"
|
||||
},
|
||||
"pillow": {
|
||||
"hashes": [
|
||||
"sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d",
|
||||
"sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de",
|
||||
"sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616",
|
||||
"sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839",
|
||||
"sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099",
|
||||
"sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a",
|
||||
"sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219",
|
||||
"sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106",
|
||||
"sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b",
|
||||
"sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412",
|
||||
"sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b",
|
||||
"sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7",
|
||||
"sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2",
|
||||
"sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7",
|
||||
"sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14",
|
||||
"sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f",
|
||||
"sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27",
|
||||
"sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57",
|
||||
"sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262",
|
||||
"sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28",
|
||||
"sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610",
|
||||
"sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172",
|
||||
"sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273",
|
||||
"sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e",
|
||||
"sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d",
|
||||
"sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818",
|
||||
"sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f",
|
||||
"sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9",
|
||||
"sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01",
|
||||
"sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7",
|
||||
"sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651",
|
||||
"sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312",
|
||||
"sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80",
|
||||
"sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666",
|
||||
"sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061",
|
||||
"sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b",
|
||||
"sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992",
|
||||
"sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593",
|
||||
"sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4",
|
||||
"sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db",
|
||||
"sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba",
|
||||
"sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd",
|
||||
"sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e",
|
||||
"sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212",
|
||||
"sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb",
|
||||
"sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2",
|
||||
"sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34",
|
||||
"sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256",
|
||||
"sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f",
|
||||
"sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2",
|
||||
"sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38",
|
||||
"sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996",
|
||||
"sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a",
|
||||
"sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==10.1.0"
|
||||
},
|
||||
"platformdirs": {
|
||||
"hashes": [
|
||||
"sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380",
|
||||
"sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.1.0"
|
||||
},
|
||||
"prompt-toolkit": {
|
||||
"hashes": [
|
||||
"sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d",
|
||||
"sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"
|
||||
],
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==3.0.43"
|
||||
},
|
||||
"psutil": {
|
||||
"hashes": [
|
||||
"sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340",
|
||||
"sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6",
|
||||
"sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284",
|
||||
"sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c",
|
||||
"sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7",
|
||||
"sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c",
|
||||
"sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e",
|
||||
"sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6",
|
||||
"sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056",
|
||||
"sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9",
|
||||
"sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68",
|
||||
"sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df",
|
||||
"sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e",
|
||||
"sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414",
|
||||
"sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508",
|
||||
"sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||
"version": "==5.9.7"
|
||||
},
|
||||
"ptyprocess": {
|
||||
"hashes": [
|
||||
"sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35",
|
||||
"sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"
|
||||
],
|
||||
"version": "==0.7.0"
|
||||
},
|
||||
"pure-eval": {
|
||||
"hashes": [
|
||||
"sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350",
|
||||
"sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"
|
||||
],
|
||||
"version": "==0.2.2"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c",
|
||||
"sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.17.2"
|
||||
},
|
||||
"pyparsing": {
|
||||
"hashes": [
|
||||
"sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb",
|
||||
"sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"
|
||||
],
|
||||
"markers": "python_full_version >= '3.6.8'",
|
||||
"version": "==3.1.1"
|
||||
},
|
||||
"python-dateutil": {
|
||||
"hashes": [
|
||||
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.8.2"
|
||||
},
|
||||
"pyzmq": {
|
||||
"hashes": [
|
||||
"sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565",
|
||||
"sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b",
|
||||
"sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979",
|
||||
"sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1",
|
||||
"sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f",
|
||||
"sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d",
|
||||
"sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee",
|
||||
"sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07",
|
||||
"sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98",
|
||||
"sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886",
|
||||
"sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7",
|
||||
"sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75",
|
||||
"sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220",
|
||||
"sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7",
|
||||
"sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a",
|
||||
"sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314",
|
||||
"sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a",
|
||||
"sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27",
|
||||
"sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611",
|
||||
"sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6",
|
||||
"sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6",
|
||||
"sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9",
|
||||
"sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561",
|
||||
"sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b",
|
||||
"sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755",
|
||||
"sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e",
|
||||
"sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc",
|
||||
"sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc",
|
||||
"sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289",
|
||||
"sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d",
|
||||
"sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62",
|
||||
"sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642",
|
||||
"sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3",
|
||||
"sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8",
|
||||
"sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0",
|
||||
"sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4",
|
||||
"sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097",
|
||||
"sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b",
|
||||
"sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181",
|
||||
"sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82",
|
||||
"sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68",
|
||||
"sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08",
|
||||
"sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7",
|
||||
"sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003",
|
||||
"sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0",
|
||||
"sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd",
|
||||
"sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8",
|
||||
"sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840",
|
||||
"sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8",
|
||||
"sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe",
|
||||
"sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438",
|
||||
"sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e",
|
||||
"sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d",
|
||||
"sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c",
|
||||
"sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b",
|
||||
"sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49",
|
||||
"sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d",
|
||||
"sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae",
|
||||
"sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e",
|
||||
"sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226",
|
||||
"sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6",
|
||||
"sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b",
|
||||
"sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3",
|
||||
"sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882",
|
||||
"sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15",
|
||||
"sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70",
|
||||
"sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d",
|
||||
"sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16",
|
||||
"sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05",
|
||||
"sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b",
|
||||
"sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737",
|
||||
"sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92",
|
||||
"sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348",
|
||||
"sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41",
|
||||
"sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add",
|
||||
"sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b",
|
||||
"sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7",
|
||||
"sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d",
|
||||
"sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96",
|
||||
"sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e",
|
||||
"sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2",
|
||||
"sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde",
|
||||
"sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8",
|
||||
"sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4",
|
||||
"sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec",
|
||||
"sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df",
|
||||
"sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73",
|
||||
"sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088",
|
||||
"sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244",
|
||||
"sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537",
|
||||
"sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6",
|
||||
"sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872",
|
||||
"sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==25.1.2"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.16.0"
|
||||
},
|
||||
"stack-data": {
|
||||
"hashes": [
|
||||
"sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9",
|
||||
"sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"
|
||||
],
|
||||
"version": "==0.6.3"
|
||||
},
|
||||
"tornado": {
|
||||
"hashes": [
|
||||
"sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0",
|
||||
"sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63",
|
||||
"sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263",
|
||||
"sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052",
|
||||
"sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f",
|
||||
"sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee",
|
||||
"sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78",
|
||||
"sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579",
|
||||
"sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212",
|
||||
"sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e",
|
||||
"sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==6.4"
|
||||
},
|
||||
"traitlets": {
|
||||
"hashes": [
|
||||
"sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33",
|
||||
"sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==5.14.0"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
"sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02",
|
||||
"sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"
|
||||
],
|
||||
"version": "==0.2.12"
|
||||
},
|
||||
"widgetsnbextension": {
|
||||
"hashes": [
|
||||
"sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385",
|
||||
"sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==4.0.9"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
|
@ -14,14 +14,14 @@ if __name__ == '__main__':
|
|||
traces = np.reshape(traces, (traces.size//tracelen, tracelen)) # reshape of matrix, each row contains the trace for one RO
|
||||
|
||||
traces_bin = traces > 128 # conversion of waveforms to rectangles - everything below threshold is 0, otherwise 1 (they are boolean values actually)
|
||||
rising_edges = np.logical_not(traces[:,0:-2] & traces[:,1:-1]) & traces[:,2:] # finding rising edges, each rising edge is represented by True
|
||||
rising_edges = np.logical_not(traces_bin[:,0:-2]) & np.logical_not(traces_bin[:,1:-1]) & traces_bin[:,2:] # finding rising edges, each rising edge is represented by True
|
||||
|
||||
cnt = np.count_nonzero(rising_edges, axis=1) # count the number of rising edges in rows
|
||||
# cnt is now a 1D vector
|
||||
cnt = cnt.reshape(TRNG_PAIR_CNT,2).min(axis=1) # Reshape of the count array into matrix, where each row contains 2 values - the number of rising edges for two ROs in a pair. Then we select the smaller value.
|
||||
|
||||
#cnt_sel = cnt & ?x???? # select only the two least significant bits
|
||||
cnt_sel = cnt & 0x03 # select only the two least significant bits
|
||||
|
||||
#estimate = ''.join([np.binary_repr(x, width=2) for x in cnt_sel]) # binary representation of the values (the last 2 bits) and joining them into one string
|
||||
estimate = ''.join([np.binary_repr(x, width=2) for x in cnt_sel]) # binary representation of the values (the last 2 bits) and joining them into one string
|
||||
print('{0:0>32x}'.format(int(estimate, 2)))
|
||||
print(trng_val) # from data_info, output of the RNG in FPGA
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
# Performant AES Implementation
|
||||
|
||||
| Variant | Time for 1 mio. Iterations | Time for 10 mio. Iterations | Processor | OS | Compiler | Compiler Switches |
|
||||
| ------------ | -------------------------- | --------------------------- | -------------- | ----------------- | -------- | ----------------- |
|
||||
| `aes-32bit` | 3163ms | 4632ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-g` |
|
||||
| `aes-32bit` | 482ms | 5152ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-Ofast` |
|
||||
| `aes-tboxes` | 203ms | 1708ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-g` |
|
||||
| `aes-tboxes` | 148ms | 1600ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-Ofast` |
|
||||
| --------------- | -------------------------- | --------------------------- | -------------- | ----------------- | -------- | ----------------- |
|
||||
| `aes-32bit` | 3743ms | 35659ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-g` |
|
||||
| `aes-32bit` | 2816ms | 27680ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-Ofast` |
|
||||
| `aes-tboxes` | 655ms | 1266ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-g` |
|
||||
| `aes-tboxes` | 128ms | 1288ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-Ofast` |
|
||||
| `aes-intrinsic` | 232ms | 156ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-g` |
|
||||
| `aes-intrinsic` | 17ms | 145ms | Intel i7-8650U | Arch Linux x86_64 | `gcc` | `-Ofast` |
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
CPPFLAGS ?= -Ofast
|
||||
CPPFLAGS ?= -g
|
||||
|
||||
BUILD_DIR = bin
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include <chrono>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -190,6 +191,7 @@ int main(int argc, char* argv[])
|
|||
uint32_t cycles = 1000000;
|
||||
uint8_t key[16] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
||||
uint8_t in[16] = { 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89};
|
||||
uint8_t expected[16] = { 0x1d, 0x07, 0x34, 0x40, 0xeb, 0xbe, 0x24, 0xc5, 0x02, 0x8b, 0xd8, 0x02, 0x65, 0xc8, 0xfb, 0x1d };
|
||||
|
||||
if (argc > 2) {
|
||||
std::cerr << "Invalid number of arguments\n";
|
||||
|
@ -210,5 +212,19 @@ int main(int argc, char* argv[])
|
|||
|
||||
std::cout << "AES (" << cycles << " runs)\nElapsed time: ";
|
||||
std::cout << milliseconds << "ms\n"; // Before C++20
|
||||
|
||||
if (cycles == 1000000) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (in[i] != expected[i]) {
|
||||
std::cout << "Mismatch at out[" << i << "]!\n";
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Validation successful!\n";
|
||||
} else {
|
||||
std::cout << "No results for " << cycles << " cycles precomputed. No validation.\n";
|
||||
}
|
||||
|
||||
exit(in[0]);
|
||||
}
|
||||
|
|
15
aes-performance/aes-intrinsic/Makefile
Normal file
15
aes-performance/aes-intrinsic/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
CPPFLAGS ?= -Ofast
|
||||
CPPFLAGS := -maes $(CPPFLAGS)
|
||||
|
||||
BUILD_DIR = bin
|
||||
|
||||
$(BUILD_DIR)/aes: $(BUILD_DIR)/aes.o
|
||||
mkdir -p $(dir $@)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.cpp
|
||||
mkdir -p $(dir $@)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
144
aes-performance/aes-intrinsic/aes.cpp
Normal file
144
aes-performance/aes-intrinsic/aes.cpp
Normal file
|
@ -0,0 +1,144 @@
|
|||
#include <chrono>
|
||||
#include <csignal>
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <emmintrin.h>
|
||||
#include <iostream>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <immintrin.h>
|
||||
#include <wmmintrin.h>
|
||||
|
||||
/* AES-128 simple implementation template and testing */
|
||||
|
||||
/*
|
||||
Author: Manuel Thalmann, thalmman@fit.cvut.cz
|
||||
Template: Jiri Bucek 2017
|
||||
AES specification:
|
||||
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
|
||||
*/
|
||||
|
||||
/* AES Constants */
|
||||
// AES polynomial
|
||||
const uint16_t POLYNOMIAL = 0b100011011;
|
||||
|
||||
__m128i computeKey(__m128i key, __m128i expansionSource) {
|
||||
__m128i tmp1 = _mm_shuffle_epi32(expansionSource, 0xFF);
|
||||
__m128i tmp2;
|
||||
|
||||
_mm_storeu_si128(&tmp2, key);
|
||||
key = _mm_slli_si128(key, 1 * 4);
|
||||
tmp2 = _mm_xor_si128(tmp2, key);
|
||||
key = _mm_slli_si128(key, 1 * 4);
|
||||
tmp2 = _mm_xor_si128(tmp2, key);
|
||||
key = _mm_slli_si128(key, 1 * 4);
|
||||
tmp2 = _mm_xor_si128(tmp2, key);
|
||||
key = _mm_slli_si128(key, 1 * 4);
|
||||
tmp2 = _mm_xor_si128(tmp2, key);
|
||||
return tmp1 ^ tmp2;
|
||||
}
|
||||
|
||||
void addKey(uint8_t index, __m128i expKey[11], __m128i expSource) {
|
||||
_mm_storeu_si128(&expKey[index], computeKey(expKey[index - 1], expSource));
|
||||
}
|
||||
|
||||
/*
|
||||
* Key expansion from 128bits (4*32b)
|
||||
* to 11 round keys (11*4*32b)
|
||||
* each round key is 4*32b
|
||||
*/
|
||||
// Taken from: https://www.brainkart.com/article/AES-Key-Expansion_8410/
|
||||
void expandKey(__m128i key, __m128i expKey[11]) {
|
||||
__m128i expSource;
|
||||
_mm_storeu_si128(&expKey[0], key);
|
||||
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[0], 0x01);
|
||||
addKey(1, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[1], 0x02);
|
||||
addKey(2, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[2], 0x04);
|
||||
addKey(3, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[3], 0x08);
|
||||
addKey(4, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[4], 0x10);
|
||||
addKey(5, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[5], 0x20);
|
||||
addKey(6, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[6], 0x40);
|
||||
addKey(7, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[7], 0x80);
|
||||
addKey(8, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[8], 0x1B);
|
||||
addKey(9, expKey, expSource);
|
||||
expSource = _mm_aeskeygenassist_si128(expKey[9], 0x36);
|
||||
addKey(10, expKey, expSource);
|
||||
}
|
||||
|
||||
void aes(__m128i *value, __m128i key)
|
||||
{
|
||||
//... Initialize ...
|
||||
__m128i expKey[11];
|
||||
__m128i tmp = _mm_load_si128(value);
|
||||
|
||||
expandKey(key, expKey);
|
||||
|
||||
tmp = _mm_xor_si128(tmp, expKey[0]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[1]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[2]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[3]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[4]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[5]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[6]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[7]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[8]);
|
||||
tmp = _mm_aesenc_si128(tmp, expKey[9]);
|
||||
tmp = _mm_aesenclast_si128(tmp, expKey[10]);
|
||||
_mm_storeu_si128(value, tmp);
|
||||
}
|
||||
|
||||
//****************************
|
||||
// MAIN function: AES testing
|
||||
//****************************
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t cycles = 1000000;
|
||||
__m128i key = _mm_setr_epi8(0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff);
|
||||
__m128i value = _mm_setr_epi8(0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89);
|
||||
uint8_t expected[16] = { 0x1d, 0x07, 0x34, 0x40, 0xeb, 0xbe, 0x24, 0xc5, 0x02, 0x8b, 0xd8, 0x02, 0x65, 0xc8, 0xfb, 0x1d };
|
||||
|
||||
if (argc > 2) {
|
||||
std::cerr << "Invalid number of arguments\n";
|
||||
exit(EXIT_FAILURE);
|
||||
} else if (argc == 2) {
|
||||
cycles = std::atoi(argv[1]);
|
||||
}
|
||||
|
||||
const auto start{std::chrono::steady_clock::now()};
|
||||
{
|
||||
for (int i = 0; i < cycles; i++) {
|
||||
aes(&value, key);
|
||||
}
|
||||
}
|
||||
const auto end{std::chrono::steady_clock::now()};
|
||||
const std::chrono::duration<double> elapsed_seconds{end - start};
|
||||
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(elapsed_seconds).count();
|
||||
|
||||
std::cout << "AES (" << cycles << " runs)\nElapsed time: ";
|
||||
std::cout << milliseconds << "ms\n"; // Before C++20
|
||||
|
||||
if (cycles == 1000000) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (((uint8_t *)&value)[i] != expected[i]) {
|
||||
std::cout << "Mismatch at out[" << i << "]!\n";
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Validation successful!\n";
|
||||
} else {
|
||||
std::cout << "No results for " << cycles << " cycles precomputed. No validation.\n";
|
||||
}
|
||||
|
||||
exit(value[0]);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
CPPFLAGS = -Ofast
|
||||
CPPFLAGS ?= -Ofast
|
||||
|
||||
BUILD_DIR = bin
|
||||
|
||||
|
|
|
@ -184,6 +184,7 @@ int main(int argc, char* argv[])
|
|||
uint32_t cycles = 1000000;
|
||||
uint8_t key[16] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
|
||||
uint8_t in[16] = { 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89};
|
||||
uint8_t expected[16] = { 0x1d, 0x07, 0x34, 0x40, 0xeb, 0xbe, 0x24, 0xc5, 0x02, 0x8b, 0xd8, 0x02, 0x65, 0xc8, 0xfb, 0x1d };
|
||||
|
||||
if (argc > 2) {
|
||||
std::cerr << "Invalid number of arguments\n";
|
||||
|
@ -214,5 +215,19 @@ int main(int argc, char* argv[])
|
|||
|
||||
std::cout << "AES (" << cycles << " runs)\nElapsed time: ";
|
||||
std::cout << milliseconds << "ms\n"; // Before C++20
|
||||
|
||||
if (cycles == 1000000) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (in[i] != expected[i]) {
|
||||
std::cout << "Mismatch at out[" << i << "]!\n";
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Validation successful!\n";
|
||||
} else {
|
||||
std::cout << "No results for " << cycles << " cycles precomputed. No validation.\n";
|
||||
}
|
||||
|
||||
exit(in[0]);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
dir="${BASH_SOURCE%/*}";
|
||||
|
||||
for program in "aes-32bit" "aes-tboxes"
|
||||
for program in "aes-32bit" "aes-tboxes" "aes-intrinsic"
|
||||
do
|
||||
for flags in "-g" ""
|
||||
do
|
||||
|
@ -20,6 +20,7 @@ do
|
|||
make -C "$root" clean > /dev/null 2>&1;
|
||||
make -C "$root" > /dev/null 2>&1;
|
||||
"$dir/$program/bin/aes" "$iterations";
|
||||
echo "";
|
||||
unset CPPFLAGS;
|
||||
done;
|
||||
done;
|
||||
|
|
101
dpa-attack/ciphertext.txt
Normal file
101
dpa-attack/ciphertext.txt
Normal file
|
@ -0,0 +1,101 @@
|
|||
08 2b ca 4a d7 57 b2 e7 7c 6f aa 14 79 41 7f d0
|
||||
be 21 f5 fc 74 8f fc f4 1b 46 0a 07 e7 b6 76 85
|
||||
57 9c 34 de ad 38 97 4d 9c d2 e1 6a 83 c1 f5 3c
|
||||
e9 68 d8 87 87 6d bc 9c ba ad ea b4 46 e2 89 5a
|
||||
00 96 73 2c 73 50 0f 50 b5 40 0b bc 69 d6 da 96
|
||||
7b 52 70 71 e8 44 9f 43 ba 8b 5d dd e8 b2 8e f1
|
||||
22 9d 66 f9 b8 40 d3 0c 8f 2b 82 ed f4 02 a2 bd
|
||||
52 fc 6f 22 56 5a fb fc 02 58 5d 6c 0c be 6c e8
|
||||
e7 41 8e 32 54 24 c3 db 78 1a 81 1f c6 ab 36 47
|
||||
fa 78 07 9b c0 e9 68 6e 30 0f d4 04 65 50 2f 79
|
||||
18 eb f4 85 ad 3d 39 f3 78 8c e0 8a 0a 66 20 ab
|
||||
d2 36 bb ae 17 55 e3 2c 58 86 09 4f 18 1c d5 0f
|
||||
7f 84 fd f2 ae 33 3b 94 95 10 36 6c 31 c5 fe f8
|
||||
9e 52 39 1b 37 28 09 75 d0 9e 4f 0b 2b 15 61 ce
|
||||
5a 9a f2 78 59 0e 27 9c 1d 9b 9d ef ff 93 74 f5
|
||||
38 43 54 6f 4c fc 4c d7 63 d9 e8 55 5d 83 d8 e9
|
||||
24 26 45 e0 13 4d d0 68 75 f4 e7 09 b3 80 03 d0
|
||||
e4 65 5b 4e 00 43 3f 04 d5 19 aa f9 a8 46 95 eb
|
||||
6a 4d 48 55 84 f8 a2 fe 97 68 42 34 06 58 0a d7
|
||||
b4 db 7c 6b 8b 35 b9 67 9b fe 92 54 56 51 57 f7
|
||||
23 96 e6 3e 7b da d5 19 7c 11 7f 1d 83 64 b7 1d
|
||||
53 a1 3c b3 85 25 f0 d8 6a 4a 48 6f 01 fb 90 25
|
||||
7a 21 3f b4 40 f4 94 67 55 75 89 a2 bb 8c 60 39
|
||||
a4 59 de 4e a7 db ec ce 69 c3 f5 b1 77 c4 e0 97
|
||||
b5 0f 93 a2 13 1f 37 66 c8 0a c4 2d 57 ee 74 a6
|
||||
e4 36 d6 cd ae ee b6 e7 70 5a a3 26 3c 65 4d 95
|
||||
51 ba bc 16 e3 24 bb e0 33 b0 a5 fa 23 66 2f 91
|
||||
16 37 93 3d c5 09 f7 15 65 eb a8 28 d5 f2 ac 4d
|
||||
d2 35 15 41 de 26 95 41 ca 1f 44 de a2 09 d9 4a
|
||||
62 76 cd b6 c5 e7 05 0e b3 5b b6 85 30 52 1c be
|
||||
1b 2d a7 af 75 fc 0a a9 c8 0c 9d 05 15 9f 68 30
|
||||
5d bc f4 e5 a5 ba 2e 0b 4b 67 32 e8 48 73 55 f9
|
||||
a4 1f e2 58 41 4b c7 0d 27 1a cc 9a 40 85 8d ad
|
||||
c6 60 01 9a e0 5f 44 c0 86 a2 98 77 f4 0c 47 7c
|
||||
5a c4 12 2b 83 b4 d6 18 62 25 c1 01 ae 75 6a 5a
|
||||
f6 4e fd 0d 9d 6b cc 19 26 dc 04 e1 2d 2e e7 75
|
||||
19 e2 9e 4d 33 a8 d8 79 14 59 b0 56 03 84 86 0b
|
||||
8d 5e 84 d8 c6 70 1c c9 9e 98 4c 2d 5c 5d 82 8b
|
||||
0d 00 67 9a a2 07 a7 e8 7d 35 d3 1d 7c 05 a8 f0
|
||||
c4 10 3a b0 1e fe e7 02 52 6f e8 20 6e a0 a8 dc
|
||||
d1 39 5b 05 15 d9 e0 e7 a0 6d 0a 45 44 58 89 d6
|
||||
7b 65 46 11 51 98 ca 37 a4 78 67 42 88 d1 18 8c
|
||||
c8 56 a5 37 7c 87 12 3a 9c 0b c7 33 bc 39 43 db
|
||||
46 c5 91 c9 bc 2e 1f 8f 69 b7 5e ff c8 d8 50 b4
|
||||
b4 c9 4a c1 df f2 c3 e5 26 1b 75 30 f7 58 2a aa
|
||||
8e a3 c3 46 c8 9f c2 4b 9b ca 7d 59 22 b1 05 42
|
||||
5d bc d2 13 04 a4 1a 57 8d ac 79 e5 5e b0 80 65
|
||||
9d de 40 af 72 1d d6 d3 bd 14 69 58 13 0c 70 a4
|
||||
58 1d 26 71 b0 ad 08 6e 95 66 06 ab 0d b7 96 ad
|
||||
dd 02 a7 b4 d4 90 8a 54 a5 62 70 56 fc 63 b5 20
|
||||
a4 c4 64 fc 68 dc e2 9e d1 86 09 ef 17 2a 5c 9c
|
||||
e5 2f ae d2 ea a2 d4 ad 6b cb 04 39 e2 7e 1a 0e
|
||||
0a 1c 10 a9 2c 88 a1 10 e0 85 db 67 4c 69 e8 e2
|
||||
95 70 e8 92 69 f7 b4 d0 f6 69 cb 66 90 61 e1 a8
|
||||
be a7 36 72 e8 52 fc 3a 2d b5 9e 15 76 0e f3 36
|
||||
b6 e5 c0 7f 7d 74 84 28 26 dc 21 4a d3 a5 a1 8f
|
||||
c5 65 ce dc 3f dd 71 50 4e e5 36 9a 60 2d 64 50
|
||||
6a ab 6a 42 67 a9 06 a2 cc b0 1b cb c1 be 49 51
|
||||
09 9c 1b d6 2e c9 24 ac 0e a3 cc 5f 91 96 4e cb
|
||||
18 94 95 c3 3c f2 a1 c5 25 79 4e 69 c5 8f 66 38
|
||||
ae 9b 87 e6 53 46 10 ee 9f 27 85 0e e5 c7 ab 51
|
||||
53 90 41 65 7e ba 29 18 2f 8a e4 b1 04 88 ac 39
|
||||
1e e8 36 b9 4e 4f 2b a7 4b 59 ca eb 45 85 00 06
|
||||
98 33 ae 78 0d 69 6d c3 07 11 45 b2 d2 1c 15 ce
|
||||
9b 26 65 77 19 5d fb 21 ac 64 10 53 85 40 32 37
|
||||
f2 c3 d0 af bf 91 6f 01 87 38 17 58 0e 03 d2 ca
|
||||
34 b2 b2 43 30 75 76 9e 50 92 b9 9d ed af 11 7f
|
||||
21 d1 36 0b 17 74 4f cf f7 9c bf 03 8b cd ea 2b
|
||||
13 7d e7 6a f8 a0 79 36 58 ce 89 2b d5 31 14 48
|
||||
2c de 78 bd bc 31 b0 74 3a 47 96 c1 06 6c 5f f5
|
||||
0f bf 35 71 c1 aa 9d b9 a8 67 42 7e 9a 68 44 80
|
||||
0f fa e9 df f7 37 5e 90 be 2d cf 6a 7f 7c 81 7a
|
||||
3d 7b d0 30 43 9c 51 3d 26 9b d0 3f c9 06 23 37
|
||||
a8 5e c4 35 65 2e 35 08 64 c7 31 ec 8c 18 dd 84
|
||||
e0 ed 56 65 70 27 b9 6d 46 e9 3d 1d cf 0e bf 78
|
||||
9e 62 c4 24 b4 45 af 55 bd 65 1e 9c f7 f4 3c 79
|
||||
04 ea 10 d0 33 dc 9b 1f b9 35 49 6b b0 3e 21 af
|
||||
da 9e 7b 0b 46 04 7a 90 8e 50 53 86 44 f3 ab 25
|
||||
eb b0 fa 5b eb a3 28 1b 64 40 99 22 89 b2 9f 60
|
||||
cc 03 b2 b3 e5 37 71 06 05 f6 94 0e 56 9b c5 85
|
||||
1b 2b 18 49 69 6e a8 ca b0 50 df c4 6c e7 9b 51
|
||||
4a f2 81 a6 8e cf e7 e8 67 95 c6 f0 f8 80 82 b9
|
||||
4c b0 3b 6b 2c 1d a6 5b a6 90 ce dd 77 f7 52 3c
|
||||
ab 44 cd b1 66 b0 9c fb 30 0c 64 5f 63 47 ee d5
|
||||
35 aa a5 77 11 a0 e9 db a0 04 a5 33 85 56 d6 a5
|
||||
c4 98 fe 7e 6c 1c cc 05 47 2b 46 78 38 09 b4 a5
|
||||
f3 a0 ee 9c ec d2 05 6c a5 94 4e b3 b7 e7 1d ed
|
||||
72 62 1c 21 76 34 11 9a 42 01 ef 94 c4 7b 36 33
|
||||
a8 8e 36 cd 74 38 8b e1 4f 65 62 07 bf 6d 49 54
|
||||
43 a4 98 a4 45 9e 56 93 bc 6f f2 51 be a0 d1 16
|
||||
61 f4 bc 5c 00 48 31 c9 25 df 4c 49 8b 70 5e c7
|
||||
68 f9 3b 0d 56 d8 cc c8 94 15 f3 17 08 e0 f7 af
|
||||
eb 4a dd 8c 8e 26 21 08 ef 41 6a a0 2c e0 9c ce
|
||||
3c c3 c5 9e bd c7 4e 9f 5c 71 80 17 25 dd 44 ca
|
||||
2d 43 70 69 e3 d5 d9 d6 7f ef b4 61 81 f2 ce c2
|
||||
20 e7 b5 02 2d 7c 42 83 1b 0e 97 30 c8 09 f6 e6
|
||||
07 76 7b f9 68 66 70 c5 3e a0 96 88 c3 c1 14 05
|
||||
9b 65 52 73 af c4 6d 6f 5b 36 87 29 aa e0 67 b5
|
||||
7e d1 d6 b2 d1 27 0c 34 ee 75 d0 b7 77 fa ac c8
|
||||
11 c7 11 88 24 63 3a b1 15 3f 6d 9f af 84 40 70
|
||||
|
BIN
dpa-attack/dpa-aes-v.png
Normal file
BIN
dpa-attack/dpa-aes-v.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
664
dpa-attack/dpa_bi-hwb_student5.nb
Normal file
664
dpa-attack/dpa_bi-hwb_student5.nb
Normal file
|
@ -0,0 +1,664 @@
|
|||
(* Content-type: application/mathematica *)
|
||||
|
||||
(*** Wolfram Notebook File ***)
|
||||
(* http://www.wolfram.com/nb *)
|
||||
|
||||
(* CreatedBy='Mathematica 7.0' *)
|
||||
|
||||
(*CacheID: 234*)
|
||||
(* Internal cache information:
|
||||
NotebookFileLineBreakTest
|
||||
NotebookFileLineBreakTest
|
||||
NotebookDataPosition[ 145, 7]
|
||||
NotebookDataLength[ 25847, 655]
|
||||
NotebookOptionsPosition[ 24625, 617]
|
||||
NotebookOutlinePosition[ 25059, 635]
|
||||
CellTagsIndexPosition[ 25016, 632]
|
||||
WindowFrame->Normal*)
|
||||
|
||||
(* Beginning of Notebook Content *)
|
||||
Notebook[{
|
||||
Cell[BoxData[
|
||||
RowBox[{"SetDirectory", "[",
|
||||
RowBox[{"NotebookDirectory", "[", "]"}], "]"}]], "Input"],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"read", " ", "plaintext", " ", "inputs"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"inputs", "=",
|
||||
RowBox[{"StringSplit", "[",
|
||||
RowBox[{"ReadList", "[",
|
||||
RowBox[{"\"\<plaintext.txt\>\"", ",", "String"}], "]"}], "]"}]}],
|
||||
";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"is", "=",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"StringTrim", "[",
|
||||
RowBox[{"#", ",", "\"\<0x\>\""}], "]"}], "&"}], "/@", "inputs"}]}],
|
||||
";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"inputs", "=",
|
||||
RowBox[{"Map", "[",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"FromDigits", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}], ",", "is", ",",
|
||||
RowBox[{"{", "2", "}"}]}], "]"}]}], ";"}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.513065164153782*^9, 3.513065164701598*^9}, {
|
||||
3.51306956390343*^9, 3.513069593104686*^9}, {3.5130699021288524`*^9,
|
||||
3.5130699027752953`*^9}, {3.513072041709684*^9, 3.5130720429273796`*^9}, {
|
||||
3.6047750649215713`*^9, 3.6047750684215765`*^9}, {3.6047751308016634`*^9,
|
||||
3.6047751699517183`*^9}, {3.604775205431768*^9, 3.604775209171773*^9}, {
|
||||
3.6047753763720074`*^9, 3.604775378742011*^9}, {3.604775445462104*^9,
|
||||
3.6047755065721893`*^9}, {3.60477563539237*^9, 3.604775664782411*^9}, {
|
||||
3.604775717942486*^9, 3.6047757458425245`*^9}, {3.604775813222619*^9,
|
||||
3.6047760178839054`*^9}, 3.604776217714185*^9, {3.611654553014601*^9,
|
||||
3.611654555544605*^9}, 3.6576111564330072`*^9, {3.7204347847718115`*^9,
|
||||
3.7204347932733574`*^9}}],
|
||||
|
||||
Cell[BoxData[{
|
||||
RowBox[{"Length", "[", "inputs", "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"inputs", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"1", ",", "All"}], "]"}], "]"}], "//",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}], " ",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"debug", ":", " ",
|
||||
RowBox[{"print", " ", "the", " ", "first", " ", "block"}]}],
|
||||
"*)"}]}]}], "Input",
|
||||
CellChangeTimes->{{3.60477614246408*^9, 3.604776148824089*^9}, {
|
||||
3.7204352933027515`*^9, 3.720435305065805*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{"recLen", "=",
|
||||
RowBox[{
|
||||
RowBox[{"Import", "[",
|
||||
RowBox[{"\"\<traceLength.txt\>\"", ",", "\"\<CSV\>\""}], "]"}], "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"1", ",", "1"}], "]"}], "]"}],
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
"read", " ", "length", " ", "of", " ", "one", " ", "complete", " ",
|
||||
"trace"}], "*)"}]}]], "Input",
|
||||
CellChangeTimes->{{3.6047725781640882`*^9, 3.6047726245241537`*^9}, {
|
||||
3.6047728509444704`*^9, 3.6047728549544764`*^9}, {3.6047728903545256`*^9,
|
||||
3.604772892964529*^9}, {3.60477367922663*^9, 3.6047736850566387`*^9}, {
|
||||
3.6047764424945*^9, 3.6047764426545*^9}, {3.611654395614381*^9,
|
||||
3.6116544204244156`*^9}, {3.6116544546444635`*^9,
|
||||
3.6116545073645372`*^9}, {3.611656982271825*^9, 3.6116569830418262`*^9},
|
||||
3.657611148657194*^9, 3.6576112471096745`*^9, {3.7204334339389772`*^9,
|
||||
3.720433436988076*^9}, {3.720433614531517*^9, 3.7204336175115733`*^9},
|
||||
3.720434584600828*^9, {3.7204348191751294`*^9, 3.7204348743819485`*^9}, {
|
||||
3.7204349530964828`*^9, 3.7204349543014317`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*", " ",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
"prepare", " ", "to", " ", "read", " ", "parts", " ", "of", " ", "traces",
|
||||
"\[IndentingNewLine]", "start"}], " ", "=", " ",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
"number", " ", "of", " ", "samples", " ", "to", " ", "skip", " ", "at",
|
||||
" ", "the", " ", "start", " ", "of", " ", "each", " ", "trace",
|
||||
"\[IndentingNewLine]", "len"}], " ", "=", " ",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
"number", " ", "of", " ", "samples", " ", "to", " ", "keep", " ",
|
||||
"from", " ", "each", " ", "trace", "\[IndentingNewLine]", "count"}],
|
||||
" ", "=", " ",
|
||||
RowBox[{
|
||||
"number", " ", "of", " ", "traces", " ", "to", " ", "read"}]}]}]}], " ",
|
||||
"*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"start", "=", "0"}], ";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"len", "=", "recLen"}], ";"}],
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
"CHANGE", " ", "to", " ", "the", " ", "length", " ", "of", " ", "the",
|
||||
" ", "first", " ", "round"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"count", "=", "10"}], ";",
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
RowBox[{"CHANGE", " ", "to", " ",
|
||||
RowBox[{"Length", "[", "inputs", "]"}]}], ";", " ",
|
||||
RowBox[{"for", " ", "the", " ", "attack"}]}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{"type", "=", "\"\<Byte\>\""}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.6047725781640882`*^9, 3.6047726245241537`*^9}, {
|
||||
3.6047728509444704`*^9, 3.6047728549544764`*^9}, {3.6047728903545256`*^9,
|
||||
3.604772892964529*^9}, {3.60477367922663*^9, 3.6047736850566387`*^9}, {
|
||||
3.6047764424945*^9, 3.6047764426545*^9}, {3.611654395614381*^9,
|
||||
3.6116544204244156`*^9}, {3.6116544546444635`*^9,
|
||||
3.6116545073645372`*^9}, {3.611656982271825*^9, 3.6116569830418262`*^9},
|
||||
3.657611148657194*^9, 3.6576112471096745`*^9, {3.7204334339389772`*^9,
|
||||
3.720433436988076*^9}, {3.720433614531517*^9, 3.7204336175115733`*^9},
|
||||
3.720434584600828*^9, {3.7204348191751294`*^9, 3.7204350410331383`*^9}, {
|
||||
3.720435726616678*^9, 3.720435735879939*^9}, {3.7204393408982005`*^9,
|
||||
3.720439433030507*^9}, 3.72043946895192*^9}],
|
||||
|
||||
Cell[BoxData[{
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"t", "=",
|
||||
RowBox[{"ConstantArray", "[",
|
||||
RowBox[{"0.", ",",
|
||||
RowBox[{"{",
|
||||
RowBox[{"count", ",", "len"}], "}"}]}], "]"}]}], ";"}], " ",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"prepare", " ", "empty", " ", "matrix"}], "*)"}]}], "\n",
|
||||
RowBox[{
|
||||
RowBox[{"f", "=",
|
||||
RowBox[{"OpenRead", "[",
|
||||
RowBox[{"\"\<traces.bin\>\"", ",",
|
||||
RowBox[{"BinaryFormat", "\[Rule]", "True"}]}], "]"}]}],
|
||||
";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"For", "[",
|
||||
RowBox[{
|
||||
RowBox[{"i", "=", "1"}], ",",
|
||||
RowBox[{"i", "\[LessEqual]", "count"}], ",",
|
||||
RowBox[{"i", "++"}], ",", "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"BinaryReadList", "[",
|
||||
RowBox[{"f", ",", "type", ",", "start"}], "]"}], ";",
|
||||
RowBox[{"(*", "skip", "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"t", "[",
|
||||
RowBox[{"[", "i", "]"}], "]"}], "=",
|
||||
RowBox[{"N", "[",
|
||||
RowBox[{"BinaryReadList", "[",
|
||||
RowBox[{"f", ",", "type", ",", "len"}], "]"}], "]"}]}], ";",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"read", " ", "interesting", " ", "part"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{"BinaryReadList", "[",
|
||||
RowBox[{"f", ",", "type", ",",
|
||||
RowBox[{"recLen", "-",
|
||||
RowBox[{"(",
|
||||
RowBox[{"start", "+", "len"}], ")"}]}]}], "]"}], ";"}]}],
|
||||
RowBox[{"(*", "skip", "*)"}], "\[IndentingNewLine]", "]"}],
|
||||
";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"Close", "[", "f", "]"}], ";"}]}], "Input",
|
||||
CellChangeTimes->{{3.6047736543465953`*^9, 3.6047737432467194`*^9}, {
|
||||
3.604773840806856*^9, 3.6047738437368603`*^9}, 3.6047763663443937`*^9, {
|
||||
3.7204350706630774`*^9, 3.7204351113945007`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"Dimensions", "[", "t", "]"}],
|
||||
RowBox[{"(*",
|
||||
RowBox[{"dimensions", " ", "of", " ", "matrix", " ", "of", " ", "traces"}],
|
||||
"*)"}]}]], "Input",
|
||||
CellChangeTimes->{{3.657611200974016*^9, 3.657611203442487*^9}, {
|
||||
3.720435139439351*^9, 3.7204351499092684`*^9}}],
|
||||
|
||||
Cell[BoxData[{
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"mt", "=",
|
||||
RowBox[{"Mean", "[",
|
||||
RowBox[{"Transpose", "[", "t", "]"}], "]"}]}], ";"}], " ",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"remove", " ", "mean", " ", "of", " ", "each", " ", "trace", " ",
|
||||
RowBox[{"(", "detrend", ")"}]}], "*)"}]}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"t", "=",
|
||||
RowBox[{"t", "-", "mt"}]}], ";"}]}], "Input",
|
||||
CellChangeTimes->{{3.513064701337701*^9, 3.5130647223900642`*^9}, {
|
||||
3.5130691259617333`*^9, 3.5130691476566343`*^9}, {3.697802894461648*^9,
|
||||
3.6978029010809946`*^9}, {3.720435204500185*^9, 3.720435232348072*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"ListLinePlot", "[",
|
||||
RowBox[{
|
||||
RowBox[{"t", "[",
|
||||
RowBox[{"[", "1", "]"}], "]"}], ",",
|
||||
RowBox[{"PlotRange", "\[Rule]", "All"}]}], "]"}],
|
||||
RowBox[{"(*",
|
||||
RowBox[{"plot", " ", "the", " ", "1", "st", " ", "trace"}],
|
||||
"*)"}]}]], "Input",
|
||||
CellChangeTimes->{{3.513059525407263*^9, 3.5130595320064497`*^9}, {
|
||||
3.5130597927680807`*^9, 3.5130597934028053`*^9}, {3.5130607553441668`*^9,
|
||||
3.513060770237745*^9}, {3.513060805087077*^9, 3.5130608247957764`*^9}, {
|
||||
3.513064529241294*^9, 3.5130645554105177`*^9}, {3.5130646262800045`*^9,
|
||||
3.5130646414577446`*^9}, {3.513064908861528*^9, 3.5130649090265565`*^9},
|
||||
3.5130690322353106`*^9, {3.611656491884932*^9, 3.6116564951749363`*^9}, {
|
||||
3.720435152775014*^9, 3.720435178730044*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"ListLinePlot", "[",
|
||||
RowBox[{"t", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"All", ",",
|
||||
RowBox[{"1", ";;", "100"}]}], "]"}], "]"}], "]"}],
|
||||
RowBox[{"(*",
|
||||
RowBox[{"plot", " ", "zoomed", " ", "overlapping", " ", "trace"}],
|
||||
"*)"}]}]], "Input",
|
||||
CellChangeTimes->{
|
||||
3.5130651127205505`*^9, 3.5130690498250046`*^9, 3.5130691784642324`*^9, {
|
||||
3.7204352499893413`*^9, 3.7204352709064436`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{"(*", " ",
|
||||
RowBox[{
|
||||
RowBox[{"STOP", ":", " ",
|
||||
RowBox[{
|
||||
"Select", " ", "the", " ", "interesting", " ", "part", " ", "of", " ",
|
||||
"traces"}]}], ",", " ",
|
||||
RowBox[{
|
||||
RowBox[{"change", " ", "start"}], "="}], ",", " ",
|
||||
RowBox[{"len", "="}], ",", " ",
|
||||
RowBox[{"count", "=", " ",
|
||||
RowBox[{"...", " ",
|
||||
RowBox[{"above", "."}]}]}]}], " ", "*)"}]], "Input",
|
||||
CellChangeTimes->{{3.720439262833274*^9, 3.7204392959636936`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
RowBox[{"**", "**", "**", "**", "**"}], "*", " ", "Define", " ", "useful",
|
||||
" ", "functions"}], " ", "***********)"}], "\[IndentingNewLine]",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"setup", " ", "AES", " ", "SBOX"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
StyleBox[
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
"ss", "=",
|
||||
"\"\<0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, \
|
||||
0x2B, 0xFE, 0xD7, 0xAB, 0x76,\n 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, \
|
||||
0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,\n 0xB7, 0xFD, 0x93, \
|
||||
0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,\
|
||||
\n 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, \
|
||||
0xEB, 0x27, 0xB2, 0x75,\n 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, \
|
||||
0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,\n 0x53, 0xD1, 0x00, 0xED, \
|
||||
0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,\n \
|
||||
0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, \
|
||||
0x3C, 0x9F, 0xA8,\n 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, \
|
||||
0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,\n 0xCD, 0x0C, 0x13, 0xEC, 0x5F, \
|
||||
0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,\n 0x60, \
|
||||
0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, \
|
||||
0x0B, 0xDB,\n 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, \
|
||||
0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,\n 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, \
|
||||
0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,\n 0xBA, 0x78, \
|
||||
0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, \
|
||||
0x8A,\n 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, \
|
||||
0xB9, 0x86, 0xC1, 0x1D, 0x9E,\n 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, \
|
||||
0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,\n 0x8C, 0xA1, 0x89, \
|
||||
0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, \
|
||||
0x16\>\""}], ";"}],
|
||||
FontSize->9], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"sss", "=",
|
||||
RowBox[{"StringTrim", "[",
|
||||
RowBox[{
|
||||
RowBox[{"StringTrim", "[",
|
||||
RowBox[{"StringSplit", "[",
|
||||
RowBox[{"ss", ",", "\"\<,\>\""}], "]"}], "]"}], ",", "\"\<0x\>\""}],
|
||||
"]"}]}], ";",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"convert", " ", "to", " ", "hex", " ", "strings"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{"SubBytes", "=",
|
||||
RowBox[{"Map", "[",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"FromDigits", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}], ",", "sss"}], "]"}]}], ";",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"convert", " ", "to", " ", "integers"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{"ClearAll", "[", "SBOX", "]"}], ";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"SBOX", "[", "a_", "]"}], ":=",
|
||||
RowBox[{"SubBytes", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"a", "+", "1"}], "]"}], "]"}]}], ";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"SBOX", "[", "0", "]"}], "\[Equal]", "16^^63",
|
||||
RowBox[{"(*",
|
||||
RowBox[{"test", " ", "SBOX",
|
||||
RowBox[{"(", "0", ")"}]}], "*)"}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.611654569214624*^9, 3.6116546224046984`*^9},
|
||||
3.720435287858545*^9, {3.7204391212751875`*^9, 3.72043914322598*^9}}],
|
||||
|
||||
Cell[BoxData[{
|
||||
RowBox[{
|
||||
RowBox[{"ClearAll", "[", "HammingWeight", "]"}],
|
||||
";"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"HammingWeight", "[", "x_", "]"}], ":=",
|
||||
RowBox[{"DigitCount", "[",
|
||||
RowBox[{"x", ",", "2", ",", "1"}], "]"}]}], ";"}], "\[IndentingNewLine]",
|
||||
RowBox[{"HammingWeight", "[", "16^^00", "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{"HammingWeight", "[", "16^^FF", "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{"HammingWeight", "[",
|
||||
RowBox[{"{",
|
||||
RowBox[{"16^^A3", ",", "16^^00", ",", "16^^21"}], "}"}], "]"}]}], "Input",
|
||||
CellChangeTimes->{{3.6116554925799284`*^9, 3.611655515599961*^9},
|
||||
3.6116556132500973`*^9, {3.611655674950184*^9, 3.6116556795801907`*^9}, {
|
||||
3.6116557152702403`*^9, 3.6116557190102453`*^9}, {3.61165586224049*^9,
|
||||
3.6116558682004986`*^9}, 3.611656188129399*^9, {3.720435635640376*^9,
|
||||
3.7204356859751062`*^9}, {3.7204359822956524`*^9,
|
||||
3.7204360272497416`*^9}, {3.720436612207198*^9, 3.7204366371002493`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
"**", "**", "**", "**", "**", "**", "**", "**", "**", "**", "**", "**",
|
||||
"**"}], "*", " ", "Attack", " ", "the", " ", "first", " ", "key", " ",
|
||||
RowBox[{
|
||||
"byte", " ", "**", "**", "**", "**", "**", "**", "**", "**", "**", "**", "**",
|
||||
"**", "**"}]}], "*****)"}], "\[IndentingNewLine]",
|
||||
RowBox[{"(*", " ",
|
||||
RowBox[{
|
||||
"You", " ", "need", " ", "to", " ", "have", " ", "selected", " ", "the",
|
||||
" ", "interesting", " ", "parts", " ", "of", " ", "measured", " ",
|
||||
"traces", " ", "for", " ", "correlation"}], " ", "*)"}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204391531928515`*^9, 3.720439218197921*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
"Select", " ", "the", " ", "first", " ", "byte", " ", "of", " ", "each",
|
||||
" ", "input"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"d", "=",
|
||||
RowBox[{"inputs", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{
|
||||
RowBox[{"1", ";;", "count"}], ",", "1"}], "]"}], "]"}]}], ";"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"d", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"1", ";;", "20"}], "]"}], "]"}], "//",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.720436066249104*^9, 3.720436073200232*^9}, {
|
||||
3.7204361291892776`*^9, 3.720436140346721*^9}, {3.720437898533883*^9,
|
||||
3.7204379207177186`*^9}, {3.7204379911764402`*^9, 3.7204380042089243`*^9}, {
|
||||
3.7204380452344737`*^9, 3.7204380454299173`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"Generate", " ", "key", " ", "hypotheses"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"k", "=",
|
||||
RowBox[{"Range", "[",
|
||||
RowBox[{"0", ",", "255"}], "]"}]}], ";"}], "\n",
|
||||
RowBox[{
|
||||
RowBox[{"k", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"1", ";;", "20"}], "]"}], "]"}], "//",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204363069291754`*^9, 3.720436313709281*^9},
|
||||
3.720436529424485*^9, {3.7204380153299246`*^9, 3.7204380488776207`*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
"XOR", " ", "each", " ", "data", " ", "byte", " ", "with", " ", "each",
|
||||
" ", "key"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"xmat", "=",
|
||||
RowBox[{"Outer", "[",
|
||||
RowBox[{"BitXor", ",", "d", ",", "k"}], "]"}]}], ";"}], "\n",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"xmat", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{
|
||||
RowBox[{"1", ";;", "10"}], ",",
|
||||
RowBox[{"1", ";;", "10"}]}], "]"}], "]"}], "//", "MatrixForm"}], "//",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204378406581306`*^9, 3.720437873889809*^9}, {
|
||||
3.7204380578574905`*^9, 3.72043808961254*^9}}],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{
|
||||
"Substitute", " ", "with", " ", "SBOX", " ", "all", " ", "XORed", " ",
|
||||
"values"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{"smat", "=",
|
||||
RowBox[{"Map", "[",
|
||||
RowBox[{"?",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{",?];", "\n",
|
||||
RowBox[{"smat", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{
|
||||
RowBox[{"1", ";;", "10"}], ",",
|
||||
RowBox[{"1", ";;", "10"}]}], "]"}], "]"}]}], "//", "MatrixForm"}],
|
||||
"//",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"#", ",", "16"}], "]"}], "&"}]}]}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204364937533484`*^9, 3.7204365216630898`*^9}, {
|
||||
3.7204381098511887`*^9, 3.720438147519025*^9}, {3.7204381799849195`*^9,
|
||||
3.72043818617476*^9}, 3.7204385169275365`*^9, {3.720438846096431*^9,
|
||||
3.720438866277361*^9}},
|
||||
EmphasizeSyntaxErrors->True],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"Compute", " ", "Hamming", " ",
|
||||
RowBox[{"Weights", " ", "--"}], " ", "the", " ", "matrix", " ", "of", " ",
|
||||
"hypothetical", " ", "power", " ", "consumption"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{"hmat", "=",
|
||||
RowBox[{"Map", "[",
|
||||
RowBox[{"?",
|
||||
RowBox[{
|
||||
RowBox[{",?];", "\n",
|
||||
RowBox[{"hmat", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{
|
||||
RowBox[{"1", ";;", "10"}], ",",
|
||||
RowBox[{"1", ";;", "10"}]}], "]"}], "]"}]}], "//",
|
||||
"MatrixForm"}]}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.720436564076136*^9, 3.720436573148843*^9},
|
||||
3.7204366713173647`*^9, {3.720437434578974*^9, 3.7204374489522295`*^9}, {
|
||||
3.720438195365692*^9, 3.720438208866293*^9}, {3.7204389027292747`*^9,
|
||||
3.72043890395277*^9}, {3.7204390240388007`*^9, 3.720439046425144*^9}},
|
||||
EmphasizeSyntaxErrors->True],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"Compute", " ", "the", " ", "correlation", " ",
|
||||
RowBox[{"matrix", " ", "--"}], " ", "correlate", " ", "the", " ",
|
||||
"hypotheses", " ", "with", " ", "measured", " ", "traces"}], "*)"}],
|
||||
"\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"Dimensions", "[", "hmat", "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{"Dimensions", "[", "t", "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{"corr", "=",
|
||||
RowBox[{"Correlation", "[",
|
||||
RowBox[{"?",
|
||||
RowBox[{
|
||||
RowBox[{",?];", "\[IndentingNewLine]",
|
||||
RowBox[{"corr", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{
|
||||
RowBox[{"1", ";;", "10"}], ",",
|
||||
RowBox[{"1", ";;", "5"}]}], "]"}], "]"}]}], "//",
|
||||
"MatrixForm"}]}]}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204366947095766`*^9, 3.7204367233700914`*^9}, {
|
||||
3.7204374518595214`*^9, 3.7204374574933295`*^9}, {3.720438914786463*^9,
|
||||
3.720438916653968*^9}, {3.7204389933387804`*^9, 3.7204390078214912`*^9}, {
|
||||
3.720439049151926*^9, 3.7204390634049435`*^9}},
|
||||
EmphasizeSyntaxErrors->True],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{"acorr", "=",
|
||||
RowBox[{"Abs", "[",
|
||||
RowBox[{
|
||||
RowBox[{"?",
|
||||
RowBox[{"];", "\n", "maxcorr"}]}], "=",
|
||||
RowBox[{"Max", "[",
|
||||
RowBox[{
|
||||
RowBox[{"?",
|
||||
RowBox[{"]", "\n",
|
||||
RowBox[{"{",
|
||||
RowBox[{"kindex", ",", "kpos"}], "}"}]}]}], "=",
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{
|
||||
RowBox[{"Position", "[",
|
||||
RowBox[{"acorr", ",", "maxcorr"}], "]"}], "[",
|
||||
RowBox[{"[", "1", "]"}], "]"}], "\[IndentingNewLine]", "key"}], "=",
|
||||
RowBox[{"kindex", "-",
|
||||
RowBox[{"1", "\[IndentingNewLine]",
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"key", ",", "16"}], "]"}]}]}]}]}]}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.7204368809288006`*^9, 3.720436892960585*^9},
|
||||
3.72043825056677*^9, {3.720438930572811*^9, 3.720438933656006*^9}},
|
||||
EmphasizeSyntaxErrors->True],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"Find", " ", "the", " ", "correlation", " ", "peak",
|
||||
RowBox[{"(", "s", ")"}], " ", "in", " ", "the", " ", "trace", " ",
|
||||
"plot"}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{"ListLinePlot", "[",
|
||||
RowBox[{"corr", "[",
|
||||
RowBox[{"[",
|
||||
RowBox[{"?", "]],PlotRange\[Rule]All]"}]}]}]}]}]], "Input",
|
||||
CellChangeTimes->{{3.720437664036378*^9, 3.720437668858079*^9}, {
|
||||
3.7204389531392536`*^9, 3.7204389679561768`*^9}},
|
||||
EmphasizeSyntaxErrors->True],
|
||||
|
||||
Cell[BoxData[
|
||||
RowBox[{
|
||||
RowBox[{"(*",
|
||||
RowBox[{"Break", " ", "all", " ", "key", " ",
|
||||
RowBox[{"bytes", "!"}]}], "*)"}], "\[IndentingNewLine]",
|
||||
RowBox[{"(*", "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"kk", "=",
|
||||
RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]",
|
||||
RowBox[{"For", "[",
|
||||
RowBox[{
|
||||
RowBox[{"ki", "=", "1"}], ",",
|
||||
RowBox[{"ki", "\[LessEqual]", "16"}], ",",
|
||||
RowBox[{"ki", "++"}], ",", "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"AppendTo", "[",
|
||||
RowBox[{"kk", ",", "key"}], "]"}], ";", "\[IndentingNewLine]",
|
||||
RowBox[{"Print", "[",
|
||||
RowBox[{
|
||||
"\"\<Found key byte\>\"", ",", " ", "\"\< at position \>\"", ",",
|
||||
" ", "\"\< with correlation \>\""}], "]"}], ";"}]}],
|
||||
"\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]",
|
||||
RowBox[{
|
||||
RowBox[{"BaseForm", "[",
|
||||
RowBox[{"kk", ",", "16"}], "]"}], "\[IndentingNewLine]",
|
||||
RowBox[{"FromCharacterCode", "[", "kk", "]"}]}]}], "\[IndentingNewLine]",
|
||||
"*)"}]}]], "Input",
|
||||
CellChangeTimes->{{3.5130696191801653`*^9, 3.5130696330894313`*^9}, {
|
||||
3.513069906023134*^9, 3.513069908271037*^9}, {3.513070107142098*^9,
|
||||
3.5130701234115644`*^9}, 3.513072048142866*^9, 3.6116553510297303`*^9, {
|
||||
3.6116554562198772`*^9, 3.6116554859399195`*^9}, {3.6116555178099637`*^9,
|
||||
3.611655619500106*^9}, {3.6116556523401523`*^9, 3.6116557420702777`*^9}, {
|
||||
3.61165577646435*^9, 3.6116557933043737`*^9}, {3.611655836908444*^9,
|
||||
3.6116558509384637`*^9}, {3.6116559727286634`*^9, 3.611655978018671*^9}, {
|
||||
3.6116560616130557`*^9, 3.6116560931031*^9}, {3.6116561897594013`*^9,
|
||||
3.6116562043994217`*^9}, {3.611656539034998*^9, 3.6116565408050003`*^9}, {
|
||||
3.6977984386017427`*^9, 3.697798459144847*^9}, {3.6977985148794065`*^9,
|
||||
3.6977985833439856`*^9}, {3.697798645947137*^9, 3.6977986636405888`*^9}, {
|
||||
3.697801698213625*^9, 3.697801776406316*^9}, {3.697801810083218*^9,
|
||||
3.697801884028393*^9}, {3.697801985851428*^9, 3.69780202420901*^9}, {
|
||||
3.6978021615495586`*^9, 3.697802209294267*^9}, {3.697802468640934*^9,
|
||||
3.6978024749311595`*^9}, {3.720172526518976*^9, 3.7201725707035656`*^9},
|
||||
3.720433541599208*^9, {3.7204356258210487`*^9, 3.720435626626298*^9}, {
|
||||
3.7204357862180295`*^9, 3.7204357878500185`*^9}, {3.7204358320926394`*^9,
|
||||
3.7204358376169844`*^9}, {3.720435896349845*^9, 3.720435901189147*^9}, {
|
||||
3.7204372729625654`*^9, 3.720437349472704*^9}, {3.7204383744797044`*^9,
|
||||
3.720438395475066*^9}, {3.720438574027712*^9, 3.720438574545648*^9}, {
|
||||
3.7204389746913157`*^9, 3.7204389843366966`*^9}}]
|
||||
},
|
||||
PrintingStyleEnvironment->"SlideShow",
|
||||
WindowSize->{1264, 777},
|
||||
WindowMargins->{{0, Automatic}, {0, Automatic}},
|
||||
ShowSelection->True,
|
||||
Magnification:>1.25 Inherited,
|
||||
FrontEndVersion->"9.0 for Microsoft Windows (64-bit) (January 25, 2013)",
|
||||
StyleDefinitions->"Default.nb"
|
||||
]
|
||||
(* End of Notebook Content *)
|
||||
|
||||
(* Internal cache information *)
|
||||
(*CellTagsOutline
|
||||
CellTagsIndex->{}
|
||||
*)
|
||||
(*CellTagsIndex
|
||||
CellTagsIndex->{}
|
||||
*)
|
||||
(*NotebookFileOutline
|
||||
Notebook[{
|
||||
Cell[545, 20, 104, 2, 36, "Input"],
|
||||
Cell[652, 24, 1604, 37, 106, "Input"],
|
||||
Cell[2259, 63, 528, 14, 60, "Input"],
|
||||
Cell[2790, 79, 1050, 20, 36, "Input"],
|
||||
Cell[3843, 101, 2189, 48, 198, "Input"],
|
||||
Cell[6035, 151, 1732, 46, 198, "Input"],
|
||||
Cell[7770, 199, 302, 7, 36, "Input"],
|
||||
Cell[8075, 208, 613, 14, 60, "Input"],
|
||||
Cell[8691, 224, 794, 16, 36, "Input"],
|
||||
Cell[9488, 242, 439, 12, 36, "Input"],
|
||||
Cell[9930, 256, 481, 13, 36, "Input"],
|
||||
Cell[10414, 271, 3361, 69, 543, "Input"],
|
||||
Cell[13778, 342, 988, 19, 129, "Input"],
|
||||
Cell[14769, 363, 697, 15, 60, "Input"],
|
||||
Cell[15469, 380, 878, 24, 83, "Input"],
|
||||
Cell[16350, 406, 619, 18, 83, "Input"],
|
||||
Cell[16972, 426, 757, 22, 83, "Input"],
|
||||
Cell[17732, 450, 901, 25, 83, "Input"],
|
||||
Cell[18636, 477, 899, 22, 83, "Input"],
|
||||
Cell[19538, 501, 1080, 25, 129, "Input"],
|
||||
Cell[20621, 528, 874, 24, 129, "Input"],
|
||||
Cell[21498, 554, 512, 12, 60, "Input"],
|
||||
Cell[22013, 568, 2608, 47, 244, "Input"]
|
||||
}
|
||||
]
|
||||
*)
|
||||
|
||||
(* End of internal cache information *)
|
417
dpa-attack/dpa_student.ipynb
Normal file
417
dpa-attack/dpa_student.ipynb
Normal file
File diff suppressed because one or more lines are too long
101
dpa-attack/plaintext.txt
Normal file
101
dpa-attack/plaintext.txt
Normal file
|
@ -0,0 +1,101 @@
|
|||
25 eb 8c 48 ff 89 cb 85 4f c0 90 81 cc 47 ed fc
|
||||
86 19 b2 14 fe 65 92 d4 8b fc ea 9c 9d 8e 32 44
|
||||
d7 d7 e9 f1 f7 de 60 56 8d e9 89 07 3f 3d 16 39
|
||||
01 80 3c d1 08 d8 8d 73 af ea 79 c8 1e 47 83 c6
|
||||
95 31 39 03 c4 18 f1 2b 4c 1a 34 50 6d 73 29 d2
|
||||
0f 40 c4 19 6f e2 d7 87 1a 99 68 16 09 c3 e7 7e
|
||||
17 7d 64 9b a5 39 53 a6 88 20 a2 0a 17 8f ef 57
|
||||
19 c7 f3 5c 4a be 2e a0 d8 97 b7 41 71 4d 03 80
|
||||
f8 fd cd 06 34 d5 c6 02 4c db 95 cb 07 4d c8 4b
|
||||
4c 2b 14 1e 24 67 07 2d c4 39 f0 fc d2 60 0d 0a
|
||||
17 7c 51 87 79 98 ca dc 94 a0 8c c1 5e 3c e9 98
|
||||
52 73 61 82 ec dc 67 62 0a b6 60 e9 52 d6 c6 c2
|
||||
47 e7 b0 36 0f 85 91 aa 14 76 b0 16 e5 8d f1 72
|
||||
61 b5 54 0a 60 b7 3d 38 d9 95 e7 60 f9 d3 19 f1
|
||||
8e 8d d4 74 2b 86 cd b8 bb 8f 18 fb 89 c2 c7 35
|
||||
45 a4 65 f8 15 28 4d db b1 71 2f cd a8 ce 2d 57
|
||||
90 9c ea 2d c3 74 42 ce 2e 80 9d 3f 4b 23 b5 dd
|
||||
21 82 d4 53 30 36 20 fd 9c 37 d2 1f 1c de 4a 88
|
||||
6d 63 20 08 54 cd 32 4f a9 40 6c d3 18 71 ea 14
|
||||
2c 0f 9e db 8e f3 13 fb 9a eb 56 87 e3 35 af 6e
|
||||
bc f3 22 64 e4 20 93 c3 18 d3 e5 5e a6 af e7 85
|
||||
4f 3f 71 57 a0 2a ca c2 d8 e2 9e 91 44 40 bc f4
|
||||
ce 91 a7 a3 d1 9c 96 26 a9 ca cd 46 99 e6 f0 30
|
||||
b2 be 2c 69 b6 00 56 f7 10 13 09 70 dc 33 6f 8a
|
||||
7b 44 97 0e bf 15 ae 7c 83 b8 58 d0 ae 36 cf 47
|
||||
fc 0e cd 8f 99 35 d4 f9 ba d5 72 ee 9d 2c 25 96
|
||||
db b6 4c 0c 78 3b 9a cc c7 d7 a7 7d 2b cc 72 26
|
||||
5b 70 fd 45 e2 a1 ab 9a b8 c5 49 34 59 1b 2b 01
|
||||
52 7f 5e e0 9a 54 1e 67 40 96 62 34 83 46 8c 27
|
||||
e6 53 ef b0 3d c6 0d a4 17 96 c2 7a dc f9 ea 5f
|
||||
35 89 a9 b9 58 6d f6 dd f4 cc 52 6a 8b 69 24 70
|
||||
90 9e 73 6a d4 b9 23 a9 51 02 d5 5d a4 6d 2e 50
|
||||
1b 48 1c 82 e3 8d a9 79 24 e4 a8 12 e1 a6 3f f3
|
||||
2e 68 d9 e7 70 ff 65 02 62 1c ce cb ba aa 1a e8
|
||||
95 3a 7f 90 dc 25 e9 ed e8 ea 0b 96 06 60 8e 64
|
||||
57 cb a3 bf 7b 20 6e 5b b1 e6 7a 80 96 61 c6 a4
|
||||
92 1b 9c e5 34 66 f2 de 79 32 2e 07 d5 10 e7 9d
|
||||
8b bd fb fa 0e 68 1e 88 a8 b0 9e 97 c2 dc c0 e7
|
||||
8c 91 fa a1 0a 1c e9 cb 85 51 85 79 2a 56 b4 39
|
||||
38 4e 57 fa 75 d1 8a c8 30 f5 13 8c 99 4d 10 04
|
||||
d8 76 9b b2 44 83 ba 0c 82 4c 60 60 3d 8f 64 fa
|
||||
4a 8c 92 9e bb 85 90 5f 60 bc ab ec 1f eb 63 2c
|
||||
18 be 4f 15 93 4d 21 04 27 7c 43 a2 a2 2a 4e d2
|
||||
66 26 7a b0 7a d1 fe 05 fa e6 db f5 88 28 c5 05
|
||||
07 ce 25 69 4e 21 1b b3 4d 1e ab ae 09 43 03 c3
|
||||
36 61 bf e3 50 1c a5 c0 a5 dd 92 4e 67 c6 dc 34
|
||||
8a a0 2e 3f 7b dd 92 a4 9d f8 27 1c 36 1d b7 67
|
||||
5a 9b bc 6a 8c 91 47 5b 87 7c d3 b8 33 a0 cc 3e
|
||||
66 b3 60 1e 96 05 db 5f 69 96 cc 74 6d 16 e6 92
|
||||
dd 1d 12 34 7a 1f 31 e2 d3 79 dd ad eb b3 56 0f
|
||||
c7 b0 9c d3 1b fd 2b 93 4f 46 58 fa d6 0b e5 c1
|
||||
5d 0f b3 e2 56 2d 73 bf aa 96 6d 67 d2 a8 ac 90
|
||||
11 6b 58 e6 80 f0 61 52 77 c7 f4 0e a4 1a a0 81
|
||||
b0 58 f5 16 22 5e 15 c4 c3 b0 76 92 61 8b 8b 79
|
||||
b4 4c 44 ad c0 59 28 07 07 f6 21 3a 07 a2 84 85
|
||||
bd 76 67 b2 4c ad fe 60 95 72 7d 5c 47 dc ef 99
|
||||
e9 f7 61 01 0d 74 26 d5 9b a6 d4 a1 01 fe 9f f5
|
||||
71 72 26 1c cb 72 63 1f b3 42 43 a0 4a a0 e1 05
|
||||
00 a5 6e 48 ab 6c 18 90 7d 60 e0 29 98 15 f9 9b
|
||||
2e 23 3e 44 3e 7d 20 f9 2d 58 66 73 aa 39 99 20
|
||||
68 21 f6 86 c1 33 1f 87 fb 8d 7f 83 9c 8f 1d 42
|
||||
ef 3d d3 60 3a d2 e8 fa a2 1e b9 60 b1 fc 2e 53
|
||||
29 14 f8 28 78 fe 6e b2 f8 f6 84 09 7c 80 da 95
|
||||
fb 4a 95 f6 a1 77 a6 25 2b 67 21 5f a9 c7 45 c6
|
||||
17 d6 6a 27 1f 25 26 b8 57 9c a4 42 0a d4 80 10
|
||||
1e 83 fc ce 6c bb 35 79 f0 f3 76 c5 31 ca 6b ae
|
||||
9b a1 48 44 27 a0 ef 61 87 21 be 0e 4d ab 3d 55
|
||||
24 0c fa b5 76 1a 52 e5 fa 7f e3 0c e9 63 19 e5
|
||||
81 ec a9 6b 37 37 c0 8f dc 28 3c 46 b1 b2 a0 da
|
||||
14 34 26 c1 d0 b9 34 59 13 de 40 ff 2a 2f 95 61
|
||||
01 59 26 fa 8c 70 12 cd cd d8 ec da d3 27 62 7f
|
||||
0f 25 e6 e0 a4 62 7f f3 ee 01 20 9e e5 07 70 32
|
||||
b2 fa a0 2b a9 c5 01 61 76 b3 1e 52 b1 51 d2 df
|
||||
c7 fd 95 12 ae ac db 89 84 4d ff 3f 97 5f f3 bb
|
||||
e5 7d 40 d2 9f 81 54 ce e9 44 36 19 d3 9b fa 38
|
||||
5c 08 b7 6d 4c ae b1 0b 88 bd 4a 97 58 d9 d2 d2
|
||||
05 6f aa 2e 15 b3 75 49 aa 8d 92 97 2d df 7d 34
|
||||
a1 b6 8e b9 6f bd a8 f1 48 c1 16 02 d6 01 48 33
|
||||
c7 70 d7 4d 3e 30 00 2a 27 03 b9 2b 35 ab ca 62
|
||||
f5 61 4b bb 42 4a 5b 05 1a c3 1f 0b 83 b6 81 0d
|
||||
3b 7c b8 d1 88 26 84 46 4c 49 05 cf 54 bb 1f da
|
||||
07 eb 42 a0 ae cb 52 2c 40 25 af c9 da 54 0f c1
|
||||
34 c5 c2 59 1c 13 eb 11 05 ed cf 8a fe 9d 91 d1
|
||||
ae 07 11 f2 56 3d 40 07 1d b7 1c 74 e3 2b e2 37
|
||||
e8 05 32 5c bf b4 69 a2 e2 d3 4d a5 d9 b6 04 2b
|
||||
8b 1d 4c d9 a0 b2 e8 b3 aa 97 73 7d 59 2b fe 72
|
||||
73 68 58 5f 1c 40 72 d6 fe 3a 58 7f 33 96 0a 6b
|
||||
1f f4 09 67 86 9e 43 92 8c 49 4a 5b c1 d5 35 aa
|
||||
86 89 a4 f6 d7 bb 08 b5 d7 12 6a 15 43 fd 0e 14
|
||||
eb 7c d5 09 2a c2 14 6b 90 3a 4d 2a 23 4b 9c ea
|
||||
55 22 ac ea f6 dc d2 88 1e 40 cd 12 a6 f4 8b b8
|
||||
b4 d3 4c c4 ed 19 e8 63 45 1f 3b 3e 1d 42 7b 20
|
||||
47 f9 bc fc 5d c8 9b 61 dd 44 26 3c 61 f6 09 43
|
||||
4e 3f 14 a3 b7 f3 9c ad 5c b8 7a 33 04 cf cb 1f
|
||||
e4 4c b4 fa 26 53 d0 6f e4 4a 46 9a e4 b9 1e 63
|
||||
c0 26 92 df 29 f2 5f 39 b0 aa 71 f2 b4 96 40 c6
|
||||
bd bc 6d 60 9b 00 9a 32 f6 14 fa 1a c1 65 cd e8
|
||||
12 bc fd d2 e6 3b 75 71 3e f2 f7 a6 97 44 c5 bd
|
||||
57 c2 13 f7 a4 11 95 cd 6a 78 f3 9a f1 a0 08 88
|
||||
94 ee 44 52 36 f8 d5 7f e7 dd f7 ca 59 17 5e da
|
||||
|
BIN
dpa-attack/traceLength.txt
Normal file
BIN
dpa-attack/traceLength.txt
Normal file
Binary file not shown.
1
dpa-attack/traces.bin
Normal file
1
dpa-attack/traces.bin
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue