whatileaked 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/cli.js +17 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -105,6 +105,17 @@ same credential always produces the same code, so two rows sharing a code are
|
|
|
105
105
|
one key you reused in two places, and two different codes are two different
|
|
106
106
|
keys.
|
|
107
107
|
|
|
108
|
+
### Sharing it
|
|
109
|
+
|
|
110
|
+
The last line of every scan is made only of counts — no project, path, rule or
|
|
111
|
+
fingerprint — so it is the part you can paste or screenshot anywhere:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
whatileaked: 3 credentials sent to a model provider, across 561 transcripts.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
A clean scan ends the same way, with `no credentials`.
|
|
118
|
+
|
|
108
119
|
---
|
|
109
120
|
|
|
110
121
|
## Is it a real key, or just a test fixture?
|
package/dist/cli.js
CHANGED
|
@@ -162,6 +162,7 @@ var TerminalReporter = class {
|
|
|
162
162
|
this.#write(green("No credentials found."));
|
|
163
163
|
this.#write("");
|
|
164
164
|
this.#write(dim(DISCLOSURE));
|
|
165
|
+
this.#share(sent, stats);
|
|
165
166
|
return;
|
|
166
167
|
}
|
|
167
168
|
for (const total of totals) {
|
|
@@ -196,6 +197,22 @@ var TerminalReporter = class {
|
|
|
196
197
|
this.#write(dim("Some findings will be test fixtures \u2014 open the file to tell."));
|
|
197
198
|
this.#write("");
|
|
198
199
|
this.#write(dim(DISCLOSURE));
|
|
200
|
+
this.#share(sent, stats);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The one line meant to be pasted somewhere public. Everything above it names
|
|
204
|
+
* projects, paths and fingerprints, so nobody shares it; this is counts only,
|
|
205
|
+
* and stays that way. It is last so a screenshot can crop to it, unstyled so
|
|
206
|
+
* a copy carries nothing but the words, and it repeats the headline's
|
|
207
|
+
* transmitted-only count for the same reason the headline keeps memory files
|
|
208
|
+
* out of it.
|
|
209
|
+
*/
|
|
210
|
+
#share(sent, stats) {
|
|
211
|
+
const credentials = sent === 0 ? "no credentials" : plural(sent, "credential");
|
|
212
|
+
this.#write("");
|
|
213
|
+
this.#write(
|
|
214
|
+
`whatileaked: ${credentials} sent to a model provider, across ${plural(stats.transcripts, "transcript")}.`
|
|
215
|
+
);
|
|
199
216
|
}
|
|
200
217
|
};
|
|
201
218
|
function count(value) {
|