Saturday, November 14, 2026

Debian 13: troubleshooting HP 415 inktank scanner on wifi

symptom: not scan full image

install wifi scanner

# apt install sane-airscan

check you are in group scan and print

$ groups
... scanner lp lpadmin 

scan your hp 415 inktank 

$ airscan-discover
[devices]
  HP Ink Tank Wireless 410 series [1BAF5D] = http://[2404:8000:1012:60ae::1]:8080/eSCL/, eSCL
  HP Ink Tank Wireless 410 series [1BAF5D] = https://[2404:8000:1012:60ae::1]:443/eSCL/, eSCL
  HP Ink Tank Wireless 410 series [1BAF5D] = http://192.168.18.201:8080/eSCL/, eSCL
  HP Ink Tank Wireless 410 series [1BAF5D] = https://192.168.18.201:443/eSCL/, eSCL
  HP Ink Tank Wireless 410 series [1BAF5D] = http://192.168.18.201:53048, WSD
  HP Ink Tank Wireless 410 series [1BAF5D] = http://[FE80::E270:EAFF:FE1B:AF5D%253]:53048, WSD

rerun your xsane and select "eSCL HP Ink Tank Wire ip=...."

Follow these to install hplip

  1. https://dedetoknotes.blogspot.com/2023/07/debian-bookworm-configure-printer-and.html
  2. https://dedetoknotes.blogspot.com/2021/07/debian-buster-install-all-in-one-hp-ink.html 

Friday, November 13, 2026

Java: using argon2 hash password in netbeans 31

JDK doesn't have argon2 library, we need external library e.g. de.mkammerer (using JNI) and pure java org.springframework.security (uses Bouncy Castle library).

Here is the way to use argon2 in netbeans maven project e.g project name testargon2 package com.dedetok.testargon2, main class TestArgon2.

edit your pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dedetok</groupId>
    <artifactId>TestArgon2</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>21</maven.compiler.release>
        <exec.mainClass>com.dedetok.testargon2.TestArgon2</exec.mainClass>
    </properties>
    
    <dependencies>
        <!-- Spring Security Crypto -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>6.2.8</version>
            <type>jar</type>
        </dependency>
        
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.3.5</version>
    </dependency>
    
    <!-- Bouncy Castle Argon2 provider -->
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>1.78.1</version>
    </dependency>
                
    </dependencies>
    
    <build>
        <plugins>

            <!-- Executable Fat JAR -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.6.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>
                                false
                            </createDependencyReducedPom>
                            <transformers>
                                <transformer implementation=
                                  "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>
                                        com.dedetok.testargon2.TestArgon2
                                    </mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
    
</project> 

Create class Argon2Util.java


package com.dedetok.testargon2;

import org.springframework.security.crypto.argon2.Argon2PasswordEncoder;

public final class Argon2Util {

    private static final Argon2PasswordEncoder ENCODER =
        new Argon2PasswordEncoder(
            16,       // Salt length
            32,       // Hash length
            1,        // Parallelism
            65536,    // Memory in KB
            3         // Iterations
        );

    private Argon2Util() {
    }

    public static String hash(String password) {
        return ENCODER.encode(password);
    }

    public static boolean verify(
            String password, String encodedPassword) {
        return ENCODER.matches(password, encodedPassword);
    }

    public static boolean needsRehash(String encodedPassword) {
        return ENCODER.upgradeEncoding(encodedPassword);
    }
}

Edit your main java i.e. TestArgon2

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 */

package com.dedetok.testargon2;

/**
 *
 * @author dedetok
 */
public class TestArgon2 {

    public static void main(String[] args) {
        String password = "Admin123!";

        // Generate Argon2id hash
        String hash = Argon2Util.hash(password);

        System.out.println("Password hash:");
        System.out.println(hash);

        // Verify correct password
        boolean valid = Argon2Util.verify(password, hash);

        System.out.println("Valid: " + valid);

        // Verify incorrect password
        boolean invalid = Argon2Util.verify(
            "WrongPassword", hash
        );

        System.out.println("Wrong password: " + invalid);

        // Check whether hash needs upgrading
        System.out.println(
            "Needs rehash: " +
            Argon2Util.needsRehash(hash)
        );
    }
}

Run it

Password hash:
$argon2id$v=19$m=65536,t=3,p=1$SKMWhg5HU4KdbuDFVpEezg$KNrdlqtz7AmAymyafWNvjZRaW3a3EwidxKb8C0WdE54
Valid: true
Wrong password: false
Needs rehash: false

the hash may different on your computer.

this code will uses 64MB of your ram to generate the password, this is general purpose and lighter argon configuratoin

    /*
    // uses 64MB Ram
    private static final Argon2PasswordEncoder ENCODER =
        new Argon2PasswordEncoder(
            16,       // Salt length
            32,       // Hash length
            1,        // Parallelism
            65536,    // Memory in KB
            3         // Iterations
        );
    */

    // uses 19MB
    private static final Argon2PasswordEncoder ENCODER =
    new Argon2PasswordEncoder(
        16,       // Salt: 16 bytes
        32,       // Hash: 32 bytes
        1,        // Parallelism
        19456,    // Memory: 19 MiB
        3         // Iterations
    );

You can adjust to balance security and hardware load.


Monday, November 9, 2026

Laptop board manufacture and name

From Debian 13 output

# cat /sys/devices/virtual/dmi/id/board_name
AKN79C-140P-IMR
# cat /sys/devices/virtual/dmi/id/board_vendor
SU
 

No Type Board Manufacture Board Type
1 Lenovo IdeaPad Gaming 3 15ARH7 LENOVO LNVNB161216
2 Advan Workplus AI Heritage (Model: L26B-R72S1) SU AKN79C-140P-IMR

Know your laptop hardware (advan heritage ai 7 255)

To find out manufacture model of your main board

windows PowerShell

C:\windows\system32> Get-CimInstance Win32_BaseBoard | Format-List Manufacturer, Product, Version


Manufacturer : SU
Product      : AKN79C-140P-IMR
Version      : Version 1.0

Debian

# cat /sys/devices/virtual/dmi/id/board_name
AKN79C-140P-IMR
# cat /sys/devices/virtual/dmi/id/board_vendor
SU

SU stands for Sixunited (Shanghai Sixunited Intelligent Technology Co.

To find out NVME model

Debian

# apt install nvme-cli
...
# nvme id-ctrl /dev/nvme0 | grep -E 'mn|fr'
mn        : HS-SSD-WAVE(P) 256G                     
fr        : SN17027 
frmw      : 0x1a
mntmt     : 373
mnan      : 0
mnsudmq   : 0

It is Hiksemi wave(p) 256GB, safe running temperature 70°C. NVMe SSD already has APST enabled and is configured to use its deepest power-saving state, PS4.

 

Saturday, November 7, 2026

Debian 13: installing mobile verification toolkit to trace pegasus malware for android devices

Mobile Verification Toolkit (MVT) is a tool to facilitate the consensual forensic analysis of Android and iOS devices, for the purpose of identifying traces of compromise. The Mobile Verification Toolkit (MVT) was developed by the Amnesty International Security Lab. Note: mvt is not removal tools.

Here are common known spyware can be trace by MVT:

  1. Pegasus: NSO Group spyware targeting iOS and Android
  2. Predator: Commercial spyware associated with Intellexa
  3. Reign: Sophisticated spyware associated with QuaDream
  4. Hermit: Commercial spyware associated with RCS Lab
  5. KingsPawn: Spyware associated with QuaDream investigations
  6. FinSpy / FinFisher: Commercial surveillance software
  7. DarkCaracal: Mobile surveillance campaign targeting Android devices

Install python 

# apt install python3 python3-venv sqlite3 libusb-1.0-0 libimobiledevice-utils usbmuxd pipx

Install adb for android

# apt install -y android-sdk-platform-tools android-sdk-platform-tools-common

Create virtual python 

$ pipx ensurepath
Success! Added /[home_user]/.local/bin to the PATH environment variable.

Consider adding shell completions for pipx. Run 'pipx completions' for
instructions.

You will need to open a new terminal or re-login for the PATH changes to take
effect. Alternatively, you can source your shell's config file with e.g.
'source ~/.bashrc'.

Otherwise pipx is ready to go!

Install mvt

$ pipx install mvt
  installed package mvt 2026.11.2, installed using Python 3.13.5
  These apps are now globally available
    - mvt
    - mvt-android
    - mvt-ios
⚠️  Note: '/[home_user]/.local/bin' is not on your PATH environment
    variable. These apps will not be globally accessible until your PATH is
    updated. Run `pipx ensurepath` to automatically add it, or manually modify
    your PATH in your shell's config file (e.g. ~/.bashrc).
done!
$ ls ./.local/bin/
mvt  mvt-android  mvt-ios

To update mvt

$ pip3 install --upgrade mvt

Add virtual python binary 

$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$ mvt version


        MVT - Mobile Verification Toolkit

        https://mvt.re
        Version: 2026.11.2

        You have not yet downloaded any indicators, check the `download-iocs` 
command!

Download / Update spyware indicators

$ mvt download-iocs


        MVT - Mobile Verification Toolkit

        https://mvt.re
        Version: 2026.11.2

        You have not yet downloaded any indicators, check the `download-iocs` 
command!


               [mvt.common.updates] Downloaded indicators "NSO Group Pegasus 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_AmnestyTec
h_investigations_master_2021-07-18_nso_pegasus.stix2
               [mvt.common.updates] Downloaded indicators "Predator Spyware 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_intellexa_predator_predator.stix2
               [mvt.common.updates] Downloaded indicators "RCS Lab Spyware 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2022-06-23_rcs_lab_rcs.stix2
               [mvt.common.updates] Downloaded indicators "Stalkerware 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_AssoEchap_
stalkerware-indicators_master_generated_stalkerware.stix2
               [mvt.common.updates] Downloaded indicators "Surveillance campaign
linked to mercenary spyware company" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_AmnestyTec
h_investigations_master_2023-03-29_android_campaign_malware.stix2
               [mvt.common.updates] Downloaded indicators "Quadream KingSpawn 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2023-04-11_quadream_kingspawn.stix2
               [mvt.common.updates] Downloaded indicators "Operation 
Triangulation Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2023-06_01_operation_triangulation_operation_triangulation
.stix2
               [mvt.common.updates] Downloaded indicators "WyrmSpy and DragonEgg
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2023-07-25_wyrmspy_dragonegg_wyrmspy_dragonegg.stix2
               [mvt.common.updates] Downloaded indicators "Wintego Helios 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_AmnestyTec
h_investigations_master_2024-05-02_wintego_helios_wintego_helios.stix2
               [mvt.common.updates] Downloaded indicators "NoviSpy (Serbia) 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_AmnestyTec
h_investigations_master_2024-12-16_serbia_novispy_novispy.stix2
               [mvt.common.updates] Downloaded indicators "EagleMsgSpy 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2024-12-25_eaglemsgspy_eaglemsgspy.stix2
               [mvt.common.updates] Downloaded indicators "Candiru 
(DevilsTongue) Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_candiru_candiru.stix2
               [mvt.common.updates] Downloaded indicators "ResidentBat 
Indicators of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_ResidentBat_residentbat.stix2
               [mvt.common.updates] Downloaded indicators "Cellebrite Indicators
of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_cellebrite_cellebrite.stix2
               [mvt.common.updates] Downloaded indicators "DarkSword Indicators 
of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2026-03-30_darksword_darksword.stix2
               [mvt.common.updates] Downloaded indicators "Coruna Indicators of 
Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2026-03-03_coruna_cryptowaters_coruna.stix2
               [mvt.common.updates] Downloaded indicators "Morpheus Indicators 
of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2026-04-23_ips_morpheus_morpheus.stix2
               [mvt.common.updates] Downloaded indicators "BTMOB Indicators of 
Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2026-05-26_btmob_btmob.stix2
               [mvt.common.updates] Downloaded indicators "Spyrtacus Indicators 
of Compromise" to 
/[home_user]/.local/share/mvt/indicators/raw.githubusercontent.com_mvt-projec
t_mvt-indicators_main_2026-04-09_sio_spyrtacus_spyrtacus.stix2
$ mvt version
        MVT - Mobile Verification Toolkit

        https://mvt.re
        Version: 2026.11.2

        Indicators updates checked recently, next automatic check in 12 hours

MVT installation done.

NOTE: steps below does not tested, and may different output depends on your android phone. 

You MUST enable developer option and debug on your Android phone.  Connect your android phone using usb cable.

create directory for forensic

$ mkdir -p ~/forensics/{evidence/android,working/android,reports/android}

Pull your data from android phone

$ adb bugreport ~/forensics/evidence/android/bugreport.zip

Scan your data to find evidence of spying malware 

$ mvt-android check-bugreport -o ~/forensics/reports/android/ ~/forensics/evidence/android/bugreport.zip

Find out the result on folder ~/forensics/reports/android/