{"id":20101041,"url":"https://github.com/fkie-cad/talk","last_synced_at":"2026-05-12T10:32:28.957Z","repository":{"id":88149105,"uuid":"335925433","full_name":"fkie-cad/talk","owner":"fkie-cad","description":"NtDeviceIoControlFile talker","archived":false,"fork":false,"pushed_at":"2025-12-12T14:37:26.000Z","size":162,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-14T05:57:58.683Z","etag":null,"topics":["device","ioctl","ntdeviceiocontrolfile","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fkie-cad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-04T10:55:45.000Z","updated_at":"2025-12-12T14:31:28.000Z","dependencies_parsed_at":"2023-03-07T05:15:40.643Z","dependency_job_id":"dbcc283f-d105-49ee-8a75-53edfc4199a9","html_url":"https://github.com/fkie-cad/talk","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/fkie-cad/talk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Ftalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Ftalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Ftalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Ftalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fkie-cad","download_url":"https://codeload.github.com/fkie-cad/talk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkie-cad%2Ftalk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32934491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["device","ioctl","ntdeviceiocontrolfile","windows"],"created_at":"2024-11-13T17:23:02.809Z","updated_at":"2026-05-12T10:32:28.952Z","avatar_url":"https://github.com/fkie-cad.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Talk\n\nTalks to a device using NtDeviceIoControl.\n\n\n## Version\n2.2.0  \nLast changed: 12.12.2025\n\n## Contents\n* [Requirements](#requirements)\n* [Build](#build)\n* [Usage](#usage)\n    * [Examples](#examples)\n* [Copyright, Credits \u0026 Contact](#copyright,-credits-\u0026-contact)\n    * [Authors](#authors)\n\n\n## Requirements\n- msbuild\n\n\n## Build\n```bash\n$devcmd\u003e build.bat [/?]\n// or\n$devcmd\u003e msbuild talk.vcxproj /p:Platform=x64 /p:Configuration=Release\n```\n\n**other options**\n```bash\n$devcmd\u003e msbuild [talk.vcxproj] [/p:Platform=x86|x64] [/p:Configuration=Debug|Release] [/p:RunTimeLib=Debug|Release] [/p:PDB=0|1]\n```\n\n## Usage\n```bash\n$ Talk.exe /n DeviceName \n           [/c \u003cioctl\u003e] \n           [/is|/ir|/ip|/os|/or|/op \u003csize\u003e] \n           [/ipc|/opc \u003cpattern\u003e \u003csize\u003e] \n           [/i|o(x|b|w|d|q|a|u) \u003cdata\u003e] \n           [/if|/of \u003cfile\u003e] \"\n           [/s sleep] \n           [/da \u003cflags\u003e] \n           [/sa \u003cflags\u003e] \n           [/se \u003cpriv\u003e] \n           [/t] \n           [/pb|pbs|pc8|pc16|pc32|pc64|pc1|pa|pu]\n           [/v] \n           [/h]\n```\n\n**Options**\n- /n DeviceName to call. I.e. \"\\Device\\Beep\"\n- /c The desired IOCTL interpreted as a hex number.\n- /os Size of OutputBuffer.\n\n**Input Data**  \n(The integer types are [chainable](#remarks).)  \n- /ix \\\u003cdata\\\u003e as hex byte string.\n- /ib \\\u003cdata\\\u003e as byte (uint8).\n- /iw \\\u003cdata\\\u003e as word (uint16).\n- /id \\\u003cdata\\\u003e as dword (uint32).\n- /iq \\\u003cdata\\\u003e as qword (uint64).\n- /ia \\\u003cdata\\\u003e as ascii text.\n- /iu \\\u003cdata\\\u003e as unicode (utf-16) text.\n- /if Input data is read from the binary file from \\\u003cpath\\\u003e.\n- /ir Input data will be filled with \\\u003csize\\\u003e random bytes.\n- /ip Input data will be filled with \\\u003csize\\\u003e default pattern bytes (Aa0Aa1...).\n- /ipc Input data will be filled with \\\u003csize\\\u003e custom pattern bytes, starting from \\\u003cpattern\\\u003e, incremented by 1.\n- /is Input data will be filled with \\\u003csize\\\u003e 'A's.\n\n**Output Data:**  \n(Sometimes the output buffer might need to be filled as well.)  \n(The integer types are [chainable](#remarks).)  \n- /os Size of OutputBuffer to be filled with zeros. (Most common option.)\n- /ox \\\u003cdata\\\u003e as hex byte string.\n- /ob \\\u003cdata\\\u003e as byte.\n- /ow \\\u003cdata\\\u003e as word (uint16).\n- /od \\\u003cdata\\\u003e as dword (uint32).\n- /oq \\\u003cdata\\\u003e as qword (uint64).\n- /oa \\\u003cdata\\\u003e as ascii text.\n- /ou \\\u003cdata\\\u003e as unicode (utf-16) text.\n- /of Output data is read as binary data from the file \u003cpath\u003e.\n- /or Output data will be filled with \u003csize\u003e random bytes.\n- /op Output data will be filled with \u003csize\u003e default pattern bytes (Aa0Aa1...).\n- /opc Output data will be filled with \u003csize\u003e custom pattern bytes, starting from \u003cpattern\u003e, incremented by 1.\n\n\n**Other**\n- /s Duration of a possible sleep after device io.\n- /t Just test the device for accessibility. Don't send data.\n- /da DesiredAccess flags to open the device. Defaults to FILE_GENERIC_READ|FILE_GENERIC_WRITE|SYNCHRONIZE = 0x12019f\n- /sa ShareAccess flags to open the device. Defaults to FILE_SHARE_READ|FILE_SHARE_WRITE = 0x3\n- /se Additional SE_XXX privilege (if run as admin). Can be set multiple (0x10) times for multiple privileges.\n\n**Printing style for output buffer**\n- /pb Print plain space separated bytes\n- /pbs Print plain byte string\n- /pc8 Print in cols of Address | bytes | ascii chars\n- /pc16 Print in cols of Address | words | utf-16 chars\n- /pc32 Print in cols of Address | dwords\n- /pc64 Print in cols of Address | qwords\n- /pc1 Print in cols of Address | bits\n- /pa Print as ascii string\n- /pu Print as unicode (utf-16) string\n\n**Misc**\n- /v More verbose output.\n\n### Remarks\nA sleep (`/s`) may be useful with asynchronous calls like Beep.  \n\nInteger arguments (`\\ib`, `\\iw`, `\\id`, `\\iq`, `\\ob`, `\\ow`, `\\od`, `\\oq`) can be chained together to form a simple struct.\nThis may sometimes be more convenient as to give a plain hex string.\nCheck the second beep example call to see an example of this. \nThere the input struct would consist out of two ULONGs.\nThe resulting input size would be 8 bytes, equal to the first example.\nThe order the integers are given in does matter.\n\nThe custom `\u003cpattern\u003e` of `/ipc` (`/opc`) is interpreted as a byte string, \ni.e. the input of `/ipc 414243 10` will result in the input data of `41 42 43 41 42 44 41 42 45 41`.\n\n\n### Examples\nCall beep\n```bash\n# with a byte string\n$ Talk.exe /n \\Device\\Beep /c 0x10000 /ix 020200003e080000 /s 0x083e\n# with two ulongs\n$ Talk.exe /n \\Device\\Beep /c 0x10000 /id 0x202 /id 0x83e /s 0x083e\n```\n\nQuery Name and GUID of HarddiskVolume1 (Admin rights required) with different print options\n```bash\n$ Talk.exe /n \\Device\\HarddiskVolume1 /c 0x4d0008 /os 0x100 /pu\n$ Talk.exe /n \\Device\\HarddiskVolume1 /c 0x4d0018 /os 0x10 /pb\n```\n\n\n## Copyright, Credits \u0026 Contact\nPublished under [GNU GENERAL PUBLIC LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkie-cad%2Ftalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffkie-cad%2Ftalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkie-cad%2Ftalk/lists"}