Tuesday, January 17, 2023

How to Reset the Administrator Password on a Canon ScanFront 220/220P Scanner

My system is ScanFront 220 and I was able to reset the admin password by renaming the user.hv and system.hv files

ScanFront 220 has Windows CE on it

This solution works with me creating a bootable LIVE DOS USB drive




How to Reset the Administrator Password on a Canon ScanFront 220P Scanner

The Canon imageFormula ScanFront 220P machine is a network scanner that scans boths sides of a page in colour or black/white, scans to PDF, various image formats and will even make a passable attempt at OCR and embed the results in the PDF it generates. It will write the scanned documents to a USB drive, an FTP server or send them via email. It's a very quirky little machine, but by and large it does a reasonable job.

A key quirk is that it's fussy about a lot of config options and, in particular, it is pretty restrictive about what it will accept as a password. No long passwords or 'funny' characters please. This caught me out big time. I changed the password to something that both I, and my fingers, promptly forgot. I didn't put it on the list I keep under my mousepad (that's a joke, Joyce), and try as I might, I couldn't get back in to change settings on the scanner.

(Oh, and because I know you're dying to know. That little recessed 'Reset' button that's just beside the keyboard and mouse ports. That doesn't do anything at all. Well, nothing I could find anyway. Certainly nothing useful.)

So I called Canon. That's what you do, right? Call the manufacturer. Well, that's an hour of my life I'll never get back. The folks at Canon Australia offered me a two step process: (1) Try these canned 'default' passwords we prepared earlier. If those don't work (2) call a service tech out to 'fix' it. Beg, plead, escalate all you like, Canon WILL NOT tell you how to perform a simple password reset on one of these machines. The guy I spoke to from Canon Australia did his best, and I could tell he was frustrated at what he was required to tell me, but I could also see that his hands were well and truly tied by his employer.

A little later on I figured out WHY Canon won't tell you how to reset the password. It's because it's not a simple job. (OK, it isn't that complicated, but it's not the sort of thing the help desk call centre at a major electronics manufacturer will tell random punters over the phone.)

Now, if there's one way to get me to solve a problem, it's to tell me I can't do it. Canon told me I couldn't reset the admin password on my scanner... so I did! And this is my story...

It's just a little PC

I'd figured out reasonably conclusively at some point in the past that this was a Windows CE box ("Wince", never a more appropriate name was chosen, huh?!). At the time, that raised my contempt for the device a bit, but I just filed the knowledge away, not having any real use for it at the time.

I did find it interesting that I could plug a common-or-garden USB keyboard and mouse into this thing (in hindsight, the PS/2 keyboard and mouse ports should have told me something) and operate it with them rather than via the touch screen.

The real breakthrough came when, out of sheer frustration right after the telephone call with Canon, I was banging away at the keyboard whilst powering the scanner up and down. Guess what happened when I banged away on the DEL key whilst it was booting? It threw me to an ordinary Phoenix AwardBIOS screen, just like the one you'd expect to see with any generic personal computer!

You can see where I'm going with this, can't you...

Digging Around

So, I fiddled with boot settings. Told the scanner to boot DOS off of a USB stick I had laying around already. Found that it has a single 128Mb flash disk in it, formatted with a single FAT16 partition, and that there's a very minimalist, but recognizable, DOS/Windows style system on that disk.

I dug through the obvious-looking suspects on the filesystem. Found no obvious things to change. Brought out the big guns.

OK, the small guns. The damn small guns. I installed Damn Small Linux (DSL) on another USB flash drive, and booted that. NOW we're cookin' with gas! Used dd to dump an image of the filesystem. Took that image elsewhere. Parsed, grep'ed, hex-edited, you name it. Didn't make a whole lot of headway. (It's a Wince system, what did you expect?). Found that there's two specific config files, WinCE has much the same concept of a registry 'hive' as does all of the other recent versions of windows. Found a tool to dump those and drew yet another blank.

Then, when reading through various Microsoft documentation on WinCE I stumbled across a rather tasty little tid-bit of information. If you delete the system and user 'hives' from a WinCE system, the next time the system boots it will regenerate them from the defaults stored elsewhere in 'ROM' (in the case of this device, on flash). Having already made dumps of the whole flash disk and the main partition, I had nothing to lose. So I mounted the filesystem, deleted the hives, rebooted the scanner and... it worked. It took a little longer to boot than usual, then it took me through the first-time calibration and setup process.

OK, so technically I didn't reset the admin password, I reset the whole box. But at least I got control of the box.

So here's how to do it yourself...

HOWTO: Reverting a Scanfront 220P to ex-Factory State

Stage 1: Make a Bootable USB Key with Linux Installed

There are lots of ways to do this. I happen to have a Windows box on this particular desktop (I have Gentoo servers everywhere, and OS X laptops, but this box is Windows, sigh!) A nice, quick and easy way to do this with Windows is to grab the Universal USB Installer from PenDriveLinux and follow the bouncing ball. I knew exactly what I wanted, and so a nice small Linux system with just the basics was all I needed. Damn Small Linux was the obvious choice, and so DSL 4.4.9 (current at the time) is what I chose. Universal USB Installer helped me download the right image, and installed it on a USB key for me in a couple of minutes. As easy as cake!

Any other Linux ought to work well enough, I chose DSL purely because it was small and I could download it quickly.

Stage 2: Boot the Scanner into Linux

Turn the scanner off. Plug a USB keyboard into the top USB port and the USB flash drive with Linux installed in the bottom port(I found that the box is fussy about detection and boot order. The keyboard didn't come up reliably for me unless the keyboard was in the top port and the USB flash drive was in the bottom port). Turn the scanner on, and go hell-for-leather on the DEL key on the keyboard, just like you would when booting any recalcitrant desktop PC! When it loads the BIOS menu, go to the 'Advanced BIOS Features' menu, and change 'First Boot Device' to 'USB-HDD'. Save and Exit, and let the scanner reboot again.

If all goes according to plan, you'll get a nice Damn Small Linux splash screen, and the standard boot prompt at the bottom of the screen. You'll need to move a little bit quickly, at least press something on the keyboard before the boot prompt times out and it boots to default. I didn't try booting X Windows on this scanner (though it might work), I just wanted a command line. To achieve that, type

dsl 2

and hit enter. NOTE: this will work if you use Damn Small Linux. Other Linuces will require a different boot command. Gentoo, for example, will expect you to type "boot 2", Knoppix will expect "knoppix 2". If you're not using DSL you'll need to RTFM, or at least check the boot examples (try hitting F2 and F3) to see what your choice of linux expects.

... and it begins to boot. It has a disconcertingly long pause at first while it loads the kernel. Remember, you're working with relatively slow embedded hardware here. A Core 2 Duo it ain't, so things take a little time to happen.

There's something kinda nice about seeing a previously locked up box with a single penguin in the top-left of the display! It made me giggle. After a bit of giggling, you'll see the box work through a pretty standard Linux boot process, detecting hardware, loading drivers. Mine even discovered the network interface, launched DHCPcd and helped itself to an IP address (and yes, DSL does include sshd and you can ssh into this scanner while it's running Linux)!

And then you have a command prompt.

Stage 2a: If the Scanner doesn't boot into Linux

I've received some feedback from others who have used these instructions, and tried it a few more times myself. We have, collectively, learned that the scanners can sometimes be a bit fussy about USB flash drives; some will work and some won't. I did the original hack using a 4Gb 'Transcend' branded flash drive. I tried it later with a 16Gb version of the same key and the scanner refused to boot from it. Also, on one attempt, I had to switch the keyboard and flash drive between USB ports for the initial boot to change the boot device, then back later to do the hack. In short, if at first you don't succeed, experiment!

Transcend USB Flash drives

Stage 3: At the Command Prompt

Actually, there's two stage 3's. The conservative 'make a backup' stage, and the not-so-conservative 'hop in and hack' stage. I'll show you both...

Stage 3a: Make a Backup

Hopefully the USB flash drive you chose to boot linux has a bit of free space on it after linux is installed. I used a 2Gb drive with DSL, and I had plenty of space left over. Now, when working with disks, pretty much the safest type of backup you can make is a direct bit-for-bit dump of everything on the disk. Linux (and all unixes) provide a command called 'dd' (Disk Dump). It's safe because it's an absolute no brainer. It just takes all the ones and zeroes, in order, and writes them to wherever you tell it to.

My digging around told me that my scanner's internal flash 'disk' was presented by BIOS as the first IDE disk. In unix terms, that's at device node /dev/hda . The disk in my scanner had a single FAT16 partition on that disk, called /dev/hda1

To back it up, just tell dd to dump it. I saved my backups to the /cdrom partition that DSL mounted when it booted (that's actually a writable partition on the USB flash drive). So, a command like this

dd if=/dev/hda of=/cdrom/scanfront-220p-hda.dd bs=512

tells dd to do a bit-for-bit dump of the device at /dev/hda into a file called /cdrom/scanfront-220p-hda.dd, 512 bytes at a time. If you want to be double-careful, or you just want a raw dump of the partition to loopback mount and dig around in later, also dump the hda1 partition

dd if=/dev/hda1 of=/cdrom/scanfront-220p-hda1.dd bs=512

That takes care of the backups. Do it, it's good insurance. It saved my butt!

Stage 3b: Hop in and Hack

Now, all that's left to be done is to remove the two 'hive' files and reboot the scanner. NOTE: this isn't a password reset, this is a complete factory reset. ALL of your settings will be deleted if you do this. It's lucky you made that backup of the settings back when you remembered the password, isn't it!

This is simple enough. Mount the hda1 filesystem on the scanner's internal flash drive. Remove two files. Reboot. You're done. Here are the steps:

Mount the hda1 partition

mount /mnt/hda1

(This works because DSL parses the partition tables on all disks present at boot time, and writes appropriate entries in /etc/fstab and creates mount points in /mnt .) If that doesn't work for you, try:

mkdir /mnt/hda1
mount -t vfat /dev/hda1 /mnt/hda1

Once it's mounted, just change into the DOS partition, and hunt down the files we need to remove.

First, get the 'system' hive...

cd /mnt/hda1/Documents\ and\ Settings/
ls

You'll see a few files sitting there, including 'system.hv'. That's the system hive, the system part of the WinCE registry

If you're feeling brave, type

rm system.hv

and answer yes to the "Are you sure" question. If you're feeling conservative, just rename it so you can put it back later if you think you need to

mv system.hv system.hv.old

Either approach will have the same effect on the booting system. Factory reset. Now, do the same for the user hive, user.hv

cd /mnt/hda1/Documents\ and\ Settings/Default
ls

You'll see user.hv sitting there, quivering by now. Again, either delete it..

rm user.hv

(and answer Yes), or rename it

mv user.hv user.hv.old

I don't know that DOS filesystems really care, but properly unmounting things is good practice. Move out of the filesystem, then unmount the DOS filesystem

cd /
umount /mnt/hda1

And you're done. Just shut down the DSL Linux (don't just power it off, you want to ensure the USB flash is unmounted properly to preserve the backups you just made)

shutdown -h now

and wait. When you get the 'DSL Halted' message (or equivalent "I'm done!" message), remove the USB flash drive, and power the scanner off by holding the power button down for five-ish seconds.

Stage 4: Booting back into WinCE/Scanner OS

This part is easy enough. Just don't forget to go back into BIOS and change the 'First Boot Device' back to HDD-0. If you don't do that, you'll scratch your head for hours wondering why, when you did everything right, the silly machine just won't boot. You'll wonder what could possibly have gone wrong (dd is foolproof, right?) and you'll wonder how you're going to explain to your boss that you just bricked a $2500 scanner. Then you'll feel like a right goose when you realise what you've done.

So don't forget to change the first boot device back like I did, OK! :-)

Once you've done that, Save and Exit, let the scanner reboot, and enjoy your factory fresh scanner!

If You REALLY Messed It Up

I kept copies of my own backups. They might work on your machine. Ask me, I'll help if I can.

Hardware Details: Canon ScanFront 220P

Because I found the hardware in this scanner rather interesting, I guess that other geeks might also find it worth a look. So while I had it booted with Linux, I gathered up some hardware specs. They pretty much speak for themselves, but I'll say it anyway. This is a reasonably serviceable PC-like device with a flat panel touchscreen display, 128Mb of flash on-board in presented as a generic IDE drive. It has PS/2 keyboard and mouse ports, two USB ports, a 10/100 ethernet interface two (one top, one bottom) kick ass scanners built in, a nice quick sheet feeder, the ability to detect misfed sheets AND a fingerprint scanner. Someone's gotta have some nice ideas about what to do with a bit of kit like this!

So, without further ado, some info about hardware. res ipsa loquitur

/proc/cpuinfo

processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 10
model name	: Geode(TM) Integrated Processor by AMD PCS
stepping	: 2
cpu MHz		: 498.061
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu de pse tsc msr cx8 sep pge cmov clflush mmx mmxext 3dnowext 3dnow
bogomips	: 992.87

/proc/meminfo

        total:    used:    free:  shared: buffers:  cached:
Mem:  519118848 150822912 368295936        0  3776512 52633600
Swap:        0        0        0
MemTotal:       506952 kB
MemFree:        359664 kB
MemShared:           0 kB
Buffers:          3688 kB
Cached:          51400 kB
SwapCached:          0 kB
Active:          19776 kB
Inactive:        35320 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       506952 kB
LowFree:        359664 kB
SwapTotal:           0 kB
SwapFree:            0 kB

output from lspci -v

 

00:01.0 Host bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] Host Bridge (rev 31)
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] Host Bridge
	Flags: bus master, 66MHz, medium devsel, latency 248
	I/O ports at ac1c [size=4]

00:01.1 VGA compatible controller: Advanced Micro Devices [AMD] Geode LX Video (prog-if 00 [VGA controller])
	Subsystem: Advanced Micro Devices [AMD] Geode LX Video
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 10
	Memory at ee000000 (32-bit, non-prefetchable) [size=16M]
	Memory at efff0000 (32-bit, non-prefetchable) [size=16K]
	Memory at effec000 (32-bit, non-prefetchable) [size=16K]
	Memory at effe8000 (32-bit, non-prefetchable) [size=16K]
	Memory at efff8000 (32-bit, non-prefetchable) [size=16K]

00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block
	Subsystem: Advanced Micro Devices [AMD] Geode LX AES Security Block
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 10
	Memory at efff4000 (32-bit, non-prefetchable) [size=16K]

00:0d.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
	Subsystem: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
	Flags: bus master, medium devsel, latency 64, IRQ 11
	I/O ports at fc00 [size=256]
	Memory at effff000 (32-bit, non-prefetchable) [size=4K]
	Expansion ROM at  [disabled] [size=64K]
	Capabilities: [40] Power Management version 2
	Kernel modules: natsemi

00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03)
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA
	Flags: 66MHz, medium devsel
	I/O ports at 6000 [size=8]
	I/O ports at 6100 [size=256]
	I/O ports at 6200 [size=64]
	I/O ports at 1000 [size=32]
	I/O ports at 9d00 [size=128]
	I/O ports at 9c00 [size=64]

00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01) (prog-if 80 [Master])
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE
	Flags: bus master, 66MHz, medium devsel, latency 248
	I/O ports at ff00 [size=16]

00:0f.3 Multimedia audio controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio (rev 01)
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] Audio
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 11
	I/O ports at fe00 [size=128]

00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02) (prog-if 10 [OHCI])
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 11
	Memory at efffe000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [40] Power Management version 2
	Kernel modules: usb-ohci

00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02) (prog-if 20 [EHCI])
	Subsystem: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 11
	Memory at efffd000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [40] Power Management version 2
	Kernel modules: ehci-hcd

Output from lspci -v (note that the Dell Keyboard, Dell Keyboard Hub and the USB flash drive listed here are the devices I had plugged in to the scanner at the time)

Bus 002 Device 001: ID 0000:0000  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0000 
  idProduct          0x0000 
  bcdDevice            0.00
  iManufacturer           0 
  iProduct                2 USB OHCI Root Hub
  iSerial                 1 e0332000
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x40
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize          2
        bInterval             255
  Language IDs: (length=4)
     0000 (null)((null))

Bus 002 Device 002: ID 413c:1003 Dell Computer Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x413c Dell Computer Corp.
  idProduct          0x1003 
  bcdDevice            2.00
  iManufacturer           1 Dell
  iProduct                2 Dell USB Keyboard Hub
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          2
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              2 Dell USB Keyboard Hub
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize          1
        bInterval              24
  Language IDs: (length=4)
     0409 English(US)

Bus 002 Device 003: ID 413c:2010 Dell Computer Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 Interface
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x413c Dell Computer Corp.
  idProduct          0x2010 
  bcdDevice            2.00
  iManufacturer           1 Dell
  iProduct                3 Dell USB Keyboard
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          3
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower               50mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              3 Dell USB Keyboard
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
cannot get report descriptor
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize          8
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              3 Dell USB Keyboard
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     142
cannot get report descriptor
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize          4
        bInterval             255
  Language IDs: (length=4)
     0409 English(US)

Bus 001 Device 001: ID 0000:0000  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 
  bDeviceProtocol         1 
  bMaxPacketSize0         8
  idVendor           0x0000 
  idProduct          0x0000 
  bcdDevice            2.04
  iManufacturer           3 Linux 2.4.31 ehci_hcd
  iProduct                2 PCI device 1022:2095 (Advanced Micro Devices [AMD])
  iSerial                 1 00:0f.5
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x40
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize          2
        bInterval              12
  Language IDs: (length=4)
     0000 (null)((null))

Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 Interface
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x058f Alcor Micro Corp.
  idProduct          0x6387 
  bcdDevice            1.42
  iManufacturer           1 JetFlash
  iProduct                2 Mass Storage Device
  iSerial                 3 4WX83IYU
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               0
  Language IDs: (length=4)
     0409 English(US)


The original post is from 

https://web.archive.org/web/20190913190200/http://www.geoffbreach.com/hacks/scanfront

and you can find it here as well
http://www.geoffbreach.com/hacks/scanfront

Also, Points to the answer above

https://www.alexbilz.com/post/2020-06-01-repair_canon_scanfront_220p/

Friday, October 30, 2020

كل ‏ما ‏تحتاجه ‏للنجاح ‏فى ‏الحياة ‏وبسرعة ‏. ‏. ‏

🕋 فــوائــد ممـا قــرأت 🕋

🔲وقـــفة..
📘الإنسان بطبعه مُترقب وعجول، مَلول لا يحتمل الانتظار.. لذا أشقّ ما يشقّ عليه -بفطرته- همّ مُستقبل أمره، وكُل ما يأمُل قدومه وحصوله، سواءً من رزق، أو تبدل حال، أو حصاد سعي فتجدّ بين الناس من أرهقه هذا الترقب وضعف فركن، ومن استعجل فاستبق الأحداث وسخط لتأخرها!

‏والسرّ كل السرّ بالرضا، كُلما رضيّ الإنسان كلما هان عليه الكثير، وطابت له الأحوال وأبهجه دقيق النِعم قبل جليلها..
‏ويكفي وعد الصادق المصدوق ﷺ 
‏"من رضي فله الرضى"..
‏يقينًا منه بأن له ربّ لايضل ولاينسى، وأن الخير فيما اختارهُ، متى اختارهُ، وكيفما اختارهُ سبحانه.


📚ومضة ...
الإسلام لا يريد أن تُبنى البيوت على العواطف، لأن العواطف مُتبدّلة..
النصيحة: أن تتزوج زواجًا صحيحًا،  فليست كل البيوت تُبنى على الحُبّ!

Thursday, January 2, 2020

مجموعة حلقات الكرتون النافع للاطفال


امهات وآباء كتيير بيقولوا إن أبنائهم بيحبوا الكرتون جدا ويبيتفرجوا علي كرتون غير نافع 
علشان كدا النهارده جمعنلكو أكثر من 100 ساعة من الكرتون النافع المفيد من جهة المعلومات الشرعية واللغة العربية والأخلاق والمهارات وتنمية المواهب ومع ذلك مُشوِّق وهي مفيدة بشكل خاص للي مقيمين في بلاد غير عربية ، لأنها هتسهّل عليهم تعليم أبنائهم اللغة العربية بشكل قصصي تطبيقي 
دي حلقات كرتون نافعة للأطفال ومُسليَّة ولها جانب علمي وشرعي وأخلاقي ولُغوي غير مباشر يتعلم منه الطفل أو الكبير 
وكلها باللغة الفُصحى السهلة 

1- أحكام القرآن حلقات كثيرة  (بيتكلم عن أهم أحكام القرآن وأخلاقه بأسلوب قصصي ممتاز) 



2- سارة وسعود حلقات كثيرة (تفسير قصار السور والحديث عن أشهر معنى في السورة من خلال قصة تطبيقية مُختصرة )

3- فوانيس رمضان  30 حلقة ( كرتون متميز جدا في الكلام عن أخلاق الإسلام من خلال قصة مُشوقة 
ودي أجمل حلقة رائعة في التركيز على الهدف والعزم عليه 

4- كليلة ودمنة 
أقوى كرتون لإسماع الأطفال اللغةَ الفُصحى المُتقَنَة، وجمال الألفاظ، وجودة التعبير عن المعنى، وبراعة مخارج الحروف
من خلال قصة فيها فوائد تربوية كثيرة، وتنمية ُ مهارات عقلية 
فيلم (كليلة ودِمنة)
(في الكرتون موسيقى قليلة )

5- الملك (قصة جميلة وفيها مغامرات وفكاهة وقصة شخص عنده هدف وإرادة وأخلاق ، وهي مروية في الإسرائليات كقصة دارت بين طالوت والنبي داوود، لكنهم هنا لم يذكروا أنها لهما بل قصة لأشخاص آخرين)

6-فارس الأندلس (قصة فارس أندلسي مجاهد في أواخر عهد ملوك الطوائف، فيها مغامرات وأخلاق وإرادة)



7-فتح القسطنطينية (قصة فتح القسطنطينية مع قصة محمد الفاتح وتخطيطه للفتح ، فيها مغامرات مشوقة، والأخلاق والإرادة والذكاء والتعاون والتكامل بين الكفاءات المسلمة)


8- فتح الأندلس (قصة فتح المسلمين للأندلس وطارق بن زياد وموسى بن نُصير ومجاهدين آخرين ، مشوقة جدا ويتخللها قصص جانبية فيها ذكاء وأخلاق وإرادة



9- قصص الحيوان في القرآن  30 حلقة (رائع ومفيد في تفسير الآيات التي ذُكر فيها حيوانات في القرآن مع فوائد كثيرة ، مُسلّي جدا ) (فيه موسيقى )



10-قصص الإنسان في القرآن 30 حلقة (عمّن ذُكروا في القرآن من أهل الخير أو الشر وتأمل قصصهم والانتفاع منها ، فيها تشويق وفكاهة وأخلاق ) مفيدة جدا جدا ، (بها موسيقي)



11- قصص النساء في القرآن  30 حلقة (عن النساء اللاتي ذُكرن في القرآن من الصالحات والفاسدات وتأمُّل قصصهم والانتفاع بها ) مع فكاهة وذكاء وأخلاق ،أيضا لم أجد منها نسخة بدون إيقاع
هذه أجمل حلقات فيها 


12- قصص عجائب القرآن 30 حلقة  ( قصص منتقاة من القرآن لصالحين وفاسدين وأقوام فُتنوا  بانواع من الفتن لم يصبروا أو لم يشكروا ، مفيدة جدا جدا ومُشوقة ومُسليّة
لم أجد منها نسخة بدون إيقاع

ودي أجمل قصة فيها ((قصة برصيصا )) تُحفة ينتفعُ بها الكبير قبل الصغير ، كيف يتحول الإنسان من عابد لله إلى عابد للشيطان ، كيف يدخل الشيطان إلى قلب العبد ويُغريه ويأخذه خطوةً خطوة ..وهذا مهم لإيصال فكرة إلى ولدك: ابتعد عن الخطوة الأولى

13- قصص الآيات من القرآن 30 حلقة 
آياتٌ مختارة من القرآن وتفسيرها من خلال قصة مشوقة ومفيدة يظهر من خلالها معنى الآية 
لم أجد منها نسخة بدون إيقاع 
دي حلقة منها ((النجاشي))



14-حكايات باح يا باح 
مجموعة حكايات جميلة ومُسلية فيها قِيَم وأخلاق وفكاهة 



15- أسد عين جالوت 
قصة معركة عين جالوت


16- قصة الأمير النبيل (عن رواية لِص بغداد ) مشوقة جدا ، بس فيها شوية خيال




Saturday, December 28, 2019

االجلطة الدماغية و اسعافها

الجلطة الدماغية"
معلومه غاية في الاهمية وناجحة 100% للجلطه الدماغية ، إذا صادف أن واجهتم حالة شخص أصيب بجلطة دماغية ، لا تبقوا مكتوفي الأيدي فأنتم تستطيعون إنقاذ حياته .
هذه التقنية التي يقدمها لنا بروفسور صيني ، والتي يجب أن يتشاركها كل الناس ، ترتكز على وخز إصبع الضحية بإبرة بسيطة كان يكون ابرة جهاز فحص السكر
كلنا معرضون للإصابة بجلطة دماغية مفاجئة قد تكلف الشخص حياته ، ولكن حيلة عبقرية وسهلة جداً نقدمها لكم الان تسمح بإنقاذ الحياة من الموت الفجائي .
هذه الحيلة تمثل الخطوة الأولى في الإسعاف الأولي الذي يجب أن تطبقوها على ضحية الجلطة ، حتى ولو كنتم لا تملكون أي شهادة في الطب :
أولاً / يجب أن تحافظوا على هدوئكم ولا تفكروا بهز المريض أو تحريكه ، خوفاً من تتسببوا له بنزيف دماغي داخلي .
ثانيا / استعمال ابرة جهاز فحص السكر أمر مثالي ، ولكن في حال عدم توفرها ، من الممكن أن تستخدموا إبرة خياطة ولتعقيم هذه الإبرة ، عرّضوها للحرارة إما على شمعة وإما على ولاعة .
يجب بعدها أن تقوموا بوخز رؤوس الأصابع العشرة بهذه الإبرة المعقمة (لاتنسوا وخز اصابع اليد العشرة (هذا الوخز يجب أن يتم على بعد بضعة ملليمترات من الاظافر لكي يسيل الدم قطرات) إذا لم يسل الدم نقطة نقطة ، اضغطوا بلطف ليستطيع أن يسيل ببطء ويسمح للدم في الداخل بأن يتحرك . وإذا لاحظتم تشوهاً في شكل فم الضحية ، قوموا بتدليك الأذنين حتى يبلغهما الدم .
ينصح أيضاً بوخز شحمة الأذن بهذه الإبرة حتى تشاهدوا سيلان قطرتين من الدم .
بعدها فوراً ، سيستعيد المريض وعيه وسيعود شكل فمه إلى طبيعته .
يجب أن يذهب المريض بعدها إلى المستشفى حتى تستقر حالته .
هذه الطريقة الصينية تنجح بنسبة 100 % في حالة حدوث جلطة دماغية وننصح بقوة باستعمالها حتى ننقذ ضحايا الجلطات من تلف الأعضاء وحتى من الموت المفاجئ . ندعوا لكم بالصحة والعافية
"إليكم الأعراض" 
أعراض الجلطة الدماغيّة : فقدان القُدرة على النُطق أو التّثاقل في الكلام ، وعدم المقدرة على الفهم والاستيعاب . خدران أو شلل في جانب واحد من الجسم ، وقد يُصيب الوجه أو أحد الذّراعين أو السّاقيين . هبوط أحد الذّراعين عند محاولة رفعهما معاً فوق الرّأس.  ارتخاء في جانب واحد من الفم عند التبسّم . فقدان القُدرة على المشي ، والإحساس الدّائم بفقدان التّوازن . فقدان أو ضعف البصر في إحدى أو كلتا العينين ، فقد تُصبح الرّؤية سوداء أو غير واضحة . فقدان الذّاكرة والنّسيان . صداع فُجائيّ وحادّ ، وقد يكون مُصحوب بالقيء أو الدّوخة 
إذا أتممت القراءة شارك ليستفيد غيرك

Friday, December 27, 2019

من طفولتنا وحتي الممات عندما نذكر يوم القيامة نشعر برعب ..ولكن..

من طفولتنا وحتي الممات عندما نذكر يوم القيامة نشعر برعب ..ولكن..

 قرأت مقالا أراه رائعا و له منظور مختلف في سرد أحداث هذا اليوم من خلال وصف القرآن له .. 
وهذا ما كتب:

*لتكن على الموعد فالموعد قد اقترب!!
💚 سيكون يوما رائعا 
عندما تُبعث وترى الملائكة في انتظارك تتلقاك 
{ وَتَتَلَقَّاهُمُ الْمَلَائِكَةُ هَٰذَا يَوْمُكُمُ الَّذِي كُنتُمْ تُوعَدُونَ }

💛 سيكون يوما رائعا 
عندما تطلقها صرخة في العالمين من الفرح 
           { هَاؤُمُ اقْرَءُوا كِتَابِيَهْ }

💙 سيكون يوما سعيدا 
عندما تنظر خلفك 
وترى ذريتك تتبعك لمشاركتك فرحتك 
         { أَلْحَقْنَا بِهِمْ ذُرِّيَّتَهُمْ }

💜 سيكون يوما في غاية الروعة 
وأنت تمشي ولأول مرة في زمرة المرضي عنهم و يتقدمك النبي محمد صلى الله عليه وسلم
{ يَوْمَ لَا يُخْزِي اللَّهُ النَّبِيَّ وَالَّذِينَ آمَنُوا مَعَهُ نُورُهُمْ يَسْعَىٰ بَيْنَ أَيْدِيهِمْ }

❤ سيكون يوما جميلا جدا 
عندما تكون ضيفا مرغوبا 
وتسمع نداءً خاصا لك "ادخل" 
{ ادْخُلُوا الْجَنَّةَ أَنتُمْ وَأَزْوَاجُكُمْ تُحْبَرُونَ }

💗 لن تكون قادرا على إخفاء نضارة وجهك السعيد 
عندما يكون رفيقك هناك 
محمد وموسى وعيسى ونوح وإبراهيم - عليهم السلام - 
{ فَأُولَٰئِكَ مَعَ الَّذِينَ أَنْعَمَ اللَّهُ عَلَيْهِم مِّنَ النَّبِيِّينَ وَالصِّدِّيقِينَ وَالشُّهَدَاءِ وَالصَّالِحِينَ وَحَسُنَ أُولَٰئِكَ رَفِيقًا }
  
💟 هناك ستتذكر ما تلوته هنا 
{ أَفَمَن وَعَدْنَاهُ وَعْدًا حَسَنًا فَهُوَ لَاقِيهِ كَمَن مَّتَّعْنَاهُ مَتَاعَ الْحَيَاةِ الدُّنْيَا ثُمَّ هُوَ يَوْمَ الْقِيَامَةِ مِنَ الْمُحْضَرِينَ }

استعد جيدا  لحفلة تكريم سرمدية

كن على العهد .. واصل المسير ..
فلم يتبق إلا القليل

ما أروعها
رزقنا الله جميعاً القلوب المطمئنة التي تشتاق للقائه سبحانه وتعالى ..

Sunday, September 8, 2019

لماذا انا الوحيد من دون اخوتى الذى يخدم ابى و أمى

الأب والأم لما يوصلوا لسن الـ 70 والـ 80 ، بتبدأ أمراض الشيخوخة تظهر بشدة ، وخصوصا صعوبة الحركة ! ساعتها بيحتاجوا رعاية و"مرافقة" من نوع خاص !

غالبا الجهد ده بيتوزع على الأبناء ! لكن الشيء اللي لاحظته كتير جدا في أغلب الحالات اللي شفتها في نطاق الأهل والمعارف ، إن دايما فيه واحد من الأبناء بيشيل أغلب الحِمل لوحده !!

تلاقي الظروف اتهيأت كدة - إما بسبب سفر أحد الأبناء أو بُعد سكنه أو انشغاله - في الآخر بتلاقي معظم حمل مرافقة ورعاية الأب أو الأم اتوزع على أحد الأبناء لوحده !!

وده يا اخواننا - والله العظيم - اختيار !! اختيار من ربنا سبحانه وتعالى للابن ده إنه ينال لوحده أكبر قدر من شرف وثواب الفترة دي من حياة الأم والأب !!
الفترة اللي بيكونوا فيها في أضعف لحظات عمرهم ، وفي غاية التعلق والاعتماد على الغير !!
بالظبط كدة زي المرحلة اللي كنت انت فيها طفل ومعتمد عليهم مية في المية !!

تحس كدة إنها لحظات التعويض ، أو رد الجميل !! رغم إنك مهما عملت برضه مش هترد ولا جزء صغير منه !!

السنوات الأخيرة في عمر الأب والأم دول عاملين زي الأيام الأخيرة من رمضان كدة !! الأجر والثواب فيها بيبقى أضعاف مضاعفة !! والنهاية فيها بتبقى أسعد وأعظم لحظات ممكن يمر بيها انسان ، وبتفضل ثوابها وبركتها مستمرة معاه بقيت عمره !! اللحظة اللي يموتوا فيها راضيين عنك وانت تحت رجلهم بتخدمهم !!

لو ربنا اختارك للمنزلة العظيمة دي ياريت تحسن استغلالها !
هتيجي على شغلك وبيتك وعيالك ، فداهم ! كله يهون ، انت الكسبان والله العظيم !

لو هتتخانق مع اخواتك أو تعاتبهم على تقصيرهم ، ياريت ما يبقاش أدامهم !! عشان مايحسوش انك متضجر أو متضرر من خدمتهم !! أو انهم حمل تقيل عليكم وانتم بتحدفوه على بعض !! بلاش تجمع عليه الألم النفسي مع الألم العضوي في اللحظات دي !!
اجمع اولادك واعمل لهم دوريات خدمة ! وفهمهم إن ده من أعظم الأعمال وأحبها إلى الله ! ولو تقدر كمان تعمل أوقات للترفيه ، وتخلي حد من العيال يقعد ينكت ويعبّط ويهزر معاهم ، هم بيحبوا الحاجات دي أوي 😞

ولو كنت تعبان أو مُرهق برضه بلاش تبين أدامهم !! هتلاقيهم - وهم في عز ضعفهم - برضه بيفكروا فيك !!

بادر انت واعرض عليهم خدماتك كل شوية ، ما تستناش لحد ما يطلبوا منك !! والله ممكن تلاقيهم تعبانين أو عاوزين يدخلوا الحمام أو يشربوا مية أو يقوموا من السرير للكرسي أو العكس ، بس مش عاوزين يقولولك لحسن تتعب !! وتلاقي الواحد فيهم عطشان ولا مزنوق ولا حتى نفسه يغير قعدته عشان ضهره وجعه أو رجله نمّلت - وكاتم في نفسه ومش عاوز يقوللك عشان ما يرهـقكش أو يتعبك أكتر ما انت تعبان !! ما انت غالبا هيكون سنك كبير انت كمان !!

وفي النهاية لازم تحتسب كل لحظة وانت جمبهم ، عشان تظفر بالأجر العظيم ده ! وافتكر إن ربنا جعل برّهم بعد الايمان بيه مبشارة ً !!
قال محمد بن المنكدر رحمه الله : بات أخي يقوم الليل ، وبتُّ أنا أغمز قدم أمي ، فوالله ما أحبُ أن ليلتي بليلته !!

ربنا يبارك في آبائنا وأمهاتنا وأجدادنا ، ويغفر لنا تقصيرنا في حقهم ، وما يحرمنا من بركتهم أبدا يارب العالمين 😞 ويرحم من توفاهم الله
منقول

Monday, August 26, 2019

احذر من صناعة المعاق في بيتك

*احذر من صناعة المعاق في بيتك*
أبدع الكاتب السعودي مشعل أبو الودع في مقاله بعنوان "هل في منزلنا ضيوف أم هم معاقون" !!!
لطفاً، اقرأها فقد يكون في بيتك معاقون وأنت لا تعلم
مشهد يتكرر في كل بيت:
شاب أو شابة في مقتبل العمر وأوفر الصحة يعيش في بيت ذويه.
يستيقظ صباحاً ويترك فراشه دون ترتيب..فالأم ستتولى ذلك.
ويستبدل ملابسه ويتركها للغسيل متناثرة في أي زاوية أو ركن..فالأم ستتولى جمعها وغسلها وكويها وإعادتها للغرفة.
يقدم له الطعام جاهزاً ليتناوله قبل ذلك أو بعده لايتعب نفسه بغسل كوب أو صحن..فالأم ستتولى كل ما يترتب على هذا.
يذهب لمدرسته أو.جامعته ويعود لينام أو يسهر على سنابشات أو تويتر أو انستجرام أو مشاهدة حلقات متتابعة من مسلسل جديد يتخلل ذلك وجبات تقدم له جاهزة وكل ما عليه هو أن "يأخذ بريك" ويمد يده ليأكل ، جزاه الله خير على ذلك، ويعاود الجهاد أمام شاشة هاتفه أو الآيباد أو اللابتوب.
وأحياناً في أوقات فراغه قد يتكرم في الجلوس مع بقية أفراد أسرته لكنه حاشا أن ينسى أن يتصفح شاشة هاتفه ليظل حاضراً وقريباً من أصحابه الذين يقضي معهم جُلّ أوقاته حتى لا يفوته لا سمح الله تعليق أو صورة أو فضول فيما يفعله الآخرون.
صاحبنا هذا لا يساهم ولا يشارك في أي مسؤولية في البيت ولو بالشيء القليل. يترك المكان في فوضى ويزعل إن لم يعجبه العشاء وإن رأى في البيت ما يستوجب التصليح أو التبديل يمر مر السحاب،، طبعاً التصليحات مسؤولية والده أليس كذلك،، والتنظيف و الترتيب مسؤولية أمه فقط..
انتهى المشهد.
تفكرت فيما أراه حولي وتوصلت لنتيجة واحدة: أظن أننا نجحنا في خلق جيل معوق
نعم جيل معاااااااق وبتفوق
لدينا الآن جيل معظمه يتصرف وكأنه ضيف في منزله. لا يساعد ولا يساهم ولايتحمل أية مسؤولية حوله من سن المدرسة إلى الكلية وحتى بعد حصوله على الوظيفة.
هو وهي يعيشان في بيت والديهما كضيف.
ولايعرفان من المسؤولية غير المصروف الشخصي ورخصة قيادة السيارة.
ويبقى الأب والأم تحت وطأة المسؤوليات عن البيت حتى مع تقدم العمر وضعف الجسد.
فالوالدان(لا يريدان أن يتعبوا الأولاد).
تقدير وتحمل المسؤولية تربية تزرعها أنت في أولادك "لا تخلق فيهم فجأةً "ولا حتى بعد الزواج
لأنهم بعد الزواج سيحملون الثقافة التي اكتسبوها من بيوت أهليهم إلى بيت الزوجية
وأي ثقافة تلك
ثقافة الإعاقة .. الاتكالية
وبالتالي جيل لا يُعتمد عليه أبدا في بناء بيت أو أسرة أو تحمّل مسؤولية زوجة وأولاد
فهل هكذا تأسست أنت أو أنت في بيت أهلك
وإن كان نعم فكيف هي نتائج تأسيسك ؟
عزيزي وليّ الأمر: أن تعود ابنك او ابنتك على تحمل بعض المسؤوليات في البيت يساعد في بناء شخصيته وبناء جيل مسؤول اجتماعياً.
تحمل المسؤولية يجعلهم أقوى ويعينهم على مواجهة ما سيأتيهم مستقبلاً.
ويساعدك أنت في الاعتماد عليهم ويساعدهم هم في التفكير بالآخرين، ما يجعلهم أقل أنانية وأكثر تقديراً وفاعلية في بيوتهم ومحيطهم ومن ثم وظيفتهم ومجتمعهم مستقبلا .
في حين اتكالهم عليك أو على الخادمة يجعلهم أكسل وأضعف وأكثر سطحية ولا يعدهم للمستقبل.
بل كيف لشخص اتكالي أن ينشىء أسرة مستقلة ومستقرة؟ وبعدها نتساءل عن ارتفاع معدلات الطلاق في جيل اليوم "وليش ما عندهم صبر!"
الحمل والولادة شيء فطري،
لكن أن تجتهد لأسرتك وأن تتحمل مصاعب الحياة ذكراً أم أُنثى هذه مهارة يجب اكتسابها من الوالدين أولاً.
وأخيراً أيتها الأم وأيها الأب : إن لم ترب ابنك على تحمل المسؤولية في منزلك، ستعلمه الدنيا،
لكن !!!
دروس الدنيا ستكون صادمة ومتأخرة وأقل حناناً وأكثر قسوة منك.
فأعنه عليها ولا تكن عوناً عليه فيها.
لاتنشىء ابنك او ابنتك ليكونوا ضيوفاً في بيتك بل ربهم ليكونوا عوناً لك، فاعلين في بيتك وثم في بيوتهم ومجتمعهم.
ونسأل الله أن يعيننا على التربية ويصلحنا ويصلح فلذاتنا لنا .