|
26 | 26 | }, |
27 | 27 | { |
28 | 28 | "cell_type": "code", |
29 | | - "execution_count": 1, |
| 29 | + "execution_count": 2, |
30 | 30 | "id": "59ab69c2", |
31 | | - "metadata": {}, |
| 31 | + "metadata": { |
| 32 | + "ExecuteTime": { |
| 33 | + "end_time": "2025-09-30T22:33:28.895480027Z", |
| 34 | + "start_time": "2025-09-30T22:33:28.832413744Z" |
| 35 | + } |
| 36 | + }, |
32 | 37 | "outputs": [], |
33 | 38 | "source": [ |
34 | 39 | "from ReversingLabs.SDK.ticloud import AdvancedSearch\n", |
|
51 | 56 | }, |
52 | 57 | { |
53 | 58 | "cell_type": "code", |
54 | | - "execution_count": 2, |
| 59 | + "execution_count": 9, |
55 | 60 | "id": "66ed0816", |
56 | | - "metadata": {}, |
| 61 | + "metadata": { |
| 62 | + "ExecuteTime": { |
| 63 | + "end_time": "2025-09-30T22:38:20.732097504Z", |
| 64 | + "start_time": "2025-09-30T22:38:20.726257601Z" |
| 65 | + } |
| 66 | + }, |
57 | 67 | "outputs": [], |
58 | 68 | "source": [ |
59 | 69 | "import json\n", |
60 | 70 | "import re\n", |
61 | 71 | "\n", |
62 | | - "# ---------------------------------------------------\n", |
63 | | - "# Configuration\n", |
64 | | - "# ---------------------------------------------------\n", |
65 | | - "SERVER = \"<server>\"\n", |
66 | | - "USERNAME = \"username\"\n", |
67 | | - "PASSWORD = \"password\"\n", |
68 | | - "USER_AGENT= \"ReversingLabs SDK Cookbook v2.9.0\"" |
| 72 | + "\n", |
| 73 | + "CREDENTIALS = json.load(open('credentials.json'))\n", |
| 74 | + "USERNAME = CREDENTIALS.get(\"ticloud\").get(\"username\")\n", |
| 75 | + "PASSWORD = CREDENTIALS.get(\"ticloud\").get(\"password\")\n", |
| 76 | + "USER_AGENT = json.load(open('../user_agent.json'))[\"user_agent\"]\n", |
| 77 | + "HOST = \"https://data.reversinglabs.com\"\n", |
| 78 | + "\n", |
| 79 | + "config = {\n", |
| 80 | + " \"host\": HOST,\n", |
| 81 | + " \"username\": USERNAME,\n", |
| 82 | + " \"password\": PASSWORD,\n", |
| 83 | + " \"user_agent\": USER_AGENT\n", |
| 84 | + "}\n" |
69 | 85 | ] |
70 | 86 | }, |
71 | 87 | { |
72 | 88 | "cell_type": "markdown", |
73 | 89 | "id": "d5beb2d8", |
74 | 90 | "metadata": {}, |
75 | 91 | "source": [ |
76 | | - "# 3. Filter query string\n", |
| 92 | + "/# 3. Filter query string\n", |
77 | 93 | "This code block defines a Python dictionary named QUERY_STRING that sets up the parameters for an API query to the ReversingLabs platform. When running this in a Jupyter Notebook, it forms the basis for the search request by specifying filters, pagination, and the desired response format.\n", |
78 | 94 | "Addiditonal options available here: https://docs.reversinglabs.com/SpectraIntelligence/API/MalwareHunting/tca-0320" |
79 | 95 | ] |
80 | 96 | }, |
81 | 97 | { |
82 | 98 | "cell_type": "code", |
83 | | - "execution_count": 3, |
| 99 | + "execution_count": 10, |
84 | 100 | "id": "791783de", |
85 | | - "metadata": {}, |
| 101 | + "metadata": { |
| 102 | + "ExecuteTime": { |
| 103 | + "end_time": "2025-09-30T22:38:25.551755262Z", |
| 104 | + "start_time": "2025-09-30T22:38:25.511153908Z" |
| 105 | + } |
| 106 | + }, |
86 | 107 | "outputs": [], |
87 | 108 | "source": [ |
88 | 109 | "QUERY_STRING = 'firstseen:[2025-02-20T00:00:00Z TO *] classification:[malicious, suspicious] filetype:EXE uri:\"https://api.telegram.org/bot*\" size:[0 TO *]'\n", |
|
102 | 123 | }, |
103 | 124 | { |
104 | 125 | "cell_type": "code", |
105 | | - "execution_count": 4, |
| 126 | + "execution_count": 11, |
106 | 127 | "id": "dbdf8739", |
107 | | - "metadata": {}, |
| 128 | + "metadata": { |
| 129 | + "ExecuteTime": { |
| 130 | + "end_time": "2025-09-30T22:38:28.047287138Z", |
| 131 | + "start_time": "2025-09-30T22:38:28.035230497Z" |
| 132 | + } |
| 133 | + }, |
108 | 134 | "outputs": [], |
109 | 135 | "source": [ |
110 | 136 | "\n", |
|
130 | 156 | }, |
131 | 157 | { |
132 | 158 | "cell_type": "code", |
133 | | - "execution_count": 5, |
| 159 | + "execution_count": 12, |
134 | 160 | "id": "067c7c95", |
135 | | - "metadata": {}, |
| 161 | + "metadata": { |
| 162 | + "ExecuteTime": { |
| 163 | + "end_time": "2025-09-30T22:38:30.576112670Z", |
| 164 | + "start_time": "2025-09-30T22:38:30.567537234Z" |
| 165 | + } |
| 166 | + }, |
136 | 167 | "outputs": [], |
137 | 168 | "source": [ |
138 | 169 | "def recursive_search_for_urls(obj, prefix):\n", |
|
179 | 210 | " query_string = QUERY_STRING\n", |
180 | 211 | " url_prefix = extract_url_prefix_from_string_query(query_string)\n", |
181 | 212 | " \n", |
182 | | - " search_client = AdvancedSearch(\n", |
183 | | - " host=SERVER,\n", |
184 | | - " username=USERNAME,\n", |
185 | | - " password=PASSWORD,\n", |
186 | | - " verify=True,\n", |
187 | | - " proxies=None,\n", |
188 | | - " user_agent=\"USER_AGENT\",\n", |
189 | | - " allow_none_return=False\n", |
190 | | - " )\n", |
| 213 | + " search_client = AdvancedSearch(**config)\n", |
191 | 214 | "\n", |
192 | 215 | " try:\n", |
193 | 216 | " results = search_client.search_aggregated(\n", |
|
206 | 229 | " print(\"No samples found.\")\n", |
207 | 230 | " return\n", |
208 | 231 | "\n", |
209 | | - " actions = AdvancedActions(\n", |
210 | | - " host=SERVER,\n", |
211 | | - " username=USERNAME,\n", |
212 | | - " password=PASSWORD,\n", |
213 | | - " verify=True,\n", |
214 | | - " proxies=None,\n", |
215 | | - " user_agent=\"USER_AGENT\",\n", |
216 | | - " allow_none_return=False\n", |
217 | | - " )\n", |
| 232 | + " actions = AdvancedActions(**config)\n", |
218 | 233 | "\n", |
219 | 234 | " minimal_results = []\n", |
220 | 235 | " enrichment_success_count = 0\n", |
|
0 commit comments