File size is double while replacing value in variable and output with a different name - powershell

When replacing a value from a base text, and outputting the file, the file size double, rather than 4kb to 8kb.
$t=3
$F=30
Do{
$t = $t+1
$F=$F+10
$y = (Get-Content -Path D:\test.php).Replace("YU9","$F")
$y | Out-File D:\Test\delivery$t.php -Force
}
until($t -eq 50)

Right, powershell 5.1 out-file defaults to utf16 or unicode, so it's twice as big as ascii or utf8. Unicode has nulls inbetween each letter. The first two bytes are the BOM. "0D 0A" is carriage return and linefeed.
'abcde' | set-content file
'abcde' | out-file file2
format-hex file
Path: C:\Users\js\foo\file
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 61 62 63 64 65 0D 0A abcde..
format-hex file2
Path: C:\Users\js\foo\file2
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 FF FE 61 00 62 00 63 00 64 00 65 00 0D 00 0A 00 .þa.b.c.d.e.....

Related

Why can't I find line with two character with select-line [duplicate]

This question already has answers here:
Powershell - Strange WSL output string encoding
(4 answers)
Closed last month.
To find every line with that "-" from the command wsl --help, theses lines work
wsl --help | Select-String -Pattern "-"
wsl --help | Select-String "-"
Now I try with more complicated pattern: "--"
wsl --help | Select-String -Pattern "--"
wsl --help | Select-String "--"
Nothing is return although there is line with this pattern. Why?
updated:
wsl --help | Select-String "--" -SimpleMatch
doesn't work either
Yep, wsl outputs utf16le or unicode. Even bytes are null.
wsl --help | select -first 1 | format-hex
Label: String (System.String) <09F5DDB6>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 43 00 6F 00 70 00 79 00 72 00 69 00 67 00 68 00 C o p y r i g h
0000000000000010 74 00 20 00 28 00 63 00 29 00 20 00 4D 00 69 00 t ( c ) M i
0000000000000020 63 00 72 00 6F 00 73 00 6F 00 66 00 74 00 20 00 c r o s o f t
0000000000000030 43 00 6F 00 72 00 70 00 6F 00 72 00 61 00 74 00 C o r p o r a t
0000000000000040 69 00 6F 00 6E 00 2E 00 20 00 41 00 6C 00 6C 00 i o n . A l l
0000000000000050 20 00 72 00 69 00 67 00 68 00 74 00 73 00 20 00 r i g h t s
0000000000000060 72 00 65 00 73 00 65 00 72 00 76 00 65 00 64 00 r e s e r v e d
0000000000000070 2E 00 .
"`0" means null. In powershell 7, the matches are highlighted.
wsl --help | Select-String -Pattern "-`0-" | select -first 1
--exec, -e <CommandLine>

How to filter not simple binary data column in PySpark?

Sample of my df is:
+------------------------------------------------------------------------------------------------------------------+
|id | binary_col |
+------------------------------------------------------------------------------------------------------------------+
| 1 | [08 01 10 0D 00 0E CC 93 01 00 00 00 01 00 00 00 00 00 00 00 80 FF BF 40 00 00 00 00 00 00 F0 3F BE 2B 00 00]|
| 2 | [08 01 10 0D 00 0E CC 93 01 00 00 00 01 00 00 00 00 00 00 00 F0 FF BF 40 00 00 00 00 00 00 F0 3F 57 66 00 00]|
| 3 | [08 01 10 0D 00 0E CC 93 01 00 00 00 01 00 00 00 00 00 00 00 C0 FF BF 40 00 00 00 00 00 00 F0 3F D5 69 00 00]|
| 4 | [08 01 10 0D 00 0E CC 93 01 00 00 00 01 00 00 00 00 00 00 00 80 FF BF 40 00 00 00 00 00 00 F0 3F 5A 60 00 00]|
+------------------------------------------------------------------------------------------------------------------+
with these schema (df.printSchema())
|-- id: int (nullable = true)
|-- binary_col: binary (nullable = true)
And I want to filter only the values with [08 01 10 0D 00 0E CC 93 01 00 00 00 01 00 00 00 00 00 00 00 80 FF BF 40 00 00 00 00 00 00 F0 3F BE 2B 00 00] (It doesn't work filtering id=1 because there are other ids in the df)
I've tried to cast binary to bigint to filter later like here: Spark: cast bytearray to bigint
by doing df.withColumn('casted_bin', F.conv(F.hex(F.col("binary_col")), 16, 10).cast("bigint")).show(truncate=False) but it didn't work.
How can I filter any kind of binary data type?
Note: I had asked previously here (How to filter Pyspark column with binary data type?) but it was a very simple binary data and the answer generated the binary from a numeric value while now I don't know how to generate the numeric value.

Reverse engineer 8bit checksum from a car

I'm trying to reverse engineer the CAN bus codes generated by the steering wheel of a car. I'm interested in a single message, the one that holds the information about what button of the steering wheel has been pressed. I have done that for many different cars but this one is special (?)
I found the message that holds the data has for ID 0x3D4. So I logged this specific message many times with/without a different combination of the steering wheel buttons.
The way car works (most of the time) is that a single bit will toggle from 0 to 1 when a button is held down. And go back to 0 when the button is released. This message has a DLC of 8 so there would be potentially enough room for 64 buttons.
Now for this car, they have used 4 bits of the second byte for a counter counting from 0 to F. The first byte is the one that is causing a problem. I don't understand how it is generated. It seems to be dependant on the value of the other bytes but does not follow a standard CRC algo... It seems that it also depends on the position of the bytes... Pressing on buttons in the car will change a bit in the data which then changes the value of the first byte. If I generate a fake command to the car without changing the first byte, the car will not react to it.
I would like to find how this first byte is generated so I can generate it myself.
The DLC: 8
CAN bus high speed 500kb/s
CA 0E 80 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
4A 01 81 00 00 04 00 00
01 02 81 00 00 04 00 00
4C 03 81 00 00 04 00 00
DC 04 81 00 00 04 00 00
37 05 81 00 00 04 00 00
1E 06 81 00 00 04 00 00
8B 07 80 00 00 04 00 00
25 08 80 00 00 04 00 00
70 09 80 00 00 04 00 00
6B 0A 80 00 00 04 00 00
9B 0B 81 00 00 04 00 00
BE 0C 81 00 00 04 00 00
41 0D 81 00 00 04 00 00
3E 0E 81 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
I also found these following messages that share the same first byte:
7F 2D 84 00 00 04 00 00
7F 07 81 00 00 04 00 00
7F 03 82 00 00 04 00 00
4C 03 81 00 00 04 00 00
4C 00 84 00 00 04 00 00
4C 07 82 00 00 04 00 00
BE 0C 81 00 00 04 00 00
BE 01 80 00 00 04 00 00
BE 0F 84 00 00 04 00 00
BE 23 88 00 00 04 00 00
More data:
70 09 80 00 00 04 00 00
6B 0A 80 00 00 04 00 00
9B 0B 81 00 00 04 00 00
BE 0C 81 00 00 04 00 00
41 0D 81 00 00 04 00 00
3E 0E 81 00 00 04 00 00
EB 0F 81 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
04 05 82 00 00 04 00 00
4B 06 84 00 00 04 00 00
2A 07 84 00 00 04 00 00
26 18 84 00 00 04 00 00
73 19 84 00 00 04 00 00
68 1A 84 00 00 04 00 00
6C 1B 84 00 00 04 00 00
49 1C 84 00 00 04 00 00
B6 1D 84 00 00 04 00 00
C9 1E 84 00 00 04 00 00
BE 0F 84 00 00 04 00 00
4C 00 84 00 00 04 00 00
1F 01 84 00 00 04 00 00
54 02 84 00 00 04 00 00
19 03 84 00 00 04 00 00
89 04 84 00 00 04 00 00
09 25 84 00 00 04 00 00
20 26 84 00 00 04 00 00
41 27 84 00 00 04 00 00
EF 28 84 00 00 04 00 00
BA 29 84 00 00 04 00 00
A1 2A 84 00 00 04 00 00
A5 2B 84 00 00 04 00 00
80 2C 84 00 00 04 00 00
7F 2D 84 00 00 04 00 00
00 2E 84 00 00 04 00 00
D5 2F 84 00 00 04 00 00
27 20 84 00 00 04 00 00
74 21 84 00 00 04 00 00
3F 22 84 00 00 04 00 00
19 03 84 00 00 04 00 00
2B 14 84 00 00 04 00 00
C0 15 84 00 00 04 00 00
E9 16 84 00 00 04 00 00
88 17 84 00 00 04 00 00
26 18 84 00 00 04 00 00
73 19 84 00 00 04 00 00
68 1A 84 00 00 04 00 00
6C 1B 84 00 00 04 00 00
49 1C 84 00 00 04 00 00
B6 1D 84 00 00 04 00 00
C9 1E 84 00 00 04 00 00
1C 1F 84 00 00 04 00 00
EE 10 84 00 00 04 00 00
BD 11 84 00 00 04 00 00
F6 12 84 00 00 04 00 00
BB 13 84 00 00 04 00 00
2B 14 84 00 00 04 00 00
0C 15 88 00 00 04 00 00
25 16 88 00 00 04 00 00
44 17 88 00 00 04 00 00
EA 18 88 00 00 04 00 00
BF 19 88 00 00 04 00 00
A4 1A 88 00 00 04 00 00
02 0B 88 00 00 04 00 00
27 0C 88 00 00 04 00 00
D8 0D 88 00 00 04 00 00
CC 2E 88 00 00 04 00 00
19 2F 88 00 00 04 00 00
EB 20 88 00 00 04 00 00
B8 21 88 00 00 04 00 00
F3 22 88 00 00 04 00 00
BE 23 88 00 00 04 00 00
2E 24 88 00 00 04 00 00
C5 25 88 00 00 04 00 00
EC 26 88 00 00 04 00 00
8D 27 88 00 00 04 00 00
23 28 88 00 00 04 00 00
76 29 88 00 00 04 00 00
6D 2A 88 00 00 04 00 00
69 2B 88 00 00 04 00 00
4C 2C 88 00 00 04 00 00
B3 2D 88 00 00 04 00 00
CC 2E 88 00 00 04 00 00
72 0F 88 00 00 04 00 00
80 00 88 00 00 04 00 00
D3 01 88 00 00 04 00 00
98 02 88 00 00 04 00 00
D5 03 88 00 00 04 00 00
45 04 88 00 00 04 00 00
AE 05 88 00 00 04 00 00
4B 06 84 00 00 04 00 00
2A 07 84 00 00 04 00 00
E2 08 82 00 00 04 00 00
B7 09 82 00 00 04 00 00
AC 0A 82 00 00 04 00 00
A8 0B 82 00 00 04 00 00
8D 0C 82 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
D8 0F 82 00 00 04 00 00
2A 00 82 00 00 04 00 00
79 01 82 00 00 04 00 00
32 02 82 00 00 04 00 00
7F 03 82 00 00 04 00 00
EF 04 82 00 00 04 00 00
04 05 82 00 00 04 00 00
2D 06 82 00 00 04 00 00
4C 07 82 00 00 04 00 00
E2 08 82 00 00 04 00 00
B7 09 82 00 00 04 00 00
AC 0A 82 00 00 04 00 00
A8 0B 82 00 00 04 00 00
8D 0C 82 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
D8 0F 82 00 00 04 00 00
2A 00 82 00 00 04 00 00
79 01 82 00 00 04 00 00
32 02 82 00 00 04 00 00
7F 03 82 00 00 04 00 00
EF 04 82 00 00 04 00 00
04 05 82 00 00 04 00 00
2D 06 82 00 00 04 00 00
Following data have been logged while I tried all the buttons available. + a few combinations of the buttons.
76 00 A0 00 00 04 00 00
25 01 A0 00 00 04 00 00
6E 02 A0 00 00 04 00 00
23 03 A0 00 00 04 00 00
B3 04 A0 00 00 04 00 00
58 05 A0 00 00 04 00 00
71 06 A0 00 00 04 00 00
10 07 A0 00 00 04 00 00
BE 08 A0 00 00 04 00 00
EB 09 A0 00 00 04 00 00
04 0A A1 00 00 04 00 00
00 0B A1 00 00 04 00 00
25 0C A1 00 00 04 00 00
DA 0D A1 00 00 04 00 00
A5 0E A1 00 00 04 00 00
84 0F A0 00 00 04 00 00
76 00 A0 00 00 04 00 00
25 01 A0 00 00 04 00 00
6E 02 A0 00 00 04 00 00
23 03 A0 00 00 04 00 00
B3 04 A0 00 00 04 00 00
9F 05 A2 00 00 04 00 00
D0 06 A4 00 00 04 00 00
B1 07 A4 00 00 04 00 00
D3 08 A8 00 00 04 00 00
86 09 A8 00 00 04 00 00
9D 0A A8 00 00 04 00 00
99 0B A8 00 00 04 00 00
70 0C A4 00 00 04 00 00
8F 0D A4 00 00 04 00 00
F0 0E A4 00 00 04 00 00
25 0F A4 00 00 04 00 00
B1 00 A2 00 00 04 00 00
E2 01 A2 00 00 04 00 00
A9 02 A2 00 00 04 00 00
23 03 A0 00 00 04 00 00
B3 04 A0 00 00 04 00 00
C3 05 80 00 00 04 00 00
30 06 90 00 00 04 00 00
51 07 90 00 00 04 00 00
25 08 80 00 00 04 00 00
70 09 80 00 00 04 00 00
6B 0A 80 00 00 04 00 00
6F 0B 80 00 00 04 00 00
4A 0C 80 00 00 04 00 00
B5 0D 80 00 00 04 00 00
CA 0E 80 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
01 02 81 00 00 04 00 00
4C 03 81 00 00 04 00 00
DC 04 81 00 00 04 00 00
37 05 81 00 00 04 00 00
1E 06 81 00 00 04 00 00
7F 07 81 00 00 04 00 00
D1 08 81 00 00 04 00 00
70 09 80 00 00 04 00 00
6B 0A 80 00 00 04 00 00
6F 0B 80 00 00 04 00 00
4A 0C 80 00 00 04 00 00
B5 0D 80 00 00 04 00 00
CA 0E 80 00 00 04 00 00
1F 0F 80 00 00 04 00 00
2A 00 82 00 00 04 00 00
79 01 82 00 00 04 00 00
32 02 82 00 00 04 00 00
7F 03 82 00 00 04 00 00
EF 04 82 00 00 04 00 00
04 05 82 00 00 04 00 00
2D 06 82 00 00 04 00 00
2A 07 84 00 00 04 00 00
84 08 84 00 00 04 00 00
D1 09 84 00 00 04 00 00
CA 0A 84 00 00 04 00 00
CE 0B 84 00 00 04 00 00
27 0C 88 00 00 04 00 00
D8 0D 88 00 00 04 00 00
A7 0E 88 00 00 04 00 00
72 0F 88 00 00 04 00 00
4C 00 84 00 00 04 00 00
1F 01 84 00 00 04 00 00
32 02 82 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
C3 05 80 00 00 04 00 00
71 06 A0 00 00 04 00 00
10 07 A0 00 00 04 00 00
BE 08 A0 00 00 04 00 00
69 09 C0 00 00 04 00 00
72 0A C0 00 00 04 00 00
F4 0B A0 00 00 04 00 00
D1 0C A0 00 00 04 00 00
2E 0D A0 00 00 04 00 00
51 0E A0 00 00 04 00 00
84 0F A0 00 00 04 00 00
76 00 A0 00 00 04 00 00
25 01 A0 00 00 04 00 00
6E 02 A0 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
C3 05 80 00 00 04 00 00
EA 06 80 00 00 04 00 00
8B 07 80 00 00 04 00 00
25 08 80 00 00 04 00 00
0F 09 80 04 00 04 00 00
14 0A 80 04 00 04 00 00
B8 0B 80 06 00 04 00 00
9D 0C 80 06 00 04 00 00
62 0D 80 06 00 04 00 00
1D 0E 80 06 00 04 00 00
C8 0F 80 06 00 04 00 00
3A 00 80 06 00 04 00 00
C1 01 80 04 00 04 00 00
8A 02 80 04 00 04 00 00
C7 03 80 04 00 04 00 00
57 04 80 04 00 04 00 00
BC 05 80 04 00 04 00 00
95 06 80 04 00 04 00 00
F4 07 80 04 00 04 00 00
5A 08 80 04 00 04 00 00
0F 09 80 04 00 04 00 00
14 0A 80 04 00 04 00 00
10 0B 80 04 00 04 00 00
35 0C 80 04 00 04 00 00
CA 0D 80 04 00 04 00 00
B5 0E 80 04 00 04 00 00
60 0F 80 04 00 04 00 00
92 00 80 04 00 04 00 00
C1 01 80 04 00 04 00 00
8A 02 80 04 00 04 00 00
C7 03 80 04 00 04 00 00
57 04 80 04 00 04 00 00
BC 05 80 04 00 04 00 00
95 06 80 04 00 04 00 00
F4 07 80 04 00 04 00 00
5A 08 80 04 00 04 00 00
0F 09 80 04 00 04 00 00
14 0A 80 04 00 04 00 00
10 0B 80 04 00 04 00 00
35 0C 80 04 00 04 00 00
CA 0D 80 04 00 04 00 00
B5 0E 80 04 00 04 00 00
60 0F 80 04 00 04 00 00
92 00 80 04 00 04 00 00
C1 01 80 04 00 04 00 00
8A 02 80 04 00 04 00 00
C7 03 80 04 00 04 00 00
57 04 80 04 00 04 00 00
BC 05 80 04 00 04 00 00
95 06 80 04 00 04 00 00
23 07 80 02 00 04 00 00
8D 08 80 02 00 04 00 00
D8 09 80 02 00 04 00 00
C3 0A 80 02 00 04 00 00
C7 0B 80 02 00 04 00 00
E2 0C 80 02 00 04 00 00
1D 0D 80 02 00 04 00 00
62 0E 80 02 00 04 00 00
B7 0F 80 02 00 04 00 00
45 00 80 02 00 04 00 00
16 01 80 02 00 04 00 00
5D 02 80 02 00 04 00 00
10 03 80 02 00 04 00 00
80 04 80 02 00 04 00 00
6B 05 80 02 00 04 00 00
42 06 80 02 00 04 00 00
23 07 80 02 00 04 00 00
25 08 80 00 00 04 00 00
70 09 80 00 00 04 00 00
6B 0A 80 00 00 04 00 00
6F 0B 80 00 00 04 00 00
4A 0C 80 00 00 04 00 00
1D 0D 80 02 00 04 00 00
B5 0E 80 04 00 04 00 00
60 0F 80 04 00 04 00 00
3A 00 80 06 00 04 00 00
69 01 80 06 00 04 00 00
22 02 80 06 00 04 00 00
6F 03 80 06 00 04 00 00
FF 04 80 06 00 04 00 00
14 05 80 06 00 04 00 00
3D 06 80 06 00 04 00 00
5C 07 80 06 00 04 00 00
F2 08 80 06 00 04 00 00
A7 09 80 06 00 04 00 00
BC 0A 80 06 00 04 00 00
B8 0B 80 06 00 04 00 00
9D 0C 80 06 00 04 00 00
62 0D 80 06 00 04 00 00
1D 0E 80 06 00 04 00 00
C8 0F 80 06 00 04 00 00
3A 00 80 06 00 04 00 00
69 01 80 06 00 04 00 00
22 02 80 06 00 04 00 00
6F 03 80 06 00 04 00 00
FF 04 80 06 00 04 00 00
14 05 80 06 00 04 00 00
3D 06 80 06 00 04 00 00
5C 07 80 06 00 04 00 00
F2 08 80 06 00 04 00 00
A7 09 80 06 00 04 00 00
BC 0A 80 06 00 04 00 00
10 0B 80 04 00 04 00 00
35 0C 80 04 00 04 00 00
1D 0D 80 02 00 04 00 00
62 0E 80 02 00 04 00 00
B7 0F 80 02 00 04 00 00
45 00 80 02 00 04 00 00
16 01 80 02 00 04 00 00
5D 02 80 02 00 04 00 00
10 03 80 02 00 04 00 00
80 04 80 02 00 04 00 00
6B 05 80 02 00 04 00 00
42 06 80 02 00 04 00 00
23 07 80 02 00 04 00 00
8D 08 80 02 00 04 00 00
D8 09 80 02 00 04 00 00
C3 0A 80 02 00 04 00 00
C7 0B 80 02 00 04 00 00
E2 0C 80 02 00 04 00 00
1D 0D 80 02 00 04 00 00
62 0E 80 02 00 04 00 00
B7 0F 80 02 00 04 00 00
45 00 80 02 00 04 00 00
16 01 80 02 00 04 00 00
5D 02 80 02 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
C3 05 80 00 00 04 00 00
EA 06 80 00 00 04 00 00
4C 07 82 00 00 04 00 00
E2 08 82 00 00 04 00 00
B7 09 82 00 00 04 00 00
AC 0A 82 00 00 04 00 00
A8 0B 82 00 00 04 00 00
8D 0C 82 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
D8 0F 82 00 00 04 00 00
2A 00 82 00 00 04 00 00
79 01 82 00 00 04 00 00
32 02 82 00 00 04 00 00
7F 03 82 00 00 04 00 00
EF 04 82 00 00 04 00 00
04 05 82 00 00 04 00 00
2D 06 82 00 00 04 00 00
4C 07 82 00 00 04 00 00
E2 08 82 00 00 04 00 00
B7 09 82 00 00 04 00 00
AC 0A 82 00 00 04 00 00
A8 0B 82 00 00 04 00 00
8D 0C 82 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
D8 0F 82 00 00 04 00 00
2A 00 82 00 00 04 00 00
79 01 82 00 00 04 00 00
32 02 82 00 00 04 00 00
7F 03 82 00 00 04 00 00
EF 04 82 00 00 04 00 00
04 05 82 00 00 04 00 00
2D 06 82 00 00 04 00 00
4C 07 82 00 00 04 00 00
E2 08 82 00 00 04 00 00
B7 09 82 00 00 04 00 00
AC 0A 82 00 00 04 00 00
A8 0B 82 00 00 04 00 00
8D 0C 82 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
57 12 80 00 00 04 00 00
1A 13 80 00 00 04 00 00
8A 14 80 00 00 04 00 00
61 15 80 00 00 04 00 00
48 16 80 00 00 04 00 00
29 17 80 00 00 04 00 00
87 18 80 00 00 04 00 00
D2 19 80 00 00 04 00 00
C9 1A 80 00 00 04 00 00
CD 1B 80 00 00 04 00 00
E8 1C 80 00 00 04 00 00
17 1D 80 00 00 04 00 00
68 1E 80 00 00 04 00 00
BD 1F 80 00 00 04 00 00
4F 10 80 00 00 04 00 00
1C 11 80 00 00 04 00 00
57 12 80 00 00 04 00 00
1A 13 80 00 00 04 00 00
8A 14 80 00 00 04 00 00
61 15 80 00 00 04 00 00
48 16 80 00 00 04 00 00
29 17 80 00 00 04 00 00
87 18 80 00 00 04 00 00
D2 19 80 00 00 04 00 00
C9 1A 80 00 00 04 00 00
CD 1B 80 00 00 04 00 00
E8 1C 80 00 00 04 00 00
17 1D 80 00 00 04 00 00
CA 0E 80 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
43 24 80 00 00 04 00 00
A8 25 80 00 00 04 00 00
81 26 80 00 00 04 00 00
E0 27 80 00 00 04 00 00
4E 28 80 00 00 04 00 00
1B 29 80 00 00 04 00 00
00 2A 80 00 00 04 00 00
04 2B 80 00 00 04 00 00
21 2C 80 00 00 04 00 00
DE 2D 80 00 00 04 00 00
A1 2E 80 00 00 04 00 00
74 2F 80 00 00 04 00 00
86 20 80 00 00 04 00 00
D5 21 80 00 00 04 00 00
9E 22 80 00 00 04 00 00
D3 23 80 00 00 04 00 00
43 24 80 00 00 04 00 00
A8 25 80 00 00 04 00 00
81 26 80 00 00 04 00 00
E0 27 80 00 00 04 00 00
4E 28 80 00 00 04 00 00
1B 29 80 00 00 04 00 00
00 2A 80 00 00 04 00 00
04 2B 80 00 00 04 00 00
21 2C 80 00 00 04 00 00
DE 2D 80 00 00 04 00 00
A1 2E 80 00 00 04 00 00
74 2F 80 00 00 04 00 00
86 20 80 00 00 04 00 00
D5 21 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
C3 05 80 00 00 04 00 00
EA 06 80 00 00 04 00 00
8B 07 80 00 00 04 00 00
F3 48 80 00 00 04 00 00
A6 49 80 00 00 04 00 00
BD 4A 80 00 00 04 00 00
B9 4B 80 00 00 04 00 00
9C 4C 80 00 00 04 00 00
63 4D 80 00 00 04 00 00
1C 4E 80 00 00 04 00 00
C9 4F 80 00 00 04 00 00
3B 40 80 00 00 04 00 00
68 41 80 00 00 04 00 00
23 42 80 00 00 04 00 00
6E 43 80 00 00 04 00 00
FE 44 80 00 00 04 00 00
15 45 80 00 00 04 00 00
3C 46 80 00 00 04 00 00
5D 47 80 00 00 04 00 00
F3 48 80 00 00 04 00 00
A6 49 80 00 00 04 00 00
BD 4A 80 00 00 04 00 00
B9 4B 80 00 00 04 00 00
9C 4C 80 00 00 04 00 00
63 4D 80 00 00 04 00 00
1C 4E 80 00 00 04 00 00
C9 4F 80 00 00 04 00 00
3B 40 80 00 00 04 00 00
68 41 80 00 00 04 00 00
23 42 80 00 00 04 00 00
6E 43 80 00 00 04 00 00
FE 44 80 00 00 04 00 00
15 45 80 00 00 04 00 00
3C 46 80 00 00 04 00 00
5D 47 80 00 00 04 00 00
F3 48 80 00 00 04 00 00
A6 49 80 00 00 04 00 00
BD 4A 80 00 00 04 00 00
6F 0B 80 00 00 04 00 00
4A 0C 80 00 00 04 00 00
B5 0D 80 00 00 04 00 00
CA 0E 80 00 00 04 00 00
1F 0F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
3D 81 80 00 00 04 00 00
76 82 80 00 00 04 00 00
3B 83 80 00 00 04 00 00
AB 84 80 00 00 04 00 00
40 85 80 00 00 04 00 00
69 86 80 00 00 04 00 00
08 87 80 00 00 04 00 00
A6 88 80 00 00 04 00 00
F3 89 80 00 00 04 00 00
E8 8A 80 00 00 04 00 00
EC 8B 80 00 00 04 00 00
C9 8C 80 00 00 04 00 00
36 8D 80 00 00 04 00 00
49 8E 80 00 00 04 00 00
9C 8F 80 00 00 04 00 00
6E 80 80 00 00 04 00 00
3D 81 80 00 00 04 00 00
76 82 80 00 00 04 00 00
3B 83 80 00 00 04 00 00
AB 84 80 00 00 04 00 00
40 85 80 00 00 04 00 00
69 86 80 00 00 04 00 00
08 87 80 00 00 04 00 00
A6 88 80 00 00 04 00 00
F3 89 80 00 00 04 00 00
E8 8A 80 00 00 04 00 00
EC 8B 80 00 00 04 00 00
C9 8C 80 00 00 04 00 00
36 8D 80 00 00 04 00 00
49 8E 80 00 00 04 00 00
9C 8F 80 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
04 05 82 00 00 04 00 00
4B 06 84 00 00 04 00 00
2A 07 84 00 00 04 00 00
84 08 84 00 00 04 00 00
D1 09 84 00 00 04 00 00
CA 0A 84 00 00 04 00 00
CE 0B 84 00 00 04 00 00
EB 0C 84 00 00 04 00 00
14 0D 84 00 00 04 00 00
6B 0E 84 00 00 04 00 00
BE 0F 84 00 00 04 00 00
4C 00 84 00 00 04 00 00
1F 01 84 00 00 04 00 00
54 02 84 00 00 04 00 00
19 03 84 00 00 04 00 00
89 04 84 00 00 04 00 00
62 05 84 00 00 04 00 00
4B 06 84 00 00 04 00 00
2A 07 84 00 00 04 00 00
84 08 84 00 00 04 00 00
D1 09 84 00 00 04 00 00
CA 0A 84 00 00 04 00 00
CE 0B 84 00 00 04 00 00
EB 0C 84 00 00 04 00 00
14 0D 84 00 00 04 00 00
6B 0E 84 00 00 04 00 00
BE 0F 84 00 00 04 00 00
4C 00 84 00 00 04 00 00
1F 01 84 00 00 04 00 00
54 02 84 00 00 04 00 00
19 03 84 00 00 04 00 00
89 04 84 00 00 04 00 00
62 05 84 00 00 04 00 00
4B 06 84 00 00 04 00 00
2A 07 84 00 00 04 00 00
48 08 88 00 00 04 00 00
1D 09 88 00 00 04 00 00
06 0A 88 00 00 04 00 00
02 0B 88 00 00 04 00 00
27 0C 88 00 00 04 00 00
D8 0D 88 00 00 04 00 00
A7 0E 88 00 00 04 00 00
72 0F 88 00 00 04 00 00
80 00 88 00 00 04 00 00
D3 01 88 00 00 04 00 00
98 02 88 00 00 04 00 00
D5 03 88 00 00 04 00 00
45 04 88 00 00 04 00 00
AE 05 88 00 00 04 00 00
87 06 88 00 00 04 00 00
E6 07 88 00 00 04 00 00
48 08 88 00 00 04 00 00
1D 09 88 00 00 04 00 00
06 0A 88 00 00 04 00 00
CE 0B 84 00 00 04 00 00
EB 0C 84 00 00 04 00 00
72 0D 82 00 00 04 00 00
0D 0E 82 00 00 04 00 00
D8 0F 82 00 00 04 00 00
ED 00 80 00 00 04 00 00
BE 01 80 00 00 04 00 00
F5 02 80 00 00 04 00 00
B8 03 80 00 00 04 00 00
28 04 80 00 00 04 00 00
C3 05 80 00 00 04 00 00
EA 06 80 00 00 04 00 00
8B 07 80 00 00 04 00 00
Thanks!
If your goal is to send an arbitrary known code to the car, a simple way is to use a map to store all the valid 1st bytes, and send it accordingly.
If your goal is to utilize those other bits previously not used (~5 bytes of them), then unfortunately it is not possible from the data you provided. One reason is that there is no way for us to know the ordering of the ~40 currently unused bits even if we knew the algorithm used to generate the 1st byte.
The space of 1 byte values is small, only 256. For any code that you want to send, you could just try 256 times each with a different 1st byte. If any one does anything, then it's probably it. If none does, then maybe that code is invalid altogether?
I can say what it is not. The first byte is not a CRC, nor is it any linear combination of the provided remaining bits over GF(2). It may be some other function of the following bits/bytes.

Why isn't my pack() packing my data?

What I am trying to do is simple. Here below.
my #arr = split(/\s+/,"50 00 9F 11 00 28 82 48 21 84 BC 00 01 02 01 00 09 01 38 00 23 05 08 01 01 02 00 00 18 00 50 05 00 00 00 00 00 00 00 00 02 00 0C FE CE 00 0F 00 FD FF 2D 00 00 00 00 00 04 01 0C FE");
my #hexData;
my $i=0;
foreach my $elem(#arr){
$hexData[$i]=hex($elem);
$i++;
}
my $data= pack ('C', #hexData);
print $data;
And its not working :( Would you please help?
TLP's solution is quite right, but pack actually has the ability to deal with hex.
my $data = "50 00 9F 11 00 28 82 48 21 84 BC 00 01 02 01 00 09 01 38 00 23 05 08 01 01 02 00 00 18 00 50 05 00 00 00 00 00 00 00 00 02 00 0C FE CE 00 0F 00 FD FF 2D 00 00 00 00 00 04 01 0C FE";
$data =~ tr/ //d; # Remove the spaces
print pack "H*", $data;
does the whole thing without the intermediate array.
I'm not terribly familiar with the pack function, but it seems to me that your template expects only one value.
Perhaps you should try
my $data = pack ('C*', #hexData);
And while you are at it, upgrade your code to something more perlish:
my #arr = qw(50 00 9F 11 00 28 82 48 21 84 BC 00 01 02 01 00 09 01 38 00 23 05
08 01 01 02 00 00 18 00 50 05 00 00 00 00 00 00 00 00 02 00 0C FE
CE 00 0F 00 FD FF 2D 00 00 00 00 00 04 01 0C FE);
my #hexData;
foreach my $elem (#arr) {
push #hexData, hex($elem);
}
my $data = pack ('C*', #hexData);
print $data;
Or even:
my $data = pack("C*", map(hex, #arr));

How to convert/manipulate BINARY file to ASCII file?

I'm looking for a way to take the TEXT characters from a 4byte BINARY file to array or TEXT file,
Lets say my input file is:
00000000 2e 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 |................|
00000010 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 |................|
00000020 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000070 00 00 00 00 00 00 00 00 |........|
00000078
And my desired output is:
46,1,2,3,4,5,6,7,8,9,0,0...
The output can be a TEXT file or an array.
I notice that the pack/unpack functions may help here, but I couldn't figure how to use them properly,
An example would be nice.
Use unpack:
local $/;
#_=unpack("V*", <>);
gets you an array. So as an inefficient (don't try on huge files) example:
perl -e 'local$/;print join(",",map{sprintf("%d",$_)}unpack("V*",<>))' thebinaryfile
The answer is dependent on what you consider an ASCII character. Anything below 128 is technically an ASCII character, but I am assuming you mean characters you normally find in a text file. In that case, try this:
#!/usr/bin/perl
use strict;
use warnings;
use bytes;
$/ = \1024; #read 1k at a time
while (<>) {
for my $char (split //) {
my $ord = ord $char;
if ($char > 31 and $char < 127 or $char =~ /\r\n\t/) {
print "$ord,"
}
}
}
od -t d4 -v <filename>