找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14953|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: |1 e- U2 o' d& C+ f9 S- p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# ^8 v0 d# j4 q) }  T, s+ j; h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 H9 ]9 L9 ~4 E& A% z/ g
usage: himr <address> <value>. sample: himr 0x80040000 0x0& c7 W* w% d/ g5 y& Y/ B+ W; N
+ G) b0 }0 Q6 Y3 k7 g3 L4 J

2 ^6 `- J- ~" }' k" D* M不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ y* a- t% x; z0 [" V+ v% o6 |: S' H( ~6 n5 o& j5 R- S" ?( {
补充内容 (2012-3-8 09:42):
$ x; Y. b, J7 T* Y! d. f5 Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! e/ e' }. A9 ~' I+ ^) ~4 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。0 ^% y% R, W" W: L  J/ J+ _# L

. u4 S$ u4 o6 D  W% ^/ q& t- T: Ohimr <address> <value>. sample: himr 0x80040000 0x0
$ F) [, f; \2 X, z3 @/ Z( |1 f1 f  z3 v) Y: U. U
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 ~6 @9 ^+ S2 ^& g+ h* K
himr 0x80040000 0x00* a! i2 R, m! X' I5 d9 w# _
himr 0x80040001 0x11
- Z$ b. b  d# J) K7 Lhimr 0x80040002 0x22
+ [/ ?6 h0 t* s% khimr 0x80040003 0x336 T8 [- ^7 N& N/ [
himr 0x80040004 0x44# {7 c& [, ^8 r+ s
himr 0x80040005 0x55
* C* F5 L7 |; Y, O4 W$ e3 v
6 h5 v" P% F% ?6 J5 D* jSN也是类似。
" V2 A9 G% x1 `* F9 [$ [1 J! `$ l8 D6 o4 m) `$ b" k; M# X
现在主要是,谁告诉我们MAC和SN的地址?
' e  n: X. n) ]" z/ K8 J6 ^
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 p# i/ E" L* g; ~一直想找到运程修改MAC和SN的办法,苦于无解啊

2 r4 J* s  {( t. G7 Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % k  h0 F, k) Z, U6 S$ [2 K4 t) X
; Q: N- p6 E& [6 f$ p
修改的代码早有了。到今天不会编译。
0 `8 X2 ^' F' v+ n需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- I' `: B4 w7 J  L: y$ b
  2. #include <malloc.h>; q4 |2 y. Q8 o0 x' d
  3. #include <sys/types.h>
    # w+ t) d, [+ m& D- [9 c
  4. #include <sys/stat.h>/ T3 f' N) X, p: r
  5. #include <sys/ioctl.h>+ D& S0 e/ J1 V4 ]6 T7 e
  6. #include <stdio.h>
    ; y& b6 F' `9 N  D2 `
  7. #include <string.h>8 b$ B" R- M; Z8 l

  8. , o( ]+ ^# |! `+ i
  9. typedef struct {; [* ~5 K* F: I+ A
  10.         unsigned int        e2prom_cmd_sub_addr;) v+ P6 f. u$ w- D) o
  11.         unsigned int        sub_addr_count;
    ' d4 d9 O4 E' T" d
  12.         unsigned char*        e2prom_cmd_data;( b  Y0 n2 @) w
  13.         unsigned int        data_count;
    ( n+ c& H. t1 j9 b
  14. } e2prom_s_cmd;
    ; d; G! n- o( T( N0 ^+ h

  15. 9 `* l7 a+ t5 \* H5 N) [
  16. #define E2PROM_CMD_READ 15 a: D' ~* }/ K/ u' T# O/ m, n. ^7 B
  17. #define E2PROM_CMD_WRITE 25 ]& W( _) ^% t" w7 @& g) o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 q5 Y- [" A8 I3 d  A% l$ K
  19. " T4 `! u+ \8 k$ A  O5 T% j+ p
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 N5 ^& P1 `' x# G4 z% V
  21. {
    * p5 P% W0 j6 N6 Y' o0 d  ?
  22.         int fd, ret;
    $ p  [1 V: `. y1 l
  23.         e2prom_s_cmd arg;
    . W4 i* {# M+ s" f
  24.         unsigned char buf[0x18];
    ! u' v, x. m5 `8 l- V8 H4 R

  25. ( w9 [2 k. A  V: t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * G2 b0 v  c3 ^* u
  27.         if (fd  < 0) {: ]* k! a; N* P9 o8 F- H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , H& f" l3 v5 k5 U! x5 m) x
  29.                 return -1;7 O* Z6 z# X) X( t/ h# q
  30.         }
    # e2 t) t7 M: [) K
  31.         arg.sub_addr_count      = 2;
    ) k# Y6 w  S" {6 O; s6 w
  32.         arg.data_count          = 0x18;1 K. {8 R' s9 Z) F4 H7 R' ?, d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , b3 `  t9 Q8 y( x8 X$ [
  34.         arg.e2prom_cmd_data     = buf;
    9 U* P+ S8 _2 X, R  x  G4 N8 ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( U! i+ M& h* N. ?4 S! D/ R
  36.         if (ret != 0) {
    - O9 r# U4 H& _& }) C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 R/ s0 q+ B& r8 O+ O
  38.                 return -1;4 u8 I4 J- G8 B: ^+ o
  39.         }
    & s* J" r- Q) n3 }
  40.         memcpy(mac, buf, 6);
    7 b7 A9 G) M2 {* s& C
  41.         memcpy(stbid, &buf[6], 18);+ ?- _/ v) O* B0 f! M9 @
  42.         stbid[18] = '\0';( d, U$ Q# p1 o0 |! @! M

  43. 1 @" r/ ?: f7 |3 O
  44.         return 0;2 h, }7 F% x3 _1 ?
  45. }
    ; [% d8 w3 O' L# P# r8 j, m

  46. * z* g: C3 [  ]/ J# }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! K: u3 v6 |  @7 j5 P6 \( n' \
  48. {! p. t9 ^/ M6 c& O* [3 T
  49.         int fd, ret;
    ! S- y6 {; @5 z% |" j0 `
  50.         e2prom_s_cmd arg;
    & U" T* g3 l6 p8 }% v6 l5 s$ `9 |
  51.         unsigned char buf[0x18];' n4 d4 G1 [; S6 o3 q9 i! Y
  52. , _9 B1 N" J5 C4 ]1 K
  53.         memcpy(buf, mac, 6);
    2 R" y& \  u/ A5 k+ l& g
  54.         memcpy(&buf[6], stbid, 18);
    5 V. ^/ Z( N5 }) Y3 w+ H9 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! o. a, F; y! N4 U3 x8 X2 Y
  56.         if (fd  < 0) {
    : a1 u6 }& [( O" @( t) }/ T  c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - ?$ U1 J) f- Z) ^, ]# N4 i, U
  58.                 return -1;+ t! |6 i: U6 j8 d
  59.         }
    , q1 x5 Q& s! F, p% D$ z
  60.         arg.sub_addr_count      = 2;
    ) r- [; D% W  u' j
  61.         arg.data_count          = 0x18;
    9 I0 |, }; b7 n/ i% E1 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 Z% f' L6 }! ]) p! r- A- ]8 H
  63.         arg.e2prom_cmd_data     = buf;$ p, d8 C6 J6 b. U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " W  |" C; g/ Q
  65.         if (ret != 0) {; E& d3 n; i' S2 F* E& D% r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' z, |% I; H# l* j- D
  67.                 return -1;+ C7 K) c% q. j1 t$ d, h2 C
  68.         }4 _# Y; [- D& d3 E  Z

  69. + F" x3 n( `% y/ b9 {
  70.         return 0;
    6 q+ H+ |4 `3 Y5 F, M3 |
  71. }; S! b4 E* U. e  l, {
  72. 6 O5 {$ k+ c1 e5 R  m2 J6 ?
  73. int main()
    5 Z( ~% P" ^% ~, K3 C, g0 _8 R( Q; n
  74. {3 w% K! v1 q# m
  75.         char c;
    $ {! v9 d2 \+ s! a! Q* _
  76.         int i, macs[6];" {) h' \$ b0 w- V! a
  77.         unsigned char mac[6];
    ( Q  V9 c; a- e, h( R) s
  78.         unsigned char stbid[256];$ a4 _; }" ?8 x! A
  79. " F' q! s  ?4 B9 e
  80.         if (readparam(mac, stbid) < 0)
    " O- N4 V, K8 u* u
  81.                 return 1;
    7 B! C% G! t0 a( @! N0 E5 L
  82. ( j: j. Q; ]; p" x) Q8 F) [; d
  83.         printf("Current parameters: \n");
    6 {& @" V% N' |% f0 g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' J4 q1 Q, Y7 X$ I4 M" p; @
  85.         printf("  STBID: %s\n", stbid);; m$ L: \  R6 B5 O, I
  86.        
    3 D0 G& d& A5 S  [  F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  [3 @% t; U- g. S3 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 \8 D0 A; i1 E- @8 o1 K8 Z! {- m
  89.                 printf("Input MAC error\n");6 I. H6 }9 C& d' a! P$ a5 G
  90.                 return 1;
    . W1 V2 G1 Q9 [% V9 Q" Y: _
  91.         }
    - K/ q! [2 E7 R6 @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ t4 t( p# f0 d8 ]. Z0 t- q8 h5 b2 ?
  93.         printf("\nPlease input new STBID: ");
    $ R  `6 R  a# V1 J6 }8 z/ O
  94.         scanf("%s", stbid);
    ! [5 _6 v* x- c
  95.         if (strlen(stbid) != 18) {7 r/ G% L  E* h3 O
  96.                 printf("Invalid stbid\n");
    / r& l( O; }8 y( b" Y' {% O
  97.                 return 1;& b% c5 |7 z5 u( z2 ^+ n& H
  98.         }
    $ ]# \7 [+ E9 O- s
  99.         printf("\nNew parameters: \n");
    8 [/ L- V" ?" Q' J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( k* Q1 x3 E( K* Y
  101.         printf("  STBID: %s\n", stbid);" }4 m& z. N4 X! u  U
  102. 0 b/ k, j! m+ x  R$ m. j) }
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    : A" `' Z7 Z2 {' [3 m$ C5 a
  104.         for (;;) {9 {0 H5 B2 z5 F
  105.                 c = getchar();3 R9 ?. m2 k, i1 n8 _3 a4 y
  106.                 if (c == 'y' || c == 'Y')" k3 I: t0 ~4 m4 m# `& |
  107.                         break;+ x$ r5 j  `7 Z  t5 K5 ?
  108.                 if (c == 'n' || c == 'N') {
    4 o3 z/ j+ Z( M4 ^- s) z, p( Q* P4 l
  109.                         printf("\nAborted.\n");
    1 G* A; N" h: I  z; C; X
  110.                         return 1;
    * V" l/ N9 F0 v; i; |
  111.                 }: z" b6 a4 i, }
  112.         }" ~  r9 e# p5 [$ Z/ @  V5 Y! g
  113.         if (writeparam(mac, stbid) == 0)
    9 T& {$ O1 N3 x
  114.                 printf("Parameters changed.\n");
    + U2 M$ j$ W% g' A) v+ D/ i. d

  115. / U1 z' p4 v* u1 W7 ~5 m7 U
  116.         return 0;
    8 I( _' S- Y$ B' d. B' ?5 u
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
9 J$ o) `. }4 s在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, Z8 m% |" {4 S9 U4 ?* B
你用的编译命令行格式是什么?
/ ]4 D$ j* Z. h$ ?) i/ R
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-3 18:47 , Processed in 0.025502 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表