找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15778|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% E  S: d" n- o9 W9 Y0 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( r/ x, r: N- j- C. Z+ D- Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 ]  j$ [6 d9 o$ D7 ~5 L! U
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# l% k+ W* N) X2 a! F2 g, q0 e% T) r, i8 |8 V

/ F/ ~; h4 \0 M" F5 b2 t: \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) W* y; w; F* D! v; X# ^; [$ ]' j) r" x" ~
补充内容 (2012-3-8 09:42):5 {+ S1 q! ~) k0 T2 H/ A# L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 n0 @+ ~! n. [1 X: q4 D* W: F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, T1 z; W2 m# k1 R* x9 @; S3 y
2 a) l* k% i+ `" l3 V
himr <address> <value>. sample: himr 0x80040000 0x0
( t8 y! B  v2 ~: J" u1 q: l: g7 W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 Z8 w8 n4 Z$ |) `- \
himr 0x80040000 0x005 t0 B$ j$ e) k2 U  V
himr 0x80040001 0x112 I; k# u5 v; f- V4 F8 f: m  s
himr 0x80040002 0x22
0 _7 s/ h# g; E, s9 ghimr 0x80040003 0x33
. J( i0 Z  ~  M* ^/ X8 E: vhimr 0x80040004 0x44
7 U  _. a% `4 }3 @3 `, D6 zhimr 0x80040005 0x55
% i' `" a8 d" B* t: M6 p) \5 V+ K. L+ L) E/ ?" \/ O
SN也是类似。" }. Z, b8 F! C2 @1 \

8 U! F4 a" H* i3 D8 l+ A现在主要是,谁告诉我们MAC和SN的地址?
! ^3 }+ k. g) M. p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   V/ y9 H; \0 E7 m, _
一直想找到运程修改MAC和SN的办法,苦于无解啊
- n/ z1 d( f# }1 ?9 |# D
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   B! H" z* ^' S( b0 o! q; @

6 g2 `8 x  s2 R5 X# V* A7 Z* \/ k修改的代码早有了。到今天不会编译。
/ v- I- t( F1 n  q1 x$ b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( r! h7 F7 G+ ~1 }/ j
  2. #include <malloc.h>+ t6 G7 \' x# ~+ Q! k: W+ X
  3. #include <sys/types.h>
    ; A9 Z9 @& X. I0 z8 x- R
  4. #include <sys/stat.h>: A( [. X! l$ n
  5. #include <sys/ioctl.h>
    6 ~6 R: R& U. N% W: g
  6. #include <stdio.h>
    3 ^, m- [: }' X/ k, h! V
  7. #include <string.h>& D7 c) E( l) Y2 g) W) A
  8. : S6 B' u( O( N/ x5 s# O' e0 `
  9. typedef struct {7 W- g3 g2 R" P) c& I* f4 W
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' K: I" O* n) R4 e
  11.         unsigned int        sub_addr_count;$ x) k4 f+ a5 S+ J
  12.         unsigned char*        e2prom_cmd_data;
    ' O" c. ?; E) G" A
  13.         unsigned int        data_count;
    & m) ?& X- X% G# d& z
  14. } e2prom_s_cmd;
    3 f  j4 j- X( D* F" [8 @

  15. . e; |  M# b3 U
  16. #define E2PROM_CMD_READ 1
    & T) D1 Z$ N/ X6 G; d% X
  17. #define E2PROM_CMD_WRITE 28 ^1 ~2 y; E. w. g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* D9 y( f' j4 y$ G9 ^: L0 N

  19. / C7 h1 W3 {  m) }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " {6 i' O; @9 x0 R: v7 ^0 l% o8 a
  21. {
    , W3 [1 R$ L9 a+ O% _4 C
  22.         int fd, ret;
    0 U8 S% p& Q# `/ ~" e, }
  23.         e2prom_s_cmd arg;
    3 @4 {5 Y& M! Q/ U
  24.         unsigned char buf[0x18];
    . g. R6 ?3 Q$ ~( J3 m
  25. + H% {) w+ |- _$ w- a! \/ o, @0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : [; Z. T% e* J& O
  27.         if (fd  < 0) {
    $ }6 }5 _/ o% U* l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& p9 H; I! Q7 k. c  C$ C# u) J
  29.                 return -1;
    , p) v% b9 ]8 u# P* H
  30.         }# M8 M) p* v4 L. A
  31.         arg.sub_addr_count      = 2;; p+ S! p- E9 r5 A/ I: R5 K
  32.         arg.data_count          = 0x18;/ U' ]* D1 g4 Z) U& G
  33.         arg.e2prom_cmd_sub_addr = 0x290;, u) B. v, s% e5 R
  34.         arg.e2prom_cmd_data     = buf;5 k7 _% X3 w) l* a3 P3 q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 C! d. k$ G# F4 ?0 V
  36.         if (ret != 0) {; T$ d' i. _2 ^( o" L
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);4 I9 g- u' H2 {% O* U8 m
  38.                 return -1;% e0 g2 |0 I. s" P
  39.         }
    / Z6 r& I, V1 |' S- U) d
  40.         memcpy(mac, buf, 6);
    " k  N3 C8 X( h6 d8 z
  41.         memcpy(stbid, &buf[6], 18);# {) f6 a! B: S$ }4 H9 }2 P
  42.         stbid[18] = '\0';6 K: h) `& {$ U0 S: t" `
  43. 2 u+ z5 h$ R2 D, E
  44.         return 0;
    ' l" w0 s( o! E8 A% v& r  @- ?8 g
  45. }
    ' d) }6 `+ h9 X; K, M! D7 t/ _) _

  46.   U) g. d3 v: {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( d! _" [* @0 w/ b2 V7 o; t
  48. {
    ) l" N) u0 x! U! d
  49.         int fd, ret;
    - w2 b% j& Q% V) w$ l2 {
  50.         e2prom_s_cmd arg;" V! Z  X# T7 [7 l
  51.         unsigned char buf[0x18];
    , i) b+ l5 {" M" c! V
  52. 9 D  U' j: ~2 D" @4 q" @4 |) [
  53.         memcpy(buf, mac, 6);) h: @2 @7 a3 ^3 F3 s
  54.         memcpy(&buf[6], stbid, 18);# d9 J$ W2 Y* f* b1 s- o1 Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% g% j2 T- l4 }4 C4 x  A$ Y
  56.         if (fd  < 0) {: c$ k& D; G, K, p( p* \4 Z' ^# q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' y. h  L$ |. @- q+ E
  58.                 return -1;7 q8 |+ S- B  r" _. t* n4 D% H
  59.         }7 `; L( a2 T9 M
  60.         arg.sub_addr_count      = 2;: b! U' z* O4 ]2 I+ V
  61.         arg.data_count          = 0x18;2 F6 B9 I. J. d2 n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 b3 _7 f; u2 [5 }( a, L8 z
  63.         arg.e2prom_cmd_data     = buf;8 P9 W7 M7 s! C# @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 s' |  u3 u0 G9 J
  65.         if (ret != 0) {
    4 j! {# G3 F5 x8 A, M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 o4 Q  m, b% ]# e% u. p; {+ O
  67.                 return -1;
    3 {, `, t% d0 w/ v$ ]3 X5 h2 k8 o# ?
  68.         }* z6 [) ]% N5 {4 ]5 s4 `1 G% ~
  69. # D& n9 c1 S/ Q5 m  L
  70.         return 0;
    # j. ^0 U' \$ i  {& ~5 R
  71. }
    4 r: K3 T6 E2 z: e# L. I

  72. . P7 D3 i" G& x+ u! w" ]
  73. int main()- [/ H, s  u  c0 p8 [: a
  74. {
    7 q% s7 z' }; o# j3 G. |+ J& z
  75.         char c;& L6 f/ L7 O6 I2 P: A6 o
  76.         int i, macs[6];
      K$ Z" s" K/ o' q& g2 A) y
  77.         unsigned char mac[6];
    ; s. U$ A% a7 w6 Y$ P1 D8 O5 ?
  78.         unsigned char stbid[256];
    ! B8 ~4 f  C( W* [. e& H$ x& q  I

  79. 0 f  _- w: w$ t- L; P7 L- \7 q
  80.         if (readparam(mac, stbid) < 0)
    8 v4 _% y! p7 s6 O
  81.                 return 1;
    $ S4 Y% N1 O8 {6 f

  82. # h3 J  f1 Q2 I7 I5 M7 B5 j
  83.         printf("Current parameters: \n");& E: J2 @* m# A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& |0 o3 S$ W3 I/ V) |. D& F- G
  85.         printf("  STBID: %s\n", stbid);# E/ W4 Y& q9 R/ X8 O8 U" H) V0 b
  86.        
    7 ?/ S) |. k( a$ W4 B) o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 A% s; z) M/ o7 D0 q5 n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" G: T8 J& k$ V' i; v1 L
  89.                 printf("Input MAC error\n");
    8 E3 G3 I, c8 P
  90.                 return 1;
    , W: m' K6 Z# A5 ~) _
  91.         }
    - W; _0 H. B3 a1 g, b+ i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# h& Y1 e; m  e2 F! S$ r
  93.         printf("\nPlease input new STBID: ");
    2 H: w# X9 `6 o7 q. A4 m
  94.         scanf("%s", stbid);7 `4 \$ E; L% c: }& L0 {
  95.         if (strlen(stbid) != 18) {
    / j6 v2 M% T- i
  96.                 printf("Invalid stbid\n");
    4 v  G1 T3 W& p  ?
  97.                 return 1;
    9 U( n% p$ Y' B$ o- X6 h
  98.         }& s3 @1 N! u* w
  99.         printf("\nNew parameters: \n");' p, K" L$ `) {0 f. m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * N- E$ t/ Z* d' B  X
  101.         printf("  STBID: %s\n", stbid);' C. T/ s! s' M* J4 l

  102. 8 d- \! o$ j4 o  R9 B( Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 `7 Z4 Z3 b6 F# {
  104.         for (;;) {; c) e7 K0 c/ x( f" {) [) n
  105.                 c = getchar();
    & i  s+ i# T1 @4 W4 Y9 t
  106.                 if (c == 'y' || c == 'Y')% v/ ?1 f  E; A! j* r3 H' G
  107.                         break;
    , F2 w! R, p) I' {, N; ]
  108.                 if (c == 'n' || c == 'N') {8 z0 C; t1 J  \2 B' c
  109.                         printf("\nAborted.\n");
    9 }, M. K! Z; h7 w! F$ [3 A
  110.                         return 1;& A1 n1 \2 {8 I1 v; v
  111.                 }' C/ x$ f6 k! G5 N, x* t0 `
  112.         }& t1 y! z' ]8 O9 k
  113.         if (writeparam(mac, stbid) == 0)
    & ?1 W$ k; T$ D2 m
  114.                 printf("Parameters changed.\n");9 \: q% Y- e  U3 C
  115. % H( ]. L, s6 U- X& ]
  116.         return 0;: E. Y6 F- l9 ^6 Z+ y; b6 I
  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 - l- w- v0 `+ N* F6 k
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) t( t! e5 L. K, t5 N, c! g$ _0 ^你用的编译命令行格式是什么?  G! m* L5 O3 o# N. v! z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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

GMT+8, 2026-3-17 07:30 , Processed in 0.078031 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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